:root{--bg: #f6f7fb;--surface: #ffffff;--surface-2: #f1f3f9;--border: #e3e6ef;--text: #11152b;--muted: #6a7089;--accent: #4f46e5;--accent-ink: #ffffff;--accent-soft: #eceafe;--ok: #0f9d6b;--ok-soft: #dcf5ea;--warn: #b7791f;--warn-soft: #fdf1d6;--bad: #d63a4a;--bad-soft: #fde4e7;--shadow: 0 1px 2px rgba(17, 21, 43, .05), 0 8px 24px rgba(17, 21, 43, .06);--radius: 14px;color-scheme:light}@media (prefers-color-scheme: dark){:root{--bg: #0c0e1a;--surface: #151829;--surface-2: #1c2036;--border: #272c47;--text: #eceefa;--muted: #9097b8;--accent: #7c74ff;--accent-ink: #0c0e1a;--accent-soft: #24234a;--ok: #3ddc97;--ok-soft: #123a2d;--warn: #f2c14e;--warn-soft: #3b3014;--bad: #ff6b7a;--bad-soft: #451b22;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 24px rgba(0, 0, 0, .35);color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;letter-spacing:-.01em}h1{font-size:22px}h2{font-size:16px}a{color:inherit}button,input,select,textarea{font:inherit;color:inherit}.shell{display:grid;grid-template-columns:232px 1fr;min-height:100%}.sidebar{position:sticky;top:0;height:100vh;background:var(--surface);border-right:1px solid var(--border);padding:20px 14px;display:flex;flex-direction:column;gap:4px}.brand{display:flex;align-items:center;gap:10px;padding:4px 10px 18px;font-weight:700;font-size:16px}.brand-mark{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent),#22d3ee);color:#fff}.nav a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:10px;text-decoration:none;color:var(--muted);font-weight:500}.nav a:hover{background:var(--surface-2);color:var(--text)}.nav a.active{background:var(--accent-soft);color:var(--accent)}.nav .badge{margin-left:auto}.sidebar-foot{margin-top:auto;padding:10px;color:var(--muted);font-size:12px;display:grid;gap:8px}.main{padding:28px 32px 60px;max-width:1280px;width:100%}.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}.page-head p{margin:4px 0 0;color:var(--muted)}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}@media (max-width: 860px){.shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;flex-direction:row;overflow-x:auto;padding:10px;align-items:center}.brand{padding:0 10px 0 4px}.nav{display:flex;gap:2px}.nav a span,.sidebar-foot{display:none}.main{padding:18px 16px 50px}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card-pad{padding:18px}.grid{display:grid;gap:16px}.kpis{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));margin-bottom:16px}.kpi{padding:16px 18px;display:grid;gap:4px}.kpi .label{color:var(--muted);font-size:12.5px;display:flex;gap:6px;align-items:center}.kpi .value{font-size:28px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.kpi .hint{color:var(--muted);font-size:12px}.two{grid-template-columns:1.4fr 1fr}@media (max-width: 1000px){.two{grid-template-columns:1fr}}.btn{display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 13px;border-radius:10px;border:1px solid var(--border);background:var(--surface);cursor:pointer;font-weight:500;text-decoration:none;white-space:nowrap}.btn:hover{background:var(--surface-2)}.btn:focus-visible,.input:focus-visible,.select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{filter:brightness(1.08)}.btn.ok{color:var(--ok)}.btn.danger{color:var(--bad)}.btn.sm{height:30px;padding:0 10px;font-size:13px}.btn.icon{width:32px;padding:0;justify-content:center}.btn:disabled{opacity:.5;cursor:not-allowed}.field{display:grid;gap:6px}.field>label{font-size:12.5px;font-weight:600;color:var(--muted)}.input,.select,textarea.input{width:100%;height:38px;padding:0 12px;border-radius:10px;border:1px solid var(--border);background:var(--surface)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid .full{grid-column:1 / -1}@media (max-width: 560px){.form-grid{grid-template-columns:1fr}}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{height:32px;padding:0 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface);cursor:pointer;font-weight:500}.chip[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.tabs{display:inline-flex;background:var(--surface-2);padding:3px;border-radius:11px;gap:2px}.tabs button{border:0;background:transparent;padding:6px 12px;border-radius:8px;cursor:pointer;color:var(--muted);font-weight:500}.tabs button[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #00000014}.badge,.pill{display:inline-flex;align-items:center;gap:6px;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;background:var(--surface-2);color:var(--muted)}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.bad{background:var(--bad-soft);color:var(--bad)}.dot{width:7px;height:7px;border-radius:50%;background:currentColor}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th{text-align:left;font-size:12px;color:var(--muted);font-weight:600;padding:11px 16px;border-bottom:1px solid var(--border);white-space:nowrap}td{padding:13px 16px;border-bottom:1px solid var(--border);vertical-align:middle}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:var(--surface-2)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.strong{font-weight:600}.row-actions{display:flex;gap:6px;justify-content:flex-end}.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.media-card{overflow:hidden;display:flex;flex-direction:column}.thumb{aspect-ratio:16 / 9;background:var(--surface-2);position:relative;display:grid;place-items:center;color:var(--muted)}.thumb img,.thumb video{width:100%;height:100%;object-fit:cover;display:block}.thumb .pill{position:absolute;top:8px;left:8px}.media-body{padding:12px 14px;display:grid;gap:4px}.media-foot{padding:0 14px 12px;display:flex;gap:6px}.split{display:grid;grid-template-columns:280px 1fr;gap:16px;align-items:start}@media (max-width: 860px){.split{grid-template-columns:1fr}}.list{display:grid}.list button{text-align:left;padding:12px 16px;border:0;background:transparent;cursor:pointer;border-bottom:1px solid var(--border);display:grid;gap:2px}.list button:last-child{border-bottom:0}.list button:hover{background:var(--surface-2)}.list button[aria-current=true]{background:var(--accent-soft)}.item-row{display:grid;grid-template-columns:28px 64px 1fr 92px auto;gap:12px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--border)}.item-row:last-child{border-bottom:0}.item-row .mini{width:64px;aspect-ratio:16/9;border-radius:6px;overflow:hidden;background:var(--surface-2)}.item-row .mini img{width:100%;height:100%;object-fit:cover}.bars{display:flex;align-items:flex-end;gap:6px;height:140px;padding-top:8px}.bar{flex:1;background:var(--accent);border-radius:6px 6px 2px 2px;min-height:3px;opacity:.85;position:relative}.bar:hover{opacity:1}.bar-labels{display:flex;gap:6px;margin-top:6px;color:var(--muted);font-size:11px}.bar-labels span{flex:1;text-align:center}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#080a188c;display:grid;place-items:center;padding:16px;z-index:50}.modal{width:min(640px,100%);max-height:92vh;overflow:auto;background:var(--surface);border-radius:16px;border:1px solid var(--border);box-shadow:var(--shadow)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.modal-body{padding:20px}.modal-foot{padding:14px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px}.empty{padding:40px 20px;text-align:center;color:var(--muted);display:grid;gap:10px;justify-items:center}.toast{position:fixed;bottom:20px;right:20px;background:var(--text);color:var(--bg);padding:10px 14px;border-radius:10px;z-index:60;box-shadow:var(--shadow)}.banner{background:var(--warn-soft);color:var(--warn);padding:10px 14px;border-radius:10px;margin-bottom:18px;font-weight:500}.err{color:var(--bad);font-weight:500}code.url{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;background:var(--surface-2);padding:2px 6px;border-radius:6px}.login{min-height:100%;display:grid;place-items:center;padding:20px}.login .card{width:min(380px,100%);padding:28px;display:grid;gap:16px}body.player-body{background:#000;overflow:hidden;cursor:none}.player{position:fixed;top:0;right:0;bottom:0;left:0;background:#000;color:#fff}.player .idle{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;background:radial-gradient(circle at 50% 40%,#1a1f3d,#05060f 70%)}.idle-card{display:grid;gap:8px;padding:24px}.idle-logo{font-size:clamp(28px,5vw,64px);font-weight:700;letter-spacing:-.02em}.idle-card p{margin:0;opacity:.65;font-size:clamp(14px,1.6vw,22px)}.lay-wrap{position:absolute;top:0;right:0;bottom:0;left:0;container-type:size;background:#000;overflow:hidden}.lay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;color:#fff;font-size:min(1.1vw,1.95vh);background:#000}@supports (width: 1cqw){.lay{font-size:min(1.1cqw,1.95cqh)}}.lay-header{flex:none;height:5em;display:flex;align-items:center;justify-content:space-between;padding:0 1.8em;font-size:1.15em}.lay-title{font-weight:600;letter-spacing:.02em;opacity:.9}.lay-clock{display:flex;align-items:center;gap:.8em;font-variant-numeric:tabular-nums}.wifi.ok{color:#a3e635}.wifi.off{color:#f59e0b}.lay-body{flex:1;min-height:0;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-template-rows:repeat(12,minmax(0,1fr));gap:.65em;padding:0 .65em .65em}.lay-body>.zone:only-child{grid-column:1 / -1!important}.zone{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;border-radius:.45em;overflow:hidden;background:#1d1e23}.zone.selectable{cursor:pointer}.zone.selected{outline:.2em solid #7c74ff;outline-offset:-.2em;z-index:2}.zone-title{flex:none;display:flex;align-items:center;gap:.7em;padding:.9em 1.1em;background:#202126f5;font-weight:600;font-size:1.05em;letter-spacing:.03em;text-transform:uppercase}.zone-title .zt-bar{width:.18em;height:1.3em;background:#ffffffbf;border-radius:1em}.zone-red .zone-title{background:#0000002e}.zone-body{position:relative;flex:1;min-height:0}.player-layer{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;pointer-events:none;transition:opacity .6s ease}.player-layer.active{opacity:1;z-index:1}.player-layer img,.player-layer video{width:100%;height:100%;background:#000;object-fit:contain}.player-layer.fit-cover img,.player-layer.fit-cover video{object-fit:cover}.player-layer iframe{width:100%;height:100%;border:0;background:#fff}.caption{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:3.2em 1.4em 1.9em;display:grid;gap:.35em;background:linear-gradient(to top,#000000c7,#0000)}.caption strong{font-size:1.7em;line-height:1.15}.caption span{font-size:1.05em;opacity:.9}.segments{position:absolute;left:.6em;right:.6em;bottom:.45em;z-index:3;display:flex;gap:.35em}.seg{flex:1;height:.22em;border-radius:1em;background:#ffffff59;overflow:hidden}.seg-fill{display:block;height:100%;background:#fff}@keyframes segfill{0%{width:0}to{width:100%}}.zone-idle{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;text-align:center;gap:.4em;padding:1em;background:radial-gradient(circle at 50% 40%,#1a1f3d,#0a0b14 75%)}.zone-idle strong{font-size:1.8em}.zone-idle span{opacity:.65}.zone-text{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:1.2em 2em}.zone-text p{margin:0;font-size:1.9em;font-weight:600;line-height:1.3}.zone-events{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;gap:.45em;padding:.6em;overflow:hidden}.ev-row{flex:none;display:flex;align-items:center;justify-content:space-between;gap:.8em;padding:.55em .8em;border-radius:.4em;background:#00000047;font-size:1em;line-height:1.25}.ev-time{flex:none;padding:.2em .6em;border-radius:.35em;background:#ffffff2e;font-size:.85em;font-weight:600}.zone-sky{background:#3b8beb}.zone-weather{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.4em;display:flex;flex-direction:column;justify-content:flex-end}.wx-icon{position:absolute;top:.6em;right:.8em;width:5.5em;height:5.5em;color:#fff;opacity:.95}.wx-temp{font-size:5em;font-weight:700;line-height:1;letter-spacing:-.03em}.wx-label{font-size:1.3em;margin-top:.3em}.wx-city{display:flex;align-items:center;gap:.3em;font-size:1em;opacity:.9;margin-top:.2em}@media (prefers-reduced-motion: reduce){.player-layer{transition:none}.seg-fill{animation:none!important;width:60%!important}}.layout-preview{position:relative;width:100%;aspect-ratio:16 / 9;border-radius:12px;overflow:hidden;border:1px solid var(--border);background:#000}.layout-preview .zone.selectable:hover{outline:.15em solid rgba(124,116,255,.6);outline-offset:-.15em}button.card{font:inherit;color:inherit;width:100%}button.card:hover{border-color:var(--accent)}.lay-body{position:relative}.layout-preview .zone.editable{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.layout-preview .zone.editable:active{cursor:grabbing}.layout-preview .zone.editable .zone-body{pointer-events:none}.layout-preview .zone.editable:focus-visible{outline:.2em solid #7c74ff;outline-offset:-.2em}.zone-handle{position:absolute;right:0;bottom:0;width:2.2em;height:2.2em;z-index:5;cursor:nwse-resize;touch-action:none;background:linear-gradient(135deg,transparent 50%,#7c74ff 50%);border-bottom-right-radius:.45em}.grid-guides{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;padding:0 .65em .65em;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-template-rows:repeat(12,minmax(0,1fr));gap:.65em}.grid-guides i{border:1px dashed rgba(255,255,255,.28);border-radius:.3em}.lay-body.dragging .zone:not(.selected){opacity:.85}
