@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap");:root{--brand-primary:#e8732a;--brand-secondary:#b22234;--brand-tertiary:#e89b2a;--bg-primary:#0a0c10;--bg-secondary:#0e1117;--bg-tertiary:#151921;--bg-card:#12161e;--bg-elevated:#1a1f2a;--bg-hover:#1e2432;--text-primary:#e4e8f0;--text-secondary:#8891a5;--text-muted:#4a5268;--accent-orange:var(--brand-primary);--accent-crimson:var(--brand-secondary);--accent-amber:var(--brand-tertiary);--accent-green:#22c55e;--accent-red:#ef4444;--accent-blue:#3b82f6;--accent-cyan:#38bdf8;--accent-purple:#a855f7;--accent-lime:#84cc16;--accent-orange-glow:rgba(232,115,42,.18);--accent-blue-glow:rgba(59,130,246,.14);--accent-red-glow:rgba(239,68,68,.18);--accent-crimson-glow:rgba(178,34,52,.18);--border:hsla(0,0%,100%,.07);--border-color:hsla(0,0%,100%,.07);--border-active:rgba(232,115,42,.5);--shadow-sm:0 1px 2px rgba(0,0,0,.5);--shadow-md:0 4px 12px rgba(0,0,0,.6);--shadow-lg:0 8px 24px rgba(0,0,0,.7);--shadow-glow:0 0 16px var(--accent-orange-glow)}[data-theme=light]{--bg-primary:#f7f8fa;--bg-secondary:#fff;--bg-tertiary:#f1f3f6;--bg-card:#fff;--bg-elevated:#fff;--bg-hover:#eef0f4;--text-primary:#1a1d24;--text-secondary:#55606f;--text-muted:#8891a5;--accent-green:#15803d;--accent-red:#dc2626;--accent-blue:#2563eb;--accent-cyan:#0891b2;--accent-purple:#7e22ce;--accent-lime:#65a30d;--accent-orange-glow:rgba(232,115,42,.12);--accent-blue-glow:rgba(59,130,246,.08);--accent-red-glow:rgba(239,68,68,.1);--accent-crimson-glow:rgba(178,34,52,.1);--border:rgba(0,0,0,.08);--border-color:rgba(0,0,0,.08);--border-active:rgba(232,115,42,.4);--shadow-sm:0 1px 2px rgba(0,0,0,.05);--shadow-md:0 4px 12px rgba(0,0,0,.08);--shadow-lg:0 8px 24px rgba(0,0,0,.12);--shadow-glow:0 0 16px var(--accent-orange-glow)}:root{--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-xl:14px;--font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-mono:"JetBrains Mono","Fira Code","Consolas",monospace;--ease-spring:cubic-bezier(0.34,1.56,0.64,1);--ease-out-expo:cubic-bezier(0.16,1,0.3,1)}*{margin:0;padding:0;box-sizing:border-box}body,html{height:100%;font-family:var(--font-family);background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body:before{content:"";position:fixed;inset:0;z-index:-1;background:radial-gradient(ellipse 800px 600px at 15% 80%,rgba(232,115,42,.04) 0,transparent 70%),radial-gradient(ellipse 600px 500px at 85% 20%,rgba(178,34,52,.03) 0,transparent 70%),radial-gradient(ellipse 500px 400px at 50% 50%,rgba(59,130,246,.02) 0,transparent 70%);pointer-events:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--text-muted);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.app-layout{display:flex;flex-direction:column;height:100vh;overflow:hidden}.navbar{justify-content:space-between;padding:0 24px;height:56px;background:rgba(14,17,23,.82);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border-bottom:1px solid hsla(0,0%,100%,.06);border-top:1px solid rgba(232,115,42,.15);flex-shrink:0;z-index:100;box-shadow:0 1px 0 rgba(232,115,42,.06),0 4px 20px rgba(0,0,0,.3)}.navbar,.navbar-brand{display:flex;align-items:center}.navbar-brand{gap:10px;font-size:18px;font-weight:700;letter-spacing:-.02em}.navbar-brand .logo-icon{width:28px;height:28px;display:flex;align-items:center;justify-content:center;font-size:14px}.navbar-nav{display:flex;gap:4px}.nav-link{padding:8px 16px;border-radius:var(--radius-sm);color:var(--text-secondary);text-decoration:none;font-size:13px;font-weight:500;transition:all .2s var(--ease-out-expo);cursor:pointer;border:none;background:none;position:relative}.nav-link:hover{color:var(--text-primary);background:hsla(0,0%,100%,.06);transform:translateY(-1px)}.nav-link:active{transform:translateY(0) scale(.97)}.nav-link.active{background:rgba(232,115,42,.1);box-shadow:0 2px 8px rgba(232,115,42,.15)}.navbar-status{display:flex;align-items:center;gap:12px;font-size:12px;color:var(--text-muted)}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--accent-green);box-shadow:0 0 8px rgba(34,197,94,.4);animation:statusPing 2s ease-in-out infinite;position:relative}.status-dot:after{content:"";position:absolute;inset:-4px;border-radius:50%;border:1.5px solid var(--accent-green);animation:statusRipple 2s ease-out infinite;opacity:0}.status-dot.offline{background:var(--accent-red);box-shadow:0 0 8px rgba(239,68,68,.4);animation:none}.status-dot.offline:after{display:none}@keyframes statusPing{0%,to{opacity:1}50%{opacity:.6}}@keyframes statusRipple{0%{transform:scale(.8);opacity:.6}to{transform:scale(2.2);opacity:0}}.main-content{flex:1 1;flex-direction:column}.app-body,.main-content{overflow:hidden;display:flex}.app-body{flex:1 1;min-height:0}.app-body .main-content{min-width:0}.sidebar-nav{width:264px;flex-shrink:0;display:flex;flex-direction:column;background:var(--bg-secondary,#0e1117);border-right:1px solid var(--border-color,hsla(0,0%,100%,.08));overflow:hidden}.sidebar-nav.sidebar-collapsed{width:34px;align-items:center;padding-top:8px}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--text-muted,#8891a5);border-bottom:1px solid var(--border-color,hsla(0,0%,100%,.06));flex-shrink:0}.sidebar-toggle{background:none;border:none;color:var(--text-muted,#8891a5);cursor:pointer;font-size:16px;line-height:1;padding:2px 6px;font-family:var(--font-family,sans-serif)}.sidebar-toggle:hover{color:var(--text-primary,#e4e8f0)}.sidebar-tree{flex:1 1;overflow-y:auto;padding:6px 4px}.tree-row{display:flex;align-items:center;gap:6px;width:100%;background:none;border:none;color:var(--text-primary,#e4e8f0);font-family:var(--font-family,sans-serif);font-size:13px;text-align:left;padding:5px 8px;border-radius:5px;cursor:pointer;transition:background .12s ease}.tree-row:hover{background:hsla(0,0%,100%,.05)}.tree-selected{background:rgba(232,115,42,.15);color:var(--accent-orange,#e8732a)}.tree-company-row{font-weight:600}.tree-site-row{padding:0}.tree-site-label{display:flex;align-items:center;gap:6px;flex:1 1;min-width:0;background:none;border:none;color:inherit;font-family:var(--font-family,sans-serif);font-size:13px;text-align:left;padding:5px 8px;border-radius:5px;cursor:pointer}.tree-site-label:hover{background:hsla(0,0%,100%,.05)}.tree-chevron{background:none;border:none;color:var(--text-muted,#8891a5);cursor:pointer;font-size:10px;width:16px;flex-shrink:0;padding:0;transition:transform .12s ease}.tree-chevron.open{transform:rotate(90deg)}.tree-label{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-count{font-size:10px;color:var(--text-muted,#8891a5);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;flex-shrink:0}.tree-icon{font-size:11px;flex-shrink:0}.tree-site{padding-left:10px}.tree-camera-row{padding-left:24px;font-size:12px}.cam-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.cam-dot.online{background:var(--accent-green,#22c55e)}.cam-dot.offline{background:#6b7280}.tree-empty{padding:6px 12px;font-size:11px;color:var(--text-muted,#8891a5);font-style:italic}.video-grid-container{flex:1 1;padding:0;overflow:hidden;display:flex;flex-direction:column}.camera-grid-wrapper{display:flex;flex-direction:column;height:100%;width:100%}.layout-toolbar{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:var(--bg-card);border-bottom:1px solid var(--border-color);gap:12px;flex-shrink:0}.layout-toolbar-center,.layout-toolbar-left,.layout-toolbar-right{display:flex;align-items:center;gap:6px}.layout-toolbar-center{flex:1 1;overflow-x:auto;justify-content:center}.layout-divider{width:1px;height:20px;background:var(--border-color);margin:0 4px}.layout-quick-btn{padding:4px 8px;font-size:11px;border-radius:4px;border:1px solid var(--border-color);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .15s ease;font-family:var(--font-family)}.layout-quick-btn:hover{background:hsla(0,0%,100%,.05);color:var(--text-primary)}.layout-quick-btn.active{background:var(--accent-blue);color:#fff;border-color:var(--accent-blue)}.layout-edit-btn{padding:4px 10px;font-size:11px;border-radius:4px;border:1px solid var(--border-color);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .15s ease;font-family:var(--font-family)}.layout-edit-btn.active{background:rgba(255,165,0,.15);color:#fa3;border-color:rgba(255,165,0,.4)}.saved-layout-chip{display:flex;align-items:center;gap:2px}.layout-load-btn{padding:4px 10px;font-size:11px;border-radius:4px 0 0 4px;border:1px solid var(--border-color);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .15s ease;font-family:var(--font-family)}.layout-load-btn:hover{background:hsla(0,0%,100%,.05)}.layout-load-btn.active{background:rgba(0,200,100,.15);color:#0c6;border-color:rgba(0,200,100,.3)}.layout-delete-btn{padding:4px 6px;font-size:11px;border-radius:0 4px 4px 0;border:1px solid var(--border-color);border-left:none;background:transparent;color:var(--text-muted);cursor:pointer;transition:all .15s ease}.layout-delete-btn:hover{background:rgba(255,50,50,.15);color:#f44}.layout-save-btn{padding:4px 10px;font-size:11px;border-radius:4px;border:1px solid var(--border-color);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .15s ease;font-family:var(--font-family);white-space:nowrap}.layout-save-btn:hover{background:hsla(0,0%,100%,.05);color:var(--text-primary)}.save-dialog{display:flex;align-items:center;gap:4px}.save-input{border-radius:4px;border:1px solid var(--accent-blue);background:var(--bg-secondary);color:var(--text-primary);width:120px;outline:none}.save-confirm-btn,.save-input{padding:4px 8px;font-size:11px;font-family:var(--font-family)}.save-confirm-btn{border-radius:4px;border:none;background:var(--accent-blue);color:#fff;cursor:pointer}.save-cancel-btn{padding:4px 8px;font-size:11px;border-radius:4px;background:transparent;color:var(--text-secondary);font-family:var(--font-family)}.camera-grid-area{flex:1 1;overflow:hidden;padding:6px}.custom-grid-canvas{flex:1 1;display:grid;grid-template-columns:repeat(var(--grid-cols,32),1fr);grid-auto-rows:var(--grid-row-h,30px);grid-gap:6px;gap:6px;position:relative;min-height:100%}.custom-grid-item{position:relative;background:var(--bg-card);border-radius:6px;border:1px solid var(--border-color);transition:box-shadow .2s ease,border-color .2s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none;display:flex;flex-direction:column}.custom-grid-item.selected{border-color:var(--accent-blue);box-shadow:var(--shadow-glow)}.custom-grid-item.selected:after{content:"";position:absolute;inset:0;border:2px solid var(--accent-blue);border-radius:inherit;pointer-events:none;z-index:22}.custom-grid-item.dragging{opacity:.8;box-shadow:0 10px 25px rgba(0,0,0,.5);z-index:50;position:absolute;pointer-events:none}.custom-grid-item.resizing{opacity:.9;z-index:40}.custom-grid-item .video-cell{flex:1 1;width:100%;height:100%;border:none;border-radius:0}.drag-handle{position:absolute;top:0;left:0;right:0;z-index:20;padding:4px 8px;background:rgba(0,0,0,.7);color:var(--text-primary);font-size:11px;cursor:-webkit-grab;cursor:grab;display:flex;align-items:center;gap:6px;pointer-events:auto}.drag-handle:active{cursor:-webkit-grabbing;cursor:grabbing}.custom-resize-handle{position:absolute;bottom:0;right:0;width:20px;height:20px;cursor:se-resize;z-index:20;pointer-events:auto}.custom-resize-handle:after{content:"";position:absolute;bottom:4px;right:4px;width:8px;height:8px;border-right:2px solid var(--text-muted);border-bottom:2px solid var(--text-muted);border-bottom-right-radius:2px}.custom-resize-handle:hover:after{border-color:var(--text-primary)}.custom-grid-ghost{position:absolute;background:var(--accent-blue);opacity:.2;border-radius:6px;z-index:10;transition:all .1s ease;pointer-events:none}.layout-preset-select{font-size:11px;background:var(--bg-secondary);font-family:var(--font-family)}.layout-preset-select:hover{border-color:hsla(0,0%,100%,.2)}.layout-preset-select:focus{border-color:var(--accent-blue)}.layout-preset-select option{background:var(--bg-primary)}.static-grid-cell{position:relative;overflow:visible}.cell-swap-btn{position:absolute;top:8px;left:8px;z-index:15;width:28px;height:28px;border-radius:50%;border:1px solid hsla(0,0%,100%,.15);background:rgba(0,0,0,.65);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--text-secondary);font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease,background .15s ease,transform .15s ease;pointer-events:auto}.static-grid-cell:hover .cell-swap-btn{opacity:1}.cell-swap-btn:hover{background:rgba(59,130,246,.6);border-color:var(--accent-blue);color:#fff;transform:scale(1.1)}.static-grid-cell-empty{cursor:pointer;border:2px dashed hsla(0,0%,100%,.1);background:rgba(14,17,23,.4);transition:border-color .2s ease,background .2s ease}.static-grid-cell-empty:hover{border-color:rgba(59,130,246,.4);background:rgba(59,130,246,.06)}.empty-cell-content{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:8px;opacity:.4;transition:opacity .2s ease}.static-grid-cell-empty:hover .empty-cell-content{opacity:.7}.empty-cell-icon{font-size:32px;font-weight:300;color:var(--text-muted);line-height:1}.empty-cell-label{font-size:12px;font-weight:500;color:var(--text-muted);letter-spacing:.3px}.cell-picker-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:100;min-width:220px;max-width:280px;max-height:320px;background:rgba(14,17,23,.96);backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);border:1px solid hsla(0,0%,100%,.12);border-radius:10px;box-shadow:0 16px 48px rgba(0,0,0,.7),0 0 0 1px hsla(0,0%,100%,.04);display:flex;flex-direction:column;overflow:hidden;animation:pickerFadeIn .15s ease-out}@keyframes pickerFadeIn{0%{opacity:0;transform:translate(-50%,-50%) scale(.95)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.cell-picker-header{padding:10px 14px 8px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);border-bottom:1px solid hsla(0,0%,100%,.06);flex-shrink:0}.cell-picker-search{padding:6px 10px 4px;flex-shrink:0}.cell-picker-search-input{width:100%;padding:6px 10px;font-size:12px;border-radius:5px;border:1px solid hsla(0,0%,100%,.1);background:hsla(0,0%,100%,.05);color:var(--text-primary);font-family:var(--font-family);outline:none;transition:border-color .15s ease}.cell-picker-search-input::placeholder{color:var(--text-muted);opacity:.6}.cell-picker-search-input:focus{border-color:var(--accent-blue);background:hsla(0,0%,100%,.07)}.cell-picker-empty{padding:16px 14px;font-size:12px;color:var(--text-muted);text-align:center;font-style:italic;opacity:.7}.cell-picker-list{overflow-y:auto;flex:1 1;padding:4px 0}.cell-picker-option{display:flex;align-items:center;gap:10px;width:100%;padding:9px 14px;border:none;background:transparent;color:var(--text-primary);font-size:13px;font-family:var(--font-family);cursor:pointer;text-align:left;transition:background .12s ease}.cell-picker-option:hover:not(.disabled){background:hsla(0,0%,100%,.06)}.cell-picker-option.active{background:rgba(59,130,246,.12);color:var(--accent-blue)}.cell-picker-option.disabled{opacity:.35;cursor:not-allowed}.cell-picker-clear{color:var(--accent-red);border-bottom:1px solid hsla(0,0%,100%,.06);font-weight:600;font-size:12px}.cell-picker-clear:hover{background:rgba(239,68,68,.1)!important}.picker-clear-icon{font-size:11px;opacity:.8}.picker-status-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.picker-status-dot.online{background:var(--accent-green);box-shadow:0 0 6px rgba(34,197,94,.4)}.picker-status-dot.offline{background:var(--accent-red);box-shadow:0 0 6px rgba(239,68,68,.3)}.picker-cam-name{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-assigned-badge,.picker-current-badge{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:2px 6px;border-radius:3px;flex-shrink:0}.picker-current-badge{background:rgba(59,130,246,.15);color:var(--accent-blue);border:1px solid rgba(59,130,246,.25)}.picker-assigned-badge{background:hsla(0,0%,100%,.05);color:var(--text-muted);border:1px solid hsla(0,0%,100%,.08)}.static-grid-create-prompt{display:flex;align-items:center;justify-content:center;height:100%;background:radial-gradient(ellipse at center,rgba(59,130,246,.04) 0,transparent 70%)}.create-layout-card{display:flex;flex-direction:column;align-items:center;gap:14px;padding:40px 48px;background:rgba(14,17,23,.85);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid hsla(0,0%,100%,.08);border-radius:16px;box-shadow:0 24px 64px rgba(0,0,0,.5),0 0 0 1px hsla(0,0%,100%,.03);animation:pickerFadeIn .2s ease-out;max-width:400px;width:100%}.create-layout-icon{font-size:40px;opacity:.3;line-height:1}.create-layout-title{font-size:18px;font-weight:700;color:var(--text-primary);letter-spacing:-.02em}.create-layout-desc{font-size:13px;color:var(--text-muted);text-align:center;line-height:1.5;max-width:280px}.create-layout-form{display:flex;align-items:center;gap:8px;margin-top:8px;width:100%}.create-layout-input{flex:1 1;min-width:0}.create-layout-btn{padding:7px 16px!important;font-size:12px!important;font-weight:700;white-space:nowrap;border-radius:6px!important;letter-spacing:.3px;transition:opacity .15s ease,transform .15s ease}.create-layout-btn:disabled{opacity:.4;cursor:not-allowed}.create-layout-btn:not(:disabled):hover{transform:translateY(-1px)}.layout-mode-badge{font-weight:700;border-radius:4px;background:rgba(59,130,246,.12);color:var(--accent-blue);border:1px solid rgba(59,130,246,.25);letter-spacing:.3px}.layout-convert-btn,.layout-mode-badge{font-size:11px;padding:4px 10px;white-space:nowrap}.layout-convert-btn{border-radius:4px;border:1px solid rgba(168,85,247,.3);background:rgba(168,85,247,.08);color:var(--accent-purple);cursor:pointer;transition:all .15s ease;font-family:var(--font-family)}.layout-convert-btn:hover{background:rgba(168,85,247,.18);border-color:rgba(168,85,247,.5)}.create-mode-toggle{display:flex;gap:4px;border-radius:8px;background:hsla(0,0%,100%,.04);padding:4px;border:1px solid hsla(0,0%,100%,.06)}.create-mode-btn{padding:8px 18px;font-size:13px;font-weight:600;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--text-muted);cursor:pointer;transition:all .15s ease;font-family:var(--font-family)}.create-mode-btn:hover{color:var(--text-secondary);background:hsla(0,0%,100%,.04)}.create-mode-btn.active{background:rgba(59,130,246,.15);color:var(--accent-blue);border-color:rgba(59,130,246,.3);box-shadow:0 2px 8px rgba(59,130,246,.15)}.create-preset-row{display:flex;align-items:center;gap:10px;width:100%}.create-preset-label{font-size:12px;color:var(--text-muted);font-weight:600;white-space:nowrap}.create-preset-row .layout-preset-select{flex:1 1}.create-layout-hint{font-size:12px;color:var(--text-muted);text-align:center;font-style:italic;opacity:.7}.layout-chip-mode{margin-right:4px;opacity:.6;font-size:10px}.freeform-add-camera-wrapper{position:relative}.freeform-add-btn{font-weight:600!important}.freeform-picker-dropdown{position:absolute;top:100%;left:0;margin-top:6px;z-index:200}.freeform-picker-dropdown .cell-picker-overlay{position:relative;top:auto;left:auto;transform:none;animation:freeformPickerSlide .15s ease-out}@keyframes freeformPickerSlide{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.video-grid{display:grid;grid-gap:8px;gap:8px;height:100%;width:100%}.video-grid.grid-1x1{grid-template-columns:1fr}.video-grid.grid-2x2{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}.video-grid.grid-3x3{grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr 1fr 1fr}.video-grid.grid-4x4{grid-template-columns:1fr 1fr 1fr 1fr;grid-template-rows:1fr 1fr 1fr 1fr}.grid-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:80px;height:4px;background:var(--border-color);border-radius:2px;outline:none;cursor:pointer}.grid-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent-blue);cursor:pointer;-webkit-transition:transform .1s ease;transition:transform .1s ease}.grid-slider::-webkit-slider-thumb:hover{transform:scale(1.3)}.grid-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent-blue);cursor:pointer;border:none}.video-cell{position:relative;background:var(--bg-card);border-radius:var(--radius-md);border:1px solid var(--border-color);overflow:hidden;cursor:pointer;transition:border-color .25s ease,box-shadow .25s ease,transform .2s ease}.video-cell:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.03) 0,rgba(0,0,0,.03) 4px);pointer-events:none;z-index:1;opacity:.5;mix-blend-mode:multiply}.video-cell:hover{border-color:var(--border-active);box-shadow:0 0 0 1px rgba(232,115,42,.12),0 4px 16px rgba(0,0,0,.3)}.video-cell.selected{border-color:var(--accent-blue);box-shadow:var(--shadow-glow),0 0 20px rgba(59,130,246,.1)}.video-cell video{width:100%;height:100%;object-fit:contain;background:#000}.video-cell-header{position:absolute;top:0;left:0;right:0;padding:8px 12px;background:linear-gradient(180deg,rgba(0,0,0,.7),transparent);display:flex;justify-content:space-between;align-items:center;z-index:2}.video-cell-name{font-size:12px;font-weight:600;display:flex;align-items:center;gap:6px;padding-left:32px}.video-cell-badge{padding:2px 6px;border-radius:4px;font-size:10px;font-weight:600;text-transform:uppercase}.badge-live{background:var(--accent-orange);color:#fff;animation:pulse 2s ease-in-out infinite}.badge-rec{background:var(--accent-crimson);color:#fff}.badge-playback{background:var(--accent-red);color:#fff}.badge-sync{background:rgba(59,130,246,.2);color:var(--accent-blue);border:1px solid rgba(59,130,246,.35);letter-spacing:.5px}.badge-sync,.btn-sync{font-family:var(--font-mono,"JetBrains Mono",monospace)}.btn-sync{padding:3px 10px;font-size:11px;font-weight:600;border-radius:4px;border:1px solid var(--border-color);background:transparent;color:var(--text-muted);cursor:pointer;transition:all .15s ease;white-space:nowrap}.btn-sync:hover{border-color:rgba(59,130,246,.5);color:var(--accent-blue)}.btn-sync.active{background:rgba(59,130,246,.12);border-color:rgba(59,130,246,.4);color:var(--accent-blue)}.video-cell-placeholder{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-muted);gap:8px;background:linear-gradient(135deg,rgba(21,25,33,.8),rgba(10,12,16,.95))}.video-cell-placeholder .icon{font-size:32px;opacity:.3;animation:skeletonPulse 2s ease-in-out infinite}@keyframes skeletonPulse{0%,to{opacity:.3;transform:scale(1)}50%{opacity:.6;transform:scale(1.05)}}.timeline-container{background:var(--bg-secondary);border-top:1px solid var(--border-color);padding:12px 24px 16px;flex-shrink:0}.timeline-controls{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:12px}.timeline-left{flex-shrink:0}.timeline-center,.timeline-left{display:flex;align-items:center;gap:8px}.timeline-center{justify-content:center;flex:1 1 auto}.timeline-right{gap:8px;flex-shrink:0}.timeline-right,.zoom-controls{display:flex;align-items:center}.zoom-controls{gap:2px;margin-left:4px}.zoom-label{justify-content:center;min-width:36px;padding:3px 8px;background:var(--bg-tertiary);color:var(--accent-blue);font-size:11px;font-weight:700;font-family:var(--font-mono);-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn,.zoom-label{display:inline-flex;align-items:center;border-radius:var(--radius-sm);border:1px solid var(--border-color)}.btn{gap:6px;padding:6px 14px;font-size:12px;font-weight:600;font-family:var(--font-family);cursor:pointer;background:var(--bg-elevated);color:var(--text-secondary);transition:all .2s var(--ease-out-expo)}.btn:hover{color:var(--text-primary);border-color:var(--border-active);background:var(--bg-hover);transform:translateY(-1px);box-shadow:0 2px 8px rgba(0,0,0,.2)}.btn:active{transform:translateY(0) scale(.97);box-shadow:none;transition-duration:.08s}.btn-primary{background:var(--accent-blue);border-color:var(--accent-blue);color:#fff}.btn-primary:hover{background:#2563eb;border-color:#2563eb}.btn-live{background:var(--accent-red);border-color:var(--accent-red);color:#fff;animation:pulse 2s ease-in-out infinite}.btn-live:hover{background:#dc2626}.btn-sm{padding:4px 10px;font-size:11px}.btn-icon{padding:6px;min-width:32px}.btn-icon,.ptz-btn{justify-content:center}.ptz-btn{width:28px;height:28px;border-radius:6px;border:1px solid hsla(0,0%,100%,.2);background:rgba(0,0,0,.4);color:#fff;cursor:pointer;display:flex;align-items:center;font-size:14px;transition:all .15s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ptz-btn:hover{background:rgba(59,130,246,.4);border-color:var(--accent-blue)}.ptz-btn:active{background:var(--accent-blue);transform:scale(.95)}.timeline-track{position:relative;height:48px;background:var(--bg-tertiary);border-radius:var(--radius-sm);overflow:hidden;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:none;border:1px solid hsla(0,0%,100%,.05);box-shadow:0 -2px 12px rgba(59,130,246,.06),inset 0 1px 0 hsla(0,0%,100%,.03);transition:border-color .2s ease,box-shadow .2s ease}.timeline-track:hover{border-color:rgba(59,130,246,.15);box-shadow:0 -2px 16px rgba(59,130,246,.1),inset 0 1px 0 hsla(0,0%,100%,.04)}.timeline-track.jog-shuttle{cursor:crosshair}.timeline-track.jog-shuttle:active{cursor:-webkit-grabbing;cursor:grabbing}.playback-controls{position:absolute;bottom:8px;right:8px;display:flex;align-items:center;gap:4px;z-index:10;background:rgba(0,0,0,.6);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:4px 6px;border-radius:8px;border:1px solid hsla(0,0%,100%,.1)}.playback-btn{width:30px;height:30px;border-radius:6px;border:1px solid hsla(0,0%,100%,.15);background:hsla(0,0%,100%,.08);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .15s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.playback-btn:hover{background:rgba(59,130,246,.4);border-color:var(--accent-blue)}.playback-btn:active{background:var(--accent-blue);transform:scale(.92)}.playback-btn-main{width:36px;height:36px;font-size:16px;border-radius:50%;background:rgba(59,130,246,.3);border-color:var(--accent-blue)}.timeline-progress{left:0;background:linear-gradient(90deg,var(--accent-blue-glow),transparent)}.timeline-playhead,.timeline-progress{position:absolute;top:0;height:100%;pointer-events:none}.timeline-playhead{width:2px;background:var(--accent-blue);box-shadow:0 0 12px var(--accent-blue),0 0 4px var(--accent-blue);z-index:3}.timeline-playhead:after{content:"";position:absolute;top:0;left:-8px;width:18px;height:100%;background:linear-gradient(90deg,transparent,rgba(59,130,246,.15),transparent);pointer-events:none}.timeline-playhead:before{content:"";top:-1px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid var(--accent-blue);filter:drop-shadow(0 0 4px var(--accent-blue))}.playhead-time-badge,.timeline-playhead:before{position:absolute;left:50%;transform:translateX(-50%)}.playhead-time-badge{top:-28px;background:var(--accent-orange,var(--accent-orange));color:#fff;font-size:11px;font-family:var(--font-mono,monospace);font-weight:600;padding:2px 8px;border-radius:4px;white-space:nowrap;pointer-events:none;z-index:20;box-shadow:0 2px 8px rgba(0,0,0,.5);letter-spacing:.5px}.playhead-time-badge:after{content:"";position:absolute;bottom:-4px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid var(--accent-orange,var(--accent-orange))}.timeline-hover-line{position:absolute;top:0;width:1px;height:100%;background:hsla(0,0%,100%,.35);z-index:4;pointer-events:none;transition:left .03s linear}.timeline-hover-tooltip{position:absolute;top:-30px;transform:translateX(-50%);background:rgba(15,18,25,.95);color:var(--text-primary,#fff);font-size:11px;font-family:var(--font-mono,monospace);padding:3px 8px;border-radius:4px;border:1px solid var(--border,hsla(0,0%,100%,.12));white-space:nowrap;pointer-events:none;z-index:20;box-shadow:0 2px 12px rgba(0,0,0,.6)}.timeline-hover-tooltip:after{content:"";position:absolute;bottom:-4px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(15,18,25,.95)}.timeline-transport{display:flex;align-items:center;gap:2px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:8px;padding:2px 4px}.transport-btn{width:32px;height:28px;border-radius:5px;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:13px;transition:all .15s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.transport-btn:hover{background:rgba(59,130,246,.15);color:var(--text-primary)}.transport-btn:active{background:rgba(59,130,246,.3);transform:scale(.92)}.transport-btn-main{width:36px;height:32px;font-size:16px;border-radius:50%;background:rgba(59,130,246,.2);color:var(--accent-blue);border:1px solid rgba(59,130,246,.3);margin:0 2px}.transport-btn-main:hover{background:rgba(59,130,246,.4);border-color:var(--accent-blue);color:#fff}.transport-btn-main.paused{background:rgba(34,197,94,.2);color:var(--accent-green);border-color:rgba(34,197,94,.3)}.transport-btn-main.paused:hover{background:rgba(34,197,94,.4);border-color:var(--accent-green);color:#fff}.transport-btn-frame,.transport-btn-sec{width:auto;min-width:34px;padding:0 6px;font-size:11px;font-family:var(--font-mono,monospace);font-weight:600}.transport-btn-frame{min-width:30px;font-size:12px}.speed-control{display:flex;align-items:center;gap:2px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:8px;padding:2px 4px;flex-shrink:0}.speed-btn{min-width:30px;height:24px;padding:0 6px;border-radius:5px;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;font-size:11px;font-weight:600;font-family:var(--font-mono,monospace);transition:all .15s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.speed-btn:hover{background:rgba(59,130,246,.15);color:var(--text-primary)}.speed-btn.active{background:rgba(59,130,246,.3);color:var(--accent-blue);box-shadow:0 0 6px rgba(59,130,246,.25)}.timeline-time-display{font-size:12px;font-family:var(--font-mono,monospace);color:var(--text-secondary);transition:all .15s ease;padding:4px 10px;border-radius:5px;border:1px solid transparent;background:transparent;cursor:pointer;white-space:nowrap}.timeline-time-display:hover{color:var(--text-primary);background:var(--bg-tertiary);border-color:var(--border-color)}.timeline-time-display.scrubbing{color:var(--accent-orange,var(--accent-orange));background:rgba(232,115,42,.12);border-color:rgba(232,115,42,.3);font-weight:600;font-size:13px;box-shadow:0 0 8px rgba(232,115,42,.15)}.timeline-track.scrub-active{border-color:var(--accent-orange,var(--accent-orange));box-shadow:0 0 12px rgba(232,115,42,.2)}.timeline-center-guide{position:absolute;top:0;left:50%;width:1px;height:100%;background:rgba(59,130,246,.15);z-index:1;pointer-events:none}.timeline-markers{position:absolute;bottom:0;left:0;right:0;height:22px;display:flex;align-items:flex-end;z-index:4}.timeline-marker{position:absolute;bottom:8px;width:9px;transform:translateX(-50%);border:none;padding:0;border-radius:2px;min-height:8px;cursor:pointer;opacity:.9;box-shadow:0 0 0 1px rgba(0,0,0,.45);transition:transform .1s ease,opacity .1s ease,box-shadow .1s ease}.timeline-marker.marker-hover,.timeline-marker:hover{opacity:1;transform:translateX(-50%) scaleY(1.25);box-shadow:0 0 8px currentColor,0 0 0 1px rgba(0,0,0,.45);z-index:5}.marker-motion{background:var(--accent-amber);color:var(--accent-amber)}.marker-lpr{background:var(--accent-cyan);color:var(--accent-cyan)}.marker-object{background:var(--accent-purple);color:var(--accent-purple)}.marker-face{background:var(--accent-green);color:var(--accent-green)}.marker-human{background:#ef4444;color:#ef4444}.marker-vehicle{background:#3b82f6;color:#3b82f6}.marker-intrusion{background:#dc2626;color:#dc2626}.marker-linecross{background:#f43f5e;color:#f43f5e}.marker-loitering{background:#eab308;color:#eab308}.marker-peoplecount{background:#06b6d4;color:#06b6d4}.marker-tamper{background:#f97316;color:#f97316}.marker-videoloss{background:#6b7280;color:#6b7280}.marker-other{background:var(--text-muted);color:var(--text-muted)}.timeline-marker-tooltip{position:absolute;bottom:30px;transform:translateX(-50%);background:rgba(12,14,20,.96);border:1px solid var(--border-color);border-radius:6px;padding:5px 9px;font-size:11px;color:var(--text-primary);white-space:nowrap;pointer-events:none;z-index:20;box-shadow:0 6px 18px rgba(0,0,0,.5)}.marker-tip-time{font-family:var(--font-mono,monospace);font-weight:600;margin-bottom:3px;color:var(--text-secondary)}.marker-tip-types{display:flex;flex-direction:column;gap:2px}.marker-tip-type{display:flex;align-items:center;gap:6px}.timeline-ruler{position:absolute;top:0;left:0;right:0;height:100%;pointer-events:none;z-index:2}.timeline-tick{position:absolute;top:0;width:1px;background:hsla(0,0%,100%,.12)}.timeline-tick.tick-minor{height:8px}.timeline-tick.tick-major{height:14px;background:hsla(0,0%,100%,.28)}.timeline-times{position:relative;height:14px;margin-top:4px;font-size:10px;color:var(--text-muted)}.timeline-ruler-labels .ruler-label{position:absolute;top:0;transform:translateX(-50%);font-family:var(--font-mono,monospace);white-space:nowrap}.cam-selector-wrap{position:relative}.cam-selector-trigger{display:flex;align-items:center;gap:6px;padding:4px 12px 4px 8px;border-radius:6px;cursor:pointer;border:1px solid var(--border-color);background:hsla(0,0%,100%,.04);color:var(--text-secondary);font-size:12px;font-weight:500;font-family:var(--font-family);transition:all .15s ease;white-space:nowrap}.cam-selector-trigger:hover{border-color:var(--border-active);background:hsla(0,0%,100%,.08);color:var(--text-primary)}.cam-selector-trigger.has-selection{border-color:var(--accent-orange,var(--accent-orange));background:rgba(232,115,42,.1);color:var(--accent-orange,var(--accent-orange))}.cam-selector-icon{font-size:14px;opacity:.7}.cam-selector-label{max-width:120px;overflow:hidden;text-overflow:ellipsis}.cam-selector-arrow{font-size:10px;opacity:.5;transition:transform .2s ease}.cam-selector-arrow.open{transform:rotate(180deg)}.cam-selector-menu{position:absolute;bottom:calc(100% + 6px);right:0;min-width:220px;max-height:320px;overflow-y:auto;background:rgba(12,14,20,.96);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid hsla(0,0%,100%,.1);border-radius:10px;padding:4px;z-index:50;box-shadow:0 -8px 32px rgba(0,0,0,.6),0 0 0 1px hsla(0,0%,100%,.04);animation:camMenuSlideUp .15s ease}@keyframes camMenuSlideUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.cam-menu-header{padding:6px 10px 4px;font-size:9px;font-weight:700;letter-spacing:1.2px;color:var(--text-muted);font-family:var(--font-mono,monospace)}.cam-menu-divider{height:1px;background:hsla(0,0%,100%,.06);margin:2px 8px}.cam-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border:none;border-radius:6px;background:transparent;color:var(--text-secondary);font-size:12px;font-family:var(--font-family);cursor:pointer;transition:all .1s ease;text-align:left}.cam-menu-item:hover{background:hsla(0,0%,100%,.06);color:var(--text-primary)}.cam-menu-item.active{background:rgba(59,130,246,.12);color:var(--accent-blue)}.cam-menu-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.cam-menu-dot.online{background:var(--accent-green,var(--accent-green));box-shadow:0 0 4px var(--accent-green,var(--accent-green))}.cam-menu-dot.offline{background:var(--accent-crimson,var(--accent-red));opacity:.6}.cam-menu-dot.all{background:var(--accent-blue);box-shadow:0 0 4px var(--accent-blue)}.cam-menu-name{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cam-menu-count{font-size:10px;font-family:var(--font-mono,monospace);color:var(--text-muted);background:hsla(0,0%,100%,.06);padding:1px 6px;border-radius:8px}.cam-selector-menu::-webkit-scrollbar{width:4px}.cam-selector-menu::-webkit-scrollbar-track{background:transparent}.cam-selector-menu::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.12);border-radius:4px}.event-filter-group{display:flex;align-items:center;flex-wrap:wrap;gap:3px;margin-left:8px;padding:2px;background:hsla(0,0%,100%,.03);border-radius:8px;border:1px solid hsla(0,0%,100%,.05)}.event-filter-btn{display:flex;align-items:center;gap:4px;padding:3px 10px;border-radius:6px;cursor:pointer;border:none;background:transparent;color:var(--text-muted);font-size:11px;font-weight:500;font-family:var(--font-family);transition:all .15s ease}.event-filter-btn:hover{background:hsla(0,0%,100%,.06);color:var(--text-secondary)}.event-filter-btn.active{background:hsla(0,0%,100%,.08);color:var(--text-primary)}.event-filter-btn.active .filter-dot.motion{box-shadow:0 0 6px var(--accent-amber)}.event-filter-btn.active .filter-dot.lpr{box-shadow:0 0 6px var(--accent-cyan)}.event-filter-btn.active .filter-dot.object{box-shadow:0 0 6px var(--accent-purple)}.event-filter-btn.active .filter-dot.face{box-shadow:0 0 6px var(--accent-green)}.filter-dot{width:6px;height:6px;border-radius:50%}.filter-dot.motion{background:var(--accent-amber)}.filter-dot.lpr{background:var(--accent-cyan)}.filter-dot.object{background:var(--accent-purple)}.filter-dot.face{background:var(--accent-green)}.filter-dot.human{background:#ef4444}.filter-dot.vehicle{background:#3b82f6}.filter-dot.intrusion{background:#dc2626}.filter-dot.linecross{background:#f43f5e}.filter-dot.loitering{background:#eab308}.filter-dot.peoplecount{background:#06b6d4}.filter-dot.tamper{background:#f97316}.filter-dot.videoloss{background:#6b7280}.event-list-panel{position:fixed;right:0;top:56px;bottom:0;width:340px;background:var(--bg-secondary);border-left:1px solid var(--border-color);z-index:50;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .3s ease}.event-list-panel.open{transform:translateX(0)}.event-list-header{padding:16px;border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between}.event-list-header h3{font-size:14px;font-weight:600}.event-list{flex:1 1;overflow-y:auto;padding:8px}.event-item{padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s ease;display:flex;align-items:flex-start;gap:10px;margin-bottom:4px}.event-item:hover{background:var(--bg-hover)}.event-type-icon{width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0}.event-type-icon.motion{background:rgba(245,158,11,.15);color:var(--accent-amber)}.event-type-icon.lpr{background:rgba(6,182,212,.15);color:var(--accent-cyan)}.event-type-icon.object{background:rgba(139,92,246,.15);color:var(--accent-purple)}.event-type-icon.face{background:rgba(16,185,129,.15);color:var(--accent-green)}.event-info{flex:1 1;min-width:0}.event-info-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}.event-info-type{font-size:12px;font-weight:600;text-transform:capitalize}.event-info-time{font-size:10px;color:var(--text-muted)}.event-info-detail{font-size:11px;color:var(--text-secondary)}.page-container{padding:24px;overflow-y:auto;flex:1 1}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.page-title{font-size:24px;font-weight:700;letter-spacing:-.02em}.cam-list{display:flex;flex-direction:column;border:1px solid var(--border-color);border-radius:var(--radius-md);overflow:hidden;background:var(--bg-card)}.cam-list-header{display:flex;align-items:center;gap:12px;padding:0 20px;height:38px;background:hsla(0,0%,100%,.03);border-bottom:1px solid var(--border-color);position:-webkit-sticky;position:sticky;top:0;z-index:2}.cam-list-header .cam-list-col{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);-webkit-user-select:none;-moz-user-select:none;user-select:none}.cam-list-row{display:flex;align-items:center;gap:12px;padding:0 20px;height:48px;border-bottom:1px solid hsla(0,0%,100%,.04);transition:all .15s ease;border-left:3px solid transparent}.cam-list-row:last-child{border-bottom:none}.cam-list-row:hover{background:hsla(0,0%,100%,.025);border-left-color:var(--accent-green)}.cam-list-row.offline{opacity:.55}.cam-list-row.offline:hover{opacity:.85;border-left-color:var(--accent-red)}.cam-list-col{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary);min-width:0}.cam-col-status{width:90px;flex-shrink:0}.cam-col-name{flex:1.5 1;min-width:100px}.cam-col-address{flex:1.2 1;min-width:100px}.cam-col-mfg{flex:1 1;min-width:80px}.cam-col-model{flex:0.8 1;min-width:70px}.cam-col-rec,.cam-col-retention{width:80px;flex-shrink:0;justify-content:center}.cam-col-mode{width:70px;flex-shrink:0;justify-content:center}.cam-col-actions{width:110px;flex-shrink:0;justify-content:flex-end;gap:4px}.cam-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.cam-status-dot.online{background:var(--accent-green);box-shadow:0 0 6px var(--accent-green);animation:blink 2s ease-in-out infinite}.cam-status-dot.offline{background:var(--accent-red);box-shadow:0 0 4px rgba(239,68,68,.3)}.cam-status-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-family:var(--font-mono)}.cam-status-label.online{color:var(--accent-green)}.cam-status-label.offline{color:var(--accent-red)}.cam-name{font-weight:600;color:var(--text-primary);font-size:13px}.cam-address,.cam-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cam-address{font-size:11px;color:var(--text-secondary)}.cam-unit{font-size:10px;color:var(--text-muted);margin-left:2px}.cam-rec-badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:3px;font-size:10px;font-weight:700;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase}.cam-rec-badge.active{background:rgba(239,68,68,.12);color:var(--accent-red);border:1px solid rgba(239,68,68,.25)}.cam-rec-badge.stopped{background:hsla(0,0%,100%,.04);color:var(--text-muted);border:1px solid hsla(0,0%,100%,.08)}.cam-rec-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.cam-rec-badge.active .cam-rec-dot{background:var(--accent-red);box-shadow:0 0 6px var(--accent-red);animation:blink 1s ease-in-out infinite}.cam-rec-badge.stopped .cam-rec-dot{background:var(--text-muted)}.cam-mode-tag{font-size:10px;font-weight:600;font-family:var(--font-mono);letter-spacing:.06em;padding:2px 6px;border-radius:3px;background:rgba(59,130,246,.1);color:var(--accent-blue);border:1px solid rgba(59,130,246,.2)}.cam-action-btn{width:30px;height:30px;border-radius:6px;border:1px solid hsla(0,0%,100%,.08);background:hsla(0,0%,100%,.04);color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:13px;transition:all .15s ease}.cam-action-btn:hover{background:hsla(0,0%,100%,.1);border-color:var(--border-active);color:var(--text-primary);transform:scale(1.08)}.cam-action-btn.cam-action-danger:hover{background:rgba(239,68,68,.15);border-color:rgba(239,68,68,.4);color:var(--accent-red)}.camera-card-detail{display:flex;justify-content:space-between;font-size:12px;color:var(--text-secondary);padding:4px 0}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.96);z-index:400;display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease;isolation:isolate}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--bg-elevated);border-radius:var(--radius-lg);border:1px solid var(--border-color);padding:24px;max-width:480px;width:100%;box-shadow:var(--shadow-lg);animation:slideUp .3s ease}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-title{font-size:18px;font-weight:700;margin-bottom:20px}.form-group{margin-bottom:16px}.form-label{display:block;font-size:12px;font-weight:600;color:var(--text-secondary);margin-bottom:6px;text-transform:uppercase;letter-spacing:.05em}.form-input{width:100%;padding:10px 14px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-size:14px;font-family:var(--font-family);outline:none;transition:border-color .2s ease}.form-input:focus{border-color:var(--accent-blue);box-shadow:0 0 0 3px var(--accent-blue-glow)}.form-input::placeholder{color:var(--text-muted)}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:24px}.peek-overlay{position:fixed;top:0;left:0;right:0;bottom:120px;background:rgba(0,0,0,.85);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:300;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s ease;cursor:pointer}.timeline-container{position:relative;z-index:301}.peek-content{width:90vw;height:calc(100% - 40px);max-height:85vh;position:relative;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--border-color);box-shadow:0 25px 60px rgba(0,0,0,.5);animation:peekZoomIn .25s ease;cursor:default}.peek-content .video-cell{width:100%;height:100%;border-radius:0;border:none}@keyframes peekZoomIn{0%{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}.peek-close{position:absolute;top:16px;right:16px;width:36px;height:36px;border-radius:50%;border:1px solid hsla(0,0%,100%,.2);background:rgba(0,0,0,.6);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;z-index:10;transition:all .15s ease}.peek-close:hover{background:rgba(239,68,68,.6);border-color:var(--accent-red);transform:scale(1.1)}.peek-camera-name{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);padding:6px 20px;background:rgba(0,0,0,.6);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:20px;border:1px solid hsla(0,0%,100%,.1);color:var(--text-primary);font-size:13px;font-weight:600;z-index:10;white-space:nowrap}.grid-controls{display:flex;gap:2px;background:var(--bg-tertiary);border-radius:var(--radius-sm);padding:2px}.grid-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:4px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;font-size:10px;font-weight:700;font-family:var(--font-family);transition:all .15s ease}.grid-btn:hover{color:var(--text-primary);background:var(--bg-hover)}.grid-btn.active{color:var(--accent-blue);background:var(--accent-blue-glow)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-state-icon{font-size:48px;margin-bottom:16px;opacity:.3}.empty-state-title{font-size:18px;font-weight:600;margin-bottom:8px}.empty-state-desc{font-size:13px;color:var(--text-muted);max-width:300px;margin-bottom:20px}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.text-sm{font-size:13px}.text-xs{font-size:11px}.text-muted{color:var(--text-muted)}.font-mono{font-family:var(--font-mono)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mono{letter-spacing:.04em}.mono,.status-pill{font-family:var(--font-mono)}.status-pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px 3px 8px;border-radius:2px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;border:1px solid;white-space:nowrap}.status-pill:before{content:"";width:6px;height:6px;border-radius:50%;flex-shrink:0}.status-pill-online{background:rgba(34,197,94,.08);border-color:rgba(34,197,94,.35);color:var(--accent-green)}.status-pill-online:before{background:var(--accent-green);box-shadow:0 0 6px var(--accent-green);animation:blink 2s ease-in-out infinite}.status-pill-degraded{background:rgba(255,179,64,.08);border-color:rgba(255,179,64,.35);color:var(--accent-amber)}.status-pill-degraded:before{background:var(--accent-amber)}.status-pill-critical{background:rgba(255,59,59,.08);border-color:rgba(255,59,59,.35);color:var(--accent-red)}.status-pill-critical:before{background:var(--accent-red);box-shadow:0 0 6px var(--accent-red);animation:blink 1s ease-in-out infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:.35}}.sys-clock{font-family:var(--font-mono);font-size:13px;font-weight:500;color:var(--accent-orange);letter-spacing:.08em;padding:0 10px;border-left:1px solid var(--border-color)}.navbar-brand{color:var(--text-primary)}.navbar-brand .logo-icon{background:linear-gradient(135deg,var(--accent-orange),var(--accent-amber));border-radius:6px;box-shadow:0 0 12px rgba(232,115,42,.3)}.nav-link.active{color:var(--accent-orange);background:rgba(232,115,42,.08);border-bottom:2px solid var(--accent-orange)}.btn-logout{padding:4px 12px;font-size:11px;font-family:var(--font-mono);font-weight:500;letter-spacing:.06em;text-transform:uppercase;border:1px solid rgba(239,68,68,.3);background:rgba(239,68,68,.06);color:var(--accent-red);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s ease}.btn-logout:hover{background:rgba(239,68,68,.15);box-shadow:0 0 8px var(--accent-red-glow)}.cam-id-tag{font-weight:500;color:var(--accent-orange);letter-spacing:.1em;text-transform:uppercase;background:rgba(10,12,16,.75);padding:2px 7px;border-right:1px solid var(--border-color);border-bottom:1px solid var(--border-color)}.cam-id-tag,.cam-stats-bar{font-family:var(--font-mono);font-size:10px}.cam-stats-bar{position:absolute;bottom:24px;left:0;right:0;padding:3px 8px;display:flex;gap:12px;background:rgba(10,12,16,.7);color:var(--text-secondary);border-top:1px solid var(--border-color)}.cam-stats-bar span{color:var(--accent-orange)}.cam-zone-label{position:absolute;top:30px;left:0;font-family:var(--font-mono);font-size:9px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);background:rgba(10,12,16,.6);padding:2px 8px;border-right:1px solid hsla(0,0%,100%,.08)}.badge-ai-active{color:var(--accent-orange);background:rgba(232,115,42,.12);border:1px solid rgba(232,115,42,.4);border-radius:var(--radius-sm)}.badge-ai-active,.badge-offline{font-family:var(--font-mono);font-size:9px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:2px 6px}.badge-offline{color:var(--accent-red);background:rgba(255,59,59,.12);border:1px solid rgba(255,59,59,.4);border-radius:2px}.video-cell{border-color:hsla(0,0%,100%,.08)!important;border-radius:var(--radius-md)!important}.video-cell:hover{border-color:rgba(232,115,42,.4)!important;box-shadow:0 0 0 1px rgba(232,115,42,.12)}.video-cell.selected{border-color:var(--accent-orange)!important;box-shadow:0 0 0 1px rgba(232,115,42,.25),inset 0 0 20px rgba(232,115,42,.03)}.alert-feed{display:flex;flex-direction:column;background:var(--bg-secondary);border-left:1px solid var(--border-color);width:320px;flex-shrink:0;overflow:hidden}.alert-feed-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--border-color);background:var(--bg-card);flex-shrink:0}.alert-feed-title{font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-primary);display:flex;align-items:center;gap:7px}.alert-feed-live-dot{width:7px;height:7px;border-radius:50%;background:var(--accent-red);box-shadow:0 0 6px var(--accent-red);animation:blink 1s ease-in-out infinite}.alert-feed-count{font-family:var(--font-mono);font-size:10px;font-weight:600;padding:1px 6px;border-radius:2px;background:rgba(255,59,59,.15);border:1px solid rgba(255,59,59,.3);color:var(--accent-red)}.alert-feed-list{flex:1 1;overflow-y:auto;padding:4px 0}.alert-row{padding:9px 12px;border-bottom:1px solid hsla(0,0%,100%,.04);cursor:pointer;transition:background .12s ease;border-left:3px solid transparent;position:relative}.alert-row:hover{background:var(--bg-hover)}.alert-row.severity-critical{border-left-color:var(--accent-red);background:rgba(255,59,59,.04)}.alert-row.severity-warning{border-left-color:var(--accent-amber);background:rgba(255,179,64,.03)}.alert-row.severity-info{border-left-color:var(--accent-blue)}.alert-row.severity-ok{border-left-color:var(--accent-green)}.alert-row-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:3px}.alert-type-label{font-family:var(--font-mono);font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-red)}.alert-type-label.warning{color:var(--accent-amber)}.alert-type-label.info{color:var(--accent-blue)}.alert-type-label.ok{color:var(--accent-green)}.alert-time{font-family:var(--font-mono);font-size:9px;color:var(--text-muted)}.alert-description{font-size:11px;color:var(--text-secondary);line-height:1.4}.alert-cam-badge{display:inline-block;margin-top:5px;font-family:var(--font-mono);font-size:9px;padding:1px 6px;border-radius:2px;background:var(--bg-elevated);color:var(--text-muted);letter-spacing:.06em}.alert-cam-badge,.alert-thumbnail{border:1px solid var(--border-color)}.alert-thumbnail{width:100%;aspect-ratio:16/9;background:var(--bg-primary);border-radius:var(--radius-sm);overflow:hidden;margin-top:6px}.alert-thumbnail img{width:100%;height:100%;object-fit:cover;opacity:.85}.alert-actions{display:flex;gap:6px;margin-top:7px}.alert-action-btn{flex:1 1;padding:4px 8px;font-size:10px;font-family:var(--font-mono);font-weight:600;letter-spacing:.06em;text-transform:uppercase;border-radius:2px;cursor:pointer;transition:all .1s ease;border:1px solid var(--border-color);background:transparent;color:var(--text-secondary)}.alert-action-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.alert-action-btn.primary{border-color:rgba(232,115,42,.4);color:var(--accent-orange);background:rgba(232,115,42,.07)}.alert-action-btn.primary:hover{background:rgba(232,115,42,.15)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-primary);background-image:radial-gradient(ellipse at 30% 60%,rgba(232,115,42,.04) 0,transparent 60%),radial-gradient(ellipse at 70% 40%,rgba(178,34,52,.03) 0,transparent 60%);padding:24px}.login-card{width:100%;max-width:400px;background:var(--bg-card);border:1px solid hsla(0,0%,100%,.08);border-radius:var(--radius-lg);padding:40px 36px;box-shadow:0 0 60px rgba(232,115,42,.05),var(--shadow-lg)}.login-logo{text-align:center;margin-bottom:32px}.login-logo-icon{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;background:linear-gradient(135deg,var(--accent-orange),var(--accent-amber));border-radius:var(--radius-md);box-shadow:0 0 24px rgba(232,115,42,.35);font-size:24px;margin-bottom:16px}.login-title{font-family:var(--font-family);font-size:22px;font-weight:800;letter-spacing:-.02em;color:var(--text-primary);margin-bottom:6px}.login-subtitle{font-size:13px;color:var(--text-muted);letter-spacing:.02em}.login-form label{display:block;font-family:var(--font-family);font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary);margin-bottom:6px}.login-form input{width:100%;padding:11px 14px;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-family);font-size:14px;outline:none;transition:border-color .15s ease;margin-bottom:16px}.login-form input:focus{border-color:rgba(232,115,42,.5);box-shadow:0 0 0 2px rgba(232,115,42,.1)}.login-form input::placeholder{color:var(--text-muted)}.btn-login{width:100%;padding:12px;background:linear-gradient(135deg,var(--accent-orange),#d4651f);border:1px solid rgba(232,115,42,.5);border-radius:var(--radius-md);color:#fff;font-family:var(--font-family);font-size:14px;font-weight:700;letter-spacing:.02em;cursor:pointer;transition:all .2s ease}.btn-login:hover{background:linear-gradient(135deg,#f07b30,var(--accent-orange));box-shadow:0 0 24px rgba(232,115,42,.3);transform:translateY(-1px)}.btn-login:disabled{opacity:.5;cursor:not-allowed;transform:none}.login-error{background:rgba(255,59,59,.1);border:1px solid rgba(255,59,59,.3);border-radius:var(--radius-sm);padding:8px 12px;font-size:12px;color:var(--accent-red);margin-bottom:16px}.settings-page{flex:1 1;overflow-y:auto;padding:32px 48px;max-width:1200px;margin:0 auto;width:100%}.settings-header{display:flex;align-items:center;gap:16px;margin-bottom:28px}.settings-header-icon{width:48px;height:48px;background:linear-gradient(135deg,var(--bg-elevated),var(--bg-hover));border:1px solid var(--border-color);border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0}.settings-title{font-size:22px;font-weight:700;color:var(--text-primary);letter-spacing:-.02em;margin-bottom:3px}.settings-subtitle{font-size:12px;color:var(--text-muted);font-family:var(--font-mono)}.settings-tabs{display:flex;gap:2px;border-bottom:1px solid var(--border-color);margin-bottom:28px}.settings-tab{display:flex;align-items:center;gap:7px;padding:9px 18px;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-secondary);font-size:13px;font-weight:500;font-family:var(--font-family);cursor:pointer;transition:all .15s ease;margin-bottom:-1px;border-radius:var(--radius-sm) var(--radius-sm) 0 0}.settings-tab:hover{color:var(--text-primary);background:var(--bg-hover)}.settings-tab.active{color:var(--accent-blue);border-bottom-color:var(--accent-blue);background:var(--accent-blue-glow)}.settings-tab-icon{font-size:14px}.settings-section{animation:fadeInUp .18s ease}@keyframes fadeInUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.settings-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin-bottom:16px}.settings-section-desc{font-size:13px;color:var(--text-secondary);line-height:1.6;margin-bottom:24px;max-width:600px}.settings-loading{color:var(--text-muted);font-size:13px;padding:20px 0}.settings-form{display:flex;flex-direction:column;gap:14px;margin-bottom:24px}.settings-form-row{display:grid;grid-template-columns:220px 1fr;align-items:center;grid-gap:16px;gap:16px}.settings-form-row-inline{display:flex;grid-template-columns:unset;gap:10px;flex-wrap:wrap}.settings-label{display:flex;flex-direction:column;gap:2px}.settings-label-text{font-size:13px;font-weight:500;color:var(--text-primary)}.settings-label-hint{font-size:11px;color:var(--text-muted)}.settings-input{width:100%;padding:8px 12px;background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:13px;font-family:var(--font-mono);outline:none;transition:border-color .15s ease}.settings-input:focus{border-color:var(--accent-blue);box-shadow:0 0 0 2px rgba(79,195,247,.12)}.settings-input:disabled{opacity:.5;cursor:not-allowed}.settings-select{font-family:var(--font-family);cursor:pointer}.settings-input-with-unit{display:flex;align-items:center;gap:8px}.settings-input-with-unit .settings-input{width:120px;flex-shrink:0}.settings-input-unit{font-size:12px;color:var(--text-muted)}.settings-actions{display:flex;align-items:center;gap:14px;margin-top:4px}.settings-save-btn{padding:9px 22px;background:var(--accent-blue);border:none;border-radius:var(--radius-md);color:#fff;font-size:13px;font-weight:600;font-family:var(--font-family);cursor:pointer;transition:all .15s ease;white-space:nowrap}.settings-save-btn:hover:not(:disabled){background:#2563eb;transform:translateY(-1px);box-shadow:0 4px 14px rgba(79,195,247,.25)}.settings-save-btn:disabled{opacity:.6;cursor:not-allowed}.settings-cancel-btn{padding:9px 18px;background:transparent;border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);font-size:13px;font-family:var(--font-family);cursor:pointer;transition:all .15s ease}.settings-cancel-btn:hover{color:var(--text-primary);border-color:var(--border-active)}.settings-msg{font-size:12px;font-family:var(--font-mono);padding:6px 12px;border-radius:var(--radius-sm)}.settings-msg.ok{background:rgba(34,197,94,.08);color:var(--accent-green)}.settings-msg.err{background:rgba(255,59,59,.08);color:var(--accent-red)}.user-table-wrap{overflow-x:auto;margin-bottom:24px;border:1px solid var(--border-color);border-radius:var(--radius-lg)}.user-table{width:100%;border-collapse:collapse;font-size:13px}.user-table th{padding:10px 16px;text-align:left;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);background:var(--bg-elevated)}.user-table td,.user-table th{border-bottom:1px solid var(--border-color)}.user-table td{padding:11px 16px;color:var(--text-primary);vertical-align:middle}.user-table tr:last-child td{border-bottom:none}.user-table tr:hover td{background:var(--bg-hover)}.user-row-self td{background:rgba(79,195,247,.04)}.user-name{display:flex;align-items:center;gap:8px;font-weight:500;font-family:var(--font-mono)}.user-self-tag{font-size:9px;font-weight:700;padding:2px 5px;border-radius:3px;background:rgba(79,195,247,.15);color:var(--accent-blue);letter-spacing:.05em;font-family:var(--font-family)}.user-date{color:var(--text-muted);font-family:var(--font-mono);font-size:12px}.user-actions{display:flex;gap:4px}.user-action-btn{padding:5px 8px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font-size:13px;cursor:pointer;transition:all .15s ease}.user-action-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.user-action-btn.danger:hover{background:rgba(255,59,59,.12);color:var(--accent-red);border-color:rgba(255,59,59,.3)}.role-badge{display:inline-block;padding:3px 8px;border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.06em;color:#fff;opacity:.9}.role-badge,.role-select{font-family:var(--font-mono)}.role-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:4px 10px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--role-color,var(--text-secondary));font-size:11px;font-weight:600;cursor:pointer;outline:none;transition:border-color .15s}.role-select:focus{border-color:var(--accent-blue)}.settings-inline-form{background:var(--bg-elevated);border:1px solid var(--border-active);border-radius:var(--radius-lg);padding:16px 20px;margin-bottom:20px;animation:fadeInUp .15s ease}.settings-inline-form-title{font-size:12px;color:var(--text-secondary);margin-bottom:12px}.settings-inline-form-body{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.settings-add-user{padding-top:24px;margin-top:8px}.settings-add-user,.settings-build-info{border-top:1px solid var(--border-color)}.settings-build-info{margin-top:36px;padding-top:20px;display:flex;flex-direction:column;gap:8px}.settings-build-row{display:flex;gap:16px;font-size:12px}.settings-build-label{color:var(--text-muted);min-width:100px;font-family:var(--font-mono)}.settings-build-value,.stream-quality-btn{color:var(--text-secondary)}.stream-quality-btn{padding:3px 7px;border-radius:4px;border:1px solid var(--border-color);background:rgba(0,0,0,.55);font-size:10px;font-weight:700;font-family:var(--font-mono);cursor:pointer;transition:all .15s ease;letter-spacing:.04em;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:auto}.stream-quality-btn:hover{background:rgba(0,0,0,.75);color:var(--text-primary);border-color:var(--border-active)}.stream-quality-btn.hd{color:var(--accent-blue);border-color:rgba(79,195,247,.4)}.stream-quality-btn.sd{color:var(--accent-amber);border-color:rgba(255,179,64,.4)}.layout-preset-select{background:var(--bg-tertiary,#1a1d1a);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px;padding:4px 8px;font-size:12px;font-family:var(--font-mono);font-weight:600;cursor:pointer;outline:none;transition:border-color .15s ease}.layout-preset-select:focus,.layout-preset-select:hover{border-color:var(--accent-orange,var(--accent-orange))}.layout-preset-select option{background:var(--bg-primary,#0d100d);color:var(--text-primary)}.static-grid{padding:4px;box-sizing:border-box}.static-grid .custom-grid-item{position:relative;min-height:0;min-width:0;overflow:hidden;border-radius:4px;border:1px solid var(--border-color);background:#000}.settings-add-location-btn{margin-left:auto;padding:6px 16px;background:var(--accent-orange);color:#fff;border:none;border-radius:var(--radius-md);font-size:13px;font-weight:600;cursor:pointer;transition:background .2s}.settings-add-location-btn:hover{background:#d4651f}.settings-section-title{display:flex;align-items:center;gap:12px}.storage-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));grid-gap:16px;gap:16px;margin-top:16px}.storage-card{background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:var(--radius-lg,8px);padding:16px;transition:border-color .2s,box-shadow .2s}.storage-card:hover{border-color:var(--accent-orange);box-shadow:0 0 12px var(--accent-orange-glow)}.storage-card.editing{border-color:var(--accent-orange);opacity:.5;pointer-events:none}.storage-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.storage-card-title{display:flex;align-items:center;gap:8px;font-size:14px}.storage-card-actions{display:flex;gap:4px}.storage-card-actions button{background:none;border:none;cursor:pointer;font-size:14px;padding:4px;opacity:.6;transition:opacity .2s}.storage-card-actions button:hover{opacity:1}.storage-health-pill{width:10px;height:10px;border-radius:50%;flex-shrink:0}.storage-health-pill.ok{background:var(--accent-green);box-shadow:0 0 6px rgba(34,197,94,.5)}.storage-health-pill.warn{background:#f59e0b;box-shadow:0 0 6px rgba(245,158,11,.5)}.storage-health-pill.critical{background:var(--accent-red);box-shadow:0 0 6px rgba(239,68,68,.5);animation:pulse 1.5s ease infinite}.storage-purpose-badge{font-size:11px;padding:2px 8px;background:hsla(0,0%,100%,.06);border-radius:12px;color:var(--text-muted)}.storage-card-path{font-family:var(--font-mono,"JetBrains Mono",monospace);font-size:12px;color:var(--text-muted);background:rgba(0,0,0,.2);padding:6px 10px;border-radius:var(--radius-sm,4px);margin-bottom:12px;word-break:break-all}.storage-usage{margin-bottom:12px}.storage-usage-bar{height:8px;background:hsla(0,0%,100%,.08);border-radius:4px;overflow:hidden;margin-bottom:4px}.storage-usage-fill{height:100%;border-radius:4px;transition:width .6s ease}.storage-usage-fill.ok{background:linear-gradient(90deg,var(--accent-green),#4ade80)}.storage-usage-fill.warn{background:linear-gradient(90deg,#f59e0b,#fbbf24)}.storage-usage-fill.critical{background:linear-gradient(90deg,var(--accent-red),#f87171)}.storage-usage-stats{display:flex;justify-content:space-between;font-size:11px;color:var(--text-muted)}.storage-card-meta{display:flex;gap:16px;font-size:12px;color:var(--text-muted)}.storage-location-form{background:var(--bg-elevated);border:1px solid var(--accent-orange);border-radius:var(--radius-lg,8px);padding:20px;margin:16px 0}.storage-form-row{margin-bottom:12px}.storage-form-row label{display:block;font-size:12px;font-weight:600;color:var(--text-secondary);margin-bottom:4px;text-transform:uppercase;letter-spacing:.8px}.storage-form-row input,.storage-form-row select{width:100%;padding:8px 12px;background:var(--bg-surface,#1a1f16);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:13px}.storage-form-row input:focus,.storage-form-row select:focus{outline:none;border-color:var(--accent-orange)}.storage-form-row-group{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:12px;gap:12px}.storage-form-row-group .storage-form-row{margin-bottom:0}.storage-path-input{display:flex;gap:8px}.storage-path-input input{flex:1 1}.storage-browse-btn{padding:8px 14px;background:hsla(0,0%,100%,.08);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);cursor:pointer;font-size:13px;white-space:nowrap;transition:background .2s}.storage-browse-btn:hover{background:hsla(0,0%,100%,.14)}.storage-form-actions{display:flex;gap:10px;margin-top:16px}.save-cancel-btn{padding:8px 16px;background:hsla(0,0%,100%,.06);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);cursor:pointer;font-size:13px}.save-cancel-btn:hover{background:hsla(0,0%,100%,.1)}.storage-empty{text-align:center;padding:40px 20px;color:var(--text-muted);font-size:14px}.storage-legacy-section{margin-top:24px;border-top:1px solid var(--border-color);padding-top:16px}.storage-legacy-section summary{cursor:pointer;font-size:13px;color:var(--text-muted);-webkit-user-select:none;-moz-user-select:none;user-select:none}.storage-legacy-section summary:hover{color:var(--text-primary)}.folder-picker-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.folder-picker-modal{background:var(--bg-surface,#1a1f16);border:1px solid var(--border-color);border-radius:var(--radius-lg,8px);width:700px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 24px 80px rgba(0,0,0,.5)}.folder-picker-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border-color)}.folder-picker-header h3{font-size:16px;margin:0;color:var(--text-primary)}.folder-picker-close{background:none;border:none;color:var(--text-muted);font-size:18px;cursor:pointer;padding:4px 8px;line-height:1}.folder-picker-close:hover{color:var(--text-primary)}.folder-picker-body{display:flex;flex:1 1;overflow:hidden;min-height:300px}.folder-picker-drives{width:240px;border-right:1px solid var(--border-color);overflow-y:auto;padding:8px;flex-shrink:0}.folder-picker-section-title{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);padding:8px;font-weight:600}.folder-picker-drive{display:flex;align-items:center;gap:10px;width:100%;padding:10px;background:none;border:1px solid transparent;border-radius:var(--radius-md);color:var(--text-primary);cursor:pointer;text-align:left;transition:background .2s,border-color .2s}.folder-picker-drive:hover{background:hsla(0,0%,100%,.05)}.folder-picker-drive.active{background:var(--accent-orange-glow);border-color:var(--accent-orange)}.drive-icon{font-size:20px;flex-shrink:0}.drive-info{flex:1 1;min-width:0}.drive-name{font-size:13px;font-weight:500;display:block}.drive-space{font-size:11px;color:var(--text-muted);display:block}.drive-bar{height:4px;background:hsla(0,0%,100%,.1);border-radius:2px;margin-top:4px;overflow:hidden}.drive-bar-fill{height:100%;background:var(--accent-green);border-radius:2px}.folder-picker-tree{flex:1 1;display:flex;flex-direction:column;overflow:hidden}.folder-picker-breadcrumb{padding:8px 12px;background:rgba(0,0,0,.15);border-bottom:1px solid var(--border-color);font-size:12px;display:flex;flex-wrap:wrap;gap:2px;align-items:center}.folder-picker-breadcrumb button{background:none;border:none;color:var(--accent-green);cursor:pointer;font-size:12px;padding:2px 4px}.folder-picker-breadcrumb button:hover{text-decoration:underline}.folder-picker-breadcrumb .sep{color:var(--text-muted);margin:0 2px}.folder-picker-list{flex:1 1;overflow-y:auto;padding:4px}.folder-picker-item{display:block;width:100%;padding:8px 12px;background:none;border:none;border-radius:var(--radius-sm,4px);color:var(--text-primary);cursor:pointer;font-size:13px;text-align:left;transition:background .15s}.folder-picker-item:hover{background:hsla(0,0%,100%,.06)}.folder-picker-empty,.folder-picker-item.parent{color:var(--text-muted)}.folder-picker-empty{padding:20px;text-align:center;font-size:13px}.folder-picker-footer{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--border-color);background:rgba(0,0,0,.1)}.folder-picker-path-input{flex:1 1;padding:8px 12px;background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-mono,monospace);font-size:12px}.folder-picker-path-input:focus{outline:none;border-color:var(--accent-green)}.folder-picker-go-btn{padding:8px 14px;background:hsla(0,0%,100%,.08);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);cursor:pointer;font-size:13px}.folder-picker-go-btn:hover{background:hsla(0,0%,100%,.14)}.folder-picker-select-btn{padding:8px 18px;background:var(--accent-green);color:#000;border:none;border-radius:var(--radius-md);font-size:13px;font-weight:600;cursor:pointer;transition:background .2s}.folder-picker-select-btn:hover{background:var(--accent-lime)}.folder-picker-select-btn:disabled{opacity:.4;cursor:default}.toast-toggle-btn{position:relative;display:inline-flex;align-items:center;gap:8px;width:64px;height:30px;border:none;border-radius:15px;cursor:pointer;transition:background .25s;padding:0;flex-shrink:0}.toast-toggle-btn.on{background:var(--accent-green)}.toast-toggle-btn.off{background:hsla(0,0%,100%,.12)}.toast-toggle-knob{position:absolute;top:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.3);transition:left .25s}.toast-toggle-btn.on .toast-toggle-knob{left:37px}.toast-toggle-btn.off .toast-toggle-knob{left:3px}.toast-toggle-label{position:absolute;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.toast-toggle-btn.on .toast-toggle-label{left:8px;color:#000}.toast-toggle-btn.off .toast-toggle-label{right:8px;color:var(--text-muted)}@media (max-width:1024px){.navbar-nav{gap:2px;flex-wrap:wrap;justify-content:center}.nav-link{font-size:11px!important;padding:4px 8px!important}.navbar-status{display:none}.camera-grid{grid-template-columns:repeat(2,1fr)!important}.settings-tabs{flex-wrap:wrap;gap:4px}.settings-tab{font-size:11px;padding:6px 10px}.peek-overlay .peek-container{width:92vw;height:80vh}.timeline-controls{gap:4px;flex-wrap:wrap}}@media (max-width:768px){.navbar{flex-direction:column;padding:8px 12px;gap:6px}.navbar-brand{font-size:14px}.navbar-nav{width:100%;display:flex;flex-wrap:wrap;justify-content:center;gap:4px}.nav-link{font-size:10px!important;padding:4px 6px!important;min-width:auto}.camera-grid{grid-template-columns:1fr!important}.peek-overlay .peek-container{width:100vw;height:100vh;border-radius:0;max-width:none;max-height:none}.timeline-wrapper{min-height:90px}.timeline-bar{height:50px;touch-action:none}.timeline-controls{flex-direction:column;align-items:stretch}.timeline-controls button{min-height:36px;font-size:12px}.settings-page{padding:8px}.settings-section{padding:12px}.settings-tabs{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none}.settings-tabs::-webkit-scrollbar{display:none}.settings-tab{flex-shrink:0;font-size:10px;padding:5px 8px}.settings-drive-grid{grid-template-columns:1fr!important}.jog-shuttle{gap:2px}.jog-shuttle button{min-width:28px;padding:2px 4px;font-size:10px}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}