:root{--teal:#2fd6c6;--glass:#0e12146b;--line:#ffffff8c;--text:#eef3f2;--font:"Segoe UI", "SF Pro Display", "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box}html,body{touch-action:none;background:#0b0d0e;height:100%;margin:0;overflow:hidden}body{font-family:var(--font);color:var(--text);-webkit-user-select:none;user-select:none}#app,#app canvas{width:100%;height:100%;display:block;position:fixed;inset:0}.hidden{display:none!important}#hud{pointer-events:none;position:fixed;inset:0}.glass{background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);box-shadow:0 2px 10px #00000040}#minimap{width:150px;height:150px;position:absolute;top:18px;left:22px}#lap{letter-spacing:.06em;white-space:nowrap;border-radius:999px;align-items:center;gap:12px;padding:6px 18px;font-size:17px;font-weight:300;display:flex;position:absolute;top:18px;left:50%;transform:translate(-50%)}#lap .ico{opacity:.85;font-size:14px}#lap .sep{background:var(--teal);width:1px;height:16px}#timeText{font-variant-numeric:tabular-nums}#speedo{width:220px;height:220px;position:absolute;bottom:16px;right:20px}#boost{border-radius:999px;align-items:center;gap:6px;width:210px;height:22px;padding:0 8px;display:flex;position:absolute;bottom:26px;left:22px}#boost .bolt{color:var(--teal);font-size:12px}#boost .bar{background:#ffffff1f;border-radius:4px;flex:1;height:6px;overflow:hidden}#boostFill{background:var(--teal);border-radius:4px;width:100%;height:100%}#msg{letter-spacing:.3em;text-shadow:0 2px 16px #00000080;opacity:0;font-size:44px;font-weight:200;transition:opacity .4s;position:absolute;top:32%;left:50%;transform:translate(-50%)}#msg.show{opacity:1}#backend{opacity:.45;letter-spacing:.08em;font-size:10px;position:absolute;top:8px;right:10px}#touch{pointer-events:none;height:0;position:fixed;inset:auto 0 0}#touch button{pointer-events:auto;touch-action:none;width:78px;height:78px;color:var(--text);border:1px solid var(--line);font:600 13px var(--font);letter-spacing:.08em;-webkit-backdrop-filter:blur(6px);background:#0e121461;border-radius:50%}#touch button.active{border-color:var(--teal);background:#2fd6c659}#touch button.small{width:56px;height:56px;color:var(--teal);font-size:18px}#touch button.gas{width:92px;height:92px}#touch .left{left:max(16px, env(safe-area-inset-left));bottom:max(18px, env(safe-area-inset-bottom));gap:14px;display:flex;position:fixed}#touch .right{right:max(16px, env(safe-area-inset-right));bottom:max(18px, env(safe-area-inset-bottom));align-items:flex-end;gap:12px;display:flex;position:fixed}body.touch #speedo{width:150px;height:150px;top:14px;bottom:auto;right:14px}body.touch #minimap{width:110px;height:110px;top:12px;left:12px}body.touch #boost{width:160px;top:58px;bottom:auto;left:50%;transform:translate(-50%)}body.touch #lap{padding:5px 14px;font-size:14px;top:14px}#loading{z-index:10;background:#000;flex-direction:column;justify-content:center;align-items:center;gap:22px;transition:opacity .8s;display:flex;position:fixed;inset:0}#loading img{object-fit:contain;width:min(320px,70vw);height:auto}#loading .track{background:#ffffff26;border-radius:2px;width:220px;height:3px;overflow:hidden}#loadFill{background:var(--teal);width:0;height:100%;transition:width .2s}#loadText{letter-spacing:.12em;opacity:.7;font-size:13px}#countdown{color:#ff1a10;letter-spacing:.02em;white-space:nowrap;pointer-events:none;opacity:0;-webkit-text-stroke:2px #ff6a5c;text-shadow:.05em .05em #8c0000,.075em .075em #ff5446,.09em .09em .12em #00000073;font-family:Russo One,Segoe UI,sans-serif;font-size:min(26vw,230px);line-height:1;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)skew(-12deg)}#countdown.go{font-size:min(22vw,200px)}#countdown.pop{animation:.9s cubic-bezier(.2,1.4,.4,1) forwards cdpop}@keyframes cdpop{0%{opacity:0;transform:translate(-50%,-50%)skew(-12deg)scale(1.9)}18%{opacity:1;transform:translate(-50%,-50%)skew(-12deg)scale(1)}80%{opacity:1;transform:translate(-50%,-50%)skew(-12deg)scale(.96)}to{opacity:0;transform:translate(-50%,-50%)skew(-12deg)scale(.85)}}#pressStart{letter-spacing:.06em;color:#ff1a10;-webkit-text-stroke:1px #ff6a5c;white-space:nowrap;pointer-events:none;text-shadow:.05em .05em #8c0000,.075em .075em #ff5446,.09em .09em .12em #00000073;font-family:Russo One,Segoe UI,sans-serif;font-size:min(7vw,48px);animation:1.4s ease-in-out infinite pressPulse;position:absolute;top:58%;left:50%;transform:translate(-50%)skew(-12deg)}@keyframes pressPulse{0%,to{opacity:1}50%{opacity:.35}}#pressStart{-webkit-text-stroke:0;text-shadow:none;font-size:0}#pressStart canvas{width:min(80vw,600px);height:auto;image-rendering:pixelated;image-rendering:crisp-edges;display:block}#menu{z-index:20;color:#f2f5f4;opacity:0;font-family:"Nova Square", var(--font);--mfont:"Nova Square", var(--font);--pad:clamp(18px, 4.2vw, 64px);transition:opacity .6s;position:fixed;inset:0;overflow:hidden}#menu.show{opacity:1}#menu.out{opacity:0;pointer-events:none;transition:opacity .65s}#menu .m-bg{background:#050607;position:absolute;inset:0}#menu .m-art{opacity:0;background:74%/cover no-repeat;transition:opacity .7s,transform 6s ease-out;position:absolute;inset:-2%;transform:scale(1.06)}#menu .m-art.on{opacity:1;transform:scale(1)}#menu .m-shade{background:linear-gradient(90deg,#040608eb 0%,#0406089e 32%,#0406080d 62%),linear-gradient(#04060800 55%,#04060866 74%,#040608f2 100%),linear-gradient(#04060899 0%,#04060800 18%);position:absolute;inset:0}#menu.is-locked .m-art.on{filter:saturate(.55)brightness(.8)}#menu .m-top{padding:calc(var(--pad) * .55) var(--pad);justify-content:space-between;align-items:flex-start;display:flex;position:absolute;top:0;left:0;right:0}#menu .m-title{aspect-ratio:1060/760;filter:drop-shadow(0 10px 28px #000000a6);opacity:0;transform-origin:20% 30%;width:max(150px,min(21vw,30vh,320px));position:relative}#menu.show .m-title{animation:1.6s cubic-bezier(.16,.84,.24,1) .15s forwards mTitleIn,7s ease-in-out 1.9s infinite mTitleIdle}#menu .m-title img{width:100%;height:100%;display:block}#menu .m-sheen{pointer-events:none;mix-blend-mode:screen;background:linear-gradient(105deg,#0000 0% 38%,#fff0 40%,#befff8bf 48%,#fffffff2 50%,#2fd6c68c 53%,#0000 60% 100%) 130% 0/260% 100%;position:absolute;inset:0;-webkit-mask:url(/menu/title.webp) 50%/100% 100% no-repeat;mask:url(/menu/title.webp) 50%/100% 100% no-repeat}#menu.show .m-sheen{animation:1.4s cubic-bezier(.4,0,.2,1) .9s both mSheen,1.6s cubic-bezier(.4,0,.2,1) 6s infinite mSheen}@keyframes mTitleIn{0%{opacity:0;filter:blur(14px)brightness(2.2)drop-shadow(0 10px 28px #0000);transform:scale(1.18)translateY(6px)}45%{opacity:1;filter:blur(2px)brightness(1.35)drop-shadow(0 0 30px #2fd6c68c)}to{opacity:1;filter:blur()brightness()drop-shadow(0 10px 28px #000000a6);transform:scale(1)translateY(0)}}@keyframes mTitleIdle{0%,to{opacity:1;filter:drop-shadow(0 10px 28px #000000a6);transform:scale(1)translateY(0)}50%{opacity:1;filter:drop-shadow(0 10px 28px #000000a6)drop-shadow(0 0 22px #2fd6c647);transform:scale(1.025)translateY(-3px)}}@keyframes mSheen{0%{background-position:130% 0}70%,to{background-position:-40% 0}}@media (prefers-reduced-motion:reduce){#menu.show .m-title{opacity:1;animation:none}#menu.show .m-sheen{opacity:0;animation:none}}#menu .m-steps{letter-spacing:.28em;align-items:center;gap:12px;font-size:12px;font-weight:500;display:flex}#menu .m-steps span{opacity:.4;transition:opacity .3s}#menu .m-steps span.cur{opacity:1}#menu .m-steps i{background:#ffffff59;width:34px;height:1px}#menu .m-info{left:var(--pad);top:calc(var(--pad) * .55 + max(150px, min(21vw, 30vh, 320px)) * .717 + 18px);width:min(520px,86vw);position:absolute}#menu .m-kicker{letter-spacing:.34em;color:var(--teal);margin-bottom:14px;font-size:12px;font-weight:600}#menu .m-name{font-family:var(--mfont);letter-spacing:.01em;text-shadow:0 4px 30px #0009;margin:0;font-size:clamp(30px,min(5.4vw,7.4vh),78px);font-weight:400;line-height:.98}#menu .m-name.in{animation:.45s cubic-bezier(.2,.8,.2,1) mIn}@keyframes mIn{0%{opacity:0;transform:translate(-18px)}to{opacity:1;transform:none}}#menu .m-tag{letter-spacing:.22em;opacity:.72;margin-top:12px;font-size:13px}#menu .m-stats{gap:10px;max-width:360px;margin-top:26px;display:grid}#menu .m-stat{letter-spacing:.2em;opacity:.9;grid-template-columns:104px 1fr;align-items:center;font-size:11px;display:grid}#menu .m-stat b{background:#ffffff24;border-radius:2px;height:4px;overflow:hidden}#menu .m-stat i{background:linear-gradient(90deg, #fff, var(--teal));border-radius:2px;height:100%;animation:.7s cubic-bezier(.2,.8,.2,1) mBar;display:block}@keyframes mBar{0%{width:0!important}}#menu .m-soon{letter-spacing:.3em;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0a0c0e66;border:1px solid #ffffff80;border-radius:999px;width:max-content;margin-top:22px;padding:7px 14px;font-size:12px;display:none}#menu.is-locked .m-soon{display:block}#menu .m-soon.shake{animation:.4s mShake}@keyframes mShake{20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}#menu .m-go{cursor:pointer;font:400 13px var(--mfont);letter-spacing:.3em;color:#071012;background:#f2f5f4;border:0;border-radius:999px;margin-top:28px;padding:13px 38px;transition:transform .2s,box-shadow .3s,background .2s;box-shadow:0 0 #2fd6c600}#menu .m-go:hover{transform:scale(1.04);box-shadow:0 0 0 4px #2fd6c659}#menu.is-locked .m-go{color:#ffffff8c;cursor:not-allowed;background:#ffffff24}#menu .m-row{left:0;right:0;bottom:calc(var(--pad) * .95);padding:22px var(--pad) 34px;scrollbar-width:none;scroll-snap-type:x proximity;gap:clamp(12px,1.6vw,22px);display:flex;position:absolute;overflow-x:auto}#menu .m-row::-webkit-scrollbar{display:none}#menu .m-tile{aspect-ratio:16/9;cursor:pointer;scroll-snap-align:center;width:clamp(150px,17vw,250px);color:inherit;opacity:.72;background:#111;border:0;border-radius:12px;flex:none;padding:0;transition:transform .28s cubic-bezier(.2,.8,.2,1),opacity .25s,box-shadow .28s;position:relative;transform:scale(.94);box-shadow:0 8px 24px #00000073}#menu .m-tile .m-thumb{border-radius:inherit;background:50%/cover no-repeat;position:absolute;inset:0}#menu .m-tile.locked .m-thumb{filter:grayscale(.7)brightness(.7)}#menu .m-tile.locked:after{content:"";border-radius:inherit;background:#05070959;position:absolute;inset:0}#menu .m-lock{z-index:1}#menu .m-tile.focus{opacity:1;transform:scale(1.08);box-shadow:0 0 0 3px #fff,0 0 0 7px #2fd6c659,0 18px 40px #0009}#menu .m-tile .m-label{letter-spacing:.22em;text-align:left;opacity:0;white-space:nowrap;font-size:11px;transition:opacity .25s;position:absolute;top:calc(100% + 12px);left:0;right:0}#menu .m-tile.focus .m-label{opacity:.9}#menu .m-lock{letter-spacing:.26em;color:#ffffffd9;flex-direction:column;justify-content:center;align-items:center;gap:6px;font-size:10px;display:flex;position:absolute;inset:0}#menu.swap .m-info,#menu.swap .m-row{animation:.38s mSwap}@keyframes mSwap{0%{opacity:0;transform:translateY(10px)}}#menu .m-hints{right:var(--pad);bottom:calc(var(--pad) * .5);letter-spacing:.18em;opacity:.75;align-items:center;gap:10px;font-size:11px;display:flex;position:absolute}#menu .m-hints .k{border:1px solid #ffffff73;border-radius:6px;margin-right:4px;padding:3px 8px;display:inline-block}#menu .m-hints .m-back{cursor:pointer;pointer-events:auto}@media (height<=900px) and (aspect-ratio>=1){#menu .m-kicker{margin-bottom:8px}#menu .m-stats{grid-template-columns:1fr 1fr;column-gap:26px;max-width:470px;margin-top:18px}#menu .m-stat{grid-template-columns:92px 1fr}#menu .m-go{margin-top:18px;padding:11px 34px}#menu .m-soon{margin-top:14px}}#menu .m-kicker,#menu .m-name,#menu .m-tag,#menu .m-stat,#menu .m-soon,#menu .m-go,#menu .m-steps,#menu .m-label,#menu .m-lock,#menu .m-hints{font-family:var(--mfont);font-synthesis:style;-webkit-text-stroke:.06em currentColor;paint-order:stroke fill;font-style:italic;font-weight:400}#menu .m-name{-webkit-text-stroke:.075em currentColor;letter-spacing:.06em}#menu .m-kicker,#menu .m-tag,#menu .m-stat,#menu .m-steps,#menu .m-label,#menu .m-lock,#menu .m-hints{letter-spacing:.16em}@media (width<=760px),(aspect-ratio<=1){#menu .m-shade{background:linear-gradient(#040608d9 0%,#04060833 38% 55%,#040608f2 100%)}#menu .m-info{top:auto;bottom:190px;transform:none}#menu .m-stats{display:none}#menu .m-go{margin-top:18px}#menu .m-row{bottom:22px}#menu .m-tile{width:150px}#menu .m-steps{letter-spacing:.2em;font-size:10px}}#gate{font-synthesis:style;letter-spacing:.32em;color:#f2f5f4;-webkit-text-stroke:.05em currentColor;paint-order:stroke fill;margin-top:6px;font-family:Nova Square,Russo One,sans-serif;font-size:15px;font-style:italic;animation:1.6s ease-in-out infinite gatePulse}@keyframes gatePulse{0%,to{opacity:1}50%{opacity:.35}}#loading.behind #gate{display:none}
