.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px;opacity:0}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:bottom right;padding:0 3px 3px 0}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}:root{--bg: #05080e;--panel: rgba(13, 21, 34, .94);--panel-2: rgba(18, 29, 46, .9);--raised: rgba(26, 41, 63, .92);--border: rgba(148, 190, 233, .14);--border-strong: rgba(148, 190, 233, .32);--t1: #ecf5ff;--t2: #96afc6;--t3: #5e748c;--accent: #38bdf8;--accent-dim: rgba(56, 189, 248, .13);--ok: #34d399;--ok-dim: rgba(52, 211, 153, .12);--warn: #fbbf24;--warn-dim: rgba(251, 191, 36, .12);--danger: #f87171;--violet: #818cf8;--mono: ui-monospace, "JetBrains Mono", "Cascadia Code", Consolas, monospace;--sans: -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;--r-lg: 14px;--r-md: 10px;--r-sm: 7px;--topbar-h: 46px;--rail-w: 46px;--side-w: 306px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--sans);font-size:13px;color:var(--t1);background:radial-gradient(1100px 700px at 78% -12%,rgba(56,132,255,.08),transparent 60%),radial-gradient(800px 560px at 8% 115%,rgba(129,140,248,.05),transparent 55%),var(--bg);overflow:hidden}button,input{font:inherit;color:inherit}button{cursor:pointer;-webkit-user-select:none;user-select:none;border:none;background:none;padding:0}button:disabled{opacity:.38;cursor:not-allowed}.app-shell{height:100vh;display:flex;flex-direction:column}body:not(.authenticated) .app-shell>:not(.login-screen){display:none}.login-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:radial-gradient(900px 600px at 20% 20%,rgba(56,132,255,.12),transparent 55%),radial-gradient(800px 600px at 85% 85%,rgba(129,140,248,.1),transparent 55%),var(--bg)}.login-screen:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(rgba(255,255,255,.02) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.02) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(900px 600px at 50% 45%,#000 30%,transparent 100%);mask-image:radial-gradient(900px 600px at 50% 45%,#000 30%,transparent 100%)}body.authenticated .login-screen{display:none}.login-card{position:relative;width:390px;padding:36px 34px 28px;border-radius:18px;background:linear-gradient(180deg,#111b2af5,#0a111cf5);border:1px solid var(--border-strong);box-shadow:0 30px 80px #0009,inset 0 1px #ffffff0f}.login-card:before{content:"";position:absolute;top:0;left:24px;right:24px;height:1px;background:linear-gradient(90deg,transparent,rgba(56,189,248,.6),transparent)}.login-logo{width:54px;height:54px;margin:0 auto 15px;border-radius:16px;display:grid;place-items:center;color:var(--accent);background:linear-gradient(160deg,#38bdf82e,#38bdf80a);border:1px solid rgba(56,189,248,.35);box-shadow:0 0 30px #38bdf82e}.login-title{text-align:center;font-size:19px;font-weight:800}.login-sub{text-align:center;font-size:10px;font-weight:600;color:var(--t3);letter-spacing:.22em;text-transform:uppercase;margin:6px 0 24px}.field{margin-bottom:13px}.field label{display:block;font-size:11px;font-weight:600;color:var(--t2);letter-spacing:.06em;margin-bottom:6px}.field .input-wrap{display:flex;align-items:center;gap:9px;padding:0 12px;border-radius:var(--r-md);border:1px solid var(--border);background:#00000052;transition:border-color .15s,box-shadow .15s}.field .input-wrap:focus-within{border-color:#38bdf88c;box-shadow:0 0 0 3px #38bdf81a}.field .input-wrap svg{flex-shrink:0;color:var(--t3)}.field input{flex:1;padding:10px 0;background:none;border:none;outline:none;font-size:13px;color:var(--t1)}.field input::placeholder{color:var(--t3)}.login-error{margin-bottom:12px;padding:8px 12px;border-radius:var(--r-sm);font-size:12px;color:#ffd7d7;background:#f871711f;border:1px solid rgba(248,113,113,.4)}.btn-login{width:100%;padding:12px 0;border-radius:var(--r-md);font-size:14px;font-weight:700;letter-spacing:.04em;color:#04121e;background:linear-gradient(180deg,#55c8fa,#2196d8);box-shadow:0 6px 22px #38bdf847,inset 0 1px #ffffff59;transition:all .15s}.btn-login:hover{filter:brightness(1.08)}.btn-login:active{transform:translateY(1px)}.login-foot{margin-top:18px;padding-top:13px;border-top:1px solid var(--border);text-align:center;font-size:10px;color:var(--t3);letter-spacing:.08em}.topbar{height:var(--topbar-h);flex-shrink:0;display:flex;align-items:center;gap:12px;padding:0 12px;background:#060a11f0;border-bottom:1px solid var(--border)}.logo{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;color:var(--accent);background:linear-gradient(160deg,#38bdf829,#38bdf80a);border:1px solid rgba(56,189,248,.3)}.logo svg{width:15px;height:15px}.brand-text b{font-size:12px;font-weight:700;letter-spacing:.04em;display:block;line-height:1.25}.brand-text span{font-size:8px;color:var(--t3);letter-spacing:.2em;text-transform:uppercase}.tb-sep{width:1px;height:20px;background:var(--border)}.tb-vehicle{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700}.state-chip{font-size:9.5px;font-weight:700;letter-spacing:.08em;padding:2px 8px;border-radius:999px;border:1px solid;color:var(--t2)}.state-chip.ok{color:var(--ok);border-color:#34d39959;background:var(--ok-dim)}.state-chip.mode{color:var(--accent);border-color:#38bdf84d;background:var(--accent-dim)}.state-chip.requesting{color:var(--accent);border-color:#38bdf84d;background:var(--accent-dim);animation:blink 1.2s ease infinite}.state-chip.stopping{color:var(--warn);border-color:#fbbf2466;background:var(--warn-dim)}.state-chip.estop{color:var(--danger);border-color:#f8717173;background:#f871711f;animation:blink .9s ease infinite}@keyframes blink{50%{opacity:.35}}.tb-clock{margin-left:auto;font-family:var(--mono);font-size:12px;font-weight:600;color:var(--t2);font-variant-numeric:tabular-nums;letter-spacing:.06em}.fs-btn{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;line-height:0;color:var(--t2);border:1px solid var(--border);background:#ffffff08;transition:color .15s,border-color .15s,background .15s}.fs-btn:hover{color:var(--t1);border-color:var(--border-strong);background:#ffffff0f}.fs-btn.active{color:var(--accent);border-color:#38bdf866;background:var(--accent-dim)}.fs-btn svg{width:15px;height:15px;display:block}.fs-btn .ic-fs-out,.fs-btn.active .ic-fs-in{display:none}.fs-btn.active .ic-fs-out{display:block}.anchor{position:relative}.popover{position:absolute;top:calc(100% + 8px);right:0;width:264px;padding:12px;border-radius:var(--r-md);background:var(--panel);border:1px solid var(--border-strong);box-shadow:0 18px 50px #0009;display:none;z-index:120}.anchor.open .popover{display:block;animation:pop-in .16s ease-out}@keyframes pop-in{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.pop-title{font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--t3);margin-bottom:9px}.pop-row{display:grid;gap:8px}.pop-row input{width:100%;padding:8px 10px;border-radius:var(--r-sm);border:1px solid var(--border);background:#00000052;color:var(--t2);font-family:var(--mono);font-size:11px}.pop-row input:focus{outline:none;border-color:#38bdf880}.pop-btns{display:grid;grid-template-columns:1fr 1fr;gap:8px}.btn{padding:6px 13px;border-radius:var(--r-sm);font-size:12px;font-weight:600;border:1px solid var(--border-strong);background:linear-gradient(180deg,#263a548c,#101c2ca6);transition:all .15s}.btn:hover:not(:disabled){border-color:#38bdf88c;background:linear-gradient(180deg,#304a6eb3,#16263ccc)}.btn:active:not(:disabled){transform:translateY(1px)}.btn-ghost{border-color:var(--border);color:var(--t2);font-weight:500}.btn-sm{padding:5px 11px;font-size:11.5px}.conn-pill{display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 12px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.04em;border:1px solid;color:var(--t2);cursor:pointer;background:none}.conn-pill .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.conn-pill .caret{font-size:8px;opacity:.6}.conn-pill.connected{color:var(--ok);border-color:#34d39959;background:var(--ok-dim)}.conn-pill.connected .dot{animation:pulse 1.8s ease infinite}@keyframes pulse{0%,to{box-shadow:0 0 #34d39980}60%{box-shadow:0 0 0 5px #34d39900}}.operator-btn{display:flex;align-items:center;gap:8px;height:30px;padding:0 10px 0 3px;border-radius:999px;border:1px solid var(--border);background:#ffffff08}.operator-btn .avatar{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:800;color:#06121e;background:linear-gradient(160deg,#6ee7b7,#34d399)}.operator-btn b{font-size:11.5px;font-weight:700}.operator-btn .caret{font-size:8px;color:var(--t3)}.op-info{display:grid;gap:3px;margin-bottom:11px}.op-info .row{display:flex;justify-content:space-between;font-size:11.5px;color:var(--t2)}.op-info .row .v{font-family:var(--mono);font-size:11px;color:var(--t1)}h1{margin:0 0 6px;font-size:24px;letter-spacing:.04em}h2,h3{margin:0 0 12px}.pill{padding:4px 10px;border-radius:999px;font-size:12px;background:#39424c}.pill.connected{background:#136f46}.pill.connecting{background:#836a18}.connect-panel{display:flex;gap:8px}.connect-panel input{width:360px;border:1px solid rgba(132,218,255,.22);background:#00000047;color:#e8f6ff;border-radius:10px;padding:10px 12px}.layout{display:grid;grid-template-columns:270px 1fr 320px;gap:0;padding:16px;height:calc(100vh - 180px);overflow:hidden;transition:grid-template-columns .2s ease}.panel{border:1px solid rgba(132,218,255,.16);background:#05141fc7;border-radius:16px;padding:16px;height:100%;overflow-y:auto;overflow-x:hidden}.vehicle-panel,.control-panel{transition:transform .25s ease,opacity .25s ease,margin .25s ease}.vehicle-panel.collapsed{transform:translate(calc(-100% - 16px));opacity:0;pointer-events:none;overflow:hidden;margin-right:-16px}.control-panel.collapsed{transform:translate(calc(100% + 16px));opacity:0;pointer-events:none;overflow:hidden;margin-left:-16px}.panel-toggle{position:absolute;top:50%;transform:translateY(-50%);z-index:50;width:24px;height:56px;padding:0;border-radius:6px;font-size:14px;line-height:56px;text-align:center;background:#05141feb;border:1px solid rgba(132,218,255,.22);color:#9fc1d0;cursor:pointer;transition:background .15s}.panel-toggle:hover{background:#143246eb;color:#e8f6ff}.panel-toggle-left{left:-12px}.panel-toggle-right{right:-12px}.video-wall{display:flex;flex-direction:column;height:100%;position:relative;overflow:hidden}.camera-grid-container{flex:1;min-height:0;overflow:hidden;position:relative}.camera-grid-container .camera-grid{position:relative}.video-cell{position:relative;min-height:0;border:none;border-radius:6px;overflow:hidden;background:#03060a;cursor:default}.video-cell video{position:relative;z-index:1;width:100%;height:100%;object-fit:cover;display:block;opacity:0}.video-cell.connected video{opacity:1}.video-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden;transition:opacity .15s ease}.video-cell.connected .video-placeholder{opacity:0}.video-placeholder.feed-road{background:linear-gradient(180deg,#0c141d,#131f2b 40%,#0a0e13 41%,#0c1119)}.video-placeholder.feed-side{background:linear-gradient(200deg,#0c141d,#121c27 52%,#090d12 53%,#0b1017)}.video-placeholder.feed-right{transform:scaleX(-1)}.video-placeholder.feed-top{background:repeating-linear-gradient(0deg,rgba(140,180,220,.07) 0 1px,transparent 1px 26px),repeating-linear-gradient(90deg,rgba(140,180,220,.07) 0 1px,transparent 1px 26px),#0a0f16}.video-placeholder .horizon{position:absolute;left:0;right:0;top:40%;height:1px;background:linear-gradient(90deg,transparent,rgba(170,205,255,.16),transparent)}.video-placeholder .lane{position:absolute;left:50%;top:41%;bottom:0;width:5px;transform:translate(-50%);clip-path:polygon(42% 0,58% 0,100% 100%,0 100%);background:repeating-linear-gradient(180deg,rgba(225,232,170,.22) 0 12px,transparent 12px 32px)}.video-placeholder .road-edge{position:absolute;top:41%;bottom:0;width:2px;background:linear-gradient(180deg,#aacdff1a,#aacdff08);clip-path:polygon(0 0,100% 0,30% 100%,0 100%)}.video-placeholder .edge-l{left:18%}.video-placeholder .edge-r{right:18%;transform:scaleX(-1)}.video-placeholder .side-edge{position:absolute;left:8%;right:16%;top:52%;height:2px;transform:rotate(-7deg);transform-origin:left center;background:linear-gradient(90deg,transparent,rgba(170,205,255,.16),transparent)}.video-placeholder .car-outline{position:absolute;left:50%;top:50%;width:46px;height:74px;transform:translate(-50%,-50%);border:2px solid rgba(170,205,255,.22);border-radius:10px}.video-placeholder .car-outline:before,.video-placeholder .car-outline:after{content:"";position:absolute;left:50%;width:26px;height:5px;transform:translate(-50%);border:1px solid rgba(170,205,255,.16);border-radius:3px}.video-placeholder .car-outline:before{top:12px}.video-placeholder .car-outline:after{bottom:12px}.video-placeholder .scanlines,.video-placeholder .vignette{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.video-placeholder .scanlines{background:repeating-linear-gradient(0deg,rgba(255,255,255,.013) 0 2px,transparent 2px 4px)}.video-placeholder .vignette{background:radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.45) 100%)}.video-cell .video-label{position:absolute;top:8px;left:8px;display:inline-flex;align-items:center;gap:6px;padding:3px 11px 3px 9px;border-radius:999px;background:#04080dbd;border:1px solid rgba(255,255,255,.1);font-size:11.5px;font-weight:600;z-index:3;pointer-events:auto;cursor:grab;-webkit-user-select:none;user-select:none}.video-cell .video-label .cam-dot{width:6px;height:6px;border-radius:50%;background:var(--ok);box-shadow:0 0 6px #34d399cc}.video-cell .video-label:active{cursor:grabbing}.react-resizable-handle{opacity:0;transition:opacity .15s;z-index:10}.video-cell:hover .react-resizable-handle{opacity:.45}.hud-strip{position:absolute;bottom:0;left:0;right:0;height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 24px;background:#02070bd6;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid rgba(132,218,255,.1);z-index:25;pointer-events:none}.hud-gear-block{display:flex;flex-direction:column;align-items:center;gap:0px;min-width:56px;will-change:transform}.hud-gear-letter{font-size:42px;font-weight:800;line-height:1;transition:color .2s,text-shadow .2s}.hud-gear-name{font-size:9px;font-weight:700;letter-spacing:.14em;transition:color .2s}.hud-gear-block.gear-d .hud-gear-letter{color:#6dffb1;text-shadow:0 0 14px rgba(109,255,177,.45)}.hud-gear-block.gear-d .hud-gear-name{color:#6dffb1b3}.hud-gear-block.gear-r .hud-gear-letter{color:#ff6b6b;text-shadow:0 0 14px rgba(255,107,107,.45)}.hud-gear-block.gear-r .hud-gear-name{color:#ff6b6bb3}.hud-gear-block.gear-n .hud-gear-letter{color:#9fc1d0}.hud-gear-block.gear-n .hud-gear-name{color:#6b7a82}.hud-speed-block{display:flex;align-items:baseline;gap:6px;pointer-events:none}.hud-speed-value{font-size:54px;font-weight:700;color:#e8f6ff;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1}.hud-speed-unit{font-size:16px;font-weight:400;color:#c8dcf08c}.hud-speed-empty{font-size:22px;color:#84daff33;font-variant-numeric:tabular-nums}.hud-reset-btn{pointer-events:auto;position:relative;overflow:hidden;min-width:130px;height:54px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:0 22px;border-radius:10px;border:2px solid rgba(255,169,77,.75);background:#8c5a12ad;color:#ffd4aa;cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s,color .15s;box-shadow:0 0 10px #dc8c3233}.hud-reset-btn:hover:not(:disabled){background:#a06e16bf;border-color:#ffb43ce6;box-shadow:0 0 18px #ffa93c4d;color:#ffe0bb}.hud-reset-btn:active:not(:disabled){transform:scale(.97)}.hud-reset-btn:disabled{opacity:.32;cursor:default;border-color:#84daff24;background:#0f192380;color:#4a6070}.hud-reset-label{font-size:15px;font-weight:800;letter-spacing:.08em}.hud-reset-hint{font-size:9px;font-weight:500;opacity:.6;letter-spacing:.06em;text-transform:uppercase}.reset-btn{width:100%;min-height:48px;border-color:#ffa94db3;background:linear-gradient(180deg,#8d5f1f,#3d2a0c);margin:8px 0 18px;font-weight:700;font-size:14px;letter-spacing:.04em;transition:background .15s,border-color .15s,box-shadow .15s}.reset-btn:hover:not(:disabled){background:linear-gradient(180deg,#a07028,#4d3510);border-color:#ffb43cd9;box-shadow:0 0 16px #ffa93c40}@keyframes resetConfirmPulse{0%,to{box-shadow:0 0 10px #ffb43c4d}50%{box-shadow:0 0 22px #ffb43cb3}}.hud-reset-btn.confirming{border-color:#ffc850f2;background:#aa6e14d1;color:#fff3d0;animation:resetConfirmPulse .9s ease-in-out infinite}.reset-btn.confirming{border-color:#ffc850e6;background:linear-gradient(180deg,#b07828,#5d3d14);animation:resetConfirmPulse .9s ease-in-out infinite}.hud-estop-btn{pointer-events:auto;position:relative;overflow:hidden;min-width:130px;height:54px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:0 22px;border-radius:10px;border:2px solid rgba(255,70,70,.75);background:#8c1212ad;color:#faa;cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s,color .15s;will-change:transform;box-shadow:0 0 10px #dc323233}.hud-estop-btn:hover:not(:disabled){background:#a01616bf;border-color:#ff3c3ce6;box-shadow:0 0 18px #ff3c3c4d;color:#faa}.hud-estop-btn:active:not(:disabled){transform:scale(.97)}.hud-estop-btn:disabled{opacity:.32;cursor:default;border-color:#84daff24;background:#0f192380;color:#4a6070}.hud-estop-btn.active{background:#be1212e0;border-color:#ff3030;color:#fff;animation:hud-estop-pulse .7s ease infinite alternate;will-change:box-shadow}@keyframes hud-estop-pulse{0%{box-shadow:0 0 8px #ff303080}to{box-shadow:0 0 26px #ff3030f2}}.hud-estop-label{font-size:15px;font-weight:800;letter-spacing:.08em}.hud-estop-hint{font-size:9px;font-weight:500;opacity:.6;letter-spacing:.06em;text-transform:uppercase}.hud-estop-progress{position:absolute;bottom:0;left:0;height:3px;background:#ff4c4c;transition:width 50ms linear;border-radius:0 2px 0 0}.camera-context-menu{position:fixed;z-index:300;background:#05141ff5;border:1px solid rgba(132,218,255,.22);border-radius:10px;padding:4px;min-width:150px}.camera-context-menu button{display:block;width:100%;padding:6px 10px;font-size:12px;text-align:left;border:none;background:none;color:#c6dce7;border-radius:6px;cursor:pointer}.camera-context-menu button:hover{background:#143246cc;color:#e8f6ff}.video-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#000000b8;z-index:2}.video-overlay span{position:static;padding:10px 20px;border-radius:12px;background:#000000c7;font-size:16px;color:#ffd080}.video-overlay.failed span{color:#ff6b6b}.video-overlay.no_signal span{color:#ffa94d}.no-signal{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:#03060ad9}.no-signal .ns-title{font-size:12px;font-weight:700;letter-spacing:.14em;color:var(--t2);padding:0;background:none}.no-signal .ns-count{font-family:var(--mono);font-size:11px;color:var(--accent);padding:0;background:none}.no-signal .ns-bar{width:60px;height:3px;border-radius:999px;background:#ffffff1a;overflow:hidden}.no-signal .ns-bar i{display:block;height:100%;width:0;background:var(--accent);animation:reconnect 8s linear infinite}@keyframes reconnect{0%{width:0}to{width:100%}}.video-label{z-index:3}.latency-overlay{position:absolute;top:8px;right:8px;background:#04080dbd;border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:3px 9px;z-index:4;pointer-events:none;display:flex;align-items:center;gap:7px;white-space:nowrap}.sig-bars{display:flex;align-items:flex-end;gap:2px;height:10px}.sig-bars i{width:3px;border-radius:1px;background:currentColor}.sig-bars i:nth-child(1){height:4px}.sig-bars i:nth-child(2){height:6px}.sig-bars i:nth-child(3){height:8px}.sig-bars i:nth-child(4){height:10px}.sig-bars i.off{opacity:.18}.latency-total{font-family:var(--mono);font-size:13px;font-weight:700;line-height:1}.latency-unit{margin-left:-4px;font-size:9.5px;opacity:.7}.latency-est-label{margin-left:-3px;font-size:9px;opacity:.7}.button-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}.segmented{display:flex;gap:3px;padding:3px;border-radius:var(--r-md, 10px);background:#00000052;border:1px solid var(--border);margin:4px 0 6px}.segmented button{flex:1;padding:6px 0;border-radius:7px;font-size:12px;font-weight:700;color:var(--t2, #96afc6);display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:all .14s}.segmented button svg{width:15px;height:15px;flex-shrink:0}.segmented button:hover:not(:disabled):not(.active){color:var(--t1, #ecf5ff);background:#ffffff0a}.segmented button.active{color:var(--t1, #ecf5ff);background:var(--raised, rgba(26, 41, 63, .92));border:1px solid rgba(56,189,248,.45)}.segmented button.active.gear-d{color:var(--ok, #34d399);border-color:#34d39980}.segmented button.active.gear-r{color:var(--danger, #f87171);border-color:#f8717180}.car-controls{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:4px 0 0}.cc-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:9px 4px;border-radius:9px;border:1px solid var(--border);background:#ffffff08;color:var(--t2, #96afc6);font-size:9.5px;font-weight:600;cursor:pointer;transition:all .15s}.cc-btn svg{width:20px;height:20px;transition:color .15s}.cc-btn[data-cc=left] svg,.cc-btn[data-cc=right] svg{color:var(--ok, #34d399)}.cc-btn[data-cc=hazard] svg{color:var(--danger, #f87171)}.cc-btn[data-cc=horn] svg{color:var(--accent, #38bdf8)}.cc-btn:hover:not(:disabled){border-color:var(--border-strong, rgba(148, 190, 233, .32));color:var(--t1, #ecf5ff)}.cc-btn.active{color:var(--warn, #fbbf24);border-color:#fbbf2480;background:#fbbf241f}.cc-btn.active svg{color:var(--warn, #fbbf24)}.cc-btn.danger.active{color:var(--danger, #f87171);border-color:#f8717180;background:#f871711f}.cc-btn.danger.active svg{color:var(--danger, #f87171)}.cc-btn:disabled{opacity:.4;cursor:not-allowed}.cc-btn:disabled:hover{border-color:var(--border);color:var(--t2, #96afc6)}.cc-unavailable{font-size:10px;color:var(--t3, #5e748c);margin:6px 0 2px}.video-tune{display:grid;gap:2px}.video-tune .sl-val{font-family:var(--mono, monospace);color:var(--t1, #ecf5ff)}.video-cell video{filter:brightness(var(--tune-b, 1)) contrast(var(--tune-c, 1))}.slider-line{display:grid;gap:6px;padding:8px 0;color:#c6dce7;border-bottom:1px solid rgba(132,218,255,.08)}.slider-line input{width:100%}.estop{width:100%;min-height:56px;border-color:#ff4c4cb3;background:linear-gradient(180deg,#8d1f1f,#3d0c0c);margin:8px 0 18px;position:relative;overflow:hidden}.estop .estop-progress{position:absolute;bottom:0;left:0;height:4px;background:#ff4c4c;transition:width 50ms linear;border-radius:0 2px 2px 0}.estop.active{background:linear-gradient(180deg,#ff1a1a,#8d1f1f);animation:estop-pulse .8s ease infinite alternate}@keyframes estop-pulse{0%{box-shadow:0 0 8px #ff4c4c66}to{box-shadow:0 0 20px #ff4c4ccc}}.vehicle-card{width:100%;display:grid;gap:5px;margin-bottom:10px;text-align:left}.vehicle-card.selected{border-color:#6dffb1ad;box-shadow:0 0 0 1px #6dffb13d}.vehicle-card span{color:#9fc1d0;font-size:13px}.selected-line,.metric{padding:7px 0;color:#c6dce7;border-bottom:1px solid rgba(132,218,255,.08)}.gate-ready{color:#6dffb1;font-weight:600;font-size:15px}.gate-waiting{color:#ffa94d;font-size:13px}.logs{height:110px;overflow:auto;padding:10px 16px;background:#00000061;border-top:1px solid rgba(132,218,255,.16);color:#92aebb;font-family:JetBrains Mono,monospace;font-size:12px}.hud-overlay{position:fixed;z-index:100;pointer-events:none}.hud-overlay.clickable{pointer-events:auto}.hud-vehicle-name{top:12px;left:12px;padding:6px 12px;background:#0000008c;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border-radius:8px;font-size:14px;font-weight:500;color:#e8f6ff}@keyframes gear-pulse{0%{transform:scale(1)}35%{transform:scale(1.22)}to{transform:scale(1)}}.gear-pulse{animation:gear-pulse .28s ease}.shortcuts-btn{position:fixed;bottom:120px;right:12px;z-index:110;width:32px;height:32px;padding:0;border-radius:50%;font-size:16px;font-weight:700;line-height:30px;text-align:center;background:#05141fe0;border:1px solid rgba(132,218,255,.22);color:#9fc1d0;cursor:pointer;pointer-events:auto}.shortcuts-btn:hover{background:#143246eb;color:#e8f6ff}.shortcuts-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:center;justify-content:center;background:#000000c7;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.shortcuts-overlay .shortcuts-card{background:#05141ff2;border:1px solid rgba(132,218,255,.22);border-radius:16px;padding:24px 32px;max-width:520px;width:90%}.shortcuts-card h2{margin:0 0 16px;font-size:20px}.shortcuts-card table{width:100%;border-collapse:collapse}.shortcuts-card td{padding:6px 8px;font-size:13px;border-bottom:1px solid rgba(132,218,255,.08)}.shortcuts-card td:first-child{color:#6dffb1;font-family:JetBrains Mono,monospace;font-weight:600;white-space:nowrap;width:140px}.shortcuts-card td:last-child{color:#c6dce7}.shortcuts-card .shortcuts-hint{margin-top:14px;font-size:11px;color:#6b7a82;text-align:center}.toast-stack{position:fixed;right:16px;bottom:112px;display:flex;flex-direction:column;align-items:flex-end;gap:8px;z-index:150;pointer-events:none}.toast-stack>*{pointer-events:auto}.toast{display:flex;align-items:center;gap:10px;padding:10px 18px;border-radius:var(--r-md);font-size:12.5px;font-weight:600;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 10px 40px #00000080;white-space:nowrap;cursor:pointer;animation:toast-in .3s cubic-bezier(.2,.9,.3,1.2)}.toast-success{background:#081410f0;border:1px solid rgba(52,211,153,.4);color:#d5ffee}.toast-error{background:#1c0c0cf0;border:1px solid rgba(248,113,113,.5);color:#ffd7d7}.toast .t-icon{width:19px;height:19px;display:grid;place-items:center;flex:0 0 19px;border-radius:50%;background:var(--ok-dim);border:1px solid rgba(52,211,153,.4);color:var(--ok);font-size:10px;font-weight:800}.toast-error .t-icon{background:#f871711f;border-color:#f8717173;color:var(--danger)}.conn-lost-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;text-align:center;background:#05080ef0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:fade-in .2s ease}.conn-lost-overlay .warn-icon{font-size:58px;line-height:1;color:var(--danger);animation:blink 1.2s ease infinite}.conn-lost-overlay .warn-title{font-size:28px;font-weight:800;letter-spacing:.12em;color:var(--danger)}.conn-lost-overlay .warn-sub{font-size:13px;color:var(--t2)}.conn-lost-overlay .btn{margin-top:8px}@keyframes blink{0%,to{opacity:1}50%{opacity:.35}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes toast-in{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}.top-banners{position:fixed;top:58px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;z-index:150;pointer-events:none}.top-banners>*{pointer-events:auto}.latency-banner{display:none;align-items:center;gap:10px;padding:8px 18px;background:#461010e6;border:1px solid rgba(248,113,113,.7);border-radius:12px;color:#ffd0d0;font-size:12px;font-weight:600;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 8px 30px #00000080,0 0 20px #f8717140;white-space:nowrap}.latency-banner.show{display:flex;animation:banner-in .28s ease}.latency-banner .b-dot{width:7px;height:7px;border-radius:50%;background:var(--danger);box-shadow:0 0 8px var(--danger);animation:blink 1s ease infinite}.latency-banner .b-tag{padding:2px 10px;border-radius:6px;background:var(--danger);color:#2a0505;font-size:12px;font-weight:800;letter-spacing:.06em;box-shadow:0 0 12px #f8717180}@keyframes banner-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.safety-hold-banner{display:none;align-items:center;gap:8px;padding:7px 16px;background:#463208eb;border:1px solid rgba(251,191,36,.7);border-radius:12px;color:#f6d684;font-size:12px;font-weight:600;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 8px 30px #00000080;white-space:nowrap}.safety-hold-banner.show{display:flex;animation:banner-in .28s ease}.debug-panel-head{gap:6px;overflow:hidden}.debug-panel-head h2{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.debug-panel-head>:not(h2){flex-shrink:0}.debug-stale-indicator{font-size:.72em;font-weight:700;color:#f80;padding:3px 8px;border:1px solid #ff8800;border-radius:4px;animation:debug-stale-pulse .8s infinite alternate}@keyframes debug-stale-pulse{0%{opacity:1}to{opacity:.5}}.debug-alert-count{font-size:.8em;font-weight:700;padding:3px 8px;border-radius:6px}.debug-alert-count-red{color:#f44;background:#ff3c3c1f}.debug-record-btn{padding:5px 8px;font-size:.78em;font-weight:700;border-radius:6px;background:linear-gradient(180deg,#2a3a4c,#1a2a3a);border:1px solid rgba(132,218,255,.2);color:#b8d0e8;cursor:pointer;transition:all .15s}.debug-record-btn:hover{background:linear-gradient(180deg,#3a4a5c,#2a3a4a);border-color:#84daff73;color:#fff}.debug-record-btn.recording{background:linear-gradient(180deg,#5a1a1a,#3a1010);border-color:#d04040;color:#faa;animation:debug-record-pulse 1.2s ease-in-out infinite}@keyframes debug-record-pulse{0%,to{box-shadow:0 0 6px #ff3c3c4d}50%{box-shadow:0 0 16px #ff3c3cb3}}.debug-recording-indicator{max-width:54px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75em;font-weight:700;color:#f55;padding:3px 8px;border:1px solid rgba(255,80,80,.4);border-radius:6px;background:#ff1e1e14;animation:debug-record-pulse 1.2s ease-in-out infinite}.side-panel .panel-body{scrollbar-width:thin;scrollbar-color:rgba(132,218,255,.18) transparent}.side-panel .panel-body::-webkit-scrollbar{width:6px}.side-panel .panel-body::-webkit-scrollbar-track{background:transparent}.side-panel .panel-body::-webkit-scrollbar-thumb{background:#84daff2e;border-radius:3px}.side-panel .panel-body::-webkit-scrollbar-thumb:hover{background:#84daff59}.debug-empty{text-align:center;color:#789;padding:40px 16px;font-size:.95em}.debug-section{margin-bottom:8px;border:1px solid rgba(132,218,255,.1);border-radius:8px;background:#0814228c;overflow:hidden}.debug-section[open]{border-color:#84daff2e}.debug-section-title{padding:10px 14px;font-weight:600;font-size:.88em;letter-spacing:.04em;color:#b8d8f0;cursor:pointer;-webkit-user-select:none;user-select:none}.debug-section-title:hover{background:#84daff0d}.debug-topic{margin:5px 10px 10px;padding:8px 10px;border-radius:7px;background:#0c1a2aa6;border:1px solid rgba(132,218,255,.08)}.debug-topic-missing{opacity:.4}.debug-topic-stale{border-color:#ff8c0066;background:#18120480}.debug-topic-name{display:block;font-size:.73em;color:#8098b8;margin-bottom:5px;font-family:Courier New,monospace;word-break:break-all}.debug-topic-seq{color:#5a7090;font-size:.88em}.debug-topic-stale-badge{color:#f90;font-weight:700;font-size:.82em;margin-left:4px}.debug-topic-empty{font-size:.78em;color:#567;font-style:italic}.debug-latency-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 8px;padding:4px 0}.debug-latency-cell{font-size:.72em;font-family:Courier New,monospace;color:#d8eeff;background:#0a162480;border-radius:4px;padding:3px 6px}.debug-signal-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 8px}.debug-signal{display:flex;justify-content:space-between;align-items:center;padding:3px 6px;border-radius:4px;background:#0a162480}.debug-signal-label{font-size:.7em;color:#8aa0bb;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:58%}.debug-signal-value{font-size:.78em;font-weight:700;font-family:Courier New,monospace;color:#d8eeff;text-align:right}.debug-val-bool-true{color:#4dff91}.debug-val-bool-false{color:#678}.debug-alerts{padding:6px 10px}.debug-alert{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;margin-bottom:5px;border-radius:7px;font-size:.78em}.debug-alert-red{background:#dc28282e;border:1px solid rgba(255,70,70,.3)}.debug-alert-yellow{background:#dcaa0024;border:1px solid rgba(255,210,0,.25)}.debug-alert-badge{flex-shrink:0;font-size:1.15em;line-height:1.2}.debug-alert-body{display:flex;flex-direction:column;gap:2px}.debug-alert-rule{font-weight:700;color:#e8e8e8}.debug-alert-msg{color:#9ab;font-size:.94em;line-height:1.35}.dock{flex-shrink:0;width:100%;min-width:0;height:92px;display:flex;align-items:center;gap:18px;padding:0 18px;border-radius:var(--r-lg);background:linear-gradient(180deg,#0d1623f5,#080e17f5);border:1px solid var(--border);box-shadow:inset 0 1px #ffffff0d,0 10px 34px #00000073;position:relative;overflow:hidden;container-type:inline-size}@container (max-width: 1180px){.dock{gap:10px;padding-inline:12px}.dock .dock-sep{height:40px}}@container (max-width: 980px){.dock{gap:7px;padding-inline:8px}.dock .dock-sep,.dock .gear-text{display:none}}@container (max-width: 620px){.dock .dock-lights,.dock .dock-status,.dock .pedals{display:none}}@container (max-width: 480px){.dock .steer-widget{display:none}}.dock:before{content:"";position:absolute;top:0;left:18%;right:18%;height:1px;background:linear-gradient(90deg,transparent,rgba(56,189,248,.45),transparent)}.dock-sep{width:1px;height:48px;background:var(--border);flex-shrink:0}.gear-badge{width:48px;height:48px;display:grid;place-items:center;border-radius:13px;font-size:24px;font-weight:800;border:1px solid}.gear-badge.d{color:var(--ok);border-color:#34d39973;background:var(--ok-dim);text-shadow:0 0 16px rgba(52,211,153,.5)}.gear-badge.r{color:var(--danger);border-color:#f8717173;background:#f871711f;text-shadow:0 0 16px rgba(248,113,113,.5)}.gear-badge.n{color:var(--t2);border-color:var(--border);background:#ffffff08}.gear-text{display:grid;gap:2px}.gear-text .letter{font-size:20px;font-weight:800;line-height:1}.gear-text .name{font-size:8.5px;font-weight:700;letter-spacing:.18em;color:var(--t3);text-transform:uppercase}.gear-text.g-d .letter{color:var(--ok)}.gear-text.g-r .letter{color:var(--danger)}.gear-text.g-n .letter{color:var(--t2)}.hud-speed{display:flex;align-items:baseline;gap:7px}.hud-speed .num{font-family:var(--mono);font-size:42px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1;text-shadow:0 0 22px rgba(150,200,255,.22)}.hud-speed .unit{font-size:12px;color:var(--t3);letter-spacing:.1em}.steer-widget{display:flex;align-items:center;gap:12px}.wheel{width:62px;height:62px;color:var(--t1);filter:drop-shadow(0 0 10px rgba(150,200,255,.18));transition:transform .12s linear}.steer-readout{display:grid;gap:3px}.steer-readout .deg{font-family:var(--mono);font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1}.steer-readout .lbl{font-size:8.5px;font-weight:700;letter-spacing:.16em;color:var(--t3);text-transform:uppercase}.pedals{display:grid;gap:9px;width:172px}.pedal{display:grid;grid-template-columns:26px 1fr 36px;align-items:center;gap:8px}.pedal .plbl{font-size:9px;font-weight:700;letter-spacing:.1em;color:var(--t3)}.pedal .track{position:relative;height:9px;border-radius:5px;background:#00000073;border:1px solid var(--border);overflow:hidden}.pedal .fill{position:absolute;top:0;bottom:0;left:0;width:0%;border-radius:4px;transition:width .15s linear}.pedal.thr .fill{background:linear-gradient(90deg,#0e9f6e,#34d399);box-shadow:0 0 8px #34d39966}.pedal.brk .fill{background:linear-gradient(90deg,#c53030,#f87171);box-shadow:0 0 8px #f8717166}.pedal .pval{font-family:var(--mono);font-size:11px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums}.hud-estop{position:relative;overflow:hidden;margin-left:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:128px;height:56px;padding:0 20px;border-radius:12px;border:1.5px solid rgba(248,113,113,.65);background:radial-gradient(120% 140% at 50% 0%,rgba(190,40,40,.35),transparent 60%),linear-gradient(180deg,#5a1414b3,#280a0acc);color:#ffb4b4;box-shadow:inset 0 1px #ffffff0f,0 0 18px #dc32321f;transition:all .15s}.hud-estop:hover:not(:disabled){border-color:#ff5a5ae6;color:#ffd0d0;box-shadow:inset 0 1px #ffffff14,0 0 26px #ff3c3c40}.hud-estop:active:not(:disabled){transform:scale(.97)}.hud-estop .lbl{font-size:13.5px;font-weight:800;letter-spacing:.12em}.hud-estop .hint{font-size:8px;font-weight:600;letter-spacing:.14em;opacity:.55;text-transform:uppercase}.hud-estop.active{border-color:#ff5a5a;color:#fff;background:radial-gradient(120% 140% at 50% 0%,rgba(220,50,50,.6),transparent 60%),linear-gradient(180deg,#8c1919e6,#500c0cf2);animation:estop-pulse 1.1s ease infinite;cursor:default}@keyframes estop-pulse{0%,to{box-shadow:inset 0 1px #ffffff1a,0 0 26px #ff3c3c66}50%{box-shadow:inset 0 1px #ffffff1a,0 0 42px #ff3c3cbf}}.hud-estop .hold-progress{position:absolute;left:0;bottom:0;height:3px;width:0;background:#ff9a9a;transition:width .1s linear}.hud-reset{margin-left:8px;display:none;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:104px;height:56px;padding:0 16px;border-radius:12px;border:1.5px solid rgba(56,189,248,.55);background:linear-gradient(180deg,#143c5ab3,#0a1e32cc);color:#bfe6ff;transition:all .15s}.hud-reset:hover{border-color:#38bdf8e6;box-shadow:0 0 20px #38bdf84d}.hud-reset.show{display:flex}.hud-reset .lbl{font-size:13.5px;font-weight:800}.hud-reset .hint{font-size:8px;font-weight:600;letter-spacing:.14em;opacity:.55;text-transform:uppercase}.dock-lights{display:flex;align-items:center;gap:6px}.light{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;color:var(--t3);border:1px solid var(--border);background:#ffffff05;transition:all .15s}.light svg{width:18px;height:18px}.light.turn{color:var(--ok)}.light.horn{color:var(--accent)}.light.on.turn{color:var(--warn);border-color:#fbbf2480;background:var(--warn-dim);box-shadow:0 0 12px #fbbf2440}.light.on.turn.blink{animation:turn-blink .55s steps(2) infinite}.light.on.horn{color:var(--accent);border-color:#38bdf880;background:var(--accent-dim)}.dock-status{display:flex;align-items:center;gap:12px}.battery{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:12px;font-weight:700;color:var(--t2)}.battery svg{width:22px;height:22px}.battery .bpct{font-variant-numeric:tabular-nums}.observer-tag{display:inline-flex;align-items:center;font-size:9px;font-weight:700;letter-spacing:.1em;padding:2px 8px;border-radius:999px;color:var(--violet);background:#818cf81f;border:1px solid rgba(129,140,248,.35)}.main{flex:1;min-height:0;display:grid;grid-template-columns:var(--rail-w) 1fr;gap:10px;padding:10px 12px;position:relative}.icon-rail{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 0;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);min-height:0;position:relative;z-index:20}.rail-ic{position:relative;width:34px;height:34px;border-radius:9px;display:grid;place-items:center;line-height:0;color:var(--t3);flex:0 0 34px;padding:0;border:1px solid transparent;background:transparent;transition:all .15s}.rail-ic:hover{color:var(--t1);background:#ffffff0d}.rail-ic.active{color:var(--accent);border-color:#38bdf859;background:var(--accent-dim)}.rail-ic svg{width:17px;height:17px;display:block}.rail-ic .badge{position:absolute;top:-2px;right:-2px;min-width:14px;height:14px;padding:0 3px;border-radius:999px;display:grid;place-items:center;font-family:var(--mono);font-size:8.5px;font-weight:700;color:#06121e;background:#38bdf8}.rail-gap{flex:1}.rail-label{font-size:8px;font-weight:700;letter-spacing:.1em;color:var(--t3);text-transform:uppercase;padding:4px 0 2px}.side-panel{position:absolute;top:10px;right:12px;bottom:10px;width:var(--side-w);min-width:0;display:flex;flex-direction:column;background:var(--panel-2);border:1px solid var(--border-strong);border-radius:var(--r-lg);box-shadow:-20px 0 60px #0000008c,inset 0 1px #ffffff0a;overflow:hidden;z-index:60;transform:translate(calc(100% + 20px));visibility:hidden;pointer-events:none;transition:transform .28s cubic-bezier(.4,0,.2,1),visibility 0s linear .28s}.side-panel.open{transform:translate(0);visibility:visible;pointer-events:auto;transition-delay:0s}.panel-head{flex-shrink:0;display:flex;align-items:center;gap:8px;padding:12px 14px 10px;border-bottom:1px solid var(--border)}.panel-head h2{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--t3);margin:0}.panel-head .count{font-family:var(--mono);font-size:10px;color:var(--t2);background:#ffffff0d;border-radius:999px;padding:1px 8px}.panel-close{margin-left:auto;width:22px;height:22px;border-radius:6px;display:grid;place-items:center;color:var(--t3);font-size:12px}.panel-close:hover{color:var(--t1);background:#ffffff0d}.panel-body{flex:1;overflow-y:auto;padding:12px 14px 14px}.video-col{min-width:0;min-height:0;display:flex;flex-direction:column;gap:8px;overflow:hidden;container-type:inline-size}
