:root{color-scheme:dark;--bg: #0c1117;--bg-elev: #141b24;--bg-input: #0a0f14;--line: #243041;--text: #e8eef4;--muted: #8b99a8;--accent: #d4a04a;--live: #3dbe8c;--warn: #e0a14a;--danger: #d2655a;--gap: #6b4a2a;--radius: 10px;--font: "IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;min-height:100%;background:var(--bg);color:var(--text);font-family:var(--font)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{display:grid;grid-template-columns:220px 1fr;height:100%;min-height:100%}.sidebar{background:var(--bg-elev);border-right:1px solid var(--line);padding:1.25rem 1rem;display:flex;flex-direction:column;gap:1.25rem}.brand{display:flex;align-items:baseline;justify-content:space-between;width:100%;padding-bottom:.55rem;border-bottom:1px solid color-mix(in srgb,var(--accent) 42%,transparent);font-weight:700;font-size:1.95rem;line-height:1;letter-spacing:.04em}.brand-name{color:var(--text)}.brand-mark{color:var(--accent);letter-spacing:.1em;text-shadow:0 0 10px color-mix(in srgb,var(--accent) 48%,transparent),0 0 22px color-mix(in srgb,var(--accent) 22%,transparent)}.sidebar-status{display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;width:100%;gap:.65rem;padding:.15rem 0}.sidebar-status-icon{display:inline-flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;flex-shrink:0;border-radius:8px;border:1px solid color-mix(in srgb,currentColor 45%,transparent);background:color-mix(in srgb,currentColor 10%,transparent);color:#8b99a8;text-decoration:none;transition:filter .15s ease,box-shadow .15s ease}.sidebar-status-icon svg{width:1.05rem;height:1.05rem}.sidebar-status-icon:hover,.sidebar-status-icon.active{text-decoration:none;filter:brightness(1.18)}.sidebar-status-icon.ok{color:#3dff9a;box-shadow:0 0 3.75px #3dff9a,0 0 9px color-mix(in srgb,#3dff9a 41%,transparent),0 0 16.5px color-mix(in srgb,#3dff9a 21%,transparent)}.sidebar-status-icon.warn{color:var(--warn);filter:brightness(1.18);box-shadow:0 0 3.75px var(--warn),0 0 9px color-mix(in srgb,var(--warn) 41%,transparent),0 0 16.5px color-mix(in srgb,var(--warn) 21%,transparent)}.sidebar-status-icon.down{color:#ff4d6d;box-shadow:0 0 3.75px #ff4d6d,0 0 9px color-mix(in srgb,#ff4d6d 41%,transparent),0 0 16.5px color-mix(in srgb,#ff4d6d 21%,transparent)}.sidebar-status-icon.idle{color:#6d7c8c;border-color:var(--line);background:transparent;box-shadow:none}.nav{display:flex;flex-direction:column;gap:.25rem}.nav a{color:var(--text);padding:.45rem .6rem;border-radius:6px}.nav a.active,.nav a:hover{background:#1c2633;text-decoration:none}.nav-group{display:flex;flex-direction:column;gap:.15rem}.nav-group+.nav-group{margin-top:.55rem;padding-top:.4rem;border-top:1px solid var(--line)}.nav-group-label{color:var(--accent);font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:.3rem .6rem .1rem;text-shadow:0 0 8px color-mix(in srgb,var(--accent) 32%,transparent)}.nav-group a{padding-left:.85rem}.sidebar-foot{margin-top:auto;padding-top:.75rem;border-top:1px solid var(--line)}.sidebar-user{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.sidebar-user-meta{min-width:0}.sidebar-user-name{color:var(--text);font-weight:600;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user-role{color:var(--muted);font-size:.75rem}.sidebar-user-actions{display:flex;align-items:center;gap:.1rem;flex-shrink:0}.sidebar-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:0;border-radius:6px;background:transparent;color:var(--accent);cursor:pointer;filter:drop-shadow(0 0 5px color-mix(in srgb,var(--accent) 42%,transparent));transition:filter .15s ease,box-shadow .15s ease,background .15s ease}a.sidebar-icon-btn:hover,button.sidebar-icon-btn:hover,a.sidebar-icon-btn.active,a.sidebar-icon-btn:focus-visible,button.sidebar-icon-btn:focus-visible{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent);text-decoration:none;filter:brightness(1.18) drop-shadow(0 0 8px color-mix(in srgb,var(--accent) 55%,transparent));box-shadow:0 0 8px color-mix(in srgb,var(--accent) 38%,transparent),0 0 16px color-mix(in srgb,var(--accent) 16%,transparent)}.sidebar-icon-btn svg{width:1.15rem;height:1.15rem}.users-people{display:flex;flex-direction:column;gap:.9rem}.users-picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.65rem}.users-picker .btn{width:100%;font-size:1.15rem;padding:.9rem 1.25rem;border-radius:8px;display:flex;justify-content:space-between;align-items:baseline;gap:.75rem}.users-picker-role{font-size:.85rem;font-weight:500;color:var(--muted)}.users-picker .btn.primary .users-picker-role{color:#1a1206;opacity:.72}.health-pills{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.main{padding:1.25rem 1.5rem 2rem;display:flex;flex-direction:column;gap:1rem;min-height:0;overflow:auto}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap}.viewer{display:flex;flex-direction:column;gap:.7rem}.viewer-head{display:flex;justify-content:space-between;align-items:flex-end;gap:.85rem 1.1rem;flex-wrap:wrap}.viewer-head h1{font-size:1.45rem;letter-spacing:.02em;line-height:1.15}.viewer-head .muted{margin:.28rem 0 0;font-size:.86rem;line-height:1.35}.viewer-head-tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.45rem}.mode-seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--bg)}.mode-seg .btn{border:0;border-radius:0;padding:.38rem .85rem}.mode-seg .btn+.btn{border-left:1px solid var(--line)}.viewer-stage{background:var(--bg-elev);border:1px solid var(--line);border-radius:12px;padding:.4rem;display:flex;flex-direction:column;gap:.3rem}.viewer-stage .player-stage{border-radius:8px}.viewer-stage .timeline-wrap{padding-top:1.35rem;padding-inline:.15rem .2rem}.viewer-stage .detect-still-panel{margin:.2rem 0 0}.viewer-arming{margin:0;font-size:.86rem;line-height:1.4}.viewer .camera-controls{padding:.75rem .9rem}.viewer .camera-controls h3{font-size:.95rem}h1,h2,h3{margin:0;font-weight:600}h1{color:var(--accent)}.muted{color:var(--muted)}.card{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);padding:1rem 1.1rem}.grid{display:grid;gap:1rem}.grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.grid.live{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.live-page{display:flex;flex-direction:column;gap:.75rem;flex:1;min-height:0;height:100%}.live-toolbar{display:flex;align-items:center;gap:.75rem;padding:.65rem .85rem}.live-toolbar-main{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0}.live-toolbar-field{flex-direction:row;align-items:center;gap:.45rem;white-space:nowrap}.live-toolbar-field select{min-width:11rem}.live-toolbar-pager{display:flex;align-items:center;gap:.45rem;white-space:nowrap}.live-toolbar-fs{flex-shrink:0;margin-left:auto}.live-stage{position:relative;flex:1;min-height:12rem;display:grid;gap:6px;padding:6px;background:#05080c;border:1px solid var(--line);border-radius:var(--radius)}.live-stage:fullscreen,.live-stage:-webkit-full-screen{width:100%;height:100%;border-radius:0;border:0;padding:8px;gap:6px;background:#05080c}.live-tile{position:relative;min-width:0;min-height:0;overflow:hidden;border-radius:6px;background:#05080c}.live-tile.is-empty{background:#0a1017}.live-tile.is-source{opacity:.45}.live-tile.is-drop:after{content:"";position:absolute;inset:0;z-index:5;pointer-events:none;box-shadow:inset 0 0 0 3px var(--accent);border-radius:inherit}.live-tile .player-stage{height:100%;aspect-ratio:auto;border-radius:0}.live-tile-hit{position:absolute;inset:0;z-index:3;text-decoration:none;cursor:grab}.live-tile-hit:active{cursor:grabbing}.live-tile-status{position:absolute;top:.4rem;left:.45rem;z-index:4;display:flex;align-items:center;gap:.35rem;pointer-events:none}.live-tile-rec{width:8px;height:8px;border-radius:50%;background:#8b939c;box-shadow:0 0 0 1px #0000007f;pointer-events:none}.live-tile-rec.is-on{background:#e11d2e}.live-tile-event{width:16px;height:18px;color:#f5c518;filter:drop-shadow(0 0 1px rgb(0 0 0 / 80%)) drop-shadow(0 1px 1px rgb(0 0 0 / 55%))}.live-stage.is-dragging .live-tile-hit{cursor:grabbing}label{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;color:var(--muted)}input,select,textarea{background:var(--bg-input);border:1px solid var(--line);color:var(--text);border-radius:6px;padding:.5rem .65rem}.row{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}.dest-stack{display:flex;flex-direction:column;gap:1rem}.notify-dest{display:flex;flex-direction:column;gap:.85rem}.notify-dest-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.notify-on{border:1px solid var(--line);border-radius:var(--radius);padding:.75rem 1rem .9rem;margin:.25rem 0 .5rem}.notify-on legend{color:var(--text);font-size:.85rem;padding:0 .35rem}.notify-on-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));gap:.35rem 1rem;margin-top:.5rem}.notify-on-grid label{color:var(--text)}.notify-on-grid input[type=checkbox]{width:auto;padding:0;accent-color:var(--accent)}.filter-chips{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;margin-top:.75rem}.alerts-page,.events-page,.sites-page,.site-detail-page,.arming-page,.notify-page,.storage-page,.smtp-page,.services-page,.system-logs-page,.users-page,.audit-page{display:flex;flex-direction:column;gap:2.75rem}.events-banner p{margin:0 0 .4rem}.events-banner p:last-child{margin-bottom:0}.alert-filters{display:flex;flex-direction:column;gap:1rem}.alert-filters-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem 1rem;align-items:end}.alert-filters-check{flex-direction:row;align-items:center;gap:.5rem;min-height:auto;color:var(--text);font-size:.9rem}.alert-filters-check input[type=checkbox]{width:auto;margin:0;accent-color:var(--accent)}.alert-filters-foot{display:flex;align-items:center;justify-content:space-between;gap:.75rem 1.25rem;flex-wrap:wrap;padding-top:.9rem;border-top:1px solid var(--line)}.alert-filters .filter-chips{margin-top:0}.alert-filters .filter-chips .btn{border-radius:999px;padding:.32rem .9rem;font-size:.85rem}.alert-filters-actions{display:flex;align-items:center;gap:.9rem;margin-left:auto}.alert-list{overflow-x:auto}.site-create-fields{display:grid;grid-template-columns:minmax(12rem,1.4fr) minmax(12rem,1fr) auto;gap:.85rem 1rem;align-items:end}.user-create,.user-edit,.user-access,.user-grant{display:flex;flex-direction:column;gap:1rem}.user-create-fields{display:grid;grid-template-columns:minmax(10rem,1.2fr) minmax(10rem,1.2fr) minmax(8rem,10rem) auto;gap:.85rem 1rem;align-items:end}.user-create-fields input,.user-create-fields select,.user-edit-fields input,.user-edit-fields select,.user-grant-fields input,.user-grant-fields select{width:100%;min-height:2.35rem;box-sizing:border-box}.user-edit-fields,.user-grant-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem 1rem;align-items:start}.user-form-actions,.user-grant-actions{display:flex;align-items:center;gap:.75rem 1.25rem;flex-wrap:wrap;padding-top:.9rem;border-top:1px solid var(--line)}.user-grant-actions .btn{margin-left:auto}.user-access .muted{margin:0}.site-create-actions{display:flex;align-items:center;gap:.5rem}.site-list{overflow-x:auto}.connector-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem 1.25rem;flex-wrap:wrap}.connector-toolbar .muted{margin:0}.discover-fields{display:grid;grid-template-columns:minmax(12rem,1fr) auto;gap:.85rem 1rem;align-items:end}.discover-results{list-style:none;margin:1rem 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem}.discover-results li{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.camera-form{display:flex;flex-direction:column;gap:1rem}.camera-form-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem 1rem;align-items:start}.camera-form-fields input:not([type=checkbox]){width:100%;min-height:2.35rem;box-sizing:border-box}.camera-form-check-control{display:flex;align-items:center;min-height:2.35rem}.camera-form-check-control input[type=checkbox]{width:1.1rem;height:1.1rem;margin:0;flex-shrink:0;accent-color:var(--accent)}.camera-form-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;padding-top:.9rem;border-top:1px solid var(--line)}.smtp-form{display:flex;flex-direction:column;gap:1rem;max-width:42rem;padding:1.25rem 1.35rem 1.15rem}.smtp-form-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem 1rem;align-items:start}.smtp-form-fields input{width:100%;min-height:2.35rem;box-sizing:border-box}.smtp-from{grid-column:1 / -1}.smtp-form-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;padding-top:.9rem;border-top:1px solid var(--line)}.arming-site{display:flex;flex-direction:column;gap:.9rem}.arming-sites{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.65rem}.arming-sites .btn{width:100%;font-size:1.15rem;padding:.9rem 1.25rem;border-radius:8px}.arming-editor,.arming-camera{display:flex;flex-direction:column;gap:1rem}.arming-editor-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem 1.25rem;flex-wrap:wrap}.arming-camera .arming-editor-head{justify-content:flex-start}.arming-editor-actions{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.arming-hint{margin:0}.arming-days{margin-top:0}.arming-days .btn{border-radius:999px;padding:.32rem .8rem;font-size:.85rem}.arming-window{display:flex;flex-direction:column;gap:.75rem;padding-top:.9rem;border-top:1px solid var(--line)}.arming-window-times{display:grid;grid-template-columns:minmax(8rem,1fr) minmax(8rem,1fr) auto;gap:.85rem 1rem;align-items:end}.arming-window-times input{width:100%;min-height:2.35rem;box-sizing:border-box}.arming-cameras-card{display:flex;flex-direction:column;gap:0}.arming-cameras-card>h3{margin-bottom:.25rem}.arming-camera{padding-top:1.25rem;margin-top:1.25rem;border-top:1px solid var(--line)}.connector-tokens{margin-top:.85rem;table-layout:fixed}.connector-tokens .token-id{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85rem;white-space:nowrap}.connector-tokens th:nth-child(3),.connector-tokens td:nth-child(3){width:7rem}.connector-tokens th:last-child,.connector-tokens td:last-child{width:22rem;text-align:right;white-space:nowrap}@media(max-width:960px){.alert-filters-fields,.camera-form-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.smtp-form-fields,.site-create-fields,.user-create-fields,.user-edit-fields,.user-grant-fields,.discover-fields,.arming-window-times{grid-template-columns:1fr}}.btn{background:#243041;color:var(--text);border:1px solid var(--line);border-radius:6px;padding:.45rem .8rem}.btn.primary{background:var(--accent);color:#1a1206;border-color:#b8862f;font-weight:600}.btn.danger{background:#3a1f1d;border-color:#6b3330;color:#f0c7c3}.pill{display:inline-flex;align-items:center;gap:.35rem;font-size:.75rem;border-radius:999px;padding:.15rem .55rem;border:1px solid var(--line);color:var(--muted)}.pill.ok{color:var(--live);border-color:#2a6b50}.pill.warn{color:var(--warn);border-color:#6b5320}.pill.down{color:var(--danger);border-color:#6b3330}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:1.5rem}.auth-card{width:min(420px,100%)}.auth-card h1{color:var(--text)}.error{color:#f0c7c3;font-size:.9rem}.player-stage{background:#05080c;border-radius:8px;aspect-ratio:16 / 9;overflow:hidden;position:relative}.player-stage:fullscreen,.player-stage:-webkit-full-screen{width:100%;height:100%;aspect-ratio:auto;border-radius:0;background:#000}.player-stage video{width:100%;height:100%;object-fit:contain;background:#000}.player-frame-hold{position:absolute;inset:0;z-index:1;width:100%;height:100%;pointer-events:none;opacity:0}.player-frame-hold.is-on{opacity:1}.player-stage video:not([controls]){cursor:pointer}.player-scrub-still{position:absolute;inset:0;z-index:1;width:100%;height:100%;object-fit:contain;background:#000;pointer-events:none}.alert-bbox-overlay{position:absolute;inset:0;z-index:3;pointer-events:none}.alert-bbox{position:absolute;box-sizing:border-box;border:2px solid #f5a524;box-shadow:0 0 0 1px #0000008c}.alert-bbox-label{position:absolute;left:-2px;top:0;padding:.05rem .35rem;font-size:.72rem;font-weight:650;letter-spacing:.02em;color:#05080c;background:#f5a524;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}.alert-bbox-person{border-color:#5eead4}.alert-bbox-person .alert-bbox-label{background:#5eead4}.alert-bbox-vehicle{border-color:#7dd3fc}.alert-bbox-vehicle .alert-bbox-label{background:#7dd3fc}.alert-bbox-bicycle{border-color:#fbbf24}.alert-bbox-bicycle .alert-bbox-label{background:#fbbf24}.alert-bbox-animal{border-color:#86efac}.alert-bbox-animal .alert-bbox-label{background:#86efac}.alert-bbox-other{border-color:#e2e8f0}.alert-bbox-other .alert-bbox-label{background:#e2e8f0}.detect-still-panel{margin:.65rem 0 0;border:2px solid #f5c518;border-radius:8px;overflow:hidden;background:#05080c}.detect-still-panel img{display:block;width:100%;max-height:28rem;object-fit:contain;background:#000}.detect-still-cap{padding:.4rem .65rem;font-size:.85rem;font-weight:650;letter-spacing:.02em;color:#05080c;background:#f5c518}.detect-still-help{margin:0;padding:.5rem .65rem .65rem}.alert-crop-link{display:inline-block;line-height:0}.alert-crop{width:192px;height:108px;object-fit:cover;border-radius:4px;border:1px solid #f5c518;background:#05080c}.player-stage video::-webkit-media-controls{display:none!important}.player-live-paused{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:.35rem;margin:0;border:0;background:#05080c8c;color:#f4f7fb;font:inherit;cursor:pointer}.player-menu-root{position:absolute;z-index:6;right:.55rem;bottom:.55rem}.player-menu-btn{display:inline-flex;align-items:center;justify-content:center;min-width:3.4rem;height:3.4rem;margin:0;border:1px solid rgb(244 247 251 / 38%);border-radius:12px;padding:0 .62rem;background:#05080c8c;color:#f4f7fb;font:inherit;font-size:1.1rem;font-weight:700;letter-spacing:.02em;cursor:pointer;opacity:.6;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 4px 14px #00000059;transition:opacity .16s ease,background .16s ease,border-color .16s ease,color .16s ease}.player-menu-btn:hover,.player-menu-btn:focus-visible,.player-menu-btn[aria-expanded=true]{opacity:1;background:var(--accent);border-color:var(--accent);color:#1a140c;box-shadow:0 0 10px color-mix(in srgb,var(--accent) 48%,transparent),0 4px 14px #00000059}.player-menu{position:absolute;right:0;bottom:calc(100% + .35rem);width:11.5rem;padding:.35rem;border:1px solid color-mix(in srgb,var(--line) 80%,#000);border-radius:10px;background:#0e141cf0;box-shadow:0 10px 28px #00000073;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.player-menu-group{display:grid;grid-template-columns:repeat(4,1fr);gap:.2rem;margin-bottom:.35rem;padding-bottom:.35rem;border-bottom:1px solid var(--line)}.player-menu-label{grid-column:1 / -1;padding:.1rem .25rem .05rem;color:var(--muted);font-size:.68rem;font-weight:650;letter-spacing:.06em;text-transform:uppercase}.player-menu button,.player-menu-link{display:block;width:100%;margin:0;border:0;border-radius:6px;padding:.38rem .5rem;background:transparent;color:var(--text);font:inherit;font-size:.82rem;text-align:left;text-decoration:none;cursor:pointer}.player-menu-group button{text-align:center;padding:.32rem .15rem;font-size:.75rem;font-weight:600;background:#080c128c}.player-menu button:hover,.player-menu-link:hover{background:color-mix(in srgb,var(--accent) 18%,transparent);text-decoration:none}.player-menu-group button.is-on{background:var(--accent);color:#1a140c}.player-lost{position:absolute;inset:0;z-index:2;display:grid;place-items:center;align-content:center;background:#0009;color:#f4f7fb;text-align:center;padding:1rem;pointer-events:none}.player-lost-title{font-size:1.05rem;font-weight:650;letter-spacing:.02em}.player-lost-sub{margin-top:.35rem;font-size:.85rem;color:#c5ced8}.player-nosignal{position:absolute;inset:0;z-index:1;background:repeating-linear-gradient(90deg,#c43c3c 0 12.5%,#d4c44a 12.5% 25%,#4aa05a 25% 37.5%,#3c7ec4 37.5% 50%,#7a3cb4 50% 62.5%,#c46b1e 62.5% 75%,#1e1e1e 75% 87.5%,#ececec 87.5% 100%);filter:saturate(.85)}.player-empty{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);text-align:center;padding:1rem}.timeline-wrap{position:relative;padding-top:1.7rem}.playhead-time{position:absolute;top:0;z-index:4;padding:.12rem .4rem;border-radius:4px;background:var(--accent);color:#1a140c;font-family:var(--mono);font-size:.72rem;font-weight:600;letter-spacing:.01em;white-space:nowrap;pointer-events:none;box-shadow:0 1px 4px #00000073}.timeline{position:relative;height:56px;background:#0a1017;border:1px solid var(--line);border-radius:6px;overflow:hidden;cursor:ew-resize;touch-action:none;-webkit-user-select:none;user-select:none}.timeline:focus-visible{outline:1px solid var(--accent);outline-offset:2px}.timeline .cov,.timeline .gap{position:absolute;top:14px;height:28px;pointer-events:none;border-radius:2px}.timeline .cov{background:#2a6b50}.timeline .gap{background:repeating-linear-gradient(-45deg,#3d2a18,#3d2a18 4px,#6b4a2a 4px 8px)}.timeline .playhead{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:var(--accent);pointer-events:none;z-index:2;box-shadow:0 0 0 1px #00000073}.timeline .playhead-knob{position:absolute;top:4px;width:12px;height:12px;margin-left:-6px;border-radius:50%;background:var(--accent);pointer-events:none;z-index:3;box-shadow:0 0 0 1px #00000073}.token-box{font-family:var(--mono);background:#0a0f14;border:1px dashed var(--accent);border-radius:6px;padding:.7rem;word-break:break-all}.install-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.5rem;margin:.65rem 0 .5rem}.install-grid .btn{width:100%;text-align:center}.install-note{margin-top:.35rem}.install-advanced{margin:.85rem 0 .75rem}.install-advanced summary{cursor:pointer;color:var(--muted)}.meter{height:10px;background:#0a0f14;border-radius:999px;overflow:hidden;border:1px solid var(--line)}.meter>span{display:block;height:100%;background:var(--live)}.meter.warn>span{background:var(--warn)}.meter.evict>span{background:var(--danger)}.gap-cameras{border:1px solid var(--line);border-radius:6px;padding:.55rem .7rem .7rem;margin:0 0 .85rem;max-height:12rem;overflow:auto}.gap-cameras legend{padding:0 .25rem;color:var(--muted);font-size:.85rem}.gap-cameras label{flex-direction:row;align-items:center;gap:.5rem;color:var(--text);margin-top:.35rem}.switch{position:relative;display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.switch input{position:absolute;inset:0;opacity:0;margin:0;width:100%;height:100%;cursor:inherit}.switch:has(input:disabled){cursor:not-allowed;opacity:.55}.switch-track{display:grid;grid-template-columns:1fr 1fr;align-items:center;width:3.7rem;height:1.55rem;padding:0 .22rem;border-radius:999px;background:var(--bg-input);border:1px solid var(--line);position:relative;box-sizing:border-box;font-size:.62rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);transition:background .15s ease,border-color .15s ease}.switch-track:after{content:"";position:absolute;top:2px;left:2px;width:1.2rem;height:calc(100% - 4px);border-radius:999px;background:var(--muted);transition:left .15s ease,background .15s ease}.switch-on,.switch-off{position:relative;z-index:1;text-align:center;line-height:1}.switch-on{opacity:0}.switch input:checked+.switch-track{background:color-mix(in srgb,var(--accent) 28%,var(--bg-input));border-color:color-mix(in srgb,var(--accent) 55%,var(--line));color:var(--accent)}.switch input:checked+.switch-track:after{left:calc(100% - 1.2rem - 2px);background:var(--accent)}.switch input:checked+.switch-track .switch-on{opacity:1}.switch input:checked+.switch-track .switch-off{opacity:0}.switch input:focus-visible+.switch-track{outline:2px solid var(--accent);outline-offset:2px}.table{width:100%;border-collapse:collapse;font-size:.92rem}.table th,.table td{text-align:left;padding:.45rem .35rem;border-bottom:1px solid var(--line)}.system-log-card{flex:1;min-height:0;display:flex;flex-direction:column}.system-log{flex:1;margin:0;padding:.85rem 1rem;min-height:24rem;max-height:calc(100vh - 11rem);overflow:auto;font-family:var(--mono);font-size:.78rem;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text);background:var(--bg-input);border-radius:8px}.qr{background:#fff;padding:8px;border-radius:6px;width:180px;height:180px}.timeline .marker{position:absolute;top:6px;width:4px;height:44px;margin-left:-2px;padding:0;border:0;border-radius:1px;cursor:pointer;z-index:1;background:var(--warn)}.timeline .marker.motion{background:var(--warn)}.timeline .marker.object{background:#5b8fd4}.timeline .marker.alpr{background:#c47ad4}.alert-toasts{position:fixed;right:1rem;bottom:1rem;z-index:30;display:flex;flex-direction:column;gap:.5rem}.alert-toast{background:var(--bg-elev);border:1px solid var(--line);border-left:3px solid var(--accent);padding:.7rem .9rem;border-radius:8px;min-width:220px;max-width:360px;color:var(--text);text-decoration:none;box-shadow:0 8px 24px #00000059}.alert-toast.feedback-toast{display:block}.alert-toast.feedback-toast.ok{border-left-color:var(--live)}.alert-toast.feedback-toast.error{border-left-color:var(--danger)}.ptz-overlay{position:absolute;z-index:4;left:.6rem;bottom:.6rem;display:flex;flex-direction:column;gap:.35rem;pointer-events:auto}.ptz-pad{position:relative;width:7.2rem;height:7.2rem;border-radius:50%;background:#05080c9e;border:1px solid rgb(255 255 255 / 18%);touch-action:none}.ptz-dir{position:absolute;margin:0;border:0;background:transparent;color:#f4f7fb;font:inherit;cursor:pointer;width:2rem;height:2rem}.ptz-n{top:.15rem;left:50%;transform:translate(-50%)}.ptz-s{bottom:.15rem;left:50%;transform:translate(-50%)}.ptz-w{left:.15rem;top:50%;transform:translateY(-50%)}.ptz-e{right:.15rem;top:50%;transform:translateY(-50%)}.ptz-zoom,.ptz-presets{display:flex;gap:.25rem}.ptz-zoom button,.ptz-presets button{margin:0;border:0;border-radius:6px;padding:.25rem .45rem;background:#05080cb3;color:#f4f7fb;font:inherit;font-size:.8rem;cursor:pointer}.talk-hold{touch-action:none}.camera-controls .row{margin-top:.5rem}.modal-scrim{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:1.25rem;background:#05080c9e}.modal{width:min(26rem,100%);display:flex;flex-direction:column;gap:.7rem;padding:1.05rem 1.15rem 1.15rem;border:1px solid var(--line);border-radius:12px;background:var(--bg-elev);box-shadow:0 18px 40px #00000073}.modal h3{color:var(--text)}.modal .muted{margin:0}.modal label{display:flex;flex-direction:column;gap:.28rem;font-size:.82rem;color:var(--muted)}.modal input{background:var(--bg-input);border:1px solid var(--line);color:var(--text);border-radius:6px;padding:.45rem .55rem}@media(max-width:800px){.app-shell{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--line)}}
