:root{--sky:#8fd3f4;--panel:#2b9fd9;--panel-dark:#1b7fb5;--sun:#f7d63e;--sun-dark:#d9b51f;--ink:#17324a;--paper:#fff;--danger:#e5484d;--radius:22px;color:var(--ink);font-family:ui-rounded,SF Pro Rounded,Nunito,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:#c9f0d6 linear-gradient(180deg, var(--sky), #c9f0d6) no-repeat;overscroll-behavior:none}h1{margin:0 0 12px;font-size:1.7rem}h2{margin:0;font-size:1.2rem}.muted{opacity:.7}.error{color:var(--danger);font-weight:600}.warn-text{color:var(--sun);font-weight:700}.grow{flex:1}.screen{min-height:100%;padding:16px;padding-bottom:max(16px, env(safe-area-inset-bottom))}.center{place-items:center;display:grid}.panel{background:var(--panel);color:var(--paper);border-radius:var(--radius);box-shadow:0 8px 0 var(--panel-dark);padding:24px}.narrow{gap:12px;width:min(100%,360px);display:grid}label{gap:6px;font-weight:600;display:grid}input,select{font:inherit;border:0;border-radius:14px;padding:12px 14px}select{background:var(--paper);color:var(--ink)}button{font:inherit;cursor:pointer;border:0;font-weight:800}button:disabled{opacity:.5;cursor:default}.primary{background:var(--sun);color:var(--ink);box-shadow:0 5px 0 var(--sun-dark);border-radius:999px;padding:12px 28px}.primary:active:not(:disabled){box-shadow:0 2px 0 var(--sun-dark);transform:translateY(3px)}.stats{grid-template-columns:1fr 1fr;gap:10px;margin:0;display:grid}.stats div{background:var(--panel-dark);border-radius:calc(var(--radius) / 1.6);padding:10px 14px}.stats dt{opacity:.85;font-size:.85rem}.stats dd{font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:1.6rem;font-weight:800}.record{border-radius:calc(var(--radius) / 1.6);background:var(--panel-dark);margin:0;padding:10px 14px}.record.new{background:var(--sun);color:var(--ink)}.board{gap:14px;max-width:560px;margin:0 auto;display:grid}.board h1,.board p{margin:0}.board table{border-collapse:separate;border-spacing:0 6px;width:100%}.board th{text-align:left;opacity:.7;padding:0 12px;font-size:.8rem;font-weight:600}.board td{background:var(--panel);color:var(--paper);font-variant-numeric:tabular-nums;padding:10px 12px}.board td:first-child{border-radius:14px 0 0 14px}.board td:last-child{border-radius:0 14px 14px 0}.board .place{text-align:center;width:3em;font-weight:800}.board .time{font-weight:800}.board td.when{color:#ffffffd9;font-size:.85rem}.board tr.mine td{background:var(--sun);color:var(--ink)}.board .you{font-weight:600}.board tr.gap td{color:var(--ink);text-align:center;background:0 0;padding:0}@media (width<=420px){.board .when{display:none}.board td.time{border-radius:0 14px 14px 0}}.link{color:inherit;background:0 0;padding:4px;text-decoration:underline}.topbar{flex-wrap:wrap;align-items:center;gap:4px 12px;margin-bottom:20px;display:flex}.banner{background:var(--danger);color:var(--paper);text-align:center;padding:8px;font-weight:700}.cars{max-width:560px;margin:0 auto}.cars ul{gap:14px;margin:0;padding:0;list-style:none;display:grid}.car{background:var(--panel);color:var(--paper);border-radius:var(--radius);box-shadow:0 6px 0 var(--panel-dark);justify-content:space-between;align-items:center;gap:12px;padding:18px 20px;display:flex}.car-badge{width:34px;height:34px;color:var(--paper);border:3px solid var(--paper);box-sizing:border-box;border-radius:50%;flex:none;place-items:center;font-weight:800;display:grid}.car-title{flex:1;min-width:0}.scene{z-index:0;transition:opacity .4s,filter .4s;position:fixed;inset:0}.scene.dim{opacity:.32;filter:blur(4px)saturate(.8);pointer-events:none}.scene-canvas{touch-action:manipulation;width:100%;height:100%;display:block}.screen{z-index:1;position:relative}.screen.with-scene{pointer-events:none;flex-direction:column;height:100%;min-height:0;padding-bottom:0;display:flex;overflow:hidden}.screen.with-scene>*{pointer-events:auto}.with-scene .topbar{margin-bottom:8px}.with-scene .cars{pointer-events:none;flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:8px;width:100%;max-width:none;min-height:0;margin:0;display:flex}.with-scene .cars>*{pointer-events:auto}.with-scene .cars h1{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.with-scene .cars .notice,.with-scene .cars .error{background:var(--paper);border-radius:999px;margin:0;padding:8px 16px;box-shadow:0 3px #17324a26}.with-scene .cars ul{scroll-snap-type:x mandatory;scrollbar-width:none;padding:10px 16px max(18px, env(safe-area-inset-bottom));pointer-events:none;align-self:stretch;gap:14px;margin:0 -16px;display:flex;overflow-x:auto}.with-scene .cars ul::-webkit-scrollbar{display:none}.with-scene .car{scroll-snap-align:center;pointer-events:auto;cursor:pointer;opacity:.86;flex:0 0 min(400px,88vw);padding:14px 16px;transition:transform .2s,opacity .2s;transform:scale(.95)}.with-scene .car h2{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.with-scene .car .status{font-size:.9rem}.with-scene .car .primary{padding:10px 22px}.with-scene .car:first-child{margin-left:auto}.with-scene .car:last-child{margin-right:auto}.with-scene .car.selected{opacity:1;outline:4px solid var(--sun);outline-offset:-1px;transform:none}@media (height<=480px) and (orientation:landscape){.with-scene .cars{align-items:flex-end}.with-scene .cars ul{max-width:100%;padding:6px 0 max(10px, env(safe-area-inset-bottom));align-self:flex-end;margin:0}.with-scene .car{flex-basis:min(300px,56vw);padding:10px 12px}.with-scene .car:first-child{margin-left:0}}@media (width<=480px){.topbar .muted{display:none}}@media (prefers-reduced-motion:reduce){.scene,.with-scene .car{transition:none}}.car-actions{align-items:center;gap:10px;display:flex}.car-actions a.secondary{font-weight:800;text-decoration:none}.car .status{opacity:.9;margin:4px 0 0}.car-offline,.car-maintenance{filter:grayscale(.7)}.drive{color:var(--paper);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;background:#000;position:fixed;inset:0;overflow:hidden}.drive.staged{color:var(--paper);background:0 0}.drive.staged video{visibility:hidden}.drive.staged .overlay{inset:auto auto auto 50%;bottom:max(88px, calc(env(safe-area-inset-bottom) + 72px));box-sizing:border-box;background:var(--panel);border-radius:var(--radius);width:min(360px,86vw);box-shadow:0 6px 0 var(--panel-dark);gap:8px;padding:16px 22px;font-size:1.15rem;transform:translate(-50%)}.drive.staged .indicators{display:none}.drive.staged .keys{box-sizing:border-box;opacity:1;background:#17324abf;border-radius:999px;width:max-content;max-width:92vw;padding:6px 14px;left:50%;right:auto;transform:translate(-50%)}.drive video{object-fit:contain;width:100%;height:100%;position:absolute;inset:0}.hud-stack{z-index:2;top:max(10px, env(safe-area-inset-top));left:max(10px, env(safe-area-inset-left));right:max(10px, env(safe-area-inset-right));pointer-events:none;justify-items:center;gap:10px;display:grid;position:absolute}.hud.top{flex-wrap:wrap;justify-self:stretch;align-items:center;gap:8px;display:flex}.hud-stack .pill{pointer-events:auto}.pill{color:var(--paper);font-variant-numeric:tabular-nums;background:#17324abf;border-radius:999px;padding:8px 14px;font-weight:700}.pill.icon{place-items:center;padding-inline:10px;display:grid}a.pill{text-decoration:none}.pill.timer{background:var(--sun);color:var(--ink)}.pill.warn,.pill.danger{background:var(--danger)}.pill.lap{min-width:9.5em}.lap-banner{background:var(--sun);color:var(--ink);font-variant-numeric:tabular-nums;text-align:center;white-space:nowrap;box-shadow:0 5px 0 var(--sun-dark);border-radius:16px;justify-items:center;gap:2px;padding:10px 22px;animation:.18s ease-out lap-banner-in;display:grid}.lap-banner strong{font-size:1.4rem}.lap-banner.warn{background:var(--danger);color:var(--paper);box-shadow:0 5px #00000040}.lap-banner.muted{color:var(--paper);box-shadow:none;background:#17324ad9}@keyframes lap-banner-in{0%{opacity:0;transform:translateY(-8px)}}@media (width<=900px),(height<=430px){.hud.top{gap:6px}.pill.car-name{display:none}.pill{padding:6px 11px;font-size:.9rem}.lap-banner strong{font-size:1.2rem}}.overlay{text-align:center;background:#00000073;place-content:center;justify-items:center;gap:12px;font-size:1.3rem;font-weight:700;display:grid;position:absolute;inset:0}.checklist{justify-items:start;gap:8px;margin:0;padding:0;font-size:1.05rem;font-weight:600;list-style:none;display:grid}.checklist li:before{content:"○";width:1.4em;display:inline-block}.checklist li.pending{opacity:.55}.checklist li.active:before{content:"◔";animation:1s ease-in-out infinite checklist-pulse}.checklist li.done:before{content:"✓"}@keyframes checklist-pulse{50%{opacity:.35}}.overlay .hint{opacity:.75;font-size:.85rem;font-weight:500}.count{color:var(--sun);font-size:7rem;line-height:1}.video-note{background:#17324abf;border-radius:14px;padding:10px 16px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.video-note.blocked{text-align:center;outline:3px solid var(--sun);max-width:min(90%,440px);font-weight:700}.indicators{left:50%;bottom:max(48px, env(safe-area-inset-bottom));align-items:flex-end;gap:14px;display:flex;position:absolute;transform:translate(-50%)}.bar{background:#17324a99;border-radius:999px;position:relative}.bar.horizontal{width:220px;height:14px}.bar.vertical{width:14px;height:90px}.mark{border-radius:50%;width:14px;height:14px;position:absolute}.bar.horizontal .mark{top:0;transform:translate(-50%)}.bar.vertical .mark{left:0;transform:translateY(50%)}.mark.intent{background:var(--sun)}.mark.actual{background:var(--paper);opacity:.85}.touch{pointer-events:none;position:absolute;inset:0}.stick{will-change:transform;position:absolute;top:0;left:0}.stick[hidden]{display:none}.stick:before{content:"";background:#17324a59;border:2px solid #ffffff80;border-radius:999px;position:absolute}.stick.throttle:before{left:-30px;top:calc(-30px - var(--travel));width:60px;height:calc(60px + 2 * var(--travel))}.stick.steer:before{left:calc(-30px - var(--travel));width:calc(60px + 2 * var(--travel));height:60px;top:-30px}.stick .knob{background:var(--sun);opacity:.9;will-change:transform;border-radius:50%;width:50px;height:50px;position:absolute;top:-25px;left:-25px}.touch-hint,.rotate-hint{text-align:center;text-shadow:0 1px 3px #000c;margin:0;font-size:.85rem;display:none;position:absolute}.touch-hint{width:min(46%,300px);bottom:max(70px,22%)}.touch-hint.left{left:2%}.touch-hint.right{right:2%}.touch-hint strong{font-size:1.15rem;display:block}@media (pointer:coarse){.touch-hint{display:block}.keys{display:none}.keys.gamepad{display:block}}@media (orientation:portrait){.drive video{object-position:center 22%}}@media (orientation:portrait) and (pointer:coarse){.rotate-hint{opacity:.75;display:block;top:calc(22dvh + 43.875vw + 12px);left:0;right:0}}.keys{bottom:max(10px, env(safe-area-inset-bottom));text-align:center;opacity:.75;margin:0;font-size:.85rem;position:absolute;left:0;right:0}.tabs{border-radius:calc(var(--radius) / 2);background:var(--panel-dark);gap:6px;padding:4px;display:flex}.tab{border-radius:calc(var(--radius) / 2 - 4px);color:var(--paper);background:0 0;flex:1;padding:8px 10px;font-weight:600}.tab.active{background:var(--paper);color:var(--ink)}.admin{gap:16px;max-width:760px;margin:0 auto;display:grid}.admin h1{margin:0}.admin-car{gap:14px;display:grid}.admin-car header{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.admin-car h2{margin:0}.chip{background:#00000038;border-radius:999px;padding:4px 10px;font-size:.85rem;font-weight:700}.chip.status-free{background:#2f9e57}.chip.status-busy{background:var(--sun);color:var(--ink)}.chip.status-low_battery{background:#e8890c}.chip.warn{background:var(--danger)}.facts{grid-template-columns:max-content 1fr;gap:6px 14px;margin:0;display:grid}.facts dt{opacity:.8}.facts dd{font-variant-numeric:tabular-nums;margin:0}.actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.secondary,.danger-button{color:var(--paper);background:#fff3;border-radius:999px;padding:10px 16px}.danger-button{background:var(--danger)}a.secondary.google{text-align:center;font-weight:800;text-decoration:none;display:block}.admin-car .note,.admin-car .error{color:var(--paper);background:#0000002e;border-radius:12px;margin:0;padding:8px 12px;font-weight:600}.admin-car .error{background:var(--danger)}.tuning{border-top:1px solid #ffffff4d;gap:10px;padding-top:12px;display:grid}.tuning h3{margin:0;font-size:1rem}.tuning-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.tuning input[type=number],.tuning-grid input:not([type=checkbox]){box-sizing:border-box;width:100%}label.check{align-items:center;gap:8px;display:flex}label.check input{width:20px;height:20px}a.tab{text-align:center;text-decoration:none}.admin-section{gap:14px;display:grid}.admin-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.admin-list li{background:var(--panel-dark);border-radius:16px;gap:8px;padding:12px 14px;display:grid}.admin-list .who{flex-wrap:wrap;align-items:center;gap:6px 10px;display:flex}.admin-list .time{font-variant-numeric:tabular-nums}.dim{opacity:.8}.admin-list p{margin:0}.admin-section .note,.admin-section .error{color:var(--paper);background:#0000002e;border-radius:12px;margin:0;padding:8px 12px;font-weight:600}.admin-section .error{background:var(--danger)}.password{letter-spacing:.06em;-webkit-user-select:all;user-select:all;overflow-wrap:anywhere;margin-top:6px;font-size:1.3rem;display:block}.device-form{border-top:1px solid #ffffff4d;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));align-items:end;gap:10px 14px;padding-top:12px;display:grid}.device-form h3{grid-column:1/-1;margin:0;font-size:1rem}.device-form input,.device-form select{box-sizing:border-box;width:100%}.device-form label.check{grid-column:1/-1}.device-form label.check input{width:20px}.device-form button{justify-self:start}.notice{background:var(--paper);color:var(--ink);border-radius:14px;margin:0 0 14px;padding:10px 14px;font-weight:600}.venue-block{gap:10px;display:grid}.venue-block h2{margin:0;font-size:1.15rem}.venue-block p{margin:0}.default{font-size:.85rem;font-weight:500}.default .link{margin-left:6px;padding:0;font-weight:700}.field{align-content:start;gap:4px;display:grid}nav.tabs{overflow-x:auto}nav.tabs .tab{flex:1 0 auto}.audit p{margin:0}.operator-call{border-radius:var(--radius);background:var(--danger);color:var(--paper);flex-wrap:wrap;align-items:center;gap:12px 16px;margin-bottom:12px;padding:14px 18px;animation:1.2s ease-in-out infinite operator-call-pulse;display:flex}.operator-call p{flex:1;min-width:220px;margin:0}.operator-call strong{font-size:1.15rem;display:block}.operator-call.soft{background:var(--sun);color:var(--ink);animation:none}@keyframes operator-call-pulse{50%{box-shadow:0 0 0 6px #e5484d59}}@media (prefers-reduced-motion:reduce){.operator-call{animation:none}}.sound-toggle{margin:0 0 12px;font-size:.9rem}.sound-toggle label{align-items:center;gap:8px;display:inline-flex}.sound-toggle input{width:auto;margin:0}.latency-probe{justify-items:center;gap:8px;display:grid}.latency-probe canvas{width:min(100%,560px);height:auto;image-rendering:pixelated;border-radius:6px}.latency-probe p{text-align:center;margin:0}.latency-probe strong{font-size:1.3rem}.drive .latency-probe{z-index:5;width:min(92vw,600px);color:var(--paper);background:#000000bf;border-radius:16px;padding:12px;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.pill.active{background:var(--sun);color:var(--ink)}.latency-loopback{background:#000;border-radius:10px;width:min(100%,320px)}.steps{gap:4px;margin:0;padding-left:22px;display:grid}
