:root{--night:#14123a;--ink:#f4efe2}html,body{background:var(--night);height:100%;color:var(--ink);touch-action:none;-webkit-user-select:none;user-select:none;margin:0;font-family:system-ui,sans-serif;overflow:hidden}#app,#app canvas{width:100%;height:100%;display:block;position:fixed;inset:0}.fps{top:max(8px, env(safe-area-inset-top));left:max(8px, env(safe-area-inset-left));pointer-events:none;white-space:pre;z-index:10;background:#00000073;border-radius:6px;padding:4px 8px;font:600 12px/1.2 ui-monospace,monospace;position:fixed}.panel{left:50%;bottom:max(10px, env(safe-area-inset-bottom));z-index:10;background:#0a081eb3;border-radius:10px;flex-direction:column;gap:6px;max-width:calc(100vw - 32px);padding:8px 10px;font:12px/1.2 ui-monospace,monospace;display:flex;position:fixed;transform:translate(-50%)}.panel .row{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.panel .row>span{opacity:.6;width:52px}.panel button{font:inherit;color:var(--ink);cursor:pointer;background:#ffffff14;border:1px solid #ffffff26;border-radius:6px;padding:4px 8px}.panel button.on{background:#3d6cff;border-color:#6f93ff}.hud{right:max(12px, env(safe-area-inset-right));top:max(10px, env(safe-area-inset-top));text-align:right;pointer-events:none;text-shadow:0 1px 2px #0009;z-index:10;font:600 14px/1.3 ui-monospace,monospace;position:fixed}.hud-speed{font-size:28px}.hud-bar{background:#00000059;border-radius:4px;width:140px;height:8px;margin:4px 0 4px auto;overflow:hidden}.hud-fill{transform-origin:0;background:#3d6cff;height:100%}.hud-fill.active{background:#9fd0ff}.hud-flags{opacity:.85}.hud-help{opacity:.7;max-width:60vw;margin-top:6px;font-size:11px}.touch{pointer-events:none;z-index:20;-webkit-user-select:none;position:fixed;inset:0}.tbtn{pointer-events:auto;touch-action:none;color:#fff;background:#14123a73;border:2px solid #ffffff59;border-radius:50%;place-items:center;width:76px;height:76px;font:700 20px system-ui;display:grid;position:absolute}.tbtn.on{background:#3d6cffb3}.tbtn.small{width:48px;height:48px;font-size:15px}.tbtn.left{left:max(16px, env(safe-area-inset-left));bottom:24px}.tbtn.right{left:calc(max(16px, env(safe-area-inset-left)) + 92px);bottom:24px}.tbtn.gas{right:max(16px, env(safe-area-inset-right));bottom:24px}.tbtn.brake{right:calc(max(16px, env(safe-area-inset-right)) + 92px);width:60px;height:60px;bottom:16px}.tbtn.boost{right:max(16px, env(safe-area-inset-right));bottom:116px}.tbtn.drift{right:calc(max(16px, env(safe-area-inset-right)) + 92px);width:64px;height:64px;bottom:96px}.tbtn.horn{left:max(16px, env(safe-area-inset-left));bottom:116px}.tbtn.lights{left:calc(max(16px, env(safe-area-inset-left)) + 60px);bottom:116px}.tbtn.tilt{left:calc(max(16px, env(safe-area-inset-left)) + 120px);font-size:12px;bottom:116px}.pxbtn{top:calc(max(8px, env(safe-area-inset-top)) + 46px);left:max(8px, env(safe-area-inset-left));color:var(--ink);cursor:pointer;z-index:11;background:#00000073;border:0;border-radius:6px;padding:5px 8px;font:600 12px ui-monospace,monospace;position:fixed}.pxpanel{top:calc(max(8px, env(safe-area-inset-top)) + 78px);left:max(8px, env(safe-area-inset-left));z-index:11;background:#0a081ec7;border-radius:10px;flex-direction:column;gap:8px;width:min(300px,100vw - 32px);padding:10px 12px;font:12px/1.3 ui-monospace,monospace;display:flex;position:fixed}.pxpanel[hidden]{display:none}.pxrow{align-items:center;gap:8px;display:flex}.pxrow.wrap{flex-wrap:wrap;gap:4px 12px}.pxrow input[type=range]{accent-color:#3d6cff;flex:1}.pxrow select{font:inherit;flex:1}.tbtn.fly{right:calc(max(16px, env(safe-area-inset-right)) + 176px);border-color:#8fb0ff;width:58px;height:58px;font-size:22px;bottom:60px}.hud-bar.charge .hud-fill{background:linear-gradient(90deg,#f2c14e,#ffe9a8)}.hud-bar.charge.low .hud-fill{background:#ff8a3d}.hud-bar.charge.active{box-shadow:0 0 10px #ffd678b3}.hud-label{opacity:.75;letter-spacing:.05em;font-size:10px}.hud-hint,.hud-toast{color:#fff;pointer-events:none;opacity:0;z-index:12;white-space:nowrap;text-overflow:ellipsis;background:#14123a99;border-radius:999px;max-width:calc(100vw - 32px);padding:6px 14px;font:700 14px/1.2 system-ui,sans-serif;transition:opacity .25s;position:fixed;left:50%;overflow:hidden;transform:translate(-50%)}.hud-hint{bottom:120px}.hud-toast{top:max(70px, env(safe-area-inset-top));background:#3d6cffbf;font-size:18px}.hud-hint.show,.hud-toast.show{opacity:1}.hud-popups{pointer-events:none;z-index:11;flex-direction:column;align-items:center;gap:4px;display:flex;position:fixed;top:34%;left:50%;transform:translate(-50%)}.hud-pop{letter-spacing:1px;white-space:nowrap;color:#ffd84a;text-shadow:2px 0 #1c1838,-2px 0 #1c1838,0 2px #1c1838,0 -2px #1c1838,3px 3px #1c1838;font:700 20px/1 ui-monospace,SF Mono,Menlo,Consolas,monospace;animation:1.4s steps(14,end) forwards hud-pop}.hud-pop.big{color:#7ff0ff;font-size:30px;animation-duration:2.2s}@keyframes hud-pop{0%{opacity:0;transform:translateY(10px)scale(.8)}12%{opacity:1;transform:translateY(0)scale(1.1)}25%{transform:scale(1)}80%{opacity:1}to{opacity:0;transform:translateY(-28px)}}@media (max-width:600px){.hud-pop{font-size:15px}.hud-pop.big{font-size:22px}}.fhud{right:max(12px, env(safe-area-inset-right));color:var(--ink);text-shadow:1px 1px #14123a;pointer-events:none;opacity:0;z-index:10;flex-direction:column;align-items:flex-end;gap:4px;font:600 12px/1.2 ui-monospace,monospace;transition:opacity .3s;display:flex;position:fixed;top:44%;transform:translateY(-50%)}.fhud.show{opacity:1}.fhud canvas{image-rendering:pixelated}.fhud-combo{color:#ffd84a;opacity:0;min-height:1.2em;font-size:15px;font-weight:800;transition:opacity .2s}.fhud-combo.on{opacity:1}.fcard{left:max(12px, env(safe-area-inset-left));min-width:220px;max-width:min(300px,42vw);color:var(--ink);text-align:center;opacity:0;transform-origin:0;pointer-events:none;z-index:13;background:#14123acc;border:2px solid #ffd84a;border-radius:14px;padding:10px 18px 12px;font:600 12px/1.35 ui-monospace,monospace;transition:opacity .2s,transform .25s cubic-bezier(.3,1.6,.5,1);position:fixed;top:44%;transform:translate(-16px,-50%)scale(.92)}.fcard.show{opacity:1;pointer-events:auto;transform:translateY(-50%)scale(1)}.fcard.perfect{--grade:#7ff0ff;border-color:#7ff0ff}.fcard.good{--grade:#ffd84a}.fcard.rough{--grade:#ff8a3d;border-color:#ff8a3d}.fcard-grade{letter-spacing:4px;color:var(--grade,#ffd84a);text-shadow:2px 0 #14123a,-2px 0 #14123a,0 2px #14123a,3px 3px #14123a;font-size:26px;font-weight:900}.fcard-stats{opacity:.85}.fcard-combo{margin-top:6px;font-size:12px}.fcard-combo b{color:#ffd84a;font-size:20px;display:block}.fcard-share{color:var(--ink);font:inherit;cursor:pointer;background:#3d6cff8c;border:1px solid #f4efe280;border-radius:999px;margin-top:8px;padding:4px 12px}.fcard-share:hover{background:#3d6cffd9}@media (max-width:700px){.fhud{transform-origin:100%;top:38%;transform:translateY(-50%)scale(.78)}.fcard{min-width:0;padding:8px 12px 10px;font-size:11px;top:38%}.fcard-grade{font-size:20px}}@media (max-height:500px){.fhud{transform-origin:100%;top:50%;transform:translateY(-50%)scale(.7)}.fcard{min-width:0;max-width:180px;padding:6px 10px 8px;font-size:10px;top:56%}.fcard-grade{letter-spacing:2px;font-size:17px}.fcard-stats{display:none}.fcard-combo b{font-size:15px}.fcard-share{margin-top:4px}}.is-touch .fhud{top:max(8px, env(safe-area-inset-top));right:calc(max(12px, env(safe-area-inset-right)) + 150px);transform-origin:100% 0;transform:scale(.62)}.is-touch .fcard{transform-origin:0 0;min-width:0;max-width:180px;padding:5px 10px 7px;top:88px;transform:translate(-16px)scale(.92)}.is-touch .fcard.show{transform:none}.is-touch .fcard-stats{display:none}.is-touch .fcard-combo{margin-top:2px}.is-touch .fcard-share{margin-top:3px;padding:2px 10px}.dlg-bubble{color:#1c1838;border:3px solid var(--c,#3d6cff);pointer-events:auto;z-index:30;background:#fffaf0;border-radius:14px;max-width:min(320px,70vw);margin-top:-14px;padding:8px 12px;font:700 16px/1.25 system-ui,sans-serif;display:none;position:fixed;top:0;left:0;box-shadow:0 3px #00000040}.dlg-bubble.show{display:block}.dlg-bubble:after{content:"";border:8px solid #0000;border-top-color:var(--c,#3d6cff);position:absolute;bottom:-12px;left:50%;transform:translate(-50%)}.dlg-bar{left:50%;bottom:max(18px, env(safe-area-inset-bottom));color:#f4efe2;text-align:center;z-index:30;cursor:pointer;background:#0a081ec7;border-radius:10px;max-width:min(720px,100vw - 32px);padding:8px 16px;font:500 17px/1.35 system-ui,sans-serif;display:none;position:fixed;transform:translate(-50%)}.dlg-bar.show{display:block}.dlg-name{margin-right:8px;font-weight:800}.letterbox{z-index:25;pointer-events:none;background:#07061a;height:0;transition:height .5s;position:fixed;left:0;right:0}.letterbox.top{top:0}.letterbox.bottom{bottom:0}.letterbox.on{height:9vh}.cut-skip{right:max(12px, env(safe-area-inset-right));z-index:31;color:#f4efe2;cursor:pointer;background:#00000073;border:1px solid #ffffff40;border-radius:6px;padding:5px 9px;font:600 12px ui-monospace,monospace;display:none;position:fixed;bottom:calc(9vh + 10px)}.cut-skip.on{display:block}.objective{left:50%;top:max(12px, env(safe-area-inset-top));color:#f4efe2;z-index:15;pointer-events:none;background:#0a081eb3;border-radius:10px;flex-direction:column;align-items:center;gap:2px;max-width:calc(100vw - 32px);padding:6px 16px;font:500 13px/1.3 system-ui,sans-serif;display:none;position:fixed;transform:translate(-50%)}.objective.show{display:flex}.objective b{color:#ffd27a;font-size:15px}.objective span{opacity:.75}.objective em{opacity:.8;font:600 12px ui-monospace,monospace}.flash-glitch{z-index:40;pointer-events:none;opacity:0;mix-blend-mode:screen;background:repeating-linear-gradient(0deg,#ffffff2e 0 2px,#0000 2px 5px),linear-gradient(90deg,#3d6cffd9,#ff2fb399,#2fe8ffd9);position:fixed;inset:0}.flash-glitch.run{animation:.78s steps(6,end) both flash-glitch}@keyframes flash-glitch{0%{opacity:0;transform:translate(0)scaleY(1)}30%{opacity:.9;transform:translate(-12px)scaleY(1.05)}48%{opacity:1;filter:hue-rotate(60deg);transform:translate(10px)scaleY(.96)}70%{opacity:.6;transform:translate(-6px)}to{opacity:0;transform:translate(0)}}.chapter-title{color:#f4efe2;text-shadow:0 2px 12px #0009;opacity:0;pointer-events:none;z-index:35;text-align:center;flex-direction:column;align-items:center;gap:6px;transition:opacity .8s;display:flex;position:fixed;top:34%;left:50%;transform:translate(-50%,-50%)}.chapter-title.show{opacity:1}.chapter-title small{letter-spacing:.2em;opacity:.8;font:600 13px ui-monospace,monospace}.chapter-title b{color:#ffd27a;font:800 44px/1 system-ui,sans-serif}.chapter-title span{opacity:.85;font:500 18px system-ui,sans-serif}
