:root{--bg:#0f1216;--bg-elev:#161a20;--bg-panel:#1b2028;--border:#2a313c;--text:#e6e9ee;--text-muted:#9aa4b2;--accent:#4f8cff;--accent-hover:#6b9fff;--danger:#ff5c5c;--rec:#3b82f6;--motion:#ef4444;--bookmark:#eab308;--nav-w:280px;--radius:8px;color:var(--text);background:var(--bg);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg)}button,input{font:inherit}.login{place-items:center;min-height:100%;padding:16px;display:grid}.login-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;width:100%;max-width:360px;padding:28px}.login-card h1{margin:0 0 4px;font-size:20px}.login-card p{color:var(--text-muted);margin:0 0 20px}.field{gap:6px;margin-bottom:14px;display:grid}.field label{color:var(--text-muted);font-size:12px}.field input{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:10px 12px}.field input:focus{outline:2px solid var(--accent);outline-offset:-1px}.btn{background:var(--accent);color:#fff;border-radius:var(--radius);cursor:pointer;border:0;width:100%;padding:10px 12px;font-weight:600}.btn:hover{background:var(--accent-hover)}.btn:disabled{opacity:.6;cursor:default}.error{color:var(--danger);margin:0 0 12px;font-size:13px}.shell{grid-template-columns:var(--nav-w) 1fr;height:100%;display:grid}.shell.nav-collapsed{grid-template-columns:56px 1fr}.nav{background:var(--bg-elev);border-right:1px solid var(--border);flex-direction:column;min-height:0;display:flex}.nav-tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:2px;padding:8px;display:flex}.nav-tab{color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:6px 8px;font-size:12px}.nav-tab.active{background:var(--bg-panel);color:var(--text)}.nav-filter{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;margin:8px;padding:8px 10px}.nav-list{flex:1;padding:4px 8px;overflow:auto}.nav-item{color:var(--text);cursor:pointer;border-radius:6px;padding:8px 10px}.nav-item:hover{background:var(--bg-panel)}.nav-empty{color:var(--text-muted);padding:16px 10px;font-size:13px}.nav-foot{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:8px;display:flex}.nav-user{min-width:0;line-height:1.2;display:grid}.nav-user small{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.icon-btn{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;padding:6px 8px}.icon-btn:hover{color:var(--text)}.workspace{grid-template-rows:44px 1fr;min-width:0;min-height:0;display:grid}.ws-bar{border-bottom:1px solid var(--border);color:var(--text-muted);align-items:center;gap:12px;padding:0 12px;font-size:13px;display:flex}.ws-grid{color:var(--text-muted);text-align:center;place-items:center;padding:24px;display:grid}.ws-grid h2{color:var(--text);margin:0 0 8px;font-size:18px}.ws-foot{border-top:1px solid var(--border);color:var(--text-muted);align-items:center;gap:8px;padding:0 12px;font-size:12px;display:flex}.legend i{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin:0 4px 0 10px;display:inline-block}@media (width<=720px){.shell,.shell.nav-collapsed{grid-template-rows:auto 1fr;grid-template-columns:1fr}.nav{border-right:0;border-bottom:1px solid var(--border);max-height:40vh}}.nav-item.device,.nav-item.camera{grid-template-rows:auto auto;grid-template-columns:auto 1fr auto;align-items:center;column-gap:8px;display:grid}.nav-item.device.active,.nav-item.camera.active{background:var(--bg-panel);outline:1px solid var(--border)}.nav-item.device .device-name,.nav-item.camera .device-name{grid-column:2}.nav-item.device small{color:var(--text-muted);grid-column:2;font-size:11px}.nav-item.device .device-actions,.nav-item.camera .device-actions{grid-area:1/3/span 2;gap:6px;display:flex}.dot{background:var(--text-muted);border-radius:50%;grid-row:1/span 2;width:8px;height:8px;display:inline-block}.dot.on{background:#22c55e;box-shadow:0 0 6px #22c55e88}.dot.off{background:var(--danger)}.dot.new{background:var(--bookmark)}button.link{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:2px 4px;font-size:12px}button.link.danger{color:var(--danger);font-size:18px}.nav-item.device .device-actions button.link,.nav-item.camera .device-actions button.link{border-radius:6px;min-width:32px;min-height:32px;padding:4px 8px;font-size:15px}.nav-item.device .device-actions button.link.danger{font-size:18px}.nav-item.device .device-actions button.link:hover,.nav-item.camera .device-actions button.link:hover{background:var(--bg-elev)}.btn.secondary{background:var(--bg-panel);border:1px solid var(--border);color:var(--text)}.btn.secondary:hover{background:var(--border)}select{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:10px 12px}.muted{color:var(--text-muted);font-size:13px}.modal-backdrop{z-index:10;background:#0008;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;width:100%;max-width:440px;padding:24px}.modal h2{margin:0 0 16px;font-size:18px}.pairing-code{letter-spacing:.25em;text-align:center;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);-webkit-user-select:all;user-select:all;margin:12px 0;padding:14px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:32px}.code{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);white-space:pre-wrap;word-break:break-all;padding:10px;font-size:12px;overflow:auto}.ws-grid.has-tiles{background:#000;place-items:stretch stretch;padding:12px}.tile{border-radius:var(--radius);background:#000;place-items:center;min-height:240px;display:grid;position:relative;overflow:hidden}.tile img{object-fit:contain;width:100%;height:100%}.tile.offline{background:var(--bg-panel);color:var(--text-muted);grid-auto-flow:row;align-content:center;gap:6px}.tile-label{background:#000a;border-radius:6px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;display:flex;position:absolute;top:10px;left:10px}.live-badge{background:var(--danger);color:#fff;border-radius:3px;padding:1px 5px;font-size:10px;font-weight:700}.viewer{background:#000;grid-template-rows:1fr auto auto;min-height:0;display:grid}.viewer-video{place-items:center;min-height:200px;display:grid;position:relative;overflow:hidden}.viewer-video img{object-fit:contain;width:100%;max-width:100%;height:100%;max-height:100%}.viewer-empty{text-align:center;color:var(--text-muted);gap:6px;padding:24px;display:grid}.viewer-label,.viewer-time{background:#000a;border-radius:6px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;display:flex;position:absolute;top:10px}.viewer-label{left:10px}.viewer-time{font-variant-numeric:tabular-nums;right:10px}.viewer-msg{border:1px solid var(--border);cursor:pointer;background:#000c;border-radius:8px;padding:8px 14px;font-size:13px;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.pb-badge{background:var(--rec);color:#fff;border-radius:3px;padding:1px 5px;font-size:10px;font-weight:700}.rec-badge{color:var(--danger);font-size:11px;font-weight:700;animation:1.6s steps(2,start) infinite recblink}@keyframes recblink{to{visibility:hidden}}.viewer-controls{background:var(--bg-elev);border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;display:flex}.ctl-group{align-items:center;gap:6px;display:flex;position:relative}.ctl{background:var(--bg-panel);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:6px;min-width:34px;padding:5px 10px;font-size:13px}.ctl:hover:not(:disabled){border-color:var(--text-muted)}.ctl:disabled{opacity:.4;cursor:default}.ctl.primary{background:var(--accent);border-color:var(--accent);color:#fff;min-width:44px}.ctl.live{letter-spacing:.04em;font-weight:700}.ctl.live.on{background:var(--danger);border-color:var(--danger);color:#fff}.span-label{color:var(--text-muted);text-align:center;min-width:44px;font-size:12px}.timeline{border-top:1px solid var(--border);-webkit-user-select:none;user-select:none;background:#12161c;position:relative}.timeline-tip{background:var(--bg-panel);border:1px solid var(--border);white-space:nowrap;pointer-events:none;border-radius:6px;padding:4px 8px;font-size:12px;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.calendar{z-index:5;background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;width:260px;padding:10px;position:absolute;bottom:40px;left:0;box-shadow:0 8px 24px #0008}.cal-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.cal-grid{text-align:center;grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.cal-dow{color:var(--text-muted);padding:4px 0;font-size:11px}.cal-day{color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;padding:6px 0 9px;font-size:13px;position:relative}.cal-day:disabled{color:#4b5563;cursor:default}.cal-day:hover:not(:disabled){background:var(--bg-elev)}.cal-day.today{border-color:var(--border)}.cal-day.sel{background:var(--accent);color:#fff}.cal-dot{background:var(--rec);border-radius:50%;width:5px;height:5px;margin-left:-2.5px;position:absolute;bottom:3px;left:50%}.cal-day.sel .cal-dot{background:#fff}.check{align-items:center;gap:8px;margin-bottom:14px;display:flex}.field small{font-size:12px}.usage{gap:6px;margin-top:6px;display:grid}.usage-bar{background:var(--bg);border-radius:3px;height:6px;overflow:hidden}.usage-bar i{background:var(--rec);height:100%;display:block}@media (width<=720px){.viewer-controls{justify-content:center}.span-label{display:none}}.nav-item.camera{border-left:1px solid var(--border);border-radius:0 6px 6px 0;margin-left:18px}.nav-item.camera .dot{width:6px;height:6px}.ctl.on{background:var(--accent);color:#fff;border-color:var(--accent)}.ctl small{margin-left:3px;font-size:11px;font-weight:600}.shuttle-badge{color:#fff;pointer-events:none;background:#0000008c;border-radius:10px;padding:8px 16px;font-size:22px;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.viewer-info{display:none}.m-shell{background:var(--bg);flex-direction:column;height:100dvh;display:flex;overflow:hidden}.m-home{flex-direction:column;flex:1;min-height:0;display:flex}.m-home[hidden]{display:none}.m-bar{min-height:52px;padding:6px 12px;padding-top:max(6px, env(safe-area-inset-top));background:var(--bg-elev);border-bottom:1px solid var(--border);flex:none;align-items:center;gap:10px;display:flex}.m-brand{font-size:17px;font-weight:700}.m-user{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;min-width:0;margin-left:auto;font-size:13px;overflow:hidden}.m-bar .icon-btn{min-height:40px;padding:6px 12px}.m-back{color:var(--accent);cursor:pointer;background:0 0;border:0;flex:none;min-height:44px;padding:8px 6px;font-size:16px;font-weight:600}.m-title{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:8px;min-width:0;font-size:16px;font-weight:600;display:flex;overflow:hidden}.m-filter{margin:10px 12px 4px;padding:12px;font-size:16px}.m-list{padding:6px 10px calc(16px + env(safe-area-inset-bottom));flex:1;overflow:auto}.m-list .nav-item{background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;min-height:60px;margin-bottom:4px;padding:10px 12px;font-size:16px}.m-list .nav-item.camera{min-height:52px;margin-left:22px}.m-list .nav-item small{font-size:12px}.m-list .dot{width:10px;height:10px}.m-list .device-actions button.link{min-width:44px!important;min-height:44px!important}.m-list .btn.secondary{min-height:48px;font-size:15px}.m-shell .viewer{background:var(--bg);flex-direction:column;flex:1;min-height:0;display:flex}.m-shell .viewer-video{aspect-ratio:16/9;background:#000;flex:none;width:100%;min-height:0}.m-shell .viewer-label,.m-shell .viewer-time{display:none}.m-shell .shuttle-badge{padding:6px 12px;font-size:18px}.m-shell .viewer-msg{text-align:center;max-width:90%;font-size:12px;bottom:8px}.m-shell .viewer-info{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:4px;min-height:0;padding:12px;display:flex;overflow:hidden}.vi-time{font-variant-numeric:tabular-nums;letter-spacing:.01em;font-size:34px;font-weight:700}.vi-date{color:var(--text-muted);font-size:15px}.vi-state{align-items:center;gap:10px;margin-top:6px;display:flex}.vi-state .live-badge,.vi-state .pb-badge{border-radius:4px;padding:3px 8px;font-size:12px}.m-shell .viewer-controls{border-top:1px solid var(--border);flex:none;grid-template-columns:auto 1fr;grid-template-areas:"transport transport""date tools";gap:10px;padding:10px 12px;display:grid}.m-shell .ctl-transport{grid-area:transport;grid-template-columns:repeat(5,1fr);gap:8px;display:grid}.m-shell .ctl-transport .skip{display:none}.m-shell .ctl-transport .ctl{border-radius:10px;min-height:52px;padding:0;font-size:20px}.m-shell .ctl-transport .ctl small{margin:0;font-size:11px;line-height:1;display:block}.m-shell .ctl-date{grid-area:date}.m-shell .ctl-tools{grid-area:tools;justify-content:flex-end;gap:6px}.m-shell .ctl-date .ctl,.m-shell .ctl-tools .ctl{border-radius:8px;min-width:44px;min-height:44px;font-size:15px}.m-shell .ctl-tools select.ctl{padding:0 8px}.m-shell .span-label{display:none}.m-shell .timeline{padding-bottom:env(safe-area-inset-bottom);flex:none}.m-shell .calendar{z-index:20;width:min(340px,100vw - 32px);position:fixed;top:50%;bottom:auto;left:50%;transform:translate(-50%,-50%)}.m-shell .cal-day{padding:10px 0 13px;font-size:15px}@media (height<=500px){.m-shell.viewing .m-bar{min-height:38px;padding-top:2px;padding-bottom:2px}.m-shell.viewing .m-back{min-height:34px;padding:4px 6px}.m-shell .viewer-video{aspect-ratio:auto;flex:1}.m-shell .viewer-info{display:none}.m-shell .viewer-time{display:flex}.m-shell .viewer-controls{padding:6px 10px;padding-left:max(10px, env(safe-area-inset-left));padding-right:max(10px, env(safe-area-inset-right));flex-wrap:nowrap;justify-content:center;gap:8px;display:flex}.m-shell .ctl-transport{gap:6px;display:flex}.m-shell .ctl-transport .ctl{min-width:48px;min-height:40px;font-size:17px}.m-shell .ctl-transport .ctl small{margin-left:2px;display:inline}.m-shell .ctl-date .ctl,.m-shell .ctl-tools .ctl{min-height:40px}.m-shell .ctl-tools button[title^=Zoom]{display:none}}.nav-item.camera{grid-template-rows:auto}
