:root{--ui-pad:16px;--ui-sky:#a9c3e0;--ui-grass:#6cab51;--ui-asphalt:#1a1a1d;--ui-asphalt-mid:#2a2a2e;--ui-line:#3a3a40;--ui-paper:#f2f2f0;--ui-red:#d0181c;--ui-ink:#141418;--ui-muted:#9aa3ad;--ui-warn:#ffd18a;--entry-pad:var(--ui-pad);--entry-sky:var(--ui-sky);--entry-grass:var(--ui-grass);--entry-asphalt:var(--ui-asphalt);--entry-asphalt-mid:var(--ui-asphalt-mid);--entry-line:var(--ui-line);--entry-paper:var(--ui-paper);--entry-red:var(--ui-red);--entry-ink:var(--ui-ink)}html,body,#root,.app{background:#111;width:100%;height:100%;margin:0;overflow:hidden}.scene-canvas{width:100%;height:100%;display:block}.camera-feed,.tracking-hud,.race-pace,.race-map,.race-lb-btn,.game-overlay-card,.game-overlay-card *,.lb-screen,.lb-screen *{border-radius:0}.camera-feed{top:var(--ui-pad);aspect-ratio:4/3;background:var(--ui-ink);border:2px solid var(--ui-line);width:280px;position:absolute;left:50%;overflow:hidden;transform:translate(-50%)scaleX(-1)}.camera-feed video,.camera-feed canvas{width:100%;height:100%;position:absolute;inset:0}.camera-feed video{opacity:.3}.camera-feed canvas{pointer-events:none}.camera-status{padding:var(--ui-pad);color:var(--ui-paper);text-align:center;background:#1a1a1db8;place-items:center;font:12px/1.4 ui-monospace,monospace;display:grid;position:absolute;inset:0;transform:scaleX(-1)}.tracking-hud{top:var(--ui-pad);right:var(--ui-pad);min-width:180px;padding:var(--ui-pad);color:var(--ui-paper);background:var(--ui-asphalt);border:2px solid var(--ui-line);pointer-events:none;font:12px/1.45 ui-monospace,monospace;position:absolute}.tracking-hud h2,.tracking-hud p{margin:0}.tracking-hud section+section{margin-top:var(--ui-pad)}.tracking-hud h2{letter-spacing:.04em;text-transform:uppercase;color:var(--ui-paper);margin-bottom:4px;font-size:11px;font-weight:600}.tracking-hud .fps{color:var(--ui-muted);margin-bottom:4px}.tracking-hud .fps+p{margin-bottom:var(--ui-pad)}.race-pace,.race-map{bottom:var(--ui-pad);box-sizing:border-box;padding:var(--ui-pad);color:var(--ui-paper);background:var(--ui-asphalt);border:2px solid var(--ui-line);pointer-events:none;font:12px/1.4 ui-monospace,monospace;position:absolute}.race-lb-btn{top:var(--ui-pad);left:var(--ui-pad);padding:var(--ui-pad);color:var(--ui-paper);background:var(--ui-asphalt);border:2px solid var(--ui-line);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;appearance:none;font:12px/1.2 ui-monospace,monospace;position:absolute}.race-lb-btn:focus-visible{outline:2px solid var(--ui-paper);outline-offset:2px}.race-pace{left:var(--ui-pad);gap:var(--ui-pad);flex-direction:column;min-width:220px;display:flex}.race-map{right:var(--ui-pad);width:220px}.race-pace p{margin:0}.race-hud-speed{letter-spacing:.04em;font:700 40px/.92 ui-sans-serif,system-ui,sans-serif}.race-hud-speed span{letter-spacing:.14em;text-transform:uppercase;color:var(--ui-muted);font:400 11px/1.4 ui-monospace,monospace}.race-hud-row{justify-content:space-between;gap:var(--ui-pad);color:var(--ui-muted);letter-spacing:.08em;text-transform:uppercase;display:flex}.race-pace .warn{color:var(--ui-warn)}.race-hud-map{width:100%;height:180px;display:block}.race-hud-corner{color:var(--ui-paper);letter-spacing:.08em;text-transform:uppercase}.race-hud-corner span{color:var(--ui-muted)}.race-hud-slowing,.race-hud-attack{padding:var(--ui-pad);letter-spacing:.16em;text-align:center;text-transform:uppercase;margin:0;font-size:12px;font-weight:700}.race-hud-slowing{color:var(--ui-ink);background:var(--ui-warn)}.race-hud-attack{color:var(--ui-ink);background:var(--ui-grass)}.race-hud-boost{height:var(--ui-pad);background:var(--ui-asphalt-mid);overflow:hidden}.race-hud-boost-fill{background:var(--ui-grass);height:100%;transition:width 80ms linear}.game-overlay{padding:248px var(--ui-pad) var(--ui-pad);text-align:left;pointer-events:none;background:#1a1a1d47;place-content:start center;font:16px/1.35 ui-sans-serif,system-ui,sans-serif;display:grid;position:absolute;inset:0}.game-overlay-card{box-sizing:border-box;width:min(720px,100vw - 32px);color:var(--ui-paper);background:var(--ui-asphalt);border:4px solid var(--ui-paper);box-shadow:0 0 0 4px var(--ui-red), 10px 10px 0 var(--ui-ink);flex-direction:column;display:flex}.game-overlay-stripe{padding:var(--ui-pad);background:var(--ui-ink);border-bottom:4px solid var(--ui-red);gap:8px;display:flex}.game-overlay-head{background:var(--ui-ink);border-bottom:4px solid var(--ui-paper);flex-direction:column;gap:8px;padding:20px 24px 18px;display:flex}.game-overlay p{margin:0}.game-overlay-kicker{letter-spacing:.22em;text-transform:uppercase;color:var(--ui-warn);font:700 12px/1 ui-monospace,monospace}.game-overlay-title{letter-spacing:.12em;text-transform:uppercase;color:var(--ui-paper);text-shadow:4px 4px 0 var(--ui-red);margin:0;font:800 64px/.86 ui-sans-serif,system-ui,sans-serif}.game-overlay-steps{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.game-overlay-step{border-top:2px solid var(--ui-line);grid-template-columns:56px 1fr;align-items:start;gap:16px;padding:16px 24px;display:grid}.game-overlay-step.is-primary{background:var(--ui-asphalt-mid);box-shadow:inset 6px 0 0 var(--ui-red)}.game-overlay-step.is-grip.is-active{background:var(--ui-asphalt-mid);box-shadow:inset 6px 0 0 var(--ui-warn)}.game-overlay-step-num{letter-spacing:.04em;color:var(--ui-paper);text-shadow:3px 3px 0 var(--ui-red);font:800 40px/.9 ui-sans-serif,system-ui,sans-serif}.game-overlay-step.is-keys .game-overlay-step-num{text-shadow:3px 3px 0 var(--ui-ink);color:var(--ui-warn)}.game-overlay-step-copy{flex-direction:column;gap:6px;min-width:0;padding-top:4px;display:flex}.game-overlay-step-label{letter-spacing:.14em;text-transform:uppercase;flex-wrap:wrap;align-items:center;gap:8px;font:800 18px/1 ui-sans-serif,system-ui,sans-serif;display:flex}.game-overlay-step-badge{letter-spacing:.14em;text-transform:uppercase;color:var(--ui-paper);background:var(--ui-red);padding:4px 6px;font:700 10px/1 ui-monospace,monospace}.game-overlay-step-badge.is-backup{color:var(--ui-ink);background:var(--ui-warn)}.game-overlay-step-body{color:var(--ui-paper);font-size:16px;font-weight:500}.game-overlay-step.is-keys .game-overlay-step-body{color:var(--ui-muted)}.game-overlay-keycaps{gap:6px;margin-top:4px;display:flex}.game-overlay-keycaps span{width:28px;height:28px;color:var(--ui-ink);background:var(--ui-warn);border:2px solid var(--ui-paper);place-items:center;font:800 12px/1 ui-sans-serif,system-ui,sans-serif;display:grid}.game-overlay-hint{color:var(--ui-ink);background:var(--ui-grass);letter-spacing:.1em;text-transform:uppercase;border-top:4px solid var(--ui-paper);margin:0;padding:12px 24px;font:700 12px/1.3 ui-monospace,monospace}@media (width<=640px){.game-overlay{padding-top:232px}.game-overlay-title{font-size:48px}.game-overlay-step{grid-template-columns:40px 1fr;padding:14px 16px}.game-overlay-step-num{font-size:32px}.game-overlay-head{padding:16px}}.entry-screen,.entry-screen *{border-radius:0}.entry-screen{z-index:20;padding:var(--entry-pad);color:var(--entry-paper);background:linear-gradient(#a9c3e0e0 0%,#a9c3e09e 46%,#6cab51c7 46%,#6cab51db 62%,#2a2a2ee6 62%,#1a1a1df0 100%);align-content:start;justify-items:center;font:14px/1.4 ui-sans-serif,system-ui,sans-serif;display:grid;position:absolute;inset:0;overflow:hidden auto}.entry-card{gap:var(--entry-pad);box-sizing:border-box;width:min(520px,100%);padding:var(--entry-pad);background:var(--entry-asphalt);border:2px solid var(--entry-line);flex-direction:column;margin-block:auto;display:flex}.entry-brand{gap:var(--entry-pad);flex-direction:column;display:flex}.entry-mark{gap:8px;display:flex}.entry-brick{width:16px;height:16px;display:block}.entry-brick-red{background:var(--entry-red)}.entry-brick-white{background:var(--entry-paper)}.entry-brick-mint{background:var(--entry-grass)}.entry-brick-asphalt{background:var(--entry-asphalt-mid)}.entry-title{letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:40px;font-weight:700;line-height:.92}.entry-sub{color:#9aa3ad;letter-spacing:.16em;text-transform:uppercase;margin:0;font:11px/1.4 ui-monospace,monospace}.entry-avatar{aspect-ratio:1;background:var(--entry-asphalt-mid);border:2px solid var(--entry-line);width:min(160px,42%);margin-inline:auto;position:relative;overflow:hidden}.entry-cam{opacity:0;pointer-events:none;width:2px;height:2px;position:fixed;top:0;left:0}.entry-avatar-face{width:100%;height:100%;image-rendering:pixelated;will-change:background-position, transform;background-position:50%;background-repeat:no-repeat;background-size:500% 500%}.entry-avatar img{object-fit:cover;width:100%;height:100%;image-rendering:pixelated;display:block}.entry-avatar.is-atlas img{object-fit:contain;background:#0c0c0e}.entry-avatar-empty{grid-template-columns:1fr 1fr;width:64px;height:64px;margin:56px auto 0;display:grid}.entry-avatar-empty .entry-brick{width:100%;height:100%}.entry-avatar.is-generating{animation:.7s steps(2,jump-none) infinite entry-pulse}.entry-picker{margin:0 calc(var(--entry-pad) * -1);padding:0 var(--entry-pad);scrollbar-width:thin;scrollbar-color:var(--entry-line) transparent;overflow:auto hidden}.entry-picker-track{gap:10px;width:max-content;padding:4px 2px 8px;display:flex}.entry-picker-cell{box-sizing:border-box;width:56px;height:56px;color:var(--entry-paper);background:var(--entry-ink);border:2px solid var(--entry-line);cursor:pointer;flex:none;padding:0;position:relative}.entry-picker-cell.is-selected{border-color:var(--entry-paper);box-shadow:inset 0 0 0 2px var(--entry-asphalt), inset 0 0 0 4px var(--entry-paper)}.entry-picker-cell.is-busy{animation:.7s steps(2,jump-none) infinite entry-pulse}.entry-picker-face{width:100%;height:100%;image-rendering:pixelated;background-position:50%;background-repeat:no-repeat;background-size:500% 500%;display:block}.entry-picker-fallback{color:#9aa3ad;place-items:center;width:100%;height:100%;font:700 14px/1 ui-monospace,monospace;display:grid}.entry-picker-name{color:var(--entry-paper);letter-spacing:.04em;text-transform:uppercase;flex-wrap:wrap;align-items:baseline;gap:8px;margin:0;font:700 15px/1.2 ui-sans-serif,system-ui,sans-serif;display:flex}.entry-picker-number{color:var(--entry-red)}.entry-picker-team{color:#9aa3ad;letter-spacing:.12em;font-size:12px;font-weight:500}.entry-field{flex-direction:column;gap:8px;margin:0;display:flex}.entry-field span{color:#9aa3ad;letter-spacing:.14em;text-transform:uppercase;font:11px/1.4 ui-monospace,monospace}.entry-field input{box-sizing:border-box;width:100%;padding:var(--entry-pad);color:var(--entry-paper);background:var(--entry-ink);border:2px solid var(--entry-line);font:inherit;appearance:none;outline:none}.entry-field input::placeholder{color:#5b636e}.entry-field input:focus{border-color:var(--entry-paper)}.entry-actions{gap:var(--entry-pad);grid-template-columns:1fr;display:grid}.entry-btn{padding:var(--entry-pad);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;appearance:none;font:12px/1.2 ui-monospace,monospace}.entry-btn-ghost{color:var(--entry-paper);border:2px solid var(--entry-grass);background:0 0}.entry-btn-start{color:#fff;background:var(--entry-red);border:2px solid var(--entry-red)}.entry-btn:disabled{cursor:not-allowed;color:#6d737c;background:var(--entry-asphalt-mid);border-color:var(--entry-line)}.entry-btn:focus-visible,.entry-field input:focus-visible{outline:2px solid var(--entry-paper);outline-offset:2px}.entry-status{padding:var(--entry-pad);color:#9aa3ad;background:var(--entry-asphalt-mid);margin:0;font:11px/1.4 ui-monospace,monospace}.entry-status.is-ok{color:#c8e6b8}.entry-status.is-warn{color:#ffd18a}@keyframes entry-pulse{0%{opacity:1}to{opacity:.55}}.ok{color:#c8e6b8}.off{color:#666}.lb-screen{z-index:30;padding:var(--ui-pad);color:var(--ui-paper);background:linear-gradient(#a9c3e0e0 0%,#a9c3e09e 46%,#6cab51c7 46%,#6cab51db 62%,#2a2a2eeb 62%,#1a1a1df5 100%);font:14px/1.4 ui-sans-serif,system-ui,sans-serif;display:grid;position:absolute;inset:0}.lb-panel{gap:var(--ui-pad);box-sizing:border-box;width:min(920px,100%);height:100%;padding:var(--ui-pad);background:var(--ui-asphalt);border:2px solid var(--ui-line);grid-template-rows:auto auto auto minmax(0,1fr) auto;margin:0 auto;display:grid}.lb-stripe{gap:8px;display:flex}.lb-head{justify-content:space-between;align-items:flex-start;gap:var(--ui-pad);display:flex}.lb-head-copy{flex-direction:column;gap:8px;min-width:0;display:flex}.lb-title{letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:clamp(40px,8vw,72px);font-weight:700;line-height:.92}.lb-track{color:var(--ui-muted);letter-spacing:.16em;text-transform:uppercase;margin:0;font:11px/1.4 ui-monospace,monospace}.lb-close{flex-shrink:0}.lb-cols{gap:var(--ui-pad);color:var(--ui-muted);letter-spacing:.16em;text-transform:uppercase;grid-template-columns:48px 1fr auto;padding:0 16px;font:11px/1.2 ui-monospace,monospace;display:grid}.lb-empty{padding:var(--ui-pad);color:var(--ui-muted);background:var(--ui-asphalt-mid);letter-spacing:.08em;text-transform:uppercase;margin:0;font:11px/1.4 ui-monospace,monospace}.lb-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex;overflow:auto}.lb-row{gap:var(--ui-pad);background:var(--ui-asphalt-mid);grid-template-columns:48px 36px minmax(0,1fr) auto;align-items:center;padding:14px 16px;display:grid}.lb-row.is-you{color:var(--ui-ink);background:var(--ui-paper)}.lb-rank,.lb-time{letter-spacing:.08em;font:14px/1.2 ui-monospace,monospace}.lb-time{color:var(--ui-warn);font-variant-numeric:tabular-nums}.lb-row.is-you .lb-time{color:var(--ui-red)}.lb-name{letter-spacing:.06em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;font-size:18px;font-weight:700;overflow:hidden}.lb-face{object-fit:cover;background:var(--ui-ink);width:36px;height:36px;image-rendering:pixelated;display:block}.lb-face-empty{background:var(--ui-line)}.lb-foot{justify-content:space-between;align-items:baseline;gap:var(--ui-pad);display:flex}.lb-count{color:var(--ui-muted);letter-spacing:.12em;text-transform:uppercase;margin:0;font:11px/1.4 ui-monospace,monospace}@media (width<=640px){.lb-panel{padding:12px}.lb-title{font-size:40px}.lb-cols{grid-template-columns:40px 1fr auto;padding:0 12px}.lb-row{grid-template-columns:40px 28px minmax(0,1fr) auto;gap:12px;padding:12px}.lb-face{width:28px;height:28px}.lb-name{font-size:15px}.lb-foot{flex-direction:column;align-items:flex-start}}
