:root,:root[data-theme=dark]{color-scheme:dark;--bg: #0b0c0e;--bg-elevated: #101215;--surface: #16181c;--surface-2: #1d2025;--surface-3: #262a30;--border: #2a2e35;--border-strong: #3b4049;--text: #ececee;--text-muted: #9a9fa8;--text-faint: #666c76;--accent: #f2f3f5;--accent-strong: #ffffff;--accent-soft: rgba(255, 255, 255, .1);--accent-contrast: #0b0c0e;--focus: #d7dae0;--status-live: #2fbf71;--status-live-soft: rgba(47, 191, 113, .16);--status-warn: #e0a526;--status-warn-soft: rgba(224, 165, 38, .16);--status-error: #e5484d;--status-error-soft: rgba(229, 72, 77, .16);--status-idle: #737a86;--status-idle-soft: rgba(115, 122, 134, .2);--tile-bg: #000;--tile-empty-bg: #0e1013;--tile-empty-text: #5c6370;--tile-border: #1e2126;--tile-selected: #f2f3f5;--overlay: rgba(4, 5, 7, .72);--overlay-strong: rgba(4, 5, 7, .88);--shadow: 0 10px 30px rgba(0, 0, 0, .5);--scrollbar: #30353d;--hero-line: rgba(255, 255, 255, .14);--hero-glow: rgba(255, 255, 255, .06)}:root[data-theme=light]{color-scheme:light;--bg: #f2f3f5;--bg-elevated: #fafafb;--surface: #ffffff;--surface-2: #f1f2f4;--surface-3: #e5e7ea;--border: #dcdfe4;--border-strong: #c3c7ce;--text: #131518;--text-muted: #5b616b;--text-faint: #8a9099;--accent: #17191c;--accent-strong: #000000;--accent-soft: rgba(0, 0, 0, .08);--accent-contrast: #ffffff;--focus: #17191c;--status-live: #1a8a4d;--status-live-soft: rgba(26, 138, 77, .12);--status-warn: #9a6a0c;--status-warn-soft: rgba(154, 106, 12, .12);--status-error: #c2262e;--status-error-soft: rgba(194, 38, 46, .1);--status-idle: #737a86;--status-idle-soft: rgba(115, 122, 134, .14);--tile-bg: #0b0c0e;--tile-empty-bg: #e6e8eb;--tile-empty-text: #6d737d;--tile-border: #c9cdd3;--tile-selected: #ffffff;--overlay: rgba(4, 5, 7, .66);--overlay-strong: rgba(4, 5, 7, .85);--shadow: 0 10px 30px rgba(15, 18, 24, .16);--scrollbar: #c3c7ce;--hero-line: rgba(0, 0, 0, .14);--hero-glow: rgba(0, 0, 0, .05)}:root[data-theme=graphite]{color-scheme:dark;--bg: #121212;--bg-elevated: #181818;--surface: #1f1f1f;--surface-2: #262626;--surface-3: #2f2f2f;--border: #323232;--border-strong: #454545;--text: #eaeaea;--text-muted: #a3a3a3;--text-faint: #707070;--accent: #e9e9e9;--accent-strong: #ffffff;--accent-soft: rgba(255, 255, 255, .09);--accent-contrast: #121212;--focus: #d0d0d0;--status-live: #3cbd7a;--status-live-soft: rgba(60, 189, 122, .16);--status-warn: #d9a441;--status-warn-soft: rgba(217, 164, 65, .16);--status-error: #e0555a;--status-error-soft: rgba(224, 85, 90, .16);--status-idle: #7a7a7a;--status-idle-soft: rgba(122, 122, 122, .2);--tile-bg: #000;--tile-empty-bg: #151515;--tile-empty-text: #666;--tile-border: #242424;--tile-selected: #e9e9e9;--overlay: rgba(0, 0, 0, .72);--overlay-strong: rgba(0, 0, 0, .88);--shadow: 0 10px 30px rgba(0, 0, 0, .5);--scrollbar: #3a3a3a;--hero-line: rgba(255, 255, 255, .13);--hero-glow: rgba(255, 255, 255, .05)}:root[data-theme=slate]{color-scheme:dark;--bg: #0e1116;--bg-elevated: #141920;--surface: #1a2029;--surface-2: #212834;--surface-3: #2a323f;--border: #2d3543;--border-strong: #3f4a5b;--text: #e6eaf0;--text-muted: #98a2b3;--text-faint: #66707f;--accent: #e6eaf0;--accent-strong: #ffffff;--accent-soft: rgba(230, 234, 240, .1);--accent-contrast: #0e1116;--focus: #c9d1dd;--status-live: #33c079;--status-live-soft: rgba(51, 192, 121, .16);--status-warn: #dba43a;--status-warn-soft: rgba(219, 164, 58, .16);--status-error: #e2525a;--status-error-soft: rgba(226, 82, 90, .16);--status-idle: #71809a;--status-idle-soft: rgba(113, 128, 154, .2);--tile-bg: #000;--tile-empty-bg: #12161c;--tile-empty-text: #5f6b7c;--tile-border: #1f2630;--tile-selected: #e6eaf0;--overlay: rgba(6, 8, 12, .72);--overlay-strong: rgba(6, 8, 12, .88);--shadow: 0 10px 30px rgba(0, 0, 0, .5);--scrollbar: #364052;--hero-line: rgba(230, 234, 240, .14);--hero-glow: rgba(230, 234, 240, .06)}:root[data-theme=contrast]{color-scheme:dark;--bg: #000000;--bg-elevated: #000000;--surface: #0a0a0a;--surface-2: #161616;--surface-3: #222222;--border: #6f6f6f;--border-strong: #ffffff;--text: #ffffff;--text-muted: #d6d6d6;--text-faint: #a8a8a8;--accent: #ffffff;--accent-strong: #ffffff;--accent-soft: rgba(255, 255, 255, .18);--accent-contrast: #000000;--focus: #ffe600;--status-live: #4dff9a;--status-live-soft: rgba(77, 255, 154, .22);--status-warn: #ffd23f;--status-warn-soft: rgba(255, 210, 63, .22);--status-error: #ff6b6b;--status-error-soft: rgba(255, 107, 107, .22);--status-idle: #bdbdbd;--status-idle-soft: rgba(189, 189, 189, .25);--tile-bg: #000;--tile-empty-bg: #000;--tile-empty-text: #bdbdbd;--tile-border: #6f6f6f;--tile-selected: #ffe600;--overlay: rgba(0, 0, 0, .82);--overlay-strong: rgba(0, 0, 0, .94);--shadow: 0 0 0 1px #fff;--scrollbar: #8a8a8a;--hero-line: rgba(255, 255, 255, .4);--hero-glow: rgba(255, 255, 255, .08)}:root{--font: "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--mono: "Cascadia Mono", Consolas, "SFMono-Regular", Menlo, monospace;--radius: 6px;--radius-sm: 4px;--header-h: 48px;--toolbar-h: 42px;--row-h: 28px;--rail-w: 52px;--fs: 13px;--fs-sm: 12px;--fs-xs: 11px}@media(min-width:2200px){:root{--fs: 14px;--fs-sm: 13px;--fs-xs: 12px;--row-h: 30px;--header-h: 52px}}@media(min-width:3400px){:root{--fs: 16px;--fs-sm: 15px;--fs-xs: 13px;--row-h: 34px;--header-h: 60px;--toolbar-h: 50px}}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--fs);line-height:1.4;-webkit-font-smoothing:antialiased;overflow:hidden}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:1px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--scrollbar);border-radius:8px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-track{background:transparent}.muted{color:var(--text-muted)}.mono{font-family:var(--mono);font-size:var(--fs-xs)}.text-live{color:var(--status-live)}.text-warn,.warn-text{color:var(--status-warn)}.error-text{color:var(--status-error)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 12px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s}.btn:hover:not(:disabled){background:var(--surface-3)}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.btn-danger{background:var(--status-error);border-color:var(--status-error);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(1.08)}.btn-primary:hover:not(:disabled){background:var(--accent-strong)}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover:not(:disabled),.btn-ghost.active{background:var(--surface-2);border-color:var(--border)}.btn-sm{height:28px;padding:0 9px;font-size:var(--fs-sm)}.btn-block{width:100%;height:38px}.icon-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:none;border:1px solid transparent;border-radius:var(--radius);background:transparent;color:var(--text-muted);cursor:pointer}.icon-btn:hover:not(:disabled){color:var(--text);background:var(--surface-2)}.icon-btn.active{color:var(--accent);background:var(--accent-soft)}.icon-btn:disabled{opacity:.4;cursor:default}.link-btn{border:0;background:none;color:var(--accent);cursor:pointer;padding:0 2px;font-size:var(--fs-sm)}.link-btn:hover{text-decoration:underline}.badge{position:absolute;top:1px;right:0;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--status-error);color:#fff;font-size:10px;line-height:16px;font-weight:600}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex:none}.dot-live{background:var(--status-live);box-shadow:0 0 0 3px var(--status-live-soft)}.dot-warn{background:var(--status-warn);box-shadow:0 0 0 3px var(--status-warn-soft)}.dot-error{background:var(--status-error);box-shadow:0 0 0 3px var(--status-error-soft)}.dot-idle{background:var(--status-idle)}.dot-pulse{animation:pulse 1.8s ease-in-out infinite}@keyframes pulse{50%{opacity:.45}}.spinner{display:inline-block;flex:none;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;opacity:.8;animation:spin .75s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner,.dot-pulse{animation-duration:3s}}.segmented{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--surface);flex:none}.segmented button{border:0;background:transparent;padding:3px 9px;font-size:var(--fs-xs);color:var(--text-muted);cursor:pointer}.segmented button+button{border-left:1px solid var(--border)}.segmented button.on{background:var(--accent-soft);color:var(--accent);font-weight:600}.check{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs);color:var(--text-muted);white-space:nowrap}select,.inline-input{height:30px;padding:0 8px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface)}.field{display:flex;flex-direction:column;gap:5px}.field-label{font-size:var(--fs-sm);color:var(--text-muted);font-weight:500}.field-input{display:flex;align-items:center;gap:8px;height:38px;padding:0 10px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--bg-elevated);color:var(--text-muted)}.field-input:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field-input input,.field-input select{flex:1;min-width:0;height:100%;border:0;outline:0;background:transparent;color:var(--text);padding:0}.field-input select option{background:var(--surface)}.popover{position:absolute;z-index:50;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow)}.popover-head{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid var(--border);font-weight:600}.popover-search{display:flex;align-items:center;gap:6px;padding:6px 10px;border-bottom:1px solid var(--border);color:var(--text-muted)}.popover-search input{flex:1;border:0;outline:0;background:transparent}.menu-anchor{position:relative}.empty-hint{padding:14px;color:var(--text-faint);text-align:center;font-size:var(--fs-sm)}.menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:6px 12px;border:0;background:transparent;text-align:left;cursor:pointer;font-size:var(--fs-sm)}.menu-item:hover:not(:disabled){background:var(--accent-soft)}.menu-item:disabled{opacity:.45;cursor:default}.menu-item.danger{color:var(--status-error)}.menu-item-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-icon{display:inline-flex;width:16px;color:var(--text-muted)}.menu-sep{height:1px;margin:4px 0;background:var(--border)}.context-menu{position:fixed;z-index:200;min-width:220px;padding:4px 0;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow)}.boot{height:100%;display:grid;place-items:center;color:var(--text-muted)}.login-error,.login-notice{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--radius);font-size:var(--fs-sm)}.login-error{background:var(--status-error-soft);color:var(--status-error)}.login-notice{background:var(--status-warn-soft);color:var(--status-warn)}.shell{height:100%;display:flex;flex-direction:column}.shell-body{flex:1;min-height:0;display:flex}.app-header{height:var(--header-h);flex:none;display:flex;align-items:center;gap:16px;padding:0 12px;background:var(--bg-elevated);border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:9px;min-width:0}.brand-name{font-weight:650;font-size:15px;white-space:nowrap}.brand-tag{font-size:10px;font-weight:700;letter-spacing:1.2px;color:var(--accent);border:1px solid var(--accent);border-radius:3px;padding:1px 5px}.header-center{flex:1;display:flex;align-items:center;gap:8px;min-width:0;overflow:hidden}.header-chip{display:inline-flex;align-items:center;gap:7px;height:28px;padding:0 10px;border-radius:14px;border:1px solid var(--border);background:var(--surface);white-space:nowrap;min-width:0;font-size:var(--fs-sm)}.header-chip-btn{cursor:pointer;color:var(--text-muted)}.header-chip-btn:hover{color:var(--text);border-color:var(--border-strong)}.chip-label{overflow:hidden;text-overflow:ellipsis}.chip-meta{color:var(--text-faint);font-size:var(--fs-xs)}.header-actions{display:flex;align-items:center;gap:4px}.header-user{display:inline-flex;align-items:center;gap:6px;padding:0 8px;color:var(--text-muted);font-size:var(--fs-sm)}.notif-popover{right:0;top:36px;width:340px}.notif-list{max-height:420px;overflow:auto}.notif-item{display:flex;gap:10px;align-items:flex-start;padding:9px 12px;border-bottom:1px solid var(--border)}.notif-item .dot{margin-top:5px}.notif-msg{font-size:var(--fs-sm)}.notif-time{font-size:var(--fs-xs);color:var(--text-faint)}.sidebar{width:var(--sidebar-w, 320px);flex:none;display:flex;flex-direction:column;min-height:0;background:var(--bg-elevated);border-right:1px solid var(--border)}.resizer{width:4px;margin-left:-2px;margin-right:-2px;cursor:col-resize;z-index:5}.resizer:hover{background:var(--border-strong)}.sidebar-tabs{display:flex;border-bottom:1px solid var(--border);flex:none}.sidebar-tab{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:5px;min-width:0;height:38px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--text-muted);font-size:var(--fs-sm);cursor:pointer}.sidebar-tab span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-tab:hover{color:var(--text)}.sidebar-tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.sidebar-body{flex:1;min-height:0;display:flex;flex-direction:column}.sidebar-body.scroll{overflow:auto}.sidebar-section{padding:8px 10px 0;flex:none}.sidebar-tools{display:flex;flex-direction:column;gap:6px;padding-bottom:6px;border-bottom:1px solid var(--border)}.section-label{font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--text-faint);margin-bottom:4px}.section-label-tree{padding:8px 10px 2px;margin:0;flex:none}.server-selector{position:relative;margin-bottom:8px}.server-selector-btn{display:flex;align-items:center;gap:8px;width:100%;height:34px;padding:0 10px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);cursor:pointer;text-align:left}.server-selector-btn:hover{border-color:var(--accent)}.server-selector-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.server-region{font-size:10px;padding:1px 5px;border-radius:3px;background:var(--surface-3);color:var(--text-muted);margin-left:6px;font-weight:500}.server-popover{left:0;right:0;top:38px;max-height:60vh;display:flex;flex-direction:column}.server-list{overflow:auto}.server-option{display:flex;align-items:flex-start;gap:9px;width:100%;padding:8px 10px;border:0;border-bottom:1px solid var(--border);background:transparent;text-align:left;cursor:pointer}.server-option .dot{margin-top:5px}.server-option:hover:not(:disabled),.server-option.selected{background:var(--accent-soft)}.server-option:disabled{opacity:.5;cursor:default}.server-option-main{flex:1;min-width:0}.server-option-name{font-weight:600}.server-option-meta{font-size:var(--fs-xs);color:var(--text-muted)}.auth-badge{display:inline-flex;align-items:center;gap:3px;flex:none;font-size:10px;padding:1px 5px;border-radius:3px;white-space:nowrap}.auth-live{color:var(--status-live);background:var(--status-live-soft)}.auth-warn{color:var(--status-warn);background:var(--status-warn-soft)}.auth-error{color:var(--status-error);background:var(--status-error-soft)}.auth-idle{color:var(--text-muted);background:var(--status-idle-soft)}.search-box{display:flex;align-items:center;gap:6px;height:32px;padding:0 8px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);color:var(--text-muted)}.search-box:focus-within{border-color:var(--accent)}.search-box input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:var(--text)}.search-box .icon-btn{width:22px;height:22px}.filter-row{display:flex;align-items:center;gap:8px}.filter-row .icon-btn{margin-left:auto;width:26px;height:26px}.tree{flex:1;min-height:0;overflow:auto;padding:2px 0 12px;contain:strict}.tree-empty{display:flex;align-items:center;gap:8px;padding:16px;color:var(--text-muted)}.tree-row{position:absolute;top:0;left:0;right:0;height:var(--row-h);display:flex;align-items:center;gap:6px;padding:0 8px 0 6px;cursor:default;-webkit-user-select:none;user-select:none;white-space:nowrap;border:0;background:transparent;text-align:left;font-size:var(--fs)}.tree-row:hover{background:var(--surface-2)}.tree-row.selected{background:var(--accent-soft);box-shadow:inset 2px 0 0 var(--accent)}.tree-server{font-weight:600;cursor:pointer}.tree-server.is-current{background:var(--surface)}.tree-org,.tree-device{cursor:pointer}.tree-channel[draggable=true]{cursor:grab}.tree-channel.is-offline .node-name{color:var(--text-muted)}.chev{flex:none;color:var(--text-faint);transition:transform .12s}.chev.open{transform:rotate(90deg)}.chev-spacer{width:14px;flex:none}.node-icon{flex:none;color:var(--text-muted)}.cam-online{color:var(--status-live)}.cam-offline{color:var(--status-error)}.node-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.count{flex:none;font-size:var(--fs-xs);color:var(--text-faint);font-variant-numeric:tabular-nums}.fav-star{color:var(--text);flex:none}.tree-meta{color:var(--text-muted);font-size:var(--fs-sm)}.tree-more{color:var(--accent);cursor:pointer}.tree-error{color:var(--status-error)}.search-results{flex:1;min-height:0;display:flex;flex-direction:column}.search-summary{display:flex;align-items:center;gap:6px;padding:4px 10px;font-size:var(--fs-xs);color:var(--text-muted)}.search-hit{gap:8px;cursor:pointer}.hit-text{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}.hit-path{font-size:var(--fs-xs);color:var(--text-faint);overflow:hidden;text-overflow:ellipsis}.list{display:flex;flex-direction:column}.list-head{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--text-faint)}.list-row{display:flex;align-items:center;gap:8px;padding:7px 10px;border-bottom:1px solid var(--border);cursor:default}.list-row:hover{background:var(--surface-2)}.list-row-main{flex:1;min-width:0}.list-row-title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-row-sub{font-size:var(--fs-xs);color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-row-actions{display:flex;opacity:.6}.list-row:hover .list-row-actions{opacity:1}.panel-empty{display:flex;flex-direction:column;align-items:center;gap:4px;padding:32px 20px;color:var(--text-muted);text-align:center}.panel-empty p{margin:0}.live-view{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--bg)}.live-view:fullscreen{background:#000}.toolbar{height:var(--toolbar-h);flex:none;display:flex;align-items:center;gap:8px;padding:0 10px;border-bottom:1px solid var(--border);background:var(--bg-elevated);overflow-x:auto;overflow-y:visible}.toolbar-group{display:flex;align-items:center;gap:2px}.toolbar-sep{width:1px;height:22px;background:var(--border);flex:none}.toolbar-spacer{flex:1}.toolbar-summary{display:flex;align-items:center;gap:10px;font-size:var(--fs-sm);color:var(--text-muted);white-space:nowrap}.grid-popover{top:34px;left:0;width:290px;padding:8px}.grid-options{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.grid-option{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);color:var(--text-muted);font-size:var(--fs-xs);cursor:pointer}.grid-option:hover,.grid-option.on{border-color:var(--accent);color:var(--accent)}.custom-grid{display:flex;align-items:center;gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid var(--border);font-size:var(--fs-sm)}.custom-grid input{width:46px;height:28px;padding:0 4px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface)}.layouts-popover{top:34px;left:0;min-width:240px;max-height:50vh;overflow:auto;padding:4px 0}.video-grid{flex:1;min-height:0;display:grid;gap:2px;padding:2px;background:var(--bg)}.live-view:fullscreen .video-grid{gap:1px;padding:0;background:#000}.grid-cell{position:relative;min-width:0;min-height:0}.video-grid.has-maximized .grid-cell:not(.is-max){visibility:hidden}.grid-cell.is-max{z-index:2}.tile{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;background:var(--tile-bg);border:1px solid var(--tile-border);border-radius:2px;color:#e5e7eb}.tile.selected{border-color:var(--tile-selected);box-shadow:inset 0 0 0 1px var(--tile-selected)}.tile.drag-over{border-color:var(--status-live);box-shadow:inset 0 0 0 2px var(--status-live)}.tile-video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background:#000}.tile-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--tile-empty-text);background:var(--tile-empty-bg);border-style:dashed;font-size:var(--fs-sm);text-align:center;padding:8px}.tile-index{position:absolute;top:6px;left:8px;font-size:var(--fs-xs);color:var(--tile-empty-text);opacity:.7}.tile-sub{font-size:var(--fs-xs);color:#9ca3af}.tile-empty .tile-sub{color:var(--tile-empty-text);opacity:.8}.live-pill{display:inline-flex;align-items:center;gap:5px;flex:none;padding:1px 7px 1px 6px;border-radius:10px;font-weight:700;font-size:10px;letter-spacing:.4px;background:#0000008c;text-transform:uppercase}.pill-live{color:#4ade80}.pill-warn{color:#facc15}.pill-error{color:#f87171}.pill-idle{color:#9ca3af}.live-pill .dot{width:7px;height:7px;box-shadow:none}.tile-actions{display:flex;align-items:center;gap:0;pointer-events:auto;opacity:0;transition:opacity .15s}.tile-actions .icon-btn{width:24px;height:24px;color:#d1d5db}.tile-actions .icon-btn:hover:not(:disabled){background:#ffffff24;color:#fff}.tile-actions .icon-btn.active{color:#fff;background:#ffffff38}.quality-btn{height:18px;padding:0 4px;margin:0 2px;border:1px solid rgba(255,255,255,.35);border-radius:3px;background:transparent;color:#e5e7eb;font-size:9px;font-weight:700;cursor:pointer}.tile-stats,.tile-clock{flex:none;font-family:var(--mono);font-size:10px;color:#d1d5db;text-shadow:0 1px 2px #000;white-space:nowrap}.tile-stats{color:#9ca3af}.tile-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:24px 10px;text-align:center;font-size:var(--fs-sm);color:#d1d5db;z-index:2}.tile-error{color:#fca5a5;background:#0000008c}.tile-error-actions .btn{background:#ffffff14;border-color:#ffffff40;color:#fff}.tile-gesture{border:0;background:#00000073;cursor:pointer;font-weight:600}.tile-info{position:absolute;top:30px;right:6px;z-index:4;max-width:calc(100% - 12px);padding:8px 10px;border-radius:var(--radius);background:var(--overlay-strong);font-size:var(--fs-xs)}.tile-info dl{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;margin:0}.tile-info dt{color:#9ca3af}.tile-info dd{margin:0;overflow-wrap:anywhere}.tile:fullscreen{border:0}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:16px;background:#02060c8c}.dialog{max-width:100%;max-height:calc(100vh - 32px);display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border-strong);border-radius:10px;box-shadow:var(--shadow)}.dialog-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border)}.dialog-head h2{margin:0;font-size:15px;font-weight:650}.dialog-body{padding:14px;overflow:auto}.dialog-foot{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid var(--border)}.form-stack{display:flex;flex-direction:column;gap:12px}.form-stack p{margin:0}.settings{display:flex;flex-direction:column}.setting{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid var(--border)}.setting-title{font-weight:600}.setting-desc{font-size:var(--fs-xs);color:var(--text-muted)}.setting-info{padding-top:10px;font-size:var(--fs-xs)}.status-dialog{display:flex;flex-direction:column;gap:12px}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.kpi{padding:10px;border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border);min-width:0}.kpi-label{font-size:var(--fs-xs);color:var(--text-muted)}.kpi-value{font-size:20px;font-weight:650;font-variant-numeric:tabular-nums}.kpi-sub{font-size:var(--fs-xs);color:var(--text-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.status-table th,.status-table td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--border);white-space:nowrap}.status-table th{color:var(--text-muted);font-weight:600;font-size:var(--fs-xs)}.status-table td .dot{margin-right:4px}.user-avatar{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--accent);color:var(--accent-contrast);font-size:var(--fs-xs);font-weight:700;flex:none}.user-popover{right:0;top:40px;width:240px;padding:4px 0}.user-popover-head{padding:8px 12px;border-bottom:1px solid var(--border)}.user-popover-name{font-weight:600}.admin{display:flex;flex-direction:column;min-height:60vh}.admin-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:10px}.admin-tabs button{border:0;border-bottom:2px solid transparent;background:transparent;color:var(--text-muted);padding:6px 12px;cursor:pointer;font-weight:500}.admin-tabs button.on{color:var(--accent);border-bottom-color:var(--accent)}.admin-body{min-height:300px}.admin-body.center{display:grid;place-items:center}.admin-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:8px}.admin-filter{height:30px;padding:0 8px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface)}.admin-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.admin-table th,.admin-table td{text-align:left;padding:7px 8px;border-bottom:1px solid var(--border);vertical-align:top}.admin-table th{color:var(--text-muted);font-weight:600;font-size:var(--fs-xs)}.admin-user-name{font-weight:600}.admin-row-actions{display:flex;gap:2px;justify-content:flex-end}.audit-table td{white-space:nowrap}.pill-idle{color:var(--text-muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.admin-enabled{align-self:end;height:38px}.admin-section-label{margin:16px 0 8px;font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--text-faint)}.perm-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px}.access-editor{display:flex;flex-direction:column;gap:10px;max-height:40vh;overflow:auto}.access-server{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.access-server-head{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--surface-2)}.access-server-name{flex:1;font-weight:600}.rule-tree{padding:6px 8px;max-height:240px;overflow:auto}.rule-row{display:flex;align-items:center;gap:4px;height:26px}.rule-chev{display:inline-flex;width:18px;border:0;background:none;color:var(--text-faint);cursor:pointer}.rule-chev .open{transform:rotate(90deg)}.rule-label{display:flex;align-items:center;gap:6px;cursor:pointer;min-width:0}.rule-label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rule-hint{margin-top:6px;font-size:var(--fs-xs)}@media(max-width:700px){.form-grid,.perm-grid{grid-template-columns:1fr}}.toasts{position:fixed;right:14px;bottom:14px;z-index:300;display:flex;flex-direction:column;gap:8px;width:360px;max-width:calc(100vw - 28px)}.toast{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 12px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border-strong);border-left-width:3px;box-shadow:var(--shadow);font-size:var(--fs-sm);animation:toast-in .18s ease-out}@keyframes toast-in{0%{transform:translateY(8px);opacity:0}}.toast-msg{flex:1}.toast-icon{display:inline-flex}.toast-info{border-left-color:var(--accent)}.toast-info .toast-icon{color:var(--accent)}.toast-success{border-left-color:var(--status-live)}.toast-success .toast-icon{color:var(--status-live)}.toast-warning{border-left-color:var(--status-warn)}.mode-toggle{display:inline-flex;gap:2px;padding:2px;border-radius:8px;background:var(--surface-2);border:1px solid var(--border);margin-left:4px}.mode-btn{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 10px;border:0;border-radius:6px;background:transparent;color:var(--text-muted);font-size:var(--fs-sm);font-weight:600;cursor:pointer}.mode-btn:hover{color:var(--text)}.mode-btn.active{background:var(--accent);color:var(--accent-contrast)}.admin-conn{display:inline-flex;align-items:center;gap:6px}.admin-test-result{margin-top:10px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);font-size:var(--fs-sm)}.toast-warning .toast-icon{color:var(--status-warn)}.toast-error{border-left-color:var(--status-error)}.toast-error .toast-icon{color:var(--status-error)}.icon-btn-sm{width:24px;height:24px}.icon-btn-lg{width:36px;height:36px}.menu-title{padding:6px 12px 4px;font-size:var(--fs-xs);font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--text-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}.menu-list{display:flex;flex-direction:column}.menu-entry{position:relative}.menu-item.is-active:not(:disabled),.menu-item:focus-visible{background:var(--accent-soft);outline:none}.menu-hint{margin-left:auto;padding-left:12px;color:var(--text-faint);font-size:var(--fs-xs);white-space:nowrap}.menu-chev{margin-left:auto;color:var(--text-faint)}.menu-hint+.menu-chev{margin-left:4px}.context-submenu{position:absolute;top:-5px;left:100%;z-index:1;min-width:220px;padding:4px 0;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow)}.context-submenu.sub-left{left:auto;right:100%}.confirm-message{line-height:1.5}.theme-popover{right:0;top:36px;width:260px;padding-bottom:4px}.theme-item{align-items:center;padding:7px 12px}.theme-item .menu-item-text{display:flex;flex-direction:column;line-height:1.25}.theme-item-desc{font-size:var(--fs-xs);color:var(--text-faint)}.theme-item.is-current{background:var(--accent-soft)}.theme-swatch{width:18px;height:18px;flex:none;border-radius:50%;border:1px solid var(--border-strong);background:linear-gradient(135deg,#0b0c0e 50%,#f2f3f5 50%)}.theme-swatch-light{background:linear-gradient(135deg,#fff 50%,#17191c 50%)}.theme-swatch-graphite{background:linear-gradient(135deg,#121212 50%,#9a9a9a 50%)}.theme-swatch-slate{background:linear-gradient(135deg,#0e1116 50%,#98a2b3 50%)}.theme-swatch-contrast{background:linear-gradient(135deg,#000 50%,#fff 50%);border-color:#fff}.btn-text{display:inline}.row-play{display:none;align-items:center;justify-content:center;width:30px;height:26px;flex:none;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);cursor:pointer}@media(hover:none)and (pointer:coarse){.row-play{display:inline-flex}.tree-row:hover .row-play,.row-play:active{background:var(--accent);color:var(--accent-contrast)}}.sidebar-tab-tools{display:flex;align-items:center;gap:2px;padding:0 4px;flex:none}.sidebar:not(.sidebar-rail){container-type:inline-size}@container (max-width: 400px){.sidebar-tab span{display:none}.sidebar-tab{gap:0}}.sidebar-rail{width:var(--rail-w);align-items:center;padding:6px 0}.rail-tabs{display:flex;flex-direction:column;gap:4px;flex:1}.rail-tabs .icon-btn,.rail-foot .icon-btn{width:38px;height:38px}.rail-count{position:absolute;top:2px;right:2px;min-width:14px;height:14px;padding:0 3px;border-radius:7px;background:var(--accent);color:var(--accent-contrast);font-size:9px;line-height:14px;font-weight:700}.rail-foot{display:flex;flex-direction:column;gap:4px;padding-top:6px;border-top:1px solid var(--border)}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#00000080}.drawer{position:fixed;top:0;left:0;bottom:0;z-index:61;width:min(92vw,380px);display:flex;flex-direction:column;background:var(--bg-elevated);border-right:1px solid var(--border-strong);box-shadow:var(--shadow);animation:drawer-in .18s ease-out}@keyframes drawer-in{0%{transform:translate(-20px);opacity:0}}.drawer-head{display:flex;align-items:center;justify-content:space-between;height:var(--header-h);padding:0 8px 0 14px;border-bottom:1px solid var(--border);font-weight:650;flex:none}.drawer .sidebar{width:100%;flex:1;border-right:0}.toolbar-slim{height:34px}.workspace-exit{position:absolute;right:12px;bottom:12px;z-index:20;display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:15px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:var(--fs-sm);cursor:pointer;box-shadow:var(--shadow);opacity:.85}.workspace-exit:hover{opacity:1}.live-view{position:relative}.grid-cell{container-type:size}.tile-hud{position:absolute;left:0;right:0;display:flex;align-items:flex-start;gap:6px;padding:6px 8px;font-size:var(--fs-xs);pointer-events:none;z-index:3;color:#f3f4f6}.tile-hud-top{top:0;background:linear-gradient(var(--overlay),transparent);padding-bottom:18px}.tile-hud-bottom{bottom:0;align-items:center;background:linear-gradient(transparent,var(--overlay));padding-top:16px}.tile-hud-spacer{flex:1}.tile-ident{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;text-shadow:0 1px 2px rgba(0,0,0,.9);transition:opacity .15s}.tile-id{font-weight:750;font-size:clamp(15px,7cqmin,30px);line-height:1.05;letter-spacing:.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile-name{font-weight:600;font-size:clamp(11px,3.6cqmin,16px);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile-loc{font-size:clamp(10px,2.8cqmin,13px);color:#cfd3da;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile-actions{display:flex;align-items:center;gap:0;flex:none;pointer-events:auto;opacity:0;transition:opacity .15s;padding:2px;border-radius:var(--radius);background:#00000073}.tile:hover .tile-actions,.tile:focus-within .tile-actions,.tile.selected .tile-actions{opacity:1}.tile-more{pointer-events:auto;width:24px;height:24px;color:#d1d5db;opacity:.55}.tile:hover .tile-more,.tile.selected .tile-more,.tile-more:focus-visible{opacity:1}.tile-more:hover{background:#ffffff24;color:#fff}.tile-info-close{position:absolute;top:2px;right:2px;width:22px;height:22px;color:#d1d5db}.tile-info{padding-right:26px}.tile-empty .tile-index{font-size:var(--fs-sm)}@container (max-width: 180px){.tile-name,.tile-loc,.tile-stats,.tile-clock{display:none}.tile-hud{padding:4px 5px}}@container (max-height: 120px){.tile-loc,.tile-stats{display:none}}.tile:fullscreen{border:0;background:#000}.tile:fullscreen .tile-video{object-fit:contain}.tile:fullscreen .tile-hud{padding:14px 18px;font-size:var(--fs)}.tile:fullscreen .tile-id{font-size:32px}.tile:fullscreen .tile-name{font-size:18px}.tile:fullscreen .tile-loc{font-size:14px}@media(hover:none)and (pointer:coarse){.tile-actions{display:none}.tile-more{opacity:1;width:30px;height:30px}.tile-hud-bottom{align-items:center}}.video-grid.stacked{display:flex;flex-direction:column;gap:4px;padding:4px;overflow-y:auto;overflow-x:hidden}.video-grid.stacked .grid-cell{flex:none;width:100%;aspect-ratio:16 / 9;max-height:60vh}.video-grid.stacked.has-maximized{overflow:hidden}.video-grid.stacked.has-maximized .grid-cell.is-max{flex:1;aspect-ratio:auto;max-height:none}@media(max-width:1280px){.brand-tag,.header-user .chip-label,.toolbar-summary .muted,.btn-text{display:none}}@media(max-width:1024px){.header-center .header-chip:nth-child(3){display:none}.sidebar:not(.sidebar-rail):not(.in-drawer){width:min(var(--sidebar-w, 320px),280px)}.sidebar-tab span{display:none}.kpis{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.app-header{gap:8px;padding:0 8px}.brand-name,.header-center,.mode-btn span{display:none}.mode-btn{padding:0 9px}.header-actions{gap:0}.header-actions .icon-btn{width:34px;height:34px}.header-user{padding:0 4px}.resizer{display:none}.toolbar{height:auto;min-height:var(--toolbar-h);flex-wrap:wrap;row-gap:4px;padding:4px 6px;overflow:visible}.toolbar-mobile .toolbar-summary{font-size:var(--fs-xs);gap:6px}.toolbar-mobile .icon-btn{width:34px;height:34px}.grid-popover{width:min(92vw,290px)}.layouts-popover{max-width:92vw}.popover.notif-popover,.popover.user-popover,.popover.theme-popover{position:fixed;right:8px;left:8px;top:calc(var(--header-h) + 4px);width:auto}.dialog{width:100%!important;max-height:calc(100dvh - 16px)}.dialog-backdrop{padding:8px;align-items:end}.kpis{grid-template-columns:1fr 1fr}.toasts{width:calc(100vw - 16px);right:8px;bottom:8px}.workspace-exit{right:8px;bottom:8px}.context-menu{min-width:min(260px,92vw)}.context-submenu{position:static;box-shadow:none;border:0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);border-radius:0;margin:4px 0;padding-left:10px;visibility:visible!important}}@media(max-width:900px)and (max-height:500px)and (orientation:landscape){:root{--header-h: 40px;--toolbar-h: 36px}.toolbar{flex-wrap:nowrap;overflow-x:auto}}.landing{position:relative;height:100%;display:flex;flex-direction:column;overflow:auto;background:var(--bg);color:var(--text)}.landing-bg{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(900px 480px at 18% 20%,var(--hero-glow),transparent 65%),radial-gradient(700px 400px at 85% 90%,var(--hero-glow),transparent 65%),linear-gradient(var(--hero-line) 1px,transparent 1px) 0 0 / 56px 56px,linear-gradient(90deg,var(--hero-line) 1px,transparent 1px) 0 0 / 56px 56px;opacity:.45;-webkit-mask-image:linear-gradient(180deg,#000000e6,#00000059);mask-image:linear-gradient(180deg,#000000e6,#00000059)}.landing-top{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;padding:16px clamp(16px,4vw,48px)}.landing-brand{display:flex;align-items:center;gap:10px}.landing-brand-name{font-weight:650;font-size:15px;letter-spacing:.2px}.landing-main{position:relative;z-index:1;flex:1;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(360px,420px);align-items:center;gap:clamp(24px,5vw,72px);padding:8px clamp(16px,4vw,48px) 24px;max-width:1320px;width:100%;margin:0 auto}.landing-foot{position:relative;z-index:1;padding:12px clamp(16px,4vw,48px) 18px;color:var(--text-faint);font-size:var(--fs-xs);letter-spacing:1.5px;text-transform:uppercase}.landing-hero{min-width:0;animation:hero-in .6s ease-out both}@keyframes hero-in{0%{opacity:0;transform:translateY(8px)}}.hero-kicker{display:flex;align-items:center;gap:12px;font-size:var(--fs-xs);font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--text-muted)}.hero-live-badge{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border:1px solid var(--border-strong);border-radius:999px;color:var(--status-live);background:var(--surface);letter-spacing:1.5px}.hero-title{margin:14px 0 10px;font-size:clamp(40px,6vw,76px);line-height:.98;font-weight:750;letter-spacing:-.02em}.hero-lead{margin:0;max-width:560px;font-size:clamp(15px,1.4vw,18px);line-height:1.5;color:var(--text-muted)}.hero-diagram{margin:22px 0 8px;max-width:640px;color:var(--text)}.hero-svg{width:100%;height:auto;display:block;overflow:visible}.hero-cam-label,.hero-node-label{font-family:var(--mono);font-size:9px;letter-spacing:1.2px;fill:currentColor;fill-opacity:.75}.hero-node-label{font-size:10px;font-weight:700}.hero-live-dot{fill:var(--status-live);animation:hero-pulse 1.8s ease-in-out infinite}.hero-line{stroke-dasharray:6 8;animation:hero-dash 2.4s linear infinite}.hero-line-out{stroke-dasharray:8 6;animation-duration:1.6s}.hero-camera{transform-box:fill-box;transform-origin:center;animation:hero-float 6s ease-in-out infinite}.hero-lens-ring{transform-box:fill-box;transform-origin:center;animation:hero-focus 3.6s ease-in-out infinite}.hero-ring{transform-box:fill-box;transform-origin:center;animation:hero-ring 3.2s ease-out infinite}.hero-ring-2{animation-delay:1.6s}.hero-wave{stroke-dasharray:60;animation:hero-wave 1.8s ease-in-out infinite}.hero-wave-2{animation-delay:.4s}@keyframes hero-pulse{50%{opacity:.35}}@keyframes hero-dash{to{stroke-dashoffset:-28}}@keyframes hero-float{50%{transform:translateY(-3px)}}@keyframes hero-focus{0%,to{transform:scale(1);opacity:.7}50%{transform:scale(1.35);opacity:.3}}@keyframes hero-ring{0%{transform:scale(.8);opacity:.6}to{transform:scale(1.25);opacity:0}}@keyframes hero-wave{0%,to{stroke-dashoffset:0;opacity:.25}50%{stroke-dashoffset:12;opacity:.9}}.hero-static .hero-line,.hero-static .hero-camera,.hero-static .hero-lens-ring,.hero-static .hero-ring,.hero-static .hero-wave,.hero-static .hero-live-dot{animation:none}.hero-points{list-style:none;margin:18px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;max-width:640px}.hero-points li{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb,var(--surface) 70%,transparent);font-size:var(--fs-sm);color:var(--text-muted)}.hero-points strong{color:var(--text);font-weight:650}.landing-login{min-width:0;animation:hero-in .6s .1s ease-out both}.login-card{position:relative;width:100%;max-width:420px;margin:0 auto;display:flex;flex-direction:column;gap:16px;padding:28px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow)}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:2px}.login-title{font-size:20px;font-weight:650;letter-spacing:.2px}.login-subtitle{color:var(--text-muted);font-size:var(--fs-sm)}.login-foot{color:var(--text-faint);font-size:var(--fs-xs);text-align:center;line-height:1.4}.field-input.invalid{border-color:var(--status-error)}.login-card .field-input .icon-btn{margin-right:-4px}@media(max-width:1000px){.landing-main{grid-template-columns:1fr;align-items:start;gap:20px;padding-top:4px}.landing-hero{text-align:left}.hero-diagram{max-width:520px;margin:14px 0 4px}.hero-points{max-width:none}}@media(max-width:640px){.landing-top{padding:12px 16px}.landing-main{padding:0 16px 16px;gap:14px}.hero-title{font-size:40px;margin:10px 0 6px}.hero-lead{font-size:14px}.hero-diagram{margin:10px 0 0;max-width:360px}.hero-points{display:none}.login-card{padding:20px;gap:12px;border-radius:10px}.landing-foot{padding:8px 16px 14px}}@media(max-height:520px)and (orientation:landscape){.hero-diagram,.hero-points{display:none}.hero-title{font-size:32px}}.hms-view{flex:1;min-width:0;overflow:hidden;background:var(--bg)}.hms{display:flex;flex-direction:column;height:100%}.hms-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:var(--toolbar-h);padding:0 14px;border-bottom:1px solid var(--border);background:var(--bg-elevated);flex:none}.hms-tabs{display:flex;gap:2px;overflow-x:auto}.hms-tab{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border:0;border-radius:6px;background:transparent;color:var(--text-muted);font-size:var(--fs-sm);font-weight:600;cursor:pointer;white-space:nowrap}.hms-tab:hover{color:var(--text);background:var(--surface-2)}.hms-tab.active{color:var(--accent-contrast);background:var(--accent)}.hms-topbar-right{display:flex;align-items:center;gap:10px;flex:none}.hms-updated{font-size:var(--fs-xs)}.hms-main{flex:1;min-height:0;display:flex;flex-direction:column}.hms-scroll{flex:1;min-height:0;overflow-y:auto;padding:16px}.hms-loading,.hms-empty{display:flex;align-items:center;justify-content:center;gap:8px;padding:40px 16px;color:var(--text-muted)}.hms-empty-good{color:var(--status-live);font-weight:600}.hms-error{color:var(--status-error)}.hms-empty-cell{text-align:center;color:var(--text-muted);padding:24px!important}.hms-text-live{color:var(--status-live)}.hms-text-warn{color:var(--status-warn)}.hms-text-error{color:var(--status-error)}.hms-text-idle{color:var(--text-muted)}.hms-fill-live{background:var(--status-live)}.hms-fill-warn{background:var(--status-warn)}.hms-fill-error{background:var(--status-error)}.hms-fill-idle{background:var(--surface-3)}.hms-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin-bottom:18px}.hms-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 14px;min-width:0}.hms-card.has-issues{border-color:var(--border-strong)}.hms-card-head{display:flex;align-items:center;gap:8px;color:var(--text-muted);font-size:var(--fs-sm);font-weight:600}.hms-card-icon{display:inline-flex;color:var(--text)}.hms-card-total{margin-left:auto;font-size:26px;font-weight:750;line-height:1;color:var(--text);font-variant-numeric:tabular-nums}.hms-segbar{display:flex;height:6px;margin:10px 0 8px;border-radius:4px;overflow:hidden;background:var(--surface-3)}.hms-seg-fill{display:block;height:100%;transition:width .4s ease}.hms-card-segments{display:flex;gap:12px;margin:0;font-size:var(--fs-xs)}.hms-card-seg{display:flex;flex-direction:column;gap:1px}.hms-card-seg dt{display:inline-flex;align-items:center;gap:5px;color:var(--text-muted)}.hms-card-seg dt .dot{width:6px;height:6px;box-shadow:none}.hms-card-seg dd{margin:0;font-size:15px;font-weight:650;font-variant-numeric:tabular-nums}.hms-card-seg.hms-seg-error:not(.is-zero) dd{color:var(--status-error)}.hms-card-seg.hms-seg-warn:not(.is-zero) dd{color:var(--status-warn)}.hms-card-seg.is-zero dd{color:var(--text-faint)}.hms-card-foot{margin-top:8px;font-size:var(--fs-xs)}.hms-card-label{font-size:var(--fs-sm);color:var(--text-muted);font-weight:600}.hms-bar{height:7px;border-radius:4px;background:var(--surface-3);overflow:hidden}.hms-bar-fill{display:block;height:100%;border-radius:4px;transition:width .4s ease}.hms-section{margin-bottom:22px}.hms-h3{font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin:0 0 10px}.hms-region-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}.hms-region{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px 14px}.hms-region-name{font-weight:600}.hms-region-pct{font-size:22px;font-weight:700;margin:2px 0 6px}.hms-region-meta{font-size:var(--fs-xs)}.hms-server-list{display:flex;flex-direction:column;gap:8px}.hms-server-row{display:grid;grid-template-columns:auto minmax(140px,1.2fr) auto minmax(120px,1fr) auto;align-items:center;gap:14px;width:100%;text-align:left;padding:12px 14px;background:var(--surface);border:1px solid var(--border);border-radius:8px;cursor:pointer;color:var(--text)}.hms-server-row:hover{border-color:var(--border-strong);background:var(--surface-2)}.hms-server-name{font-weight:600}.hms-server-region{font-size:var(--fs-xs)}.hms-server-metrics{display:flex;gap:14px;color:var(--text-muted);font-size:var(--fs-sm);white-space:nowrap}.hms-metric{display:inline-flex;align-items:center;gap:5px}.hms-server-bar{display:flex;align-items:center;gap:10px}.hms-server-bar .hms-bar{flex:1}.hms-server-pct{font-weight:700;font-size:var(--fs-sm);min-width:42px;text-align:right}.hms-chevron{color:var(--text-faint)}.hms-filters{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap;align-items:center}.hms-filters .input,.hms-filters select,.hms-filters input.input{height:30px;padding:0 8px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);max-width:100%}.hms-input-sm{width:120px}.hms-search{height:30px;min-width:220px;flex:1 1 220px;max-width:420px}.hms-search-sm{min-width:160px;flex:1 1 160px;max-width:260px}.hms-seg{display:inline-flex;border:1px solid var(--border-strong);border-radius:var(--radius);overflow:hidden;flex:none}.hms-seg button{display:inline-flex;align-items:center;gap:5px;border:0;background:var(--surface);color:var(--text-muted);padding:0 11px;height:30px;cursor:pointer;font-size:var(--fs-sm);white-space:nowrap}.hms-seg button+button{border-left:1px solid var(--border-strong)}.hms-seg button.active{background:var(--accent);color:var(--accent-contrast)}.hms-seg button.active .dot{box-shadow:0 0 0 2px var(--accent)}.hms-seg button .dot{width:7px;height:7px}.hms-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.hms-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.hms-table th{text-align:left;padding:8px 12px;background:var(--surface-2);color:var(--text-muted);font-weight:600;border-bottom:1px solid var(--border);white-space:nowrap;position:sticky;top:0;z-index:1}.hms-table td{padding:8px 12px;border-bottom:1px solid var(--border);vertical-align:middle}.hms-table tbody tr:last-child td{border-bottom:0}.hms-th-num,.hms-td-num{text-align:right;font-variant-numeric:tabular-nums}.hms-td-name{font-weight:500}.hms-td-dur{font-variant-numeric:tabular-nums;color:var(--status-error);font-weight:600;white-space:nowrap}.hms-sort{display:inline-flex;align-items:center;gap:4px;border:0;background:transparent;color:inherit;font:inherit;cursor:pointer;padding:0}.hms-sort.active{color:var(--text)}.hms-sort-idle{opacity:.4}.hms-th-num .hms-sort{justify-content:flex-end;width:100%}.hms-kind{display:inline-block;padding:1px 7px;border-radius:10px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;background:var(--surface-3);color:var(--text-muted);white-space:nowrap}.hms-kind-server{background:var(--accent-soft);color:var(--text)}.hms-health{display:inline-flex;align-items:center;gap:6px;padding:2px 8px 2px 6px;border-radius:10px;font-size:var(--fs-xs);font-weight:600;white-space:nowrap;border:1px solid var(--border)}.hms-health-live{color:var(--status-live);background:var(--status-live-soft)}.hms-health-warn{color:var(--status-warn);background:var(--status-warn-soft)}.hms-health-error{color:var(--status-error);background:var(--status-error-soft)}.hms-center-summary{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:10px;font-size:var(--fs-sm)}.hms-center-summary strong{font-size:15px}.hms-center-row{cursor:pointer}.hms-center-row:hover td{background:var(--surface-2)}.hms-center-row.is-open td{background:var(--surface-2);border-bottom-color:transparent}.hms-center-row td:first-child{box-shadow:inset 3px 0 0 transparent}.hms-center-row.hms-row-live td:first-child{box-shadow:inset 3px 0 0 var(--status-live)}.hms-center-row.hms-row-warn td:first-child{box-shadow:inset 3px 0 0 var(--status-warn)}.hms-center-row.hms-row-error td:first-child{box-shadow:inset 3px 0 0 var(--status-error)}.hms-th-expand,.hms-td-expand{width:32px;padding-right:0!important}.hms-center-code{font-weight:700;font-size:14px;font-variant-numeric:tabular-nums}.hms-center-org{font-size:var(--fs-xs)}.hms-center-detail-row td{padding:0!important;background:var(--bg-elevated)}.hms-center-detail{padding:10px 14px 14px 44px}.hms-detail-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px;font-size:var(--fs-sm)}.hms-inline-loading{display:inline-flex;align-items:center;gap:6px}.hms-dvr-list{display:flex;flex-direction:column;gap:8px}.hms-dvr{border:1px solid var(--border);border-left-width:3px;border-radius:7px;background:var(--surface)}.hms-dvr.hms-row-live{border-left-color:var(--status-live)}.hms-dvr.hms-row-warn{border-left-color:var(--status-warn)}.hms-dvr.hms-row-error{border-left-color:var(--status-error)}.hms-dvr-head{display:flex;align-items:center;gap:10px;width:100%;padding:8px 12px;border:0;background:transparent;color:var(--text);text-align:left;cursor:pointer;font-size:var(--fs-sm);flex-wrap:wrap}.hms-dvr-icon{color:var(--text-muted)}.hms-dvr-id{font-weight:700;font-size:14px;font-variant-numeric:tabular-nums}.hms-dvr-meta{font-size:var(--fs-xs);flex:1;min-width:120px}.hms-dvr-cams{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.hms-dvr-since{font-size:var(--fs-xs);white-space:nowrap}.hms-camera-list{list-style:none;margin:0;padding:4px 12px 10px 34px;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:2px 16px}.hms-camera{display:flex;align-items:center;gap:8px;min-height:28px;font-size:var(--fs-sm)}.hms-camera.is-offline .hms-camera-name{color:var(--text-muted)}.hms-camera-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hms-camera-id{font-size:10px}.hms-camera-since{font-size:var(--fs-xs);white-space:nowrap}.hms-viewlive{height:24px;padding:0 6px}.hms-camera-loading{padding:4px 12px 10px 34px;font-size:var(--fs-xs)}.hms-loadmore{margin:10px auto;display:flex}.hms-panel{position:relative;flex:none;display:flex;flex-direction:column;border-top:1px solid var(--border-strong);background:var(--bg-elevated);min-height:38px}.hms-panel.is-collapsed{height:38px}.hms-panel-resizer{position:absolute;top:-3px;left:0;right:0;height:6px;cursor:row-resize;z-index:2}.hms-panel-resizer:hover{background:var(--border-strong)}.hms-panel-head{display:flex;align-items:center;gap:10px;min-height:38px;padding:0 10px 0 6px;flex:none;flex-wrap:wrap}.hms-panel-toggle{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 8px;border:0;border-radius:var(--radius);background:transparent;color:var(--text);cursor:pointer;min-width:0}.hms-panel-toggle:hover{background:var(--surface-2)}.hms-panel-title{font-weight:700;font-size:var(--fs-sm);letter-spacing:.4px;text-transform:uppercase;white-space:nowrap}.hms-panel-unread{padding:1px 8px;border-radius:10px;background:var(--status-error);color:#fff;font-size:var(--fs-xs);font-weight:700;white-space:nowrap}.hms-panel-last{font-size:var(--fs-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hms-panel-filters{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-left:auto;padding:3px 0}.hms-panel-filters .input,.hms-panel-filters select{height:28px;padding:0 6px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:var(--fs-xs)}.hms-panel-filters .hms-seg button{height:28px;padding:0 9px;font-size:var(--fs-xs)}.hms-panel-filters .search-box{height:28px}.hms-panel-body{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}.hms-jump{position:absolute;top:6px;left:50%;transform:translate(-50%);z-index:3;display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 12px;border-radius:13px;border:1px solid var(--border-strong);background:var(--accent);color:var(--accent-contrast);font-size:var(--fs-xs);font-weight:600;cursor:pointer;box-shadow:var(--shadow)}.hms-event-list{flex:1;min-height:0;overflow-y:auto;padding:4px 8px 8px;display:flex;flex-direction:column;gap:2px}.hms-event{border-radius:6px;border:1px solid transparent}.hms-event:hover,.hms-event.is-selected{background:var(--surface);border-color:var(--border)}.hms-event-main{display:flex;align-items:center;gap:8px;width:100%;min-height:30px;padding:3px 8px;border:0;background:transparent;color:var(--text);text-align:left;cursor:pointer;font-size:var(--fs-sm)}.hms-event-time{color:var(--text-muted);font-size:var(--fs-xs);white-space:nowrap}.hms-event-type{font-weight:700;min-width:62px}.hms-event-where{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hms-event-dur{font-size:var(--fs-xs);white-space:nowrap}.hms-event-details{display:grid;grid-template-columns:auto 1fr;gap:2px 14px;margin:0;padding:4px 12px 10px 40px;font-size:var(--fs-xs)}.hms-event-details dt{color:var(--text-muted)}.hms-event-details dd{margin:0}.hms-report-kinds{margin-bottom:12px}.hms-report-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:18px}.hms-stat{text-align:center}.hms-stat-num{font-size:26px;font-weight:700;margin-bottom:4px}.hms-report-foot{margin-top:10px;font-size:var(--fs-xs)}.hms-outage-count{font-size:var(--fs-xs);margin-left:auto}@media(max-width:1024px){.hms-th-loc,.hms-td-loc{display:none}.hms-server-row{grid-template-columns:auto 1fr auto}.hms-server-bar{grid-column:2 / span 2}}@media(max-width:760px){.hms-topbar{padding:0 8px;gap:6px}.hms-tab{padding:0 9px}.hms-tab span{display:none}.hms-scroll{padding:10px}.hms-cards{grid-template-columns:1fr 1fr;gap:8px}.hms-card{padding:10px 12px}.hms-card-total{font-size:22px}.hms-card-segments{gap:8px}.hms-server-metrics{flex-wrap:wrap;gap:8px}.hms-center-detail{padding-left:12px}.hms-camera-list{grid-template-columns:1fr;padding-left:12px}.hms-panel.is-open{height:45vh!important}.hms-panel-filters{margin-left:0;width:100%}.hms-event-type{min-width:0}.hms-event-details{padding-left:12px}.hms-input-sm{width:100px}}
