:root{--yellow:#ffd400;--orange:#ff7a00;--red:#ff2a2a;--blue:#1d6fff;--ink:#0b0d14;--panel:#080a148c}*{box-sizing:border-box}html,body{color:#fff;-webkit-user-select:none;user-select:none;touch-action:none;overscroll-behavior:none;-webkit-touch-callout:none;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;background:#000;height:100%;margin:0;font-family:Russo One,system-ui,sans-serif;overflow:hidden}#app,canvas{width:100%;height:100%;display:block}.hud{pointer-events:none;position:fixed;inset:0}.hud.hidden-hud>:not(.overlay):not(.hud-messages){opacity:0}.hud-tl{position:absolute;top:18px;left:22px}.hud-pos{text-shadow:3px 3px 0 var(--ink);font-style:italic;line-height:.9}.hud-pos .label{letter-spacing:2px;color:var(--yellow);font-size:16px;display:block}.hud-pos b{font-size:72px;font-weight:400}.hud-pos small{opacity:.85;font-size:30px}.hud-pos.pop b{animation:.4s ease-out pop;display:inline-block}@keyframes pop{0%{color:var(--yellow);transform:scale(1.6)}to{transform:scale(1)}}.hud-standings{margin-top:8px;font-size:13px}.hud-standings .row{background:var(--panel);border-left:3px solid #0000;width:190px;margin-bottom:2px;padding:2px 10px 2px 4px;font-size:12px}.hud-standings .row span{text-align:center;width:22px;color:var(--yellow);display:inline-block}.hud-standings .row.me{border-left-color:var(--red);background:#a014148c}.hud-standings .row.out{opacity:.5;text-decoration:line-through}.hud-standings em{color:var(--red);font-size:10px;font-style:normal;text-decoration:none}.hud-tr{text-align:right;font-style:italic;position:absolute;top:18px;right:22px}.stage-name{letter-spacing:1px;background:linear-gradient(90deg, transparent, var(--blue));padding:6px 12px;font-size:15px}.stage-info{text-shadow:2px 2px 0 var(--ink);margin-top:6px;font-size:26px}.stage-info span{margin-left:18px}.hud-br{text-align:right;width:220px;position:absolute;bottom:18px;right:26px}.gauge{width:220px;position:absolute;bottom:26px;right:0}.gauge path{fill:none;stroke-width:14px;stroke-linecap:round}.gauge-bg{stroke:#ffffff1f}.gauge-fg{stroke:var(--orange);filter:drop-shadow(0 0 6px var(--orange));transition:stroke .2s}.gauge-fg.nitro{stroke:#36c6ff;filter:drop-shadow(0 0 10px #36c6ff)}.hud-speed{text-shadow:4px 4px 0 var(--ink);padding-right:8px;font-size:76px;font-style:italic;line-height:1;position:relative}.hud-unit{letter-spacing:2px;color:var(--yellow);padding-right:10px;font-size:16px;position:relative}.hud-bl{align-items:flex-end;gap:14px;display:flex;position:absolute;bottom:20px;left:22px}.dmg{width:62px;filter:drop-shadow(2px 2px 0 var(--ink))}.dmg rect{stroke:#0009;stroke-width:2px;transition:fill .3s}.dmg .dmg-cabin{fill:#ffffff26}.dmg-label{letter-spacing:2px;color:var(--yellow);font-size:12px}.dmg-pct{text-shadow:2px 2px 0 var(--ink);font-size:28px;font-style:italic}.dmg-pct.critical{color:var(--red);animation:.5s infinite alternate blink}@keyframes blink{to{opacity:.4}}.boost{background:#00000080;border:2px solid #fff9;width:210px;height:18px;margin-top:8px;position:relative;overflow:hidden;transform:skew(-18deg)}.boost-label{z-index:2;letter-spacing:2px;font-size:11px;line-height:14px;position:absolute;top:0;left:8px}.boost-fill{background:linear-gradient(90deg,#0a5cff,#36c6ff);width:0;height:100%;transition:width .1s}.boost-fill.full{background:linear-gradient(90deg,#36c6ff,#b4f0ff);box-shadow:0 0 12px #36c6ff}.boost-fill.active{background:linear-gradient(90deg,#fff,#36c6ff)}.rams{align-items:center;gap:6px;margin-top:8px;font-size:12px;display:flex}.ram-label{letter-spacing:2px;opacity:.7}.ram-ind{opacity:.35;border:2px solid #ffffff59;place-items:center;min-width:26px;height:26px;padding:0 4px;display:grid}.ram-ind.ready{opacity:1;border-color:var(--yellow);color:var(--yellow);box-shadow:0 0 8px #ffd40099}.ram-ind.target{background:var(--yellow);color:var(--ink);animation:.4s infinite alternate ram-pulse}@keyframes ram-pulse{to{transform:scale(1.18);box-shadow:0 0 16px #ffd400f2}}.side-warn{color:var(--yellow);text-shadow:2px 2px 0 var(--ink);opacity:0;pointer-events:none;font-family:Bangers,sans-serif;font-size:34px;transition:opacity .15s;position:absolute;top:60%;transform:translateY(-50%)}.side-warn.l{left:18px}.side-warn.r{right:18px}.side-warn.on{opacity:.9}.look-back{letter-spacing:2px;background:var(--panel);padding:3px 10px;font-family:Russo One,sans-serif;font-size:13px;display:none;position:absolute;top:90px;left:50%;transform:translate(-50%)}.look-back.on{display:block}.restart-hold{text-align:center;letter-spacing:1px;background:var(--panel);width:220px;padding:6px 10px;font-family:Russo One,sans-serif;font-size:13px;display:none;position:absolute;bottom:40%;left:50%;transform:translate(-50%)}.restart-hold.on{display:block}.restart-hold i{background:#fff3;height:4px;margin-top:5px;display:block}.restart-hold b{background:var(--yellow);width:0;height:100%;display:block}.hud-messages{flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute;top:24%;left:0;right:0}.msg{letter-spacing:2px;text-shadow:3px 3px 0 var(--ink), -1px -1px 0 var(--ink);font-family:Bangers,Russo One,sans-serif;font-size:44px;font-style:italic;animation:1.4s ease-out forwards msg}.msg.big{font-size:84px}.msg.taunt{letter-spacing:0;color:#fff;text-shadow:2px 2px 0 var(--ink);background:#080a1499;padding:6px 14px;font-family:Russo One,sans-serif;font-size:22px;font-style:normal;animation-name:taunt}.msg.taunt b{color:var(--yellow);margin-right:6px;font-weight:400}@keyframes taunt{0%{opacity:0;transform:translateY(10px)}10%,85%{opacity:1;transform:none}to{opacity:0}}@keyframes msg{0%{opacity:0;transform:scale(2.2)rotate(-4deg)}12%{opacity:1;transform:scale(1)rotate(-4deg)}80%{opacity:1}to{opacity:0;transform:scale(1)translateY(-30px)rotate(-4deg)}}.countdown{color:var(--yellow);text-shadow:6px 6px 0 var(--ink);font-family:Bangers,sans-serif;font-size:160px;animation:.9s ease-out forwards count;position:absolute;top:0}.countdown.go{color:#4dff6a;font-size:130px}@keyframes count{0%{opacity:0;transform:scale(2.5)}20%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.hud-help{opacity:1;background:var(--panel);text-align:center;width:max-content;max-width:min(1100px,100vw - 32px);padding:4px 12px;font-family:system-ui,sans-serif;font-size:11px;transition:opacity 1s;position:absolute;bottom:6px;left:50%;transform:translate(-50%)}.hud-top{flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.hud-wanted{letter-spacing:4px;opacity:.25;text-shadow:2px 2px 0 var(--ink);font-size:30px;transition:opacity .3s}.hud-wanted.active{opacity:1}.hud-wanted span{color:#ffffff59}.hud-wanted span.on{color:#4f8bff;text-shadow:0 0 10px #4f8bff, 2px 2px 0 var(--ink);animation:.6s infinite alternate star}@keyframes star{to{color:#ff3a3a;text-shadow:0 0 10px #ff3a3a, 2px 2px 0 var(--ink)}}.bust{background:#00000080;border:2px solid #ff3a3a;width:200px;height:14px;display:none;position:relative;transform:skew(-18deg)}.bust.show{display:block}.bust span{text-align:center;letter-spacing:3px;z-index:2;font-size:10px;line-height:10px;position:absolute;inset:0}.bust-fill{background:#ff3a3a;width:0;height:100%}.police-glow{pointer-events:none;opacity:0;transition:opacity .4s;position:absolute;inset:0}.police-glow.on{opacity:1;animation:.5s steps(2,end) infinite police}@keyframes police{0%{box-shadow:inset 70px 0 80px -60px #285affd9,inset -70px 0 80px -60px #ff1e1e00}to{box-shadow:inset 70px 0 80px -60px #285aff00,inset -70px 0 80px -60px #ff1e1ed9}}.cam-flash{opacity:0;pointer-events:none;background:#fff;position:absolute;inset:0}.cam-flash.go{animation:.45s ease-out camflash}@keyframes camflash{0%{opacity:.9}to{opacity:0}}.now-playing{opacity:0;white-space:nowrap;background:linear-gradient(90deg,#ff3c00d9,#ffb400d9);padding:8px 18px;font-size:18px;font-style:italic;position:absolute;bottom:120px;left:50%;transform:translate(-50%)}.now-playing span{letter-spacing:3px;opacity:.85;font-size:10px;font-style:normal;display:block}.now-playing.show{animation:4.5s ease-out forwards nowplaying}@keyframes nowplaying{0%{opacity:0;transform:translate(-50%,20px)}10%,80%{opacity:1;transform:translate(-50%)}to{opacity:0}}.overlay td em{color:#ff9a3c;font-size:13px;font-style:normal}.overlay{text-align:center;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;display:none;position:absolute;inset:0}.overlay.show{background:radial-gradient(#0a0a1e8c,#000000d9);display:flex}.logo{font-family:Bangers,sans-serif;font-style:italic;line-height:.85;transform:rotate(-5deg)}.logo .a35{background:linear-gradient(#fff36b,#ff8a00 55%,#ff2a00);color:#0000;filter:drop-shadow(6px 6px #1d3cff);-webkit-background-clip:text;background-clip:text;font-size:170px;display:block}.logo .racer{color:#e8e8f0;filter:drop-shadow(5px 5px #c4161c);letter-spacing:6px;font-size:110px;display:block}.overlay .sub{color:var(--yellow);margin-top:26px;font-size:18px}.overlay .press{margin-top:26px;font-size:22px;animation:.7s infinite alternate blink}.overlay .controls{text-align:left;grid-template-columns:repeat(3,auto);gap:6px 26px;margin-top:26px;font-family:system-ui,sans-serif;font-size:14px;display:grid}.overlay .controls b{color:var(--yellow);margin-right:6px;font-family:Russo One,sans-serif;font-weight:400}.overlay .tip{opacity:.8;max-width:560px;margin-top:22px;font-family:system-ui,sans-serif;font-size:14px}.big-title{color:var(--yellow);text-shadow:6px 6px #c4161c;font-family:Bangers,sans-serif;font-size:120px;font-style:italic}.overlay table{border-collapse:collapse;min-width:560px;margin-top:20px;font-size:18px}.overlay th{letter-spacing:2px;color:var(--yellow);text-align:left;padding:6px 12px;font-size:12px}.overlay td{background:var(--panel);text-align:left;border-bottom:2px solid #0006;padding:8px 12px}.overlay tr.me td{background:#aa1414b3}.lil-gui.root{z-index:10}@media (max-width:720px){.hud-pos b{font-size:48px}.hud-standings{display:none}.hud-speed{font-size:48px}.gauge,.hud-br{width:150px}.boost{width:130px}.logo .a35{font-size:100px}.logo .racer{font-size:64px}.overlay .controls{grid-template-columns:repeat(2,auto)}.hud-help{display:none}.overlay table{min-width:0;font-size:13px}}#loading{letter-spacing:4px;color:#e8e8f0;background:#0b0d14;flex-direction:column;justify-content:center;align-items:center;font-family:Bangers,sans-serif;font-size:64px;display:flex;position:fixed;inset:0}#loading b{color:#ff8a00;font-weight:400}#loading span{letter-spacing:2px;color:#ffd400;margin-top:10px;font-family:Russo One,sans-serif;font-size:16px;animation:.7s infinite alternate blink}.hud-clock{text-align:center;text-shadow:3px 3px 0 var(--ink);font-style:italic;line-height:.9}.hud-clock span{letter-spacing:3px;color:var(--yellow);font-size:13px;display:block}.hud-clock b{font-variant-numeric:tabular-nums;font-size:64px;font-weight:400}.hud-clock.low b{color:var(--red);animation:.4s infinite alternate blink}@media (max-width:720px){.hud-clock b{font-size:40px}}.menu{z-index:5;color:#fff;display:none;position:fixed;inset:0}.menu.show{text-align:center;touch-action:pan-y;overscroll-behavior:contain;background:radial-gradient(#0a0a1e99,#000000e0);flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:24px 16px;display:flex;overflow-y:auto}.menu.show.title,.menu.show.main,.menu.show.cars{text-align:left;background:linear-gradient(90deg,#05060eeb 0%,#05060eb3 38%,#05060e00 70%);align-items:flex-start;padding-left:max(24px,6vw)}.menu .logo{transform-origin:0;transform:rotate(-5deg)}.menu.title .logo .a35,.menu.main .logo .a35{font-size:130px}.menu.title .logo .racer,.menu.main .logo .racer{font-size:84px}.menu .sub{color:var(--yellow);font-size:18px}.menu .sub b{color:#fff;font-weight:400}.menu .press{margin-top:10px;font-size:22px;animation:.7s infinite alternate blink}.menu-title{letter-spacing:2px;color:var(--yellow);text-shadow:4px 4px #c4161c;font-family:Bangers,sans-serif;font-size:56px;font-style:italic}.menu-items{flex-direction:column;gap:8px;min-width:260px;display:flex}.menu-items button{font:inherit;text-align:left;color:#fff;cursor:pointer;background:#ffffff0f;border:0;border-left:4px solid #0000;padding:10px 18px;font-size:22px;font-style:italic;transition:background .15s,padding .15s;transform:skew(-8deg)}.menu-items button.sel,.menu-items button:hover{background:linear-gradient(90deg, var(--orange), #ff8a0026);border-left-color:var(--yellow);padding-left:28px}.menu-items button:focus-visible{outline:2px solid var(--yellow)}.menu.keys .menu-items{gap:4px;min-width:340px}.menu.keys .menu-items button{justify-content:space-between;gap:24px;padding-top:6px;padding-bottom:6px;font-size:15px;display:flex}.menu.keys .menu-items .key{color:var(--yellow);font-family:Russo One,sans-serif}.menu .hint button{font:inherit;cursor:pointer;margin-left:8px;padding:2px 10px}.menu .hint,.menu .tip{opacity:.75;max-width:560px;font-family:system-ui,sans-serif;font-size:13px}.menu .controls{text-align:left;grid-template-columns:repeat(2,auto);gap:6px 26px;font-family:system-ui,sans-serif;font-size:15px;display:grid}.menu .controls b{color:var(--yellow);margin-right:6px;font-family:Russo One,sans-serif;font-weight:400}.menu table{border-collapse:collapse;min-width:min(560px,100%);font-size:17px}.menu th{letter-spacing:2px;color:var(--yellow);text-align:left;padding:6px 12px;font-size:12px}.menu td{background:var(--panel);text-align:left;border-bottom:2px solid #0006;padding:7px 12px}.menu tr.me td{background:#aa1414b3}.menu td em{color:#ff9a3c;font-size:13px;font-style:normal}.car-pick{align-items:center;gap:14px;display:flex}.car-pick .arrow{font:inherit;color:var(--yellow);cursor:pointer;background:0 0;border:0;padding:0 6px;font-size:42px}.car-card{gap:8px;width:min(340px,70vw);display:grid}.car-name{letter-spacing:1px;font-family:Bangers,sans-serif;font-size:40px;font-style:italic}.car-owner{letter-spacing:1px;color:var(--yellow);margin-bottom:6px;font-size:13px}.stat{letter-spacing:1px;grid-template-columns:110px 1fr;align-items:center;gap:10px;font-size:13px;display:grid}.stat i{background:#ffffff1f;height:10px;display:block;transform:skew(-18deg)}.stat b{background:linear-gradient(90deg, var(--orange), var(--yellow));height:100%;display:block}.initials{gap:18px;margin:10px 0;display:flex}.initials .slot{justify-items:center;gap:4px;display:grid}.initials .slot span{text-align:center;cursor:pointer;border-bottom:4px solid #ffffff4d;width:72px;font-family:Bangers,sans-serif;font-size:84px}.initials .slot.sel span{color:var(--yellow);border-color:var(--yellow);animation:.6s infinite alternate blink}.initials button,.menu .ok{font:inherit;color:var(--yellow);cursor:pointer;background:#ffffff14;border:0;padding:6px 16px;font-size:18px}@media (max-width:720px){.menu.title .logo .a35,.menu.main .logo .a35{font-size:80px}.menu.title .logo .racer,.menu.main .logo .racer{font-size:52px}.menu-title{font-size:36px}.menu-items button{padding:8px 14px;font-size:18px}.menu.show.title,.menu.show.main,.menu.show.cars{background:linear-gradient(90deg,#05060ee6,#05060e73)}.menu table{font-size:12px}.menu td,.menu th{padding:4px 6px}}.touch{--pad-btn:76px;--pad-cell:calc(var(--pad-btn) * .78);pointer-events:none;z-index:4;-webkit-user-select:none;user-select:none;touch-action:none;position:fixed;inset:0}.touch button{pointer-events:auto;font:inherit;color:#fff;touch-action:none;-webkit-tap-highlight-color:transparent;letter-spacing:1px;background:#0a0c1673;border:2px solid #ffffff59;border-radius:50%}.touch button.on{border-color:var(--yellow);background:#ff8a008c}.touch .t-left{gap:14px;display:flex;position:absolute;bottom:24px;left:18px}.touch .t-left button{width:84px;height:84px;font-size:30px}.touch .t-gas{bottom:24px;right:calc(18px + 3 * var(--pad-cell) + 14px);border-radius:22px;width:92px;height:116px;font-size:19px;position:absolute}.touch.autogas .t-gas{display:none}.touch .t-pad{grid-template:repeat(3, var(--pad-cell)) / repeat(3, var(--pad-cell));pointer-events:none;place-items:center;display:grid;position:absolute;bottom:24px;right:18px}.touch .t-pad button{width:var(--pad-btn);height:var(--pad-btn);letter-spacing:0;font-size:13px}.touch .t-pad .t-n{grid-area:1/2}.touch .t-pad .t-w{grid-area:2/1}.touch .t-pad .t-e{grid-area:2/3}.touch .t-pad .t-s{border-color:#ffd80099;grid-area:3/2;font-size:14px}.touch .t-pad .t-slow{width:calc(var(--pad-btn) * .62);height:calc(var(--pad-btn) * .62);grid-area:1/1;place-self:start;font-size:9px}.touch .t-pause{width:46px;height:46px;font-size:14px;position:absolute;top:50%;right:14px;transform:translateY(-50%)}.touch .t-reset{width:46px;height:46px;font-size:22px;position:absolute;top:calc(50% + 38px);right:14px}.touch .t-auto{letter-spacing:0;width:46px;height:46px;font-size:9px;line-height:1.1;position:absolute;top:calc(50% - 96px);right:14px}@media (max-width:720px){.touch .t-left button{width:70px;height:70px}}body:has(.touch:not([hidden])) .hud-help{display:none}body:has(.touch:not([hidden])) .hud-bl{bottom:130px}body:has(.touch:not([hidden])) .hud-br{bottom:220px}@media (max-height:520px){.hud-tl{top:8px;left:12px}.hud-pos b{font-size:40px}.hud-pos small{font-size:18px}.hud-standings{display:none}.hud-tr{top:8px;right:12px}.stage-name{padding:4px 8px;font-size:10px}.stage-info{font-size:16px}.hud-top{top:4px}.hud-clock b{font-size:38px}.hud-clock span{font-size:10px}.hud-wanted{font-size:18px}.hud-speed{font-size:40px}.hud-unit{font-size:11px}.gauge{width:120px;bottom:16px}.hud-br{width:130px;bottom:10px;right:14px}.hud-bl{gap:8px;bottom:10px;left:12px}.dmg{width:36px}.dmg-pct{font-size:18px}.boost{width:110px;height:12px}.ram-ind{min-width:20px;height:20px;padding:0 3px;font-size:10px}.hud-messages{top:22%}.msg{font-size:26px}.msg.big{font-size:46px}.msg.taunt{font-size:14px}.countdown{font-size:90px}.countdown.go{font-size:70px}.hud-help{display:none}.now-playing{font-size:13px;bottom:70px}.hud-reset{padding:6px 14px;font-size:14px;bottom:64px}.touch .t-pause{top:calc(50% - 30px)}.touch .t-reset{width:40px;height:40px;font-size:18px;top:calc(50% + 2px)}.touch .t-auto{width:40px;height:40px;font-size:8px;top:calc(50% - 112px)}body:has(.touch:not([hidden])) .hud-bl{flex-direction:row;top:64px;bottom:auto}body:has(.touch:not([hidden])) .hud-br{top:58px;bottom:auto;right:64px}body:has(.touch:not([hidden])) .gauge{display:none}.touch .t-left button{width:64px;height:64px;font-size:24px}.touch{--pad-btn:60px}.touch .t-pad{bottom:14px}.touch .t-pad button{font-size:11px}.touch .t-pad .t-s{font-size:12px}.touch .t-pad .t-slow{font-size:8px}.touch .t-gas{width:74px;height:92px;font-size:16px;bottom:14px}.menu.title .logo .a35,.menu.main .logo .a35{font-size:64px}.menu.title .logo .racer,.menu.main .logo .racer{font-size:42px}.menu-items button{padding:6px 12px;font-size:16px}.menu.show{gap:8px;padding-block:10px}.big-title{font-size:54px}}.menu-items button.off{opacity:.45}.menu-items button em{color:#4dff6a;font-style:normal}.car-card.locked .car-name{opacity:.55}.lock{color:#ff9a3c;margin-top:6px;font-size:14px}.unlock{color:#4dff6a;font-size:18px;animation:.6s infinite alternate blink}.hud-reset{z-index:3;pointer-events:auto;font:inherit;color:#fff;border:2px solid var(--yellow);cursor:pointer;background:#ff8a00d9;border-radius:999px;padding:8px 18px;font-size:18px;animation:.6s infinite alternate blink;position:fixed;bottom:120px;left:50%;transform:translate(-50%)}.hud-reset[hidden]{display:none}body:has(.touch:not([hidden])) .hud-reset{top:34%;bottom:auto}.bullet-fill{background:linear-gradient(90deg,#7a2cff,#d6a8ff);width:100%;height:100%;transition:width .1s linear}.bullet-fill.full{box-shadow:0 0 12px #b57bff}.bullet-fill.active{animation:.25s infinite alternate blink}.bullet-tint{pointer-events:none;opacity:0;mix-blend-mode:screen;background:radial-gradient(#aa78ff00 45%,#8250ff57 82%,#5a28dc94 100%);transition:opacity .25s;position:fixed;inset:0}.bullet-tint.on{opacity:1}
