:root{--sand: #d9b98a;--ink: #1a1410}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;padding:0;width:100%;height:100%;overflow:hidden;background:#10131a;color:#e8e2d8;font-family:system-ui,-apple-system,Segoe UI,sans-serif;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;overscroll-behavior:none}canvas{display:block;width:100%;height:100%;touch-action:none}#unsupported{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;text-align:center;padding:2rem;background:#10131a;z-index:100}#unsupported h1{margin:0 0 .5rem;font-size:1.6rem;color:var(--sand)}#unsupported p{margin:0;max-width:32rem;line-height:1.55;opacity:.8}#unsupported .reason{margin-top:1rem;font-family:ui-monospace,monospace;font-size:.8rem;opacity:.45}#loading{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.2rem;background:#10131a;z-index:90;transition:opacity .4s ease}#loading.done{opacity:0;pointer-events:none}#loading p{margin:0;font-size:.9rem;letter-spacing:.08em;text-transform:uppercase;opacity:.55}.spinner{width:34px;height:34px;border:3px solid rgba(217,185,138,.2);border-top-color:var(--sand);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#stats{position:fixed;top:10px;left:12px;z-index:20;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;line-height:1.5;white-space:pre;color:#9ff5c8;text-shadow:0 1px 3px rgba(0,0,0,.9);pointer-events:none}@media(max-width:768px){#stats{top:calc(46px + env(safe-area-inset-top,0px));left:calc(12px + env(safe-area-inset-left,0px));font-size:9.5px;line-height:1.35;opacity:.9;max-height:38vh;overflow:hidden}}.touch-controls{position:fixed;inset:0;z-index:50;pointer-events:none;touch-action:none;user-select:none;-webkit-user-select:none;transition:opacity .25s ease,visibility .25s ease}.touch-controls.hidden,.touch-standalone-toggle.hidden{opacity:0!important;visibility:hidden!important;pointer-events:none!important}.touch-top-bar{position:absolute;top:calc(12px + env(safe-area-inset-top,0px));right:calc(12px + env(safe-area-inset-right,0px));display:flex;gap:8px;align-items:center;pointer-events:auto}.touch-pill-btn{display:inline-flex;align-items:center;justify-content:center;background:#141820b8;border:1px solid rgba(217,185,138,.35);border-radius:999px;color:#e8e2d8;padding:7px 14px;font-family:system-ui,-apple-system,sans-serif;font-size:11px;font-weight:700;letter-spacing:.08em;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);cursor:pointer;touch-action:none;user-select:none;-webkit-user-select:none;box-shadow:0 4px 14px #0006;transition:transform .1s ease,background .15s ease,border-color .15s ease}.touch-pill-btn:active,.touch-pill-btn.active{background:#d9b98a4d;border-color:var(--sand);color:#fff;transform:scale(.94)}.touch-btn-accent{border-color:#d9b98aa6;color:var(--sand)}.touch-icon-btn{padding:7px 10px;font-size:13px;line-height:1}.touch-standalone-toggle{position:fixed;top:calc(12px + env(safe-area-inset-top,0px));right:calc(12px + env(safe-area-inset-right,0px));z-index:55;padding:8px 12px;font-size:16px;line-height:1}.touch-joystick-zone{position:absolute;bottom:0;left:0;width:48vw;max-width:400px;height:60vh;max-height:420px;pointer-events:auto;touch-action:none}.touch-joystick-base{position:absolute;left:calc(36px + env(safe-area-inset-left,0px));bottom:calc(30px + env(safe-area-inset-bottom,0px));width:136px;height:136px;border-radius:50%;background:radial-gradient(circle,#161a2380,#0c0f16cc);border:2px solid rgba(217,185,138,.3);box-shadow:inset 0 0 20px #0009,0 8px 24px #0006;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;pointer-events:none;touch-action:none;transition:border-color .2s ease,box-shadow .2s ease}.touch-joystick-base.active{border-color:#d9b98ab3;box-shadow:inset 0 0 20px #d9b98a26,0 0 24px #d9b98a40}.touch-joystick-guide{position:absolute;width:100%;display:flex;justify-content:space-between;align-items:center;padding:0 16px;color:var(--sand);opacity:.38;pointer-events:none}.guide-arrow{font-size:13px;line-height:1}.guide-label{font-size:9px;font-weight:800;letter-spacing:.16em}.touch-joystick-knob{width:58px;height:58px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#f0d7aff2,#b9915fe6 68%,#7d5c32f2);border:2px solid rgba(255,255,255,.45);box-shadow:0 5px 16px #0000008c,inset 0 2px 4px #fff6,inset 0 -3px 6px #00000080;pointer-events:none;touch-action:none;will-change:transform}.touch-pedals-cluster{position:absolute;right:calc(24px + env(safe-area-inset-right,0px));bottom:calc(24px + env(safe-area-inset-bottom,0px));display:grid;grid-template-columns:74px 84px;grid-template-rows:56px 84px;grid-template-areas:". rev" "brake gas";gap:12px;align-items:end;pointer-events:auto;touch-action:none}.touch-pedal-btn{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:20px;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:none;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 6px 20px #00000073,inset 0 1px 2px #ffffff26;transition:transform .08s ease,filter .08s ease,background .08s ease;will-change:transform}.touch-pedal-btn .pedal-icon{font-size:15px;line-height:1;margin-bottom:2px}.touch-pedal-btn .pedal-name{font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.pedal-gas{grid-area:gas;width:84px;height:84px;background:linear-gradient(150deg,#232a36d9,#12161ef2);border:2px solid rgba(217,185,138,.55);color:var(--sand)}.pedal-gas:active,.pedal-gas.active{background:linear-gradient(150deg,#b9915f66,#d9b98aa6);border-color:#ffe6ba;color:#fff;transform:scale(.93);box-shadow:0 0 26px #d9b98a73,inset 0 2px 4px #ffffff4d}.pedal-brake{grid-area:brake;width:74px;height:74px;background:linear-gradient(150deg,#261c1ed9,#161012f2);border:2px solid rgba(235,90,70,.45);color:#ff8b77}.pedal-brake:active,.pedal-brake.active{background:linear-gradient(150deg,#d2412d66,#eb5a46a6);border-color:#ffa090;color:#fff;transform:scale(.93);box-shadow:0 0 24px #eb5a4673,inset 0 2px 4px #ffffff4d}.pedal-rev{grid-area:rev;width:84px;height:52px;border-radius:16px;background:linear-gradient(150deg,#1c232ecc,#10141ceb);border:1.5px solid rgba(165,195,225,.4);color:#b0cce8}.pedal-rev:active,.pedal-rev.active{background:linear-gradient(150deg,#6496cd59,#91b9e68c);border-color:#d8e8f8;color:#fff;transform:scale(.93);box-shadow:0 0 20px #91b9e666,inset 0 2px 4px #ffffff4d}#hud{position:fixed;inset:0;pointer-events:none;z-index:60;font-variant-numeric:tabular-nums;text-shadow:0 2px 10px rgba(0,0,0,.7)}.hud-top{position:absolute;top:max(.9rem,env(safe-area-inset-top));left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:.1rem}.hud-time{font-size:2.5rem;font-weight:600;line-height:1;letter-spacing:.01em;color:#fff}.hud-time.idle{opacity:.45}.hud-time.done{color:#39d67a}.hud-lap{font-size:1.15rem;font-weight:700;color:#fff;letter-spacing:.1em;text-transform:uppercase}.hud-lap.last{color:#ffb020}.hud-gates{font-size:1rem;font-weight:600;color:var(--sand);letter-spacing:.06em}.hud-level{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;opacity:.5}.hud-message{position:absolute;top:34%;left:50%;transform:translate(-50%) scale(.96);font-size:1.7rem;font-weight:600;letter-spacing:.03em;color:#fff;opacity:0;transition:opacity .18s ease,transform .18s ease;white-space:nowrap}.hud-message.show{opacity:1;transform:translate(-50%) scale(1)}@media(max-width:720px){.hud-time{font-size:1.9rem}.hud-message{font-size:1.25rem}}.medal{display:inline-block;width:.62rem;height:.62rem;border-radius:50%;vertical-align:baseline;box-shadow:inset 0 -1px 2px #00000059}.medal-gold{background:linear-gradient(160deg,#ffd977,#d99b1b)}.medal-silver{background:linear-gradient(160deg,#e8eef5,#9aa7b6)}.medal-bronze{background:linear-gradient(160deg,#e2a877,#a5642e)}.medal-none{background:#ffffff1f;box-shadow:none}.medal-text-gold{color:#ffd977}.medal-text-silver{color:#dbe4ee}.medal-text-bronze{color:#e2a877}.medal-text-none{color:#e8e2d880}.btn{appearance:none;border:1.5px solid rgba(165,195,225,.35);background:#161c26d9;color:#e8e2d8;font:inherit;font-weight:600;font-size:.92rem;padding:.6rem 1.1rem;border-radius:12px;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .1s ease}.btn:hover{background:#26303ef2;border-color:#c8dcf599}.btn:active{transform:scale(.97)}.btn-primary{background:linear-gradient(150deg,#d2963c80,#ebaf50b3);border-color:#ffcf8a;color:#fff}.btn .key{display:inline-block;margin-left:.4rem;padding:.05rem .35rem;border-radius:5px;font-size:.72rem;background:#ffffff24;opacity:.8}.text-btn{appearance:none;border:0;background:none;color:inherit;font:inherit;font-size:.78rem;opacity:.5;cursor:pointer;text-decoration:underline;padding:0}.text-btn:hover{opacity:.9}#menu{position:fixed;inset:0;z-index:80;display:grid;grid-template-rows:minmax(0,1fr) auto;grid-template-columns:100%;overflow:hidden;background:#0b0d12;-webkit-overflow-scrolling:touch}.menu-bg{position:absolute;inset:0;background-image:radial-gradient(70% 60% at 72% 28%,#e8b473 0%,#b9793d 38%,transparent 72%),linear-gradient(170deg,#6d4a2c,#2a2119 55%,#10131a);background-size:cover;background-position:64% 45%;filter:saturate(.92) brightness(.86)}.menu-scrim{position:absolute;inset:0;background:linear-gradient(100deg,#06080cf2,#06080cdb 34%,#06080c59 62%,#06080c1a),radial-gradient(120% 100% at 50% 100%,rgba(6,8,12,.9) 0%,transparent 55%)}.menu-main{position:relative;z-index:2;min-height:0;overflow-y:auto;overflow-x:hidden;padding:clamp(1rem,4vh,2.6rem) 1.25rem 1.5rem clamp(1.25rem,4vw,3.25rem);-webkit-overflow-scrolling:touch}.menu-head,.level-list,.menu-foot{max-width:34rem}.menu-title{margin:0;display:flex;gap:0;flex-wrap:nowrap;font-family:Impact,Haettenschweiler,Arial Narrow Bold,Franklin Gothic Bold,system-ui,sans-serif;font-weight:700;font-size:clamp(2.4rem,6.4vw,4.6rem);line-height:.94;letter-spacing:.01em;text-transform:uppercase;filter:drop-shadow(0 3px 10px rgba(0,0,0,.6))}.menu-title span{background-clip:text;-webkit-background-clip:text;color:transparent}.title-a{background-image:linear-gradient(180deg,#f4f7fb,#b9c3d0 46%,#6d7889 62%,#d6dde6)}.title-b{background-image:linear-gradient(180deg,#ffe6b0,#f0a33c 48%,#b6641a 64%,#ffcf86)}.menu-stats{margin:.85rem 0 1.4rem;display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;font-size:.92rem;color:#e8e2d8bf}.menu-stats b{color:#f2ece2;font-weight:700}.stat-sep{opacity:.35}.stat-stars .star{color:#ffd977}.stat-stars{font-variant-numeric:tabular-nums}.badges{display:flex;gap:.4rem;margin-left:.35rem}.badge{display:grid;place-items:center;width:1.75rem;height:1.75rem;border-radius:50%;font-size:.78rem;font-weight:800;font-variant-numeric:tabular-nums;color:#140e08d9;box-shadow:inset 0 -2px 4px #00000059,inset 0 2px 3px #ffffff73,0 2px 6px #00000073}.badge-gold{background:linear-gradient(160deg,#ffe9a8,#d99b1b)}.badge-silver{background:linear-gradient(160deg,#f2f6fb,#97a4b3)}.badge-bronze{background:linear-gradient(160deg,#f0bd92,#a5642e)}.level-list{display:flex;flex-direction:column;gap:.45rem}.level-card{appearance:none;display:flex;align-items:center;gap:.85rem;width:100%;text-align:left;font:inherit;color:#e8e2d8;padding:.5rem .7rem;border-radius:12px;border:1.5px solid rgba(165,195,225,.14);background:#0a0d13a8;backdrop-filter:blur(6px);cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .1s ease}.level-card:hover{background:#1a212dd9;border-color:#c8dcf566;transform:translate(2px)}.level-card.locked{cursor:not-allowed;opacity:.45;background:#080a0f99}.level-card.locked:hover{transform:none;border-color:#a5c3e124;background:#080a0f99}.level-card.current{border-color:#ffbe5ad9;background:linear-gradient(100deg,#462e10e6,#141821cc);box-shadow:0 0 0 1px #ffbe5a40,0 6px 22px #00000073}.level-num{font-size:1.1rem;font-weight:800;font-variant-numeric:tabular-nums;color:var(--sand);opacity:.8;min-width:1.7rem;text-align:center}.level-card.current .level-num{color:#ffd28a;opacity:1}.level-thumb{flex:none;width:3.4rem;height:2.2rem;border-radius:7px;background-image:linear-gradient(150deg,#8a6236,#3a2c1f);background-size:cover;background-position:center;box-shadow:inset 0 0 0 1px #ffffff1f}.level-body{display:flex;flex-direction:column;gap:.1rem;flex:1;min-width:0}.level-name{font-weight:600;font-size:.98rem}.level-blurb{font-size:.76rem;opacity:.55;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.level-score{display:flex;align-items:center;gap:.45rem;font-variant-numeric:tabular-nums;font-size:.88rem;font-weight:600;opacity:.85;white-space:nowrap}.locked-time{opacity:.7;font-weight:500}.level-go{display:none;align-items:center;padding:.34rem .8rem;border-radius:8px;background:linear-gradient(150deg,#ffcf86,#e08c22);color:#241605;font-size:.76rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;white-space:nowrap}.level-card.current .level-go{display:inline-flex}.level-card.current .level-score{display:none}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-5px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}.level-card.shake{animation:shake .32s ease}.user-levels{margin-top:1.6rem;max-width:34rem}.user-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.55rem}.user-title{margin:0;font-size:.78rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;opacity:.55}.btn-editor{padding:.3rem .7rem;font-size:.78rem}.user-row{display:flex;align-items:stretch;gap:.4rem}.user-row .level-card{flex:1;min-width:0}.user-thumb{background-image:linear-gradient(150deg,#3f5a72,#1d2733)}.user-edit{appearance:none;flex:none;font:inherit;font-size:.76rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#cfe0f2;padding:0 .8rem;border-radius:12px;border:1.5px solid rgba(165,195,225,.18);background:#0a0d13a8;cursor:pointer;transition:background .15s ease,border-color .15s ease}.user-edit:hover{background:#1a212de6;border-color:#c8dcf573}.user-empty{margin:0;font-size:.8rem;line-height:1.5;opacity:.45}.menu-foot{margin-top:1.1rem;display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;font-size:.76rem;opacity:.45}.garage{position:relative;z-index:3;display:flex;align-items:center;gap:.5rem;padding:.5rem clamp(.5rem,2vw,1.25rem) max(.5rem,env(safe-area-inset-bottom));background:linear-gradient(180deg,#06080c1a,#06080ceb 40%);border-top:1px solid rgba(255,255,255,.07)}.garage-track{flex:1;min-width:0}.garage-label{display:block;text-align:center;font-size:.68rem;letter-spacing:.28em;text-transform:uppercase;opacity:.4;margin-bottom:.3rem}.garage-strip{display:flex;gap:.5rem;overflow-x:auto;scrollbar-width:none;scroll-behavior:smooth;padding-bottom:.15rem}.garage-strip::-webkit-scrollbar{display:none}.garage-slot{position:relative;flex:none;width:9rem;height:3.6rem;border-radius:10px;border:1.5px solid rgba(165,195,225,.16);background:#0e121acc;overflow:hidden}.garage-slot.owned{border-color:#ffbe5ab3}.garage-slot:not(.owned){filter:grayscale(.85);opacity:.5}.garage-thumb{position:absolute;inset:0;background-image:linear-gradient(150deg,#6b6f78,#23262d);background-size:cover;background-position:center}.garage-name{position:absolute;inset:auto 0 0;padding:.15rem .4rem;background:linear-gradient(180deg,transparent,rgba(4,6,10,.88));font-size:.62rem;letter-spacing:.06em;text-transform:uppercase;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.garage-nav{appearance:none;flex:none;width:2.1rem;height:2.1rem;border-radius:50%;border:1.5px solid rgba(165,195,225,.22);background:#0e121acc;color:#e8e2d8;font-size:1.2rem;line-height:1;cursor:pointer;transition:background .15s ease,border-color .15s ease}.garage-nav:hover{background:#26303ef2;border-color:#c8dcf580}@media(max-width:900px){.menu-head,.level-list,.menu-foot,.user-levels{max-width:min(40rem,100%);margin-inline:auto}.menu-scrim{background:linear-gradient(180deg,#06080cd1,#06080cf0)}}@media(max-width:560px){.level-thumb,.level-blurb,.menu-foot span{display:none}.garage-slot{width:7rem;height:3rem}}#results{position:fixed;inset:0;z-index:70;display:flex;align-items:center;justify-content:center;padding:1.25rem;background:#0a0d148c;backdrop-filter:blur(3px)}.results-card{width:min(30rem,100%);padding:1.6rem 1.5rem 1.4rem;border-radius:18px;text-align:center;background:#121720f5;border:1.5px solid rgba(165,195,225,.22);box-shadow:0 20px 60px #00000080}.results-kicker{margin:0;font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;opacity:.5}.results-time{margin:.35rem 0 .1rem;font-size:2.9rem;font-weight:600;font-variant-numeric:tabular-nums;line-height:1}.results-medal{margin:.2rem 0 .7rem;font-weight:700;letter-spacing:.06em}.results-detail{margin:0;font-size:.78rem;opacity:.6;line-height:1.6}.results-unlock{margin:.8rem 0 0;font-size:.86rem;color:#ffcf8a;font-weight:600}.results-unlock.dim{color:inherit;opacity:.5;font-weight:400}.results-actions{margin-top:1.3rem;display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap}#busy{position:fixed;inset:0;z-index:75;display:flex;align-items:center;justify-content:center;background:#0a0d1499}.busy-inner{display:flex;flex-direction:column;align-items:center;gap:1rem}.busy-inner p{margin:0;font-size:.9rem;opacity:.8}.hud-controls{position:absolute;left:max(.75rem,env(safe-area-inset-left));bottom:max(.75rem,env(safe-area-inset-bottom));display:flex;gap:.4rem;pointer-events:auto}.hud-btn{appearance:none;width:2.4rem;height:2.4rem;border-radius:11px;border:1.5px solid rgba(165,195,225,.3);background:#10141cb3;color:#cfd9e2;font-size:1rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.hud-btn:hover{background:#26303ee6}.hud-btn.off{opacity:.5}
