#wheel-cal{z-index:10;background:#000000bf;justify-content:center;align-items:center;padding:1.25rem;display:flex;position:fixed;inset:0}#wheel-cal[hidden]{display:none}.cal-box{background:var(--panel);border:1px solid var(--accent);border-radius:8px;flex-direction:column;gap:.7rem;width:min(30rem,100%);padding:1.1rem;display:flex}.cal-box h2{color:var(--accent);letter-spacing:.04em;font-size:.9rem}.cal-device{font-size:.72rem}.cal-progress{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:.66rem}.cal-prompt{font-size:.8rem;line-height:1.5}.cal-live{color:var(--muted);white-space:nowrap;background:#000;border-radius:4px;padding:.4rem .5rem;font-size:.66rem;overflow-x:auto}.cal-warn{color:var(--danger);font-size:.7rem}.cal-actions{gap:.5rem;display:flex}.cal-actions button{color:var(--text);border:1px solid var(--line);cursor:pointer;background:#000;border-radius:4px;padding:.3rem .7rem;font:.7rem ui-monospace,monospace}.cal-actions button:hover{border-color:var(--muted)}.cal-actions .cal-capture{border-color:var(--accent);color:var(--accent)}.cal-actions .cal-cancel{margin-left:auto}.cal-safety{border-top:1px solid var(--line);color:var(--muted);align-items:center;gap:.6rem;padding-top:.7rem;font-size:.66rem;line-height:1.4;display:flex}.cal-safety .estop-btn{letter-spacing:.06em;color:#fff;background:var(--danger);border:1px solid var(--danger);cursor:pointer;border-radius:4px;flex:none;padding:.25rem .6rem;font:600 .68rem ui-monospace,monospace}.cal-safety .estop-btn:hover{background:#c53437}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/ibm-plex-sans-latin.woff2)format("woff2")}*{box-sizing:border-box;margin:0;padding:0}:root{color-scheme:dark;--bg:#111;--panel:#1b1b1b;--line:#363636;--text:#f3f3f0;--muted:#999;--accent:#f2b43f;--danger:#ed7169;--ok:#87d69d;font-family:IBM Plex Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body{background:var(--bg);color:var(--text);min-width:320px}[hidden]{display:none!important}button,summary,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button:disabled{opacity:.5;cursor:not-allowed}header{border-bottom:1px solid var(--line);align-items:center;gap:20px;min-height:76px;padding:18px 28px;display:flex}.brand{align-items:center;gap:20px;text-decoration:none;display:flex}.status{color:var(--muted);align-items:center;gap:8px;margin-left:auto;font:12px ui-monospace,monospace;display:flex}.status:before,.status-dot{content:"";background:currentColor;border-radius:50%;width:6px;height:6px;display:inline-block}.status[data-state=connected]{color:var(--ok)}.status[data-state=disconnected]{color:var(--danger)}.wheel{border:1px solid var(--line);color:var(--text);background:0 0;border-radius:5px;padding:8px 12px;font-size:12px}.wheel[data-driving=true]{border-color:var(--accent);color:var(--accent)}main{max-width:1760px;margin:auto;padding:20px 28px}h1{letter-spacing:-.5px;font-size:26px;font-weight:700}.workspace{display:block}.map-panel{border:1px solid var(--line);border-radius:3px;overflow:hidden}#map{border-block:1px solid var(--line);background-color:#202020;background-image:linear-gradient(#ffffff04 1px,#0000 1px),linear-gradient(90deg,#ffffff04 1px,#0000 1px),radial-gradient(at 40% 60%,#292929,#191919);background-size:40px 40px,40px 40px,auto;height:max(420px,100dvh - 160px);position:relative}#roads,#markers{width:100%;height:100%;position:absolute;inset:0}#roads{overflow:hidden}#roads use{fill:none;stroke-linecap:round;stroke-linejoin:round}.road-shoulder{stroke:#111;stroke-width:6.5px}.road-surface{stroke:#555;stroke-width:4.2px}.road-line{stroke:#aaa;stroke-width:.25px;stroke-dasharray:2 3;opacity:.55}.compass{color:#ddd;text-align:center;font:10px ui-monospace,monospace;position:absolute;top:20px;right:20px}.compass span{font-size:28px;display:block}#scale{color:#c7c7c7;font:10px ui-monospace,monospace;position:absolute;bottom:20px;left:20px}.bar{border:1px solid;border-top:none;height:5px;margin-top:6px}#map-note{text-align:center;width:min(80%,320px);color:var(--muted);font-size:13px;line-height:1.7;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}#markers .truck{position:absolute}.pin{color:#1a1a1a;z-index:1;background:#f2b43f;border:2px solid #222;border-radius:7px;width:28px;height:28px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 3px #f2b43f20,0 3px 12px #0008}.pin:hover,.pin:focus-visible{z-index:3;background:#ffe4a6}.arrow{clip-path:polygon(0 0,65% 0,100% 50%,65% 100%,0 100%);background:currentColor;width:15px;height:10px;margin:auto;display:block}.pin-label{color:var(--text);border:1px solid var(--line);white-space:nowrap;pointer-events:none;opacity:0;background:#151515ed;border-radius:3px;padding:5px 7px;font:10px ui-monospace,monospace;position:absolute;bottom:35px;left:50%;transform:translate(-50%)}.pin:hover .pin-label,.pin:focus-visible .pin-label{opacity:1}#unplaced{flex-wrap:wrap;gap:12px;margin-top:16px;display:flex}#unplaced .pin{align-items:center;gap:10px;width:auto;height:auto;padding:10px 12px;display:flex;position:static;transform:none}#unplaced .pin-label{opacity:1;color:inherit;background:0 0;border:none;padding:0;position:static;transform:none}.camera-chooser{border:1px solid var(--line);width:min(320px,90vw);color:var(--text);background:var(--panel);border-radius:3px;margin:auto;padding:16px}.camera-chooser::backdrop{background:#0009}.camera-chooser button{text-align:left;width:100%;margin-top:8px;padding:12px;display:block}.card{background:var(--panel);border:1px solid var(--line);border-radius:3px;overflow:hidden}.truck:not([data-focused=true]) .card{z-index:4;pointer-events:none;width:238px;position:fixed;bottom:76px;left:39px;box-shadow:0 12px 36px #0006}#backdrop{backdrop-filter:blur(5px);z-index:5;background:#070b08c9;position:fixed;inset:0}.truck[data-focused=true] .card{z-index:6;width:min(1100px,94vw,max(560px,167.111dvh - 248.889px));max-height:94dvh;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%);box-shadow:0 28px 100px #0008}.truck[data-active=true] .card{border-color:var(--accent)}.video-wrap{aspect-ratio:16/9;background:#080c09;position:relative}.truck canvas{object-fit:contain;width:100%;height:100%;display:block}.truck .overlay{pointer-events:none;position:absolute;inset:0}.badge{color:var(--muted);text-transform:uppercase;letter-spacing:1px;font-size:10px;font-weight:500}.badge[data-live=true]{color:var(--ok)}.badge[data-live=true]:before{content:"";background:#8beca6;border-radius:50%;width:5px;height:5px;margin-right:6px;display:inline-block}.video-state{color:var(--muted);text-align:center;width:80%;font-size:12px;position:absolute;top:55%;left:50%;transform:translate(-50%,-50%)}.close-btn{color:#fff;z-index:2;background:#111a13cc;border:1px solid #78826d;border-radius:50%;width:32px;height:32px;font-size:22px;position:absolute;top:14px;right:14px}.body{padding:16px 22px}.name-row,.actions{align-items:center;gap:10px;display:flex}.name{text-transform:uppercase;letter-spacing:.5px;font-size:24px;font-weight:700}.speed{color:#fff;align-items:baseline;gap:8px;display:flex}.actions{margin-left:auto}.actions button{border-radius:4px;min-height:36px;padding:10px 13px;font-size:11px;font-weight:600}.control-btn{color:#1b2117;background:var(--accent);border:1px solid var(--accent)}.respawn-btn{color:var(--text);border:1px solid var(--line);background:0 0}.estop-btn{color:#ffd8d4;background:#4b211f;border:1px solid #bd5a52}.estop-btn[data-reset=true]{color:var(--ok);border-color:var(--ok);background:#1b3323}.telemetry{margin-top:0}.metric{grid-template-columns:1fr auto;align-items:baseline;gap:5px 12px;display:grid}.metric>span:not(.pedal-track){letter-spacing:1px;text-transform:uppercase;color:#ddd;font-size:10px;font-weight:700}.metric strong{font-size:14px;font-weight:500}meter{appearance:none;background:#3d4236;border:0;width:100%;height:4px;display:block}meter::-webkit-meter-bar{background:#3d4236;border:0;height:4px}meter::-webkit-meter-optimum-value{background:var(--ok)}.brake-meter::-webkit-meter-optimum-value{background:var(--danger)}.guide-key{color:#ddd;text-shadow:0 1px 4px #000;gap:16px;font-size:10px;display:flex;position:absolute;bottom:22px;left:50%;transform:translate(-50%)}.actual-key:before,.request-key:before{content:"";border-top:2px solid var(--text);vertical-align:middle;width:18px;margin-right:6px;display:inline-block}.request-key:before{border-top:2px dashed #50c8ff}.diagnostics{color:var(--muted);margin-top:10px;font-size:10px}summary{cursor:pointer}.row{overflow-wrap:anywhere;justify-content:space-between;gap:18px;padding-top:10px;font-size:11px;display:flex}.row span:last-child{text-align:right}.hint{color:var(--muted);margin-top:14px;font-size:11px;line-height:1.6}.mode.estopped,.collision{color:var(--danger)}.truck:not([data-focused=true]) .telemetry,.truck:not([data-focused=true]) .hint,.truck:not([data-focused=true]) .actions,.truck:not([data-focused=true]) .close-btn{display:none}.truck:not([data-focused=true]) .body{padding:12px}.truck:not([data-focused=true]) .name,.truck:not([data-focused=true]) .speed{font-size:11px}.truck[data-collision=recent] .pin{border-color:var(--danger);box-shadow:0 0 0 2px #ed716940}.truck[data-collision=recent] .card{border-color:var(--danger)}footer{color:var(--muted);justify-content:space-between;align-items:start;gap:24px;padding:0 28px 16px;font-size:11px;display:flex}footer details{flex:1;max-width:600px;line-height:1.8}footer p{margin-top:10px}kbd{border:1px solid var(--line);color:var(--text);border-radius:3px;padding:1px 4px}#preview-notice{color:var(--accent);background:#342d1b;border:1px solid #6e5b32;border-radius:4px;margin-bottom:20px;padding:10px 14px;font:10px ui-monospace,monospace}@media (width<=1000px){header{padding:18px 20px}main{padding:26px 20px}.truck:not([data-focused=true]) .card{width:220px;left:30px}footer{padding-inline:20px}}@media (width<=700px){header{flex-wrap:wrap;gap:12px;min-height:68px}main{padding:22px 14px}#map{height:380px}.truck:not([data-focused=true]) .card{bottom:20px;left:20px}.body{padding:16px}.name-row{flex-wrap:wrap}.actions{width:100%;margin:6px 0 0}.actions button{flex:1}.metric:nth-child(-n+2){border-bottom:1px solid var(--line)}.guide-key{flex-wrap:wrap;gap:10px}footer{flex-wrap:wrap;gap:14px;padding:0 14px 24px}footer details{flex-basis:100%;order:3}}.pedal-track{height:4px;margin-top:3px;display:block;position:relative}.request-position{border-left:2px solid #50c8ff;height:10px;position:absolute;top:-3px;transform:translate(-1px)}#roads[data-aerial=true] use{display:none}.brand img{display:block}.entry-speed small{color:var(--muted);margin-left:3px;font-size:9px}.hud-title{text-shadow:0 2px 8px #000;flex-direction:column;gap:6px;display:flex;position:absolute;top:22px;left:24px}.hud-pedals{text-shadow:0 1px 6px #000;flex-direction:column;gap:14px;width:160px;display:flex;position:absolute;bottom:26px;left:24px}.hud-motion{text-shadow:0 2px 8px #000;align-items:center;gap:18px;display:flex;position:absolute;bottom:22px;right:24px}.speed-value{font-variant-numeric:tabular-nums;letter-spacing:-2px;font-size:64px;font-weight:700;line-height:1}.speed>span{color:#ddd;font-size:11px}.gear{width:48px;height:54px;color:var(--accent);background:#1118;border:1px solid #ffffff70;place-items:center;font-size:28px;display:grid}.mode{text-transform:uppercase;letter-spacing:1px;color:var(--muted);font-size:12px}.pedal-track{grid-column:1/-1}.video-wrap:after{content:"";pointer-events:none;background:linear-gradient(#0006,#0000 25% 60%,#0009);position:absolute;inset:0}.hud-title,.hud-pedals,.hud-motion,.guide-key,.video-state{z-index:1;pointer-events:none}.truck:not([data-focused=true]) .hud-pedals,.truck:not([data-focused=true]) .hud-motion,.truck:not([data-focused=true]) .body{display:none}.truck:not([data-focused=true]) .hud-title{top:12px;left:12px}.truck:not([data-focused=true]) .name{font-size:13px}@media (width<=700px){.hud-title{top:14px;left:14px}.name{font-size:17px}.hud-pedals{gap:8px;width:95px;bottom:16px;left:14px}.metric strong{font-size:11px}.metric>span:not(.pedal-track){font-size:8px}.hud-motion{gap:8px;bottom:14px;right:14px}.speed-value{font-size:38px}.speed>span{font-size:8px}.gear{width:28px;height:34px;font-size:20px}.guide-key{gap:10px;font-size:8px;bottom:5px}.body{padding:12px}}
