:root{color-scheme:dark;--bg: #0b0e14;--panel: rgba(12, 16, 24, .82);--surface-1: rgba(255, 255, 255, .04);--surface-2: rgba(255, 255, 255, .07);--surface-3: rgba(255, 255, 255, .12);--surface-4: rgba(255, 255, 255, .16);--stroke: rgba(255, 255, 255, .12);--ink: #f2f6ff;--ink-dim: #c3ccdb;--muted: #8b97ad;--accent: #ff7a1a;--accent-ink: #1a0d02;--accent-soft: rgba(255, 122, 26, .14);--accent-2: #38d1ff;--accent-2-soft: rgba(56, 209, 255, .14);--danger: #ff3b52;--danger-soft: rgba(255, 59, 82, .16);--danger-stroke: rgba(255, 59, 82, .4);--danger-ink: #ffd7dc;--ok: #3ce88a;--ok-soft: rgba(60, 232, 138, .14);--ok-stroke: rgba(60, 232, 138, .4);--ok-ink: #c9ffe4;--gold: #ffb020;--gold-ink: #fff2c0;--font-body: system-ui, -apple-system, "Segoe UI", sans-serif;--font-display: "Arial Black", "Helvetica Neue", Impact, system-ui, sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--fs-2xs: clamp(7px, 1.1vmin, 10px);--fs-xs: clamp(8px, 1.2vmin, 11px);--fs-sm: clamp(9px, 1.4vmin, 12px);--fs-md: clamp(10px, 1.5vmin, 13px);--fs-lg: clamp(11px, 1.8vmin, 14px);--fs-xl: clamp(13px, 2.1vmin, 17px);--fs-2xl: clamp(14px, 2.6vmin, 24px);--fs-3xl: clamp(16px, 2.9vmin, 28px);--fs-4xl: clamp(19px, 3.4vmin, 32px);--fs-5xl: clamp(22px, 6vmin, 54px);--fs-6xl: clamp(30px, 8vmin, 58px);--fs-7xl: clamp(38px, 11vmin, 78px);--ls-tight: -.04em;--ls-snug: -.02em;--ls-normal: .04em;--ls-wide: .08em;--ls-caps: .2em;--ls-caps-loose: .3em;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-8: 32px;--gutter: 20px;--gap-col: clamp(8px, 2vw, 24px);--gap-row: clamp(10px, 2.4vw, 22px);--gap-stats: clamp(8px, 3vw, 30px);--stat-inset: clamp(2px, 1vmin, 10px);--hud-pad: clamp(10px, 2.2vmin, 22px);--scrim-h: clamp(90px, 20vmin, 190px);--r-0: 2px;--r-1: 4px;--r-2: 8px;--r-3: 12px;--r-4: 16px;--r-5: 24px;--r-full: 999px;--shadow-text: 0 1px 3px rgba(0, 0, 0, .85);--shadow-text-lg: 0 4px 26px rgba(0, 0, 0, .75);--shadow-panel: 0 30px 90px rgba(0, 0, 0, .6);--glow-accent-sm: 0 0 6px rgba(255, 122, 26, .7);--glow-accent: 0 0 28px rgba(255, 122, 26, .7);--glow-accent-wide: 0 0 40px rgba(255, 122, 26, .55);--glow-cyan-sm: 0 0 9px rgba(56, 209, 255, .9);--glow-cyan: 0 0 24px rgba(56, 209, 255, .6);--glow-cyan-wide: 0 0 50px rgba(56, 209, 255, .35);--glow-danger-sm: 0 0 10px rgba(255, 59, 82, .6);--glow-danger-wide: 0 0 50px rgba(255, 59, 82, .35);--glow-ok: 0 0 10px rgba(60, 232, 138, .5);--glow-gold: 0 0 10px rgba(255, 180, 40, .6);--glow-gold-strong: 0 0 22px rgba(255, 214, 90, 1);--glow-nitro: 0 0 18px rgba(255, 160, 40, .75);--scrim-top: linear-gradient(180deg, rgba(4, 7, 12, .82), rgba(4, 7, 12, 0));--scrim-bottom: linear-gradient(0deg, rgba(4, 7, 12, .55), rgba(4, 7, 12, 0));--scrim-overlay: radial-gradient( circle at 50% 40%, rgba(10, 14, 22, .55), rgba(5, 7, 11, .9) );--scrim-hurt: radial-gradient( circle at 50% 55%, transparent 45%, rgba(255, 40, 60, .55) 100% );--grad-cta: linear-gradient(180deg, #ff9040, var(--accent));--grad-nitro: linear-gradient(90deg, #2aa8ff, #7de8ff);--grad-nitro-full: linear-gradient(90deg, var(--accent), #ffd24a);--grad-nitro-active: linear-gradient(90deg, #ff4d2e, #ffe36e);--grad-coin: radial-gradient(circle at 35% 30%, var(--gold-ink) 0%, var(--gold) 70%);--glass-shade: rgba(0, 0, 0, .35);--boost-glow: clamp(60px, 14vmin, 160px);--boost-tint: rgba(56, 209, 255, .32);--dur-1: .12s;--dur-2: .16s;--dur-3: .25s;--dur-4: .3s;--dur-pulse: .9s;--ease-out: cubic-bezier(.2, 0, .2, 1);--ease-pop: cubic-bezier(.2, 1.5, .4, 1);--ease-banner: cubic-bezier(.2, 1.4, .4, 1);--z-scrim: -1;--z-boost: 3;--z-hurt: 4;--z-overlay: 5;--speedo-size: clamp(74px, 13vmin, 118px);--pip-w: clamp(16px, 2.6vmin, 24px);--pip-h: clamp(5px, .8vmin, 8px);--track-h: clamp(7px, 1.2vmin, 11px);--nitro-max-w: 460px;--panel-w: min(560px, 100%);--panel-w-sm: min(400px, 100%);--touch-target: 44px;--icon-size: 30px;--swatch-h: clamp(26px, 5vmin, 40px);--focus-ring: 0 0 0 2px var(--bg), 0 0 0 4px var(--accent)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--ink);font-family:var(--font-body);overscroll-behavior:none;touch-action:none;user-select:none}#app{position:fixed;inset:0}#scene{position:absolute;inset:0;width:100%;height:100%;display:block}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.hud:before,.hud:after{content:"";position:absolute;left:0;right:0;height:var(--scrim-h);pointer-events:none;z-index:var(--z-scrim)}.hud:before{top:0;background:var(--scrim-top)}.hud:after{bottom:0;background:var(--scrim-bottom)}.hud{position:absolute;inset:0;pointer-events:none;padding:var(--hud-pad);padding-top:max(var(--hud-pad),env(safe-area-inset-top));display:flex;flex-direction:column;justify-content:space-between;font-family:var(--font-mono)}.hud-top{display:flex;align-items:flex-start;gap:var(--gap-col)}.speedo{position:relative;width:var(--speedo-size);aspect-ratio:1;flex:0 0 auto}.speedo-dial{width:100%;height:100%;transform:rotate(135deg)}.dial-track,.dial-fill{fill:none;stroke-linecap:round;stroke-width:9;stroke-dasharray:264 351;stroke-dashoffset:0}.dial-track{stroke:var(--surface-4)}.dial-fill{stroke:var(--accent);filter:drop-shadow(var(--glow-accent-sm));transition:stroke var(--dur-3) var(--ease-out)}.speedo.boosting .dial-fill{stroke:var(--accent-2);filter:drop-shadow(var(--glow-cyan-sm))}.speedo-read{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}.speedo-read span{font-size:var(--fs-4xl);font-weight:700;letter-spacing:var(--ls-tight);text-shadow:var(--shadow-text)}.speedo-read small{font-size:var(--fs-2xs);color:var(--muted);letter-spacing:var(--ls-caps);margin-top:var(--s-1)}.stats{flex:1 1 auto;display:flex;gap:var(--gap-stats);align-items:flex-start;padding-top:var(--stat-inset)}.stat{display:flex;flex-direction:column;line-height:1}.stat-value{font-size:var(--fs-3xl);font-weight:700;letter-spacing:var(--ls-snug);text-shadow:var(--shadow-text)}.stat-label{font-size:var(--fs-2xs);color:var(--muted);letter-spacing:var(--ls-caps);margin-top:var(--s-1)}.right-stack{display:flex;flex-direction:column;align-items:flex-end;gap:var(--s-2);pointer-events:auto}.coins{display:flex;align-items:center;gap:var(--s-2);font-size:var(--fs-2xl);font-weight:700;transform-origin:right center;text-shadow:var(--shadow-text)}.coins.bump{animation:coinBump var(--dur-4) var(--ease-pop)}.coins.bump .coin-dot{animation:coinDot var(--dur-4) var(--ease-out)}@keyframes coinBump{0%{transform:scale(1)}35%{transform:scale(1.28);color:var(--gold-ink)}to{transform:scale(1)}}@keyframes coinDot{0%{transform:scale(1);box-shadow:var(--glow-gold)}35%{transform:scale(1.5);box-shadow:var(--glow-gold-strong)}to{transform:scale(1);box-shadow:var(--glow-gold)}}.coin-dot{width:.72em;height:.72em;border-radius:var(--r-full);background:var(--grad-coin);box-shadow:var(--glow-gold)}.best{font-size:var(--fs-xs);color:var(--ink-dim);letter-spacing:var(--ls-caps);text-shadow:var(--shadow-text)}.best span{color:var(--ink)}.icon-button{margin-top:var(--s-1);width:var(--icon-size);height:var(--icon-size);border-radius:var(--r-2);border:1px solid var(--stroke);background:var(--surface-2);color:var(--ink);font-size:var(--fs-md);line-height:1;cursor:pointer;display:grid;place-items:center;transition:background var(--dur-2) var(--ease-out),opacity var(--dur-2) var(--ease-out)}.icon-button:hover{background:var(--surface-4)}.icon-button.muted{opacity:.45}.police-warning{align-self:center;margin-top:var(--s-2);display:flex;align-items:center;gap:var(--s-2);padding:var(--s-1) var(--s-3);border-radius:var(--r-full);background:var(--danger-soft);border:1px solid var(--danger-stroke);color:var(--danger-ink);font-size:var(--fs-sm);letter-spacing:var(--ls-caps);animation:pulse var(--dur-pulse) var(--ease-out) infinite}.police-dot{width:var(--s-2);height:var(--s-2);border-radius:var(--r-full);background:var(--danger);box-shadow:var(--glow-danger-sm)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}.banner{position:absolute;left:50%;top:26%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:var(--s-1);text-align:center;font-family:var(--font-display);letter-spacing:var(--ls-normal);animation:bannerIn var(--dur-4) var(--ease-banner)}.banner span{font-size:var(--fs-5xl);line-height:1;text-shadow:var(--shadow-text-lg)}.banner small{font-family:var(--font-mono);font-size:var(--fs-sm);letter-spacing:var(--ls-caps-loose);color:var(--muted)}.banner.near span{color:var(--accent-2);text-shadow:var(--glow-cyan)}.banner.boost span{color:var(--accent);text-shadow:var(--glow-accent)}.banner.danger span{color:var(--danger)}@keyframes bannerIn{0%{opacity:0;transform:translate(-50%) scale(.8) translateY(10px)}to{opacity:1;transform:translate(-50%) scale(1) translateY(0)}}.hud-bottom{display:flex;align-items:center;gap:var(--gap-row);padding-bottom:env(safe-area-inset-bottom)}.shield{display:flex;gap:var(--s-1)}.pip{width:var(--pip-w);height:var(--pip-h);border-radius:var(--r-0);background:var(--ok);box-shadow:var(--glow-ok);transition:background var(--dur-2) var(--ease-out),box-shadow var(--dur-2) var(--ease-out),opacity var(--dur-2) var(--ease-out)}.pip.off{background:var(--surface-4);box-shadow:none}.pip.low{background:var(--danger);box-shadow:var(--glow-danger-sm);animation:pulse .6s var(--ease-out) infinite}.nitro{flex:1 1 auto;display:flex;align-items:center;gap:var(--s-3);max-width:var(--nitro-max-w)}.nitro-track{position:relative;flex:1 1 auto;height:var(--track-h);border-radius:var(--r-full);background:var(--surface-3);overflow:hidden;transition:background var(--dur-2) var(--ease-out)}.nitro.active .nitro-track{background:var(--accent-2-soft)}.nitro-fill{position:absolute;inset:0;width:0%;border-radius:var(--r-full);background:var(--grad-nitro);transition:width var(--dur-1) linear}.nitro.full .nitro-fill{background:var(--grad-nitro-full);box-shadow:var(--glow-nitro);animation:pulse .7s var(--ease-out) infinite}.nitro.active .nitro-fill{background:var(--grad-nitro-active)}.nitro-label{font-size:var(--fs-xs);letter-spacing:var(--ls-caps);color:var(--muted);min-width:4.4em;text-align:right;transition:color var(--dur-2) var(--ease-out)}.nitro.full .nitro-label,.nitro.active .nitro-label{color:var(--ink)}.overlay{position:absolute;inset:0;display:grid;place-items:center;padding:var(--gutter);background:var(--scrim-overlay);backdrop-filter:blur(3px);z-index:var(--z-overlay);animation:fadeIn var(--dur-3) var(--ease-out)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.panel{width:var(--panel-w);max-height:100%;overflow-y:auto;overscroll-behavior:contain;padding:clamp(var(--s-3),4vmin,var(--s-8));border-radius:var(--r-5);background:var(--panel);border:1px solid var(--stroke);box-shadow:var(--shadow-panel);text-align:center;scrollbar-width:thin;scrollbar-color:var(--surface-4) transparent}.panel::-webkit-scrollbar{width:8px}.panel::-webkit-scrollbar-thumb{background:var(--surface-4);border-radius:var(--r-full)}.panel.small{width:var(--panel-w-sm)}.logo{margin:0 0 var(--s-2);font-family:var(--font-display);font-size:var(--fs-7xl);line-height:.9;letter-spacing:var(--ls-snug);display:flex;justify-content:center;gap:.06em}.logo-a{color:var(--ink)}.logo-b{color:var(--accent);text-shadow:var(--glow-accent-wide)}.tagline{margin:0 0 var(--s-5);color:var(--muted);font-size:var(--fs-lg);letter-spacing:var(--ls-normal)}.car-select{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-2);margin-bottom:var(--s-4)}.car-card{padding:var(--s-3) var(--s-2) var(--s-3);border-radius:var(--r-4);border:1px solid var(--stroke);background:var(--surface-1);cursor:pointer;text-align:center;color:inherit;font:inherit;transition:transform var(--dur-2) var(--ease-out),border-color var(--dur-2) var(--ease-out),background var(--dur-2) var(--ease-out),box-shadow var(--dur-2) var(--ease-out)}.car-card:hover{transform:translateY(-2px);background:var(--surface-2)}.car-card.selected{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent) inset}.car-swatch{width:100%;height:var(--swatch-h);border-radius:var(--r-2);margin-bottom:var(--s-2);position:relative;overflow:hidden}.car-swatch:after{content:"";position:absolute;inset:auto 8% 22%;height:34%;border-radius:var(--r-1) var(--r-1) var(--r-0) var(--r-0);background:var(--glass-shade)}.car-name{font-family:var(--font-display);font-size:var(--fs-xl);letter-spacing:var(--ls-normal)}.car-blurb{font-size:var(--fs-md);color:var(--muted);margin-top:var(--s-1);line-height:1.3}.car-stats{display:flex;gap:var(--s-1);margin-top:var(--s-2)}.bar{flex:1;height:3px;border-radius:var(--r-0);background:var(--surface-3);overflow:hidden}.bar i{display:block;height:100%;background:var(--accent)}.bar.mid i{background:var(--accent-2)}.bar.low i{background:var(--ok)}.controls{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s-2) var(--s-3);margin-bottom:var(--s-3)}.control{display:flex;align-items:center;gap:var(--s-2);font-size:var(--fs-sm);color:var(--muted)}kbd{font-family:var(--font-mono);font-size:var(--fs-sm);padding:3px var(--s-2);border-radius:var(--r-2);border:1px solid var(--stroke);background:var(--surface-2);color:var(--ink)}.hint{margin:var(--s-3) 0 0;font-size:var(--fs-sm);color:var(--muted);line-height:1.5}.cta{margin-top:var(--s-4);padding:var(--s-3) var(--s-6);width:100%;border:0;border-radius:var(--r-4);background:var(--grad-cta);color:var(--accent-ink);font-family:var(--font-display);font-size:var(--fs-xl);letter-spacing:var(--ls-wide);cursor:pointer;transition:transform var(--dur-1) var(--ease-out),filter var(--dur-1) var(--ease-out)}.cta:hover{transform:translateY(-1px);filter:brightness(1.07)}.cta:active{transform:translateY(1px)}.cta.ghost{margin-top:var(--s-2);background:var(--surface-2);color:var(--ink);border:1px solid var(--stroke)}.best-line{margin:var(--s-3) 0 0;font-family:var(--font-mono);font-size:var(--fs-sm);letter-spacing:var(--ls-caps);color:var(--muted)}.best-line span{color:var(--ink)}.over-title{margin:0;font-family:var(--font-display);font-size:var(--fs-6xl);letter-spacing:var(--ls-normal);color:var(--danger);text-shadow:var(--glow-danger-wide)}.over-title.busted,.over-title.held{color:var(--accent-2);text-shadow:var(--glow-cyan-wide)}.over-reason{margin:var(--s-2) 0 var(--s-2);color:var(--muted);font-size:var(--fs-lg)}.over-where{margin:0 0 var(--s-5);color:var(--ink-dim);font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:var(--ls-caps)}.result-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s-2);margin-bottom:var(--s-2)}.result-grid div{padding:var(--s-3) var(--s-1);border-radius:var(--r-3);background:var(--surface-1);display:flex;flex-direction:column;gap:var(--s-1)}.result-grid span{font-family:var(--font-mono);font-size:var(--fs-2xl);font-weight:700;line-height:1.1}.result-grid small{font-size:var(--fs-2xs);letter-spacing:var(--ls-caps);color:var(--muted)}.new-best{margin-top:var(--s-3);padding:var(--s-2);border-radius:var(--r-3);background:var(--ok-soft);border:1px solid var(--ok-stroke);color:var(--ok-ink);font-family:var(--font-mono);font-size:var(--fs-sm);letter-spacing:var(--ls-caps);animation:pulse 1.1s var(--ease-out) infinite}#app:after{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity var(--dur-2) var(--ease-out);background:var(--scrim-hurt);z-index:var(--z-hurt)}#app.hurt:after{opacity:1}#app.boost:before{content:"";position:absolute;inset:0;pointer-events:none;z-index:var(--z-boost);box-shadow:inset 0 0 var(--boost-glow) var(--boost-tint)}:where(button,[role=radio],a):focus-visible{outline:none;box-shadow:var(--focus-ring)}.car-card:focus-visible{outline:none;box-shadow:var(--focus-ring);border-color:var(--accent)}@media (max-width: 520px){.stats{gap:var(--s-3)}.car-select{gap:var(--s-1)}.result-grid{grid-template-columns:repeat(2,1fr)}}@media (max-height: 620px){.logo{font-size:var(--fs-5xl);margin-bottom:var(--s-1)}.tagline,.car-select{margin-bottom:var(--s-3)}.controls{margin-bottom:var(--s-2)}.panel{padding:var(--s-4)}}@media (pointer: coarse){.icon-button{width:var(--touch-target);height:var(--touch-target)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}.dial-fill{filter:drop-shadow(var(--glow-accent-sm))}.car-card:hover{transform:none}}
