:root{--bg:#0f1117;--surface:#1a1d27;--border:#2a2d3a;--text:#e4e4e7;--text-muted:#9ca3af;--accent:#3b82f6;--green:#22c55e;--yellow:#eab308;--red:#ef4444}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.6}a{color:var(--accent);text-decoration:none}nav{background:var(--surface);border-bottom:1px solid var(--border);padding:.75rem 1.5rem}.nav-container{align-items:center;gap:2rem;max-width:1400px;margin:0 auto;display:flex}.nav-brand{color:var(--accent);font-size:1.25rem;font-weight:700}.nav-links{gap:1rem;display:flex}.nav-links a{color:var(--text-muted)}.nav-links a:hover{color:var(--text)}.nav-right{align-items:center;gap:.75rem;margin-left:auto;display:flex}.user-name{color:var(--text-muted);font-size:.85rem}main{max-width:1400px;margin:0 auto;padding:2rem 1.5rem}h1{margin-bottom:1.5rem;font-size:1.5rem}h2{margin:1.5rem 0 1rem;font-size:1.2rem}h3{color:var(--text-muted);margin-bottom:.5rem;font-size:1rem}.status-indicator{border-radius:999px;padding:.25rem .75rem;font-size:.8rem}.status-indicator.connected{color:var(--green);background:#22c55e26}.status-indicator.disconnected{color:var(--red);background:#ef444426}.btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:.375rem;padding:.5rem 1rem;font-size:.9rem}.btn:hover{opacity:.85}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{background:var(--border);padding:.25rem .6rem;font-size:.8rem}.btn-sm.active{background:var(--accent)}.event-card{background:var(--surface);border:1px solid var(--border);border-radius:.5rem;margin-bottom:.75rem;padding:1rem 1.25rem}.event-card-with-thumb{gap:1rem;display:flex}.event-thumb{object-fit:cover;border-radius:.375rem;flex-shrink:0;width:120px;height:80px}.event-card-content{flex:1;min-width:0}.event-header{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.event-type{text-transform:uppercase;border-radius:.25rem;padding:.2rem .6rem;font-size:.75rem;font-weight:600}.event-type.saved{color:var(--accent);background:#3b82f626}.event-type.sentry{color:var(--yellow);background:#eab30826}.event-time{font-family:monospace}.event-clips{color:var(--text-muted);font-size:.9rem}.event-link{color:var(--accent);margin-top:.75rem;font-size:.9rem;display:inline-block}.event-vehicle{color:var(--text-muted);gap:1.5rem;margin-top:.5rem;font-size:.85rem;display:flex}.badge.interesting,.badge.hls-ready{color:var(--green);background:#22c55e26;border-radius:.25rem;padding:.2rem .6rem;font-size:.75rem}.badge.hls-pending{color:var(--yellow);background:#eab30826;border-radius:.25rem;padding:.2rem .6rem;font-size:.75rem}.vehicle-tag{background:var(--border);color:var(--text-muted);border-radius:.2rem;padding:.15rem .5rem;font-size:.7rem}.vehicle-selector{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.online-dot{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-left:.35rem;display:inline-block}.online-dot.online{background:var(--green)}.online-dot.offline{background:var(--red)}.vehicle-select{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:.375rem;padding:.5rem 1rem;font-size:.9rem}.vehicles-grid{grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1rem;margin-bottom:1.5rem;display:grid}.camera-buttons{gap:.35rem;margin-bottom:.5rem;display:flex}.btn-camera{padding:.2rem .5rem;font-size:.75rem}.camera-grid{grid-template-columns:repeat(2,1fr);gap:.75rem;max-width:900px;display:grid}@media (width<=768px){.camera-grid{grid-template-columns:1fr;max-width:100%}}.camera-view{background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:.5rem;padding:.5rem;transition:transform .15s}.camera-view:hover{transform:scale(1.01)}.camera-view h3{margin-bottom:.25rem;font-size:.8rem}.sync-video{background:#000;border-radius:.25rem;width:100%}.camera-focus-layout{grid-template-rows:1fr 1fr;grid-template-columns:150px 1fr 150px;gap:.5rem;max-width:1000px;display:grid}.camera-focus-layout .cam-pos-0{grid-area:1/1}.camera-focus-layout .cam-pos-1{grid-area:1/3}.camera-focus-layout .cam-pos-2{grid-area:2/1}.camera-focus-layout .cam-pos-3{grid-area:2/3}.camera-focus-layout .focus-main{border-color:var(--accent);grid-area:1/2/span 2}.camera-focus-layout .focus-main .sync-video{object-fit:contain;max-height:50vh}.camera-focus-layout .focus-thumb{cursor:pointer;opacity:.7;transition:opacity .15s}.camera-focus-layout .focus-thumb:hover{opacity:1}.playback-controls{background:var(--surface);border:1px solid var(--border);border-radius:.5rem;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem;padding:.75rem 1rem;display:flex}.playback-controls label{color:var(--text-muted);margin-left:.75rem;font-size:.85rem}.timeline-container{align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.timeline-container input[type=range]{accent-color:var(--accent);flex:1}#time-display{color:var(--text-muted);min-width:100px;font-family:monospace;font-size:.85rem}.timeline-filters{background:var(--surface);border:1px solid var(--border);border-radius:.5rem;align-items:center;gap:.75rem;margin-bottom:1rem;padding:.75rem 1rem;display:flex}.timeline-filters input,.timeline-filters label{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:.25rem;padding:.25rem .5rem}.timeline-filters label{color:var(--text-muted);background:0 0;border:none;font-size:.85rem}.vehicle-info{background:var(--surface);border:1px solid var(--border);border-radius:.5rem;margin-bottom:1.5rem;padding:1rem 1.25rem}.vehicle-info dl,.status-card dl{grid-template-columns:auto 1fr;gap:.25rem 1rem;display:grid}.vehicle-info dt,.status-card dt{color:var(--text-muted);font-size:.9rem}.status-card{background:var(--surface);border:1px solid var(--border);border-radius:.5rem;padding:1.25rem}.vehicle-card .vehicle-header{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.command-panel{flex-wrap:wrap;gap:.75rem;margin-top:.75rem;display:flex}.command-log{background:var(--surface);border:1px solid var(--border);border-radius:.5rem;max-height:300px;margin-top:1.5rem;padding:1rem;overflow-y:auto}.log-entry{color:var(--text-muted);padding:.2rem 0;font-family:monospace;font-size:.8rem}.terminal-page{flex-direction:column;height:calc(100vh - 120px);display:flex}.terminal-controls{gap:.5rem;margin-bottom:.75rem;display:flex}.terminal-container{background:var(--bg);border:1px solid var(--border);border-radius:.5rem;flex:1;padding:.5rem;overflow:hidden}.auth-page{justify-content:center;align-items:center;min-height:100vh;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:.5rem;width:100%;max-width:400px;padding:2rem}.auth-card h1{text-align:center;margin-bottom:1.5rem}.form-group{margin-bottom:1rem}.form-group label{color:var(--text-muted);margin-bottom:.25rem;font-size:.9rem;display:block}.form-group input,.form-group select{background:var(--bg);width:100%;color:var(--text);border:1px solid var(--border);border-radius:.375rem;padding:.5rem;font-size:.9rem}.error-message{color:var(--red);background:#ef444426;border-radius:.25rem;margin-bottom:1rem;padding:.5rem .75rem;font-size:.9rem}.success-message{color:var(--green);background:#22c55e26;border-radius:.25rem;margin-bottom:1rem;padding:.5rem .75rem;font-size:.9rem}.loading{height:100vh;color:var(--text-muted);justify-content:center;align-items:center;display:flex}.text-muted{color:var(--text-muted);margin-top:.25rem;font-size:.9rem}.code-block{background:var(--bg);border:1px solid var(--border);border-radius:.375rem;align-items:center;gap:.75rem;margin-top:.5rem;padding:.75rem 1rem;display:flex}.code-block code{color:var(--green);word-break:break-all;flex:1;font-family:Cascadia Code,Fira Code,monospace;font-size:.9rem}.install-steps{color:var(--text-muted);margin-top:.5rem;padding-left:1.25rem;font-size:.9rem}.install-steps li{margin-bottom:.25rem}.ssid-list{flex-direction:column;gap:.35rem;margin-top:.5rem;display:flex}.ssid-item{background:var(--bg);border:1px solid var(--border);border-radius:.375rem;justify-content:space-between;align-items:center;padding:.4rem .75rem;font-family:monospace;font-size:.9rem;display:flex}.event-detail-header{background:var(--surface);border:1px solid var(--border);border-radius:.5rem;flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:.75rem;padding:.75rem 1rem;display:flex}.event-detail-info{flex-wrap:wrap;flex:1;align-items:center;gap:.75rem;display:flex}.event-meta{color:var(--text-muted);font-size:.85rem}.event-actions{gap:.5rem;display:flex}.event-actions-row{align-items:center;gap:1rem;margin-top:.75rem;display:flex}.event-nav{gap:.35rem;display:flex}.event-comment{align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.event-comment input{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:.375rem;flex:1;padding:.4rem .75rem;font-size:.9rem}.comment-saved{color:var(--green);font-size:.8rem}.event-comment-preview{color:var(--text-muted);margin-top:.35rem;font-size:.85rem;font-style:italic}.incident-layout{flex-wrap:wrap;gap:1.5rem;display:flex}.incident-preview{flex:2;min-width:400px}.incident-sidebar{flex:1;min-width:300px}.incident-timeline{margin-top:.75rem}.timeline-bar{background:var(--surface);border:1px solid var(--border);border-radius:4px;height:24px;position:relative}.timeline-mark{z-index:2;width:2px;height:100%;position:absolute;top:0}.timeline-mark.in{background:var(--green)}.timeline-mark.out{background:var(--red)}.timeline-selection{z-index:1;background:#3b82f640;height:100%;position:absolute;top:0}.timeline-playhead{background:var(--text);z-index:3;width:2px;height:100%;position:absolute;top:0}.camera-thumb{cursor:pointer;text-align:center;color:var(--text-muted);border:2px solid #0000;border-radius:.375rem;flex:1;padding:.25rem;font-size:.75rem}.camera-thumb.active{border-color:var(--accent)}.camera-thumbs{gap:.5rem;margin-top:.75rem;display:flex}.segment-card{background:var(--bg);border:1px solid var(--border);border-radius:.375rem;margin-bottom:.5rem;padding:.5rem .75rem}.segment-actions{gap:.25rem;margin-top:.25rem;display:flex}.segment-transition{align-items:center;gap:.5rem;margin-top:.25rem;font-size:.8rem;display:flex}.segment-transition label{color:var(--text-muted)}.segment-transition select{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:.25rem;padding:.15rem .35rem;font-size:.8rem}.incident-history{margin-top:1rem}.segment-active{border-color:var(--accent)}.render-progress{background:var(--bg);border:1px solid var(--border);border-radius:4px;height:24px;margin-top:.5rem;position:relative;overflow:hidden}.render-progress-bar{background:var(--accent);opacity:.3;height:100%;transition:width .3s;position:absolute;top:0;left:0}.render-progress-text{z-index:1;height:100%;color:var(--text-muted);justify-content:center;align-items:center;font-size:.8rem;display:flex;position:relative}.video-wrapper{position:relative}.telemetry-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:none;z-index:5;color:#fff;background:#0009;border-radius:.5rem;align-items:center;gap:.75rem;padding:.4rem .75rem;font-family:Cascadia Code,Fira Code,monospace;font-size:.8rem;display:flex;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}.telemetry-speed{align-items:baseline;gap:.25rem;display:flex}.telemetry-speed-value{text-align:right;min-width:2ch;font-size:1.4rem;font-weight:700}.telemetry-speed-unit{color:#fff9;font-size:.65rem}.telemetry-throttle{align-items:center;gap:.3rem;display:flex}.telemetry-throttle-bar{background:#fff3;border-radius:3px;width:40px;height:6px;overflow:hidden}.telemetry-throttle-fill{background:var(--green);border-radius:3px;height:100%;transition:width .1s}.telemetry-throttle-value{color:#ffffffb3;font-size:.7rem}.telemetry-steering{align-items:center;gap:.25rem;display:flex}.telemetry-steering-value{color:#ffffffb3;font-size:.7rem}.telemetry-heading{align-items:center;gap:.15rem;font-size:.75rem;display:flex}.telemetry-heading-arrow{font-size:.9rem;transition:transform .1s;display:inline-block}.telemetry-gps{color:#ffffff80;font-size:.65rem}.keyboard-help{color:var(--text-muted);opacity:.6;flex-wrap:wrap;gap:1rem;margin-top:.5rem;font-size:.75rem;display:flex}.incident-form textarea{background:var(--bg);width:100%;color:var(--text);border:1px solid var(--border);resize:vertical;border-radius:.375rem;padding:.5rem}.incident-segments-card{margin-top:1rem}.incident-form textarea{width:100%}.btn-full{width:100%;margin-top:1rem}.btn-download{text-align:center;background:var(--green);margin-top:.5rem;display:block}.btn-danger{background:var(--red)}.btn-danger:hover{opacity:.85}.incident-status{text-transform:uppercase;border-radius:.25rem;padding:.2rem .6rem;font-size:.75rem;font-weight:600}.incident-status.pending{color:var(--text-muted);background:#9ca3af26}.incident-status.processing{color:var(--accent);background:#3b82f626}.incident-status.completed{color:var(--green);background:#22c55e26}.incident-status.failed{color:var(--red);background:#ef444426}.incident-title{margin-top:.5rem}.incident-completed{font-size:.8rem}.incident-video{margin:.75rem 0}.incident-video-player{background:#000;border-radius:.5rem;width:100%;max-width:800px}.incident-fields{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.5rem;display:flex}.incident-fields input{background:var(--bg);min-width:120px;color:var(--text);border:1px solid var(--border);border-radius:.375rem;flex:1;padding:.3rem .5rem;font-size:.85rem}.incident-actions{gap:.5rem;margin-top:.75rem;display:flex}.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre;font-family:monospace}.xterm .xterm-accessibility-tree>div{transform-origin:0;width:fit-content}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{display:none;position:absolute}.xterm .xterm-scrollable-element>.shadow.top{width:100%;height:3px;box-shadow:var(--vscode-scrollbar-shadow,#000) 0 6px 6px -6px inset;display:block;top:0;left:3px}.xterm .xterm-scrollable-element>.shadow.left{width:3px;height:100%;box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset;display:block;top:3px;left:0}.xterm .xterm-scrollable-element>.shadow.top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset}
