:root{color:#17202a;background:#f6f8fb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.72}.login-shell{display:grid;min-height:100vh;place-items:center;padding:24px;background:#f6f8fb}.login-panel{width:min(100%,420px);padding:28px;border:1px solid #d8e0e8;border-radius:8px;background:#fff;box-shadow:0 20px 50px #17202a1a}.eyebrow{margin:0 0 6px;color:#24745d;font-size:.76rem;font-weight:700;letter-spacing:0;text-transform:uppercase}h1,h2,p{margin-top:0}h1{margin-bottom:0;font-size:1.9rem;letter-spacing:0}h2{margin-bottom:0;font-size:1rem;letter-spacing:0}.login-form{display:grid;gap:18px;margin-top:28px}label{display:grid;gap:7px;color:#566371;font-size:.86rem;font-weight:700}input,textarea,select{width:100%;min-height:40px;border:1px solid #c8d1dc;border-radius:6px;background:#fff;color:#17202a;padding:0 11px}textarea{min-height:72px;padding:9px 11px;resize:vertical}input:focus,textarea:focus,select:focus,button:focus-visible{outline:3px solid rgb(33 119 93 / 24%);outline-offset:2px}.primary-button,.secondary-button,.icon-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;border-radius:6px;border:1px solid transparent;padding:0 14px;font-weight:800}.primary-button{background:#1f7a5f;color:#fff}.primary-button:hover:not(:disabled){background:#185f4a}.secondary-button,.icon-button{border-color:#c8d1dc;background:#fff;color:#24313f}.secondary-button:hover,.icon-button:hover{background:#eef3f6}.icon-button{width:40px;padding:0}.compact{min-width:108px}.form-error,.alert,.notice{margin:0;border-radius:6px;padding:11px 12px;font-size:.9rem;font-weight:700}.form-error,.alert{background:#fff1ed;color:#a13b28}.notice{margin-top:16px;background:#e7f6ef;color:#1f7a5f}.app-shell{min-height:100vh;padding:26px}.top-bar,.status-row,.table-section{width:min(1180px,100%);margin:0 auto}.top-bar{display:flex;align-items:center;justify-content:space-between;gap:18px}.top-actions{display:flex;align-items:center;gap:10px}.session-expiry{color:#607080;font-size:.84rem}.status-row{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-top:24px}.status-row>div{display:grid;gap:4px;border:1px solid #d8e0e8;border-radius:8px;background:#fff;padding:16px}.metric-value{font-size:1.6rem;font-weight:900}.metric-label{color:#607080;font-size:.86rem;font-weight:700}.alert{margin-top:16px}.table-section{margin-top:18px}.section-heading{display:flex;align-items:center;gap:8px;margin-bottom:10px}.section-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.log-refresh-time{color:#607080;font-size:.82rem}.empty-state{border:1px dashed #c8d1dc;border-radius:8px;background:#fff;color:#607080;padding:18px}.device-table{overflow-x:auto;border:1px solid #d8e0e8;border-radius:8px;background:#fff}.device-row{display:grid;gap:12px;align-items:center;min-height:64px;padding:12px 14px;border-top:1px solid #e3e9ef}.pending-device-row{grid-template-columns:110px minmax(180px,1fr) minmax(150px,170px) minmax(180px,220px) 130px}.managed-device-row{grid-template-columns:92px minmax(220px,1fr) minmax(150px,170px) minmax(150px,170px) minmax(150px,170px) minmax(140px,160px) minmax(250px,300px) 108px;min-width:1360px}.device-row:first-child{border-top:0}.device-row-head{min-height:44px;background:#f2f5f8;color:#607080;font-size:.78rem;font-weight:900;text-transform:uppercase}.registration-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1rem}.device-meta{display:grid;gap:3px}.device-meta small{color:#607080}.policy-state-lines{display:grid;gap:4px;justify-items:start}.policy-state-lines small{line-height:1.35;overflow-wrap:anywhere}.device-state-badges{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.sync-badge{border-radius:999px;padding:3px 7px;font-size:.68rem;font-weight:900}.sync-badge.applied{background:#e7f6ef;color:#1f7a5f}.sync-badge.pending{background:#fff4d9;color:#8a5a00}.sync-badge.no-target{background:#eef1f4;color:#607080}.sync-detail{color:var(--muted);font-size:.72rem;font-weight:700}.update-badge{border-radius:999px;padding:3px 7px;font-size:.68rem;font-weight:900}.update-badge.candidate{background:#e7f6ef;color:#1f7a5f}.update-badge.manual{background:#fff4d9;color:#8a5a00}.update-badge.unknown{background:#eef1f4;color:#607080}.error-count{border-radius:999px;padding:2px 6px;font-weight:900}.error-count.clean{background:#e7f6ef;color:#1f7a5f}.error-count.has-errors{background:#ffe7e2;color:#a13824}.error-count.unknown{background:#eef1f4;color:#607080}.status-badge{justify-self:start;border-radius:999px;padding:5px 9px;font-size:.72rem;font-weight:900}.status-badge.online{background:#e7f6ef;color:#1f7a5f}.status-badge.offline{background:#eef1f4;color:#607080}.muted-text{color:#607080}.type-control,.region-control,.group-control{display:grid;grid-template-columns:minmax(0,1fr) 40px;gap:8px;align-items:center}.region-create-row{display:grid;grid-template-columns:minmax(0,1fr) 108px;gap:8px;margin-bottom:10px}.group-create-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(160px,220px) 108px;gap:8px;margin-bottom:10px}.region-list,.group-list{display:grid;gap:8px}.region-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(90px,120px) 116px 40px 40px;gap:8px;align-items:center;border:1px solid #d8e0e8;border-radius:8px;background:#fff;padding:10px}.group-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(160px,220px) minmax(90px,120px) 40px 40px;gap:8px;align-items:center;border:1px solid #d8e0e8;border-radius:8px;background:#fff;padding:10px}.scope-policy-controls{grid-column:1 / -1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:start;padding-top:2px}.policy-control{display:grid;grid-template-columns:minmax(0,1fr) 40px;gap:8px;align-items:center}.policy-control input{min-width:0}.policy-summary-control{display:grid;grid-template-columns:minmax(0,1fr) 112px;gap:8px;align-items:center;min-width:0}.policy-summary-copy{display:grid;gap:2px;min-width:0}.policy-summary-copy strong,.policy-summary-copy small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-actions{display:grid;gap:8px}.device-actions .compact{width:100%}.detail-panel,.signage-policy-panel{scroll-margin-top:18px}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.detail-section{display:grid;align-content:start;gap:10px;border:1px solid #d8e0e8;border-radius:8px;background:#fff;padding:14px}.detail-section-wide{grid-column:1 / -1}.detail-section h3{margin:0;color:#24313f;font-size:.9rem}.detail-list{display:grid;gap:8px;margin:0}.detail-row{display:grid;grid-template-columns:minmax(110px,150px) minmax(0,1fr);gap:12px;align-items:start}.detail-row dt{color:#607080;font-size:.78rem;font-weight:900}.detail-row dd{min-width:0;margin:0;color:#24313f;overflow-wrap:anywhere}.detail-actions{display:flex;flex-wrap:wrap;gap:8px}.monospace-value{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.84rem}.signage-duration-input{min-width:0;text-align:center}.signage-playlist-editor{display:grid;gap:8px;min-width:0}.signage-playlist-toolbar{display:grid;grid-template-columns:minmax(0,1fr) 40px 40px 40px;gap:8px;align-items:center}.signage-playlist-toolbar input{min-width:0}.signage-playlist-items{display:grid;gap:6px;min-width:0}.signage-playlist-item{display:grid;grid-template-columns:28px 64px minmax(0,1fr) 72px 36px 36px 36px;gap:6px;align-items:center;border:1px solid #d8e0e8;border-radius:8px;background:#fff;padding:8px}.playlist-order{color:#607080;font-weight:900;text-align:center}.media-type-badge{border-radius:999px;padding:4px 6px;background:#e9eef4;color:#24313f;font-size:.68rem;font-weight:900;text-align:center}.media-type-badge.video{background:#e6f3ef;color:#0f5f4d}.playlist-item-main{display:grid;gap:2px;min-width:0}.playlist-item-main strong,.playlist-item-main small{min-width:0;overflow-wrap:anywhere}.playlist-video-duration{text-align:center}.empty-playlist{margin:0;border:1px dashed #c8d3df;border-radius:8px;color:#607080;padding:9px;text-align:center}.file-upload-button{position:relative;cursor:pointer}.file-upload-button input{position:absolute;inset:0;width:100%;height:100%;cursor:pointer;opacity:0}.file-upload-button:has(input:disabled){cursor:not-allowed;opacity:.55}.log-filter{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.filter-button{display:inline-flex;align-items:center;gap:7px;min-height:32px;border:1px solid #c8d1dc;border-radius:6px;background:#fff;color:#24313f;padding:0 10px;font-size:.82rem;font-weight:800}.filter-button:hover{background:#eef3f6}.filter-button.active{border-color:#1f7a5f;background:#e7f6ef;color:#1f7a5f}.filter-button span{min-width:18px;border-radius:999px;background:#eef1f4;color:#607080;padding:1px 6px;text-align:center}.filter-button.active span{background:#fff;color:#1f7a5f}.log-list{display:grid;gap:10px}.log-entry{display:grid;gap:8px;border:1px solid #d8e0e8;border-radius:8px;background:#fff;padding:12px 14px}.log-entry-header{display:grid;grid-template-columns:74px minmax(0,1fr) minmax(160px,auto);gap:10px;align-items:center}.log-level{justify-self:start;border-radius:999px;padding:4px 8px;background:#eef1f4;color:#607080;font-size:.72rem;font-weight:900}.log-level.error{background:#fff1ed;color:#a13b28}.log-level.warn{background:#fff8e6;color:#8a641d}.log-entry pre{overflow-x:auto;margin:0;border-radius:6px;background:#f6f8fb;color:#24313f;padding:10px;white-space:pre-wrap;overflow-wrap:anywhere}@media(max-width:820px){.app-shell{padding:18px}.top-bar,.top-actions{align-items:stretch;flex-direction:column}.status-row,.group-create-row,.group-row,.region-row,.scope-policy-controls{grid-template-columns:1fr}.signage-playlist-item{grid-template-columns:28px minmax(0,1fr) 72px 36px 36px 36px}.media-type-badge{display:none}.device-row,.device-row-head{grid-template-columns:1fr;min-width:0}.device-row-head{display:none}.log-entry-header,.detail-grid{grid-template-columns:1fr}.detail-row{grid-template-columns:1fr;gap:3px}}
