:root{--bg:#f4f6f8;--surface:#fff;--text:#171a1f;--muted:#6d7480;--line:#e1e5ea;--accent:#171a1f;--good:#198754;--bad:#b42318;--warn:#b76e00;--soft:#f0f2f4}
*{box-sizing:border-box}html{color-scheme:light}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:14px}button,input,select{font:inherit}.topbar{height:64px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 30px;gap:32px;position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:10px;min-width:180px;color:var(--text);text-decoration:none}.brand-mark{display:grid;place-items:center;width:46px;height:46px;background:#171a1f;color:#fff;font-weight:800;border-radius:9px}.brand-mark.small{width:30px;height:30px;border-radius:6px}.topbar nav{display:flex;gap:4px;flex:1}.topbar nav a,.logout{color:var(--muted);text-decoration:none;padding:8px 10px;border-radius:5px}.topbar nav a:hover,.topbar nav a.active{color:var(--text);background:var(--soft)}.shell{max-width:1480px;margin:auto;padding:34px 34px 70px}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:24px}.eyebrow{font-size:11px;letter-spacing:.16em;font-weight:700;color:#858c96;margin:0 0 8px}.page-head h1{font-size:30px;margin:0 0 8px;letter-spacing:-.03em}.muted,.panel p,.page-head p{color:var(--muted)}.time-pill{background:#fff;border:1px solid var(--line);border-radius:7px;padding:10px 12px;display:flex;gap:8px;align-items:center;font-size:12px}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#999}.dot.ok{background:var(--good)}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}.metrics>a,.metrics article,.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px}.metrics>a{display:block;padding:20px;color:inherit;text-decoration:none;transition:border .15s,transform .15s}.metrics>a:hover{border-color:#c7ccd2;transform:translateY(-1px)}.metrics article{padding:20px}.metrics span{display:block;color:var(--muted);font-size:12px}.metrics strong{display:block;font-size:30px;margin:8px 0 3px;letter-spacing:-.04em}.metrics strong.metric-text{font-size:18px;letter-spacing:-.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.metrics small{color:var(--muted)}.panel{padding:22px;margin-bottom:18px}.panel-title{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:14px}.panel h2,.dialog-card h2{font-size:17px;margin:0 0 4px}.panel p,.dialog-card p{margin:0}.badge{background:#eef1f4;padding:6px 8px;border-radius:5px;font-size:11px;color:#4e5661}.table{border-top:1px solid var(--line);margin-top:12px}.row{display:grid;gap:20px;align-items:center;min-height:66px;border-bottom:1px solid var(--line)}.row.head{min-height:38px;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.08em}.row.linked{color:inherit;text-decoration:none;margin:0 -8px;padding:0 8px;border-radius:5px}.row.linked:hover{background:#f8f9fa}.row strong,.row small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row small{font-size:11px;color:var(--muted);margin-top:5px}.device-grid{grid-template-columns:2fr 1.15fr 1.1fr .8fr .7fr .9fr}.device-list-grid{grid-template-columns:1.7fr .8fr 1.3fr 1fr .8fr 1.2fr}.playlist-grid{grid-template-columns:2fr .6fr .6fr .9fr}.schedule-grid{grid-template-columns:1.5fr 1.2fr 1.1fr 1.2fr .55fr .7fr .65fr}.status{font-weight:650}.status.good{color:var(--good)}.status.bad{color:var(--bad)}.split{display:grid;grid-template-columns:1fr 1fr;gap:18px}.split.unequal{grid-template-columns:minmax(0,1.7fr) minmax(300px,.7fr)}.empty{text-align:center;padding:46px 20px}.empty.small{padding:25px 10px}.empty p{max-width:560px;margin:8px auto 16px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid #d2d7dc;background:#fff;color:var(--text);border-radius:6px;padding:9px 12px;font-weight:650;text-decoration:none;cursor:pointer}.btn:hover{background:#f7f8f9}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.primary:hover{background:#2b2f35}.btn.danger{border-color:#efc7c2;color:var(--bad);background:#fff}.btn.wide{width:100%}.danger-text{color:var(--bad)!important}.icon-btn{border:0;background:transparent;color:var(--muted);padding:6px;cursor:pointer;border-radius:4px}.icon-btn:hover{background:var(--soft)}.icon-btn:disabled{opacity:.25;cursor:default}.inline-form{display:flex;align-items:center;gap:8px}.inline-form input{min-width:220px}.inline-form input,.form-grid input,.form-grid select,.stack-form input,.stack-form select,.dialog-card input,.dialog-card select{border:1px solid #cfd4da;background:#fff;border-radius:6px;padding:10px 11px;color:var(--text);min-height:40px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-grid label,.stack-form label,.dialog-card>label{display:grid;gap:6px;color:var(--muted);font-size:12px}.span2{grid-column:span 2}.form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:5px}.stack-form{display:grid;gap:14px;margin-top:18px}.check{display:flex!important;align-items:center!important;grid-template-columns:none!important;gap:8px!important;color:var(--text)!important}.check input{min-height:0!important;min-width:0!important}.check.compact{padding:0 5px}.optional{color:#a0a6ae;font-weight:400}.hint{font-size:12px;margin:14px 0!important}.tag-wrap{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.tag{padding:7px 9px;background:#f3f5f7;border:1px solid var(--line);border-radius:5px;color:var(--muted)}.tag.selected{border-color:#b7d8c7;background:#f1faf5;color:#17663e}.kv{margin-top:14px}.kv>div{display:flex;justify-content:space-between;gap:20px;padding:12px 0;border-bottom:1px solid var(--line)}.kv span{color:var(--muted)}.compact-list{margin-top:8px}.compact-list>div{display:flex;justify-content:space-between;gap:20px;padding:12px 0;border-bottom:1px solid var(--line)}.compact-list strong,.compact-list small{display:block}.compact-list small{color:var(--muted);margin-top:3px}.compact-list time{font-size:11px;color:var(--muted);white-space:nowrap}.danger-zone{display:flex;justify-content:flex-end;padding-top:12px}.action-list{display:grid;margin-top:12px}.action-list a{display:flex;justify-content:space-between;padding:12px 0;color:var(--text);text-decoration:none;border-bottom:1px solid var(--line)}.group-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.group-card{margin:0}.member-list{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:15px}.member-list form{margin:0}.member{width:100%;display:flex;justify-content:space-between;align-items:center;text-align:left;border:1px solid var(--line);background:#fff;padding:10px;border-radius:6px;cursor:pointer;color:var(--muted)}.member.on{background:#f1faf5;border-color:#b7d8c7;color:#17663e}.asset-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.asset-card{background:#fff;border:1px solid var(--line);border-radius:8px;overflow:hidden}.asset-preview{aspect-ratio:16/9;background:#e9ecef;display:grid;place-items:center;overflow:hidden}.asset-preview img,.asset-preview video{width:100%;height:100%;object-fit:contain;background:#111}.file-glyph{font-size:12px;font-weight:800;color:#8b929b}.asset-body{padding:14px}.asset-title{display:flex;align-items:center;justify-content:space-between;gap:10px}.asset-body>small{display:block;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:5px}.asset-meta{display:flex;gap:10px;flex-wrap:wrap;color:#9298a0;font-size:10px;margin:12px 0}.card-actions{display:flex;gap:7px}.card-actions form{margin:0}.playlist-items{border-top:1px solid var(--line)}.playlist-item{display:grid;grid-template-columns:32px 1fr auto;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.position{width:26px;height:26px;display:grid;place-items:center;background:var(--soft);border-radius:5px;color:var(--muted);font-size:11px}.item-main strong,.item-main small{display:block}.item-main small{color:var(--muted);margin-top:4px}.item-actions{display:flex;align-items:center}.item-actions form{margin:0}dialog{border:0;padding:0;border-radius:9px;box-shadow:0 24px 70px #0003;width:min(560px,calc(100vw - 28px))}dialog::backdrop{background:#1118}.dialog-card{padding:22px;background:#fff}.wide-dialog{width:min(680px,calc(100vw - 28px))}.dialog-head{display:flex;justify-content:space-between;margin-bottom:20px}.dialog-card>label{margin:14px 0}.login-body{display:grid;place-items:center;min-height:100vh}.login-card{width:min(390px,calc(100vw - 32px));background:#fff;border:1px solid var(--line);padding:34px;border-radius:10px}.login-card h1{margin:18px 0 4px;font-size:25px}.login-card p{margin:0 0 24px;color:var(--muted)}.login-card label{display:block;font-size:12px;color:var(--muted);margin:14px 0}.login-card input{width:100%;display:block;margin-top:6px;border:1px solid #cfd4da;border-radius:6px;padding:11px 12px}.alert{background:#fff2f0;color:var(--bad);border:1px solid #ffd0cb;padding:10px;border-radius:6px;font-size:12px}
@media(max-width:1100px){.asset-grid{grid-template-columns:repeat(3,1fr)}.schedule-grid{grid-template-columns:1.4fr 1fr 1fr .8fr .5fr}.schedule-grid>div:nth-child(4),.schedule-grid>div:nth-child(6){display:none}.device-list-grid{grid-template-columns:1.6fr .8fr 1fr 1fr}.device-list-grid>div:nth-child(3),.device-list-grid>div:nth-child(5){display:none}}
@media(max-width:850px){.metrics{grid-template-columns:1fr 1fr}.split,.split.unequal,.group-grid{grid-template-columns:1fr}.asset-grid{grid-template-columns:repeat(2,1fr)}.topbar{padding:0 14px}.topbar nav{overflow:auto}.brand{min-width:auto}.brand strong{display:none}.device-grid{grid-template-columns:1.5fr .8fr 1fr}.device-grid>div:nth-child(n+4){display:none}.page-head{display:block}.page-head>.btn,.page-head>.inline-form,.time-pill{margin-top:14px}.member-list{grid-template-columns:1fr}}
@media(max-width:580px){.shell{padding:22px 14px 60px}.topbar nav a{font-size:0}.topbar nav a:first-letter{font-size:13px}.metrics{grid-template-columns:1fr 1fr}.asset-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.span2{grid-column:span 1}.inline-form{width:100%;flex-wrap:wrap}.inline-form input{flex:1;min-width:180px}}
