*{box-sizing:border-box}html,body{color:#fff;-webkit-user-select:none;user-select:none;touch-action:none;-webkit-tap-highlight-color:transparent;background:#bfe4f7;height:100%;margin:0;font-family:Trebuchet MS,Segoe UI,system-ui,sans-serif;overflow:hidden}#app,#app canvas{width:100%;height:100%;display:block;position:fixed;inset:0}.hidden{display:none!important}.overlay{cursor:pointer;z-index:10;background:linear-gradient(#0a285026,#031e3c8c);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.panel{text-align:center;max-width:92vw;padding:28px 36px}h1{letter-spacing:.02em;text-shadow:0 4px #0b4f8a,0 10px 30px #00000059;margin:0;font-size:clamp(48px,11vw,112px);font-style:italic;line-height:.9}h1 span{color:#fc3;margin-left:.15em}.tag{opacity:.95;text-shadow:0 2px 6px #0006;margin:10px 0 22px;font-size:20px}.controls{text-align:left;background:#00142d73;border-radius:14px;padding:14px 20px;font-size:15px;line-height:2;display:inline-block}.controls span{opacity:.8;margin-left:4px}.controls .air{opacity:.9;font-size:14px}kbd{text-align:center;color:#0b4f8a;background:#fff;border-radius:6px;min-width:26px;margin-right:3px;padding:0 7px;font-family:inherit;font-size:13px;font-weight:700;line-height:24px;display:inline-block;box-shadow:0 2px #7fb3d9}.tip{opacity:.9;text-shadow:0 2px 6px #0006;margin:18px 0;font-size:15px}.go{font:inherit;letter-spacing:.08em;color:#0b3b66;cursor:pointer;background:#fc3;border:none;border-radius:40px;padding:14px 34px;font-size:20px;font-weight:700;animation:1.4s ease-in-out infinite pulse;box-shadow:0 5px #c98f00}@keyframes pulse{50%{transform:scale(1.06)}}.touch-only{display:none}body.touch .touch-only{display:inline-block}body.touch .desktop-only{display:none}#hud{pointer-events:none;z-index:5;text-shadow:0 2px 6px #0014328c;position:fixed;inset:0}.score-box{position:absolute;top:16px;left:20px}.score-box .label{letter-spacing:.2em;opacity:.85;font-size:13px}#score{font-size:40px;font-style:italic;font-weight:700;line-height:1}.best{opacity:.8;letter-spacing:.1em;margin-top:4px;font-size:13px}#combo{color:#fc3;margin-top:4px;font-size:26px;font-style:italic;font-weight:700}.speed-box{text-align:right;position:absolute;bottom:20px;right:22px}#speed{font-size:64px;font-style:italic;font-weight:700;line-height:1}.speed-box small{opacity:.85;margin-left:4px;font-size:16px}.boost{background:#001e3c73;border:1px solid #ffffff80;border-radius:6px;width:180px;height:10px;margin-top:8px;margin-left:auto;overflow:hidden}#boost-fill{transform-origin:0;background:linear-gradient(90deg,#ff7a18,#fc3);height:100%}.boost.active{box-shadow:0 0 12px #fc3}#air{text-align:center;opacity:0;font-size:26px;font-style:italic;font-weight:700;transition:opacity .15s;position:absolute;top:18%;left:0;right:0}#air.show{opacity:1}.toast{text-align:center;opacity:0;transition:opacity .2s,transform .25s cubic-bezier(.2,1.6,.4,1);position:absolute;top:26%;left:0;right:0;transform:scale(.7)}.toast.show{opacity:1;transform:scale(1)}.toast .main{letter-spacing:.03em;font-size:clamp(34px,7vw,64px);font-style:italic;font-weight:700}.toast .sub{opacity:.95;margin-top:4px;font-size:18px}.toast.trick .main{color:#fc3}.toast.ring .main{color:#ffe08a}.toast.bad .main{color:#ff5a5a}.toast.meh .main{color:#ffb07a}.toast.small .main{font-size:26px}#btn-mute{pointer-events:auto;cursor:pointer;background:#001e3c59;border:none;border-radius:50%;width:44px;height:44px;font-size:22px;position:absolute;top:14px;right:16px}.touch-ui{display:none}body.touch .touch-ui{display:block}body.touch .speed-box{top:70px;bottom:auto}#stick{pointer-events:auto;background:#ffffff26;border:2px solid #ffffff73;border-radius:50%;width:150px;height:150px;position:absolute;bottom:28px;left:28px}#knob{background:#ffffffbf;border-radius:50%;width:64px;height:64px;margin:-32px 0 0 -32px;position:absolute;top:50%;left:50%}#btn-hop,#btn-boost{pointer-events:auto;font:inherit;color:#0b3b66;border:none;border-radius:50%;width:92px;height:92px;font-size:16px;font-weight:700;position:absolute}#btn-hop{background:#fffc;bottom:30px;right:26px}#btn-boost{background:#ffcc33d9;bottom:60px;right:130px}.race-box{text-align:center;background:#001e3c47;border-radius:14px;min-width:230px;padding:6px 16px 8px;transition:background .2s;position:absolute;top:12px;left:50%;transform:translate(-50%)}.race-box.flash{background:#ffcc3359}.race-main{justify-content:center;align-items:baseline;gap:12px;display:flex}.race-main .label{letter-spacing:.2em;opacity:.85;font-size:13px}.race-main .label b{letter-spacing:0;opacity:1;font-size:20px}#lap-time{font-variant-numeric:tabular-nums;font-size:34px;font-style:italic;font-weight:700;line-height:1.05}.race-sub{letter-spacing:.1em;opacity:.9;justify-content:center;gap:16px;font-size:12px;display:flex}.race-sub b{letter-spacing:0;color:#ffe08a;font-variant-numeric:tabular-nums;font-size:14px}#gate-info{letter-spacing:.08em;opacity:.9;margin-top:3px;font-size:13px}#split{opacity:0;font-variant-numeric:tabular-nums;height:0;font-size:22px;font-style:italic;font-weight:700;transition:opacity .2s}#split.show{opacity:1;height:auto}#split.ahead{color:#6dff8f}#split.behind{color:#ff8a7a}#minimap{position:absolute;bottom:18px;left:18px}#wrongway{text-align:center;color:#ff4d4d;opacity:0;letter-spacing:.05em;font-size:clamp(30px,6vw,54px);font-style:italic;font-weight:700;transition:opacity .2s;position:absolute;top:38%;left:0;right:0}#wrongway.show{opacity:1;animation:.6s steps(2,end) infinite blink}@keyframes blink{50%{opacity:.35}}#btn-restart{pointer-events:auto;cursor:pointer;background:#001e3c59;border:none;border-radius:50%;width:44px;height:44px;font-size:20px;position:absolute;top:14px;right:68px}body.touch #minimap{inset:168px 16px auto auto}@media (width<=700px){.race-box{text-align:left;min-width:0;max-width:44vw;padding:4px 10px 6px;top:104px;left:16px;transform:none}.race-main{justify-content:flex-start;gap:8px}.race-sub{flex-direction:column;align-items:flex-start;gap:0}#lap-time{font-size:22px}#gate-info{font-size:12px}#split{font-size:17px}.toast{top:38%}#air{top:33%}}.modes{flex-wrap:wrap;justify-content:center;gap:14px;display:flex}.go.alt{background:#ffffffe6;animation:none;box-shadow:0 5px #7fb3d9}#pos-box{text-align:right;position:absolute;top:66px;right:18px}.pos-main{font-size:60px;font-style:italic;font-weight:700;line-height:.95}#pos-sfx{vertical-align:top;margin-left:2px;font-size:26px}.pos-main small{opacity:.8;margin-left:4px;font-size:24px}#pos-box.p1 .pos-main{color:#fc3}.pos-time{letter-spacing:.12em;opacity:.9;font-size:12px}.pos-time b{letter-spacing:0;font-variant-numeric:tabular-nums;color:#ffe08a;font-size:15px}#standings{text-align:left;font-variant-numeric:tabular-nums;background:#001e3c47;border-radius:10px;min-width:150px;margin:8px 0 0;padding:6px 10px;font-size:13px;line-height:1.55;list-style:none}#standings li{white-space:nowrap;align-items:center;gap:7px;display:flex}#standings li .n{opacity:.8;text-align:right;width:14px}#standings li .sw{border:1px solid #ffffffb3;border-radius:3px;flex:none;width:10px;height:10px}#standings li .nm{letter-spacing:.05em;flex:1}#standings li .gap{opacity:.8;font-size:12px}#standings li.me{color:#ffe08a;font-weight:700}#countdown{text-align:center;opacity:0;text-shadow:0 6px #0b4f8a,0 14px 40px #0006;font-size:clamp(90px,20vw,190px);font-style:italic;font-weight:700;position:absolute;top:24%;left:0;right:0}#countdown.show{animation:.9s ease-out forwards count}#countdown.go{color:#6dff8f}@keyframes count{0%{opacity:0;transform:scale(1.8)}15%{opacity:1;transform:scale(1)}75%{opacity:1}to{opacity:0;transform:scale(.85)}}#finish{cursor:default;background:linear-gradient(#0a285059,#031e3cbf)}.finish-panel{background:#00142d8c;border-radius:22px;max-height:96vh;padding:22px 30px 18px;overflow:auto}.finish-kicker{letter-spacing:.4em;opacity:.85;font-size:14px}#finish-place{text-shadow:0 4px #0b4f8a,0 10px 30px #00000059;margin:0;font-size:clamp(56px,13vw,110px);font-style:italic;line-height:1}#finish-place.win{color:#fc3}#finish .tag{margin:6px 0 14px}.finish-stats{justify-content:center;gap:26px;margin-bottom:14px;display:flex}.finish-stats span{letter-spacing:.2em;opacity:.8;font-size:11px;display:block}.finish-stats b{font-variant-numeric:tabular-nums;font-size:24px;font-style:italic}#finish-table{border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:min(380px,84vw);margin:0 auto 18px;font-size:15px}#finish-table td{text-align:left;border-bottom:1px solid #ffffff1f;padding:4px 10px}#finish-table td.r{text-align:right}#finish-table td.p{width:40px;font-style:italic;font-weight:700}#finish-table tr.me td{color:#ffe08a;font-weight:700}#finish-table .sw{vertical-align:-1px;border:1px solid #ffffffb3;border-radius:3px;width:12px;height:12px;margin-right:8px;display:inline-block}#finish-table .racing{opacity:.6;font-style:italic}.hint{opacity:.75;margin:12px 0 0;font-size:13px}body.touch #pos-box{text-align:left;top:112px;left:18px;right:auto}body.touch #standings{display:none}@media (width<=700px){body.touch #pos-box{top:190px}}@media (height<=500px){h1{font-size:44px}.tag{margin:4px 0 8px;font-size:16px}.tip{display:none}.controls{padding:8px 16px;font-size:13px;line-height:1.6}.panel{padding:10px 20px}.go{padding:10px 28px;font-size:18px}.finish-panel{padding:10px 20px}#finish-place{font-size:48px}#finish-table td{padding:1px 8px}.finish-stats{margin-bottom:6px}#finish-table{margin-bottom:8px}}@media (width<=700px){.pos-main{font-size:44px}#pos-sfx{font-size:20px}#standings{display:none}.finish-stats{gap:16px}.finish-stats b{font-size:19px}#finish-table{font-size:13px}}body.finished #toast,body.finished #air,body.finished #split,body.finished #wrongway,body.finished .race-box{visibility:hidden}
