*{box-sizing:border-box}html,body,#root{background:#0b0e13;width:100%;height:100%;margin:0;padding:0;overflow:hidden}body{font-family:system-ui,Segoe UI,sans-serif}.app{background:#0b0e13;position:fixed;inset:0;overflow:hidden}.app canvas{touch-action:none;width:100%;height:100%;display:block}.hud-speedo{pointer-events:none;-webkit-user-select:none;user-select:none;place-items:center;width:150px;height:150px;font-family:Segoe UI,system-ui,sans-serif;display:grid;position:absolute;bottom:20px;right:20px}.gauge{background:radial-gradient(circle,#1b212c 60%,#0c0f15 100%);border:2px solid #2c3543;border-radius:50%;position:absolute;inset:0;box-shadow:0 6px 20px #00000080}.gauge-needle{transform-origin:bottom;background:linear-gradient(#ff5a4d,#ff8c42);border-radius:2px;width:3px;height:56px;margin-left:-1.5px;transition:transform 80ms linear;position:absolute;bottom:50%;left:50%}.gauge-center{background:#ff5a4d;border:2px solid #11161d;border-radius:50%;width:14px;height:14px;margin:-7px 0 0 -7px;position:absolute;top:50%;left:50%}.gauge-readout{text-align:center;color:#eef2f7;margin-top:56px;position:relative}.gauge-readout span{letter-spacing:.5px;font-size:26px;font-weight:700}.gauge-readout small{color:#95a1b2;margin-top:-2px;font-size:11px;display:block}.minimap{border:2px solid #2c3543;border-radius:10px;line-height:0;position:absolute;top:20px;right:20px;overflow:hidden;box-shadow:0 6px 20px #00000080}.race-panel{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#edf4ff;pointer-events:none;-webkit-user-select:none;user-select:none;background:#080d16b8;border:1px solid #2c3543;border-radius:10px;min-width:190px;padding:12px 14px;font-family:Segoe UI,system-ui,sans-serif;position:absolute;top:20px;left:20px;box-shadow:0 10px 28px #00000073}.race-panel-label{letter-spacing:2px;color:#8fd0ff;font-size:11px;font-weight:800}.race-time{margin-top:4px;font-size:28px;font-weight:800;line-height:1.05}.race-time span{color:#8c9bae;margin-left:6px;font-size:13px;font-weight:600}.race-checkpoint{color:#ffd166;margin-top:6px;font-size:12px;font-weight:700}.race-entry-hold{color:#f8fafc;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:30;background:#060e1ac7;border:1px solid #7dd3fc7a;border-radius:12px;width:min(340px,82vw);padding:11px 14px 13px;font-family:Segoe UI,system-ui,sans-serif;position:absolute;bottom:112px;left:50%;transform:translate(-50%);box-shadow:0 14px 34px #00000061,0 0 26px #38bdf838}.race-entry-copy{justify-content:space-between;align-items:center;gap:16px;font-size:12px;line-height:1;display:flex}.race-entry-copy strong{color:#93c5fd;letter-spacing:1.8px;font-size:11px}.race-entry-copy span{text-align:right;color:#facc15;font-variant-numeric:tabular-nums;min-width:42px;font-weight:800}.race-entry-bar{background:#94a3b833;border-radius:999px;height:9px;margin-top:9px;position:relative;overflow:hidden}.race-entry-bar span{border-radius:inherit;background:linear-gradient(90deg,#38bdf8,#facc15);height:100%;transition:width 80ms linear;display:block;box-shadow:0 0 18px #38bdf88c}.race-message{color:#f8fafc;text-align:center;pointer-events:none;-webkit-user-select:none;user-select:none;text-shadow:0 2px 10px #000000bf;background:#080d16c7;border:1px solid #8fd0ff7a;border-radius:12px;max-width:min(520px,88vw);padding:13px 20px;font-family:Segoe UI,system-ui,sans-serif;font-size:28px;font-weight:900;position:absolute;top:22%;left:50%;transform:translate(-50%);box-shadow:0 0 28px #3a86ff47}.app.touch .race-panel{transform-origin:0 0;min-width:160px;padding:10px 12px;top:166px;left:12px;transform:scale(.86)}.app.touch .race-time{font-size:24px}.app.touch .race-message{font-size:22px;top:16%}.app.touch .race-entry-hold{bottom:calc(178px + env(safe-area-inset-bottom,0px));width:min(312px,78vw);padding:10px 12px 12px}@media (width<=520px){.race-entry-hold{width:min(300px,78vw);bottom:138px}.race-entry-copy{gap:10px}}.controls{flex-direction:column;gap:8px;font-family:Segoe UI,system-ui,sans-serif;display:flex;position:absolute;bottom:20px;left:20px}.control-group{gap:6px;display:flex}.race-enter{color:#06121f;cursor:pointer;background:linear-gradient(135deg,#7dd3fc,#38bdf8);border:1px solid #bae6fd;border-radius:9px;align-self:flex-start;align-items:center;gap:6px;padding:9px 16px;font-family:inherit;font-size:14px;font-weight:700;transition:transform .12s,box-shadow .15s;display:flex;box-shadow:0 4px 16px #38bdf859}.race-enter:hover{transform:translateY(-1px);box-shadow:0 6px 20px #38bdf880}.race-enter:active{transform:translateY(0)}.controls button{color:#d7deea;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#161c26d9;border:1px solid #303a49;border-radius:8px;padding:8px 12px;font-size:13px;transition:background .15s,border-color .15s}.controls button:hover{background:#263040e6}.controls button.active{color:#fff;background:#2563eb;border-color:#3b82f6}.hint{color:#8d99ab;background:#0b0e138c;border-radius:6px;max-width:360px;margin-top:2px;padding:4px 8px;font-size:12px}.mobile-controls{pointer-events:none;z-index:20;position:absolute;inset:0}.steer-pad,.pedal-pad{background:radial-gradient(#080c1466,#080c1400 72%);border-radius:28px;align-items:flex-end;gap:16px;display:flex;position:absolute;bottom:24px}.steer-pad{left:24px}.pedal-pad{right:24px}.touch-btn{pointer-events:auto;color:#eef3fb;-webkit-user-select:none;user-select:none;touch-action:none;-webkit-tap-highlight-color:transparent;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:radial-gradient(circle at 50% 32%,#ffffff29,#fff0 60%),linear-gradient(160deg,#2832449e,#0e131c9e);border:1px solid #ffffff38;border-radius:50%;place-items:center;width:72px;height:72px;font-size:28px;line-height:1;transition:transform .12s,box-shadow .12s,border-color .12s;display:grid;position:relative;box-shadow:0 6px 18px #00000073,inset 0 1px 1px #ffffff40,inset 0 -6px 12px #00000059}.touch-btn.pressed{border-color:#7dd3ffe6;transform:scale(.9);box-shadow:0 0 18px #50aaffd9,0 0 36px #50aaff73,inset 0 1px 2px #fff6}.btn-up{color:#eafff2;background:radial-gradient(circle at 50% 30%,#78ffb438,#fff0 60%),linear-gradient(160deg,#1a78489e,#0a281aa8);border-color:#56e69666;width:84px;height:84px;font-size:34px}.btn-up.pressed{border-color:#56e696f2;box-shadow:0 0 18px #3cdc82d9,0 0 36px #3cdc8266,inset 0 1px 2px #fff6}.btn-down{color:#ffeae6;background:radial-gradient(circle at 50% 30%,#ff967833,#fff0 60%),linear-gradient(160deg,#96382c99,#2e0e0ca8);border-color:#ff786061}.btn-brake-hand{width:60px;height:60px;font-size:24px}.app.touch .hud-speedo{transform-origin:100% 100%;bottom:168px;left:auto;right:12px;transform:scale(.68)}.app.touch .controls{top:12px;bottom:auto;left:12px}.app.touch .hint{display:none}.app.touch .minimap{transform-origin:100% 0;top:12px;right:12px;transform:scale(.82)}.boost-meter{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none;-webkit-user-select:none;user-select:none;background:#0d111799;border:1px solid #2c3543;border-radius:10px;flex-direction:column;align-items:center;gap:5px;padding:8px 14px;font-family:Segoe UI,system-ui,sans-serif;transition:box-shadow .2s,border-color .2s;display:flex;position:absolute;bottom:20px;left:50%;transform:translate(-50%)}.boost-meter.active{border-color:#7fb4ff;box-shadow:0 0 18px #7fb4ffb3}.boost-label{letter-spacing:2px;color:#9fb3cc;font-size:11px;font-weight:700}.boost-pips{gap:6px;display:flex}.boost-pip{background:#2a3340;border:1px solid #3a4656;border-radius:3px;width:26px;height:12px;transition:background .15s,box-shadow .15s}.boost-pip.filled{background:linear-gradient(#8fd0ff,#3a86ff);box-shadow:0 0 8px #3a86ffcc}.boost-bar{background:#222b36;border-radius:3px;width:96px;height:5px;overflow:hidden}.boost-fill{background:linear-gradient(90deg,#ffd166,#ff7a3d);height:100%;transition:width .1s linear}.btn-boost{background:radial-gradient(circle at 50% 28%,#aad2ff4d,#fff0 62%),linear-gradient(160deg,#3a86ffb3,#14285ab3);border-color:#7fb4ff80;font-size:30px;box-shadow:0 6px 18px #00000073,0 0 14px #5096ff80,inset 0 1px 1px #ffffff59}.btn-boost.pressed{box-shadow:0 0 22px #78b4fff2,0 0 44px #78b4ff8c,inset 0 1px 2px #ffffff73}.help-overlay{z-index:50;padding:max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#06090eb3;place-items:center;font-family:Segoe UI,system-ui,sans-serif;display:grid;position:absolute;inset:0;overflow-y:auto}.help-card{-webkit-overflow-scrolling:touch;box-sizing:border-box;color:#e7edf5;background:#131922;border:1px solid #2c3543;border-radius:14px;width:min(420px,88vw);max-height:min(88dvh,760px);padding:22px 24px;overflow-y:auto;box-shadow:0 20px 60px #0009}.help-card h2{margin:0 0 14px;font-size:22px}.help-grid{grid-template-columns:auto 1fr;align-items:center;gap:10px 16px;font-size:14px;display:grid}.help-grid>span:nth-child(odd){color:#9fb3cc}.help-grid>span:nth-child(2n){text-align:right}kbd{text-align:center;background:#243040;border:1px solid #3a4656;border-bottom-width:2px;border-radius:5px;min-width:18px;margin:0 1px;padding:2px 6px;font-family:inherit;font-size:12px;display:inline-block}.help-note{color:#93a3b6;margin:16px 0 18px;font-size:13px;line-height:1.5}.help-start{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:9px;width:100%;padding:12px;font-size:15px;font-weight:700}.help-start:hover{background:#1d4ed8}.help-start:disabled{color:#6b7686;cursor:not-allowed;background:#2a3340}.setup-field{margin:18px 0 16px;display:block}.setup-field-label{letter-spacing:1px;color:#9fb3cc;margin-bottom:6px;font-size:12px;display:block}.setup-name{box-sizing:border-box;color:#eef2f7;background:#0e131b;border:1px solid #303a49;border-radius:9px;outline:none;width:100%;padding:11px 12px;font-family:inherit;font-size:15px;transition:border-color .15s,box-shadow .15s}.setup-name::placeholder{color:#5d6878}.setup-name:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #2563eb40}.help-card-wide{width:min(760px,92vw)}.setup-greeting{color:#9fb3cc;margin:4px 0 16px;font-size:14px}.car-grid{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.car-card{text-align:center;background:#0e131b;border:1px solid #2c3543;border-radius:12px;flex-direction:column;padding:10px;display:flex}.car-preview{aspect-ratio:4/3;background:#0d1320;border-radius:8px;width:100%;line-height:0;overflow:hidden}.car-preview-canvas{width:100%;height:100%}.car-label{color:#eef2f7;margin-top:10px;font-size:16px;font-weight:700}.car-tagline{color:#93a3b6;min-height:30px;margin-top:3px;font-size:12px;line-height:1.3}.car-select{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:8px;margin-top:10px;padding:9px;font-family:inherit;font-size:14px;font-weight:700;transition:background .15s}.car-select:hover{background:#1d4ed8}.color-row{align-items:center;gap:12px;margin-top:16px;display:flex}.color-row-label{letter-spacing:1px;color:#9fb3cc;flex-shrink:0;font-size:12px}.color-swatches{flex-wrap:wrap;gap:8px;display:flex}.color-swatch{cursor:pointer;border:2px solid #ffffff2e;border-radius:50%;width:28px;height:28px;padding:0;transition:transform .12s,border-color .12s,box-shadow .12s;position:relative}.color-swatch:hover{transform:scale(1.12)}.color-swatch.selected{border-color:#fff;box-shadow:0 0 0 2px #2563eb}.swatch-default{background:conic-gradient(#e63946,#ff7a00,#f6c945,#2ec4b6,#3a86ff,#8338ec,#e63946)}.color-custom{background:#0e131b;place-items:center;font-size:14px;display:grid;overflow:hidden}.color-custom input[type=color]{opacity:0;cursor:pointer;border:none;padding:0;position:absolute;inset:0}.setup-back{color:#9fb3cc;cursor:pointer;background:0 0;border:1px solid #303a49;border-radius:8px;width:100%;margin-top:16px;padding:9px;font-family:inherit;font-size:13px;transition:background .15s,color .15s}.setup-back:hover{color:#d7deea;background:#26304099}@media (width<=640px){.car-grid{grid-template-columns:1fr}.car-tagline{min-height:0}.help-card{padding:18px 16px}.car-card{text-align:left;flex-direction:row;align-items:center;gap:12px}.car-preview{flex-shrink:0;width:96px}.car-select{margin-top:0;margin-left:auto;padding:9px 16px}}@media (height<=560px){.help-card{padding:14px 16px}.help-card h2{margin-bottom:8px;font-size:18px}.setup-field{margin:12px 0}}.app.touch .boost-meter{border-radius:9px;padding:7px 10px;inset:100px auto auto 12px;transform:none}.app.touch .boost-label{letter-spacing:1.6px;font-size:10px}.app.touch .boost-pip{width:22px;height:10px}.app.touch .boost-bar{width:82px}.app.touch .steer-pad{left:max(14px, env(safe-area-inset-left));bottom:max(18px, env(safe-area-inset-bottom));gap:12px}.app.touch .pedal-pad{right:max(14px, env(safe-area-inset-right));bottom:max(18px, env(safe-area-inset-bottom));grid-template-rows:56px 78px;grid-template-columns:58px 78px;place-items:center;gap:10px;display:grid}.app.touch .btn-boost{grid-area:1/1;width:56px;height:56px;font-size:25px}.app.touch .btn-brake-hand{grid-area:2/1}.app.touch .btn-down{grid-area:1/2;width:58px;height:56px}.app.touch .btn-up{grid-area:2/2}.creator-overlay{z-index:60;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#06090eb8;place-items:center;padding:20px;font-family:Segoe UI,system-ui,sans-serif;display:grid;position:absolute;inset:0}.creator-panel{box-sizing:border-box;text-align:center;color:#e7edf5;background:linear-gradient(160deg,#131922,#0d1117);border:1px solid #2c3543;border-radius:16px;flex-direction:column;align-items:center;gap:8px;width:min(360px,90vw);padding:28px 24px 24px;display:flex;position:relative;box-shadow:0 20px 60px #0009}.creator-close{color:#9fb3cc;cursor:pointer;background:0 0;border:1px solid #303a49;border-radius:8px;width:30px;height:30px;font-size:15px;position:absolute;top:10px;right:12px}.creator-close:hover{color:#e7edf5;background:#26304099}.creator-avatar{object-fit:cover;background:#0d1117;border:2px solid #38bdf8;border-radius:50%;width:96px;height:96px}.creator-name{margin:6px 0 0;font-size:22px}.creator-handle{color:#7ee787;margin:0;font-size:14px}.creator-tagline{color:#9fb3cc;margin:2px 0 8px;font-size:13px}.creator-link{color:#06121f;background:linear-gradient(135deg,#7dd3fc,#38bdf8);border-radius:9px;padding:10px 18px;font-size:14px;font-weight:700;text-decoration:none;transition:transform .12s;display:inline-block}.creator-link:hover{transform:translateY(-1px)}.intro-screen{z-index:80;opacity:1;background:radial-gradient(120% 90% at 50% 110%,#38bdf829,#0000 60%),linear-gradient(160deg,#05070c 0%,#0b0e13 55%,#101724 100%);place-items:center;font-family:Segoe UI,system-ui,sans-serif;transition:opacity .6s;display:grid;position:absolute;inset:0;overflow:hidden}.intro-screen.intro-leave{opacity:0;pointer-events:none}.intro-speedlines{pointer-events:none;position:absolute;inset:0}.intro-speedline{top:calc(6% + var(--i) * 10.5%);width:38vw;height:2px;animation:1.7s linear infinite intro-speedline-sweep;animation-delay:calc(var(--i) * -.21s);background:linear-gradient(90deg,#0000,#7dd3fc8c,#0000);position:absolute;left:0;transform:translate(-40vw)}.intro-speedline:nth-child(2n){background:linear-gradient(90deg,#0000,#f8fafc4d,#0000);width:26vw;height:1px;animation-duration:1.25s}@keyframes intro-speedline-sweep{to{transform:translate(140vw)}}.intro-center{text-align:center;justify-items:center;gap:14px;padding:0 24px;display:grid}.intro-checker{opacity:.85;background:repeating-conic-gradient(#e7edf5 0% 25%,#0b0e13 0% 50%) 0 0/24px 12px;border-radius:3px;width:min(420px,76vw);height:12px}.intro-kicker{letter-spacing:.42em;color:#7dd3fc;margin-top:6px;font-size:13px}.intro-title{letter-spacing:.04em;color:#f8fafc;text-shadow:0 0 22px #38bdf873,0 4px #082f49e6;margin:0;font-size:clamp(40px,9vw,76px);font-style:italic;font-weight:900;line-height:1}.intro-title-accent{color:#38bdf8}.intro-sub{color:#9fb3c8;font-size:14px}.intro-progress{background:#131922;border:1px solid #2c3543;border-radius:999px;width:min(420px,76vw);height:8px;margin:10px 0 6px;overflow:hidden}.intro-progress-fill{border-radius:inherit;transform-origin:0;background:linear-gradient(90deg,#0ea5e9,#7dd3fc);width:100%;height:100%;transition:transform .45s;animation:2.6s cubic-bezier(.2,.7,.3,1) forwards intro-progress-fill;transform:scaleX(0);box-shadow:0 0 14px #38bdf8cc}.intro-progress-fill.full{animation:none;transform:scaleX(1)}@keyframes intro-progress-fill{to{transform:scaleX(.88)}}
