:root{--color-bg: #0a0e14;--color-fg: #f4f6fb;--color-accent: #ffb22e;--color-muted: #8a93a6;--color-perf: #7ef9c2;--font: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;background:var(--color-bg);color:var(--color-fg);font-family:var(--font);overflow:hidden;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none;overscroll-behavior:none;-webkit-tap-highlight-color:transparent}#app{position:fixed;inset:0;width:100%;height:100%;overflow:hidden}#game-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}.overlay{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .3s ease}.overlay.visible{opacity:1}#perf-overlay{position:absolute;top:max(8px,env(safe-area-inset-top));left:max(8px,env(safe-area-inset-left));padding:8px 10px;display:flex;flex-direction:column;gap:2px;background:#0a0e148c;border:1px solid rgba(126,249,194,.25);border-radius:6px;font-size:12px;line-height:1.4;color:var(--color-perf);font-variant-numeric:tabular-nums;pointer-events:none;min-width:132px}.perf-line{white-space:pre}.joystick-base{position:absolute;width:140px;height:140px;margin-left:-70px;margin-top:-70px;border-radius:50%;background:#ffffff14;border:2px solid rgba(255,255,255,.25);pointer-events:none;opacity:0;transition:opacity .18s ease;z-index:10}.joystick-base.visible{opacity:1}.joystick-stick{position:absolute;top:50%;left:50%;width:56px;height:56px;border-radius:50%;background:#ffb22ed9;border:2px solid rgba(255,255,255,.5);transform:translate(-50%,-50%);box-shadow:0 2px 12px #00000059}.jump-button{position:absolute;right:max(24px,env(safe-area-inset-right));bottom:max(28px,env(safe-area-inset-bottom));width:120px;height:120px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;letter-spacing:.1em;color:#fffffff2;background:#ffb22e52;border:2px solid rgba(255,178,46,.7);box-shadow:0 2px 14px #0000004d;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;transition:transform .08s ease,background .08s ease;z-index:10}.jump-button.active{transform:scale(.92);background:#ffb22e99}.boost-button{position:absolute;right:max(28px,env(safe-area-inset-right));bottom:max(168px,calc(148px + env(safe-area-inset-bottom)));width:104px;height:104px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;letter-spacing:.08em;color:#fffffff2;background:#7ef9c247;border:2px solid rgba(126,249,194,.7);box-shadow:0 2px 14px #0000004d;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;transition:transform .08s ease,background .08s ease;z-index:10}.boost-button.active{transform:scale(.92);background:#7ef9c299}.hud{position:absolute;top:calc(max(8px,env(safe-area-inset-top)) + 64px);left:max(10px,env(safe-area-inset-left));display:flex;flex-direction:column;gap:5px;padding:8px 12px;background:#0a0e148c;border:1px solid rgba(255,178,46,.3);border-radius:8px;font-size:13px;line-height:1.4;color:var(--color-fg);font-variant-numeric:tabular-nums;pointer-events:none;z-index:9;min-width:168px}#perf-overlay.visible~.hud{top:calc(max(8px,env(safe-area-inset-top)) + 116px)}.hud-row{display:flex;align-items:center;gap:8px;white-space:nowrap}.hud-label{color:var(--color-muted);letter-spacing:.1em;min-width:46px}.hud-value{color:var(--color-fg);font-weight:600}.hud-boost-row{gap:6px}.hud-boost-track{flex:1;height:9px;border-radius:999px;background:#ffffff1f;overflow:hidden;min-width:90px}.hud-boost-fill{height:100%;width:100%;border-radius:999px;background:linear-gradient(90deg,#ffb22e,#ffd56b);transition:width .08s linear,background .12s ease;transform-origin:left center}.hud-boost-fill.boosting{background:linear-gradient(90deg,#7ef9c2,#b6ffe0)}.hud-boost-fill.empty{background:#ffffff2e}.hud-boost-readout{color:var(--color-muted);font-size:12px;min-width:30px;text-align:right}.hud-streak{color:var(--color-accent);font-weight:700;letter-spacing:.05em}.hud-complete{color:#7ef9c2;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.screen-flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none;z-index:20;transition:opacity .04s linear}.objective-message{position:absolute;top:38%;left:50%;transform:translate(-50%,-50%) scale(.9);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;z-index:21;transition:opacity .06s linear,transform .06s linear}.objective-message.visible{opacity:1}.objective-message-text{font-size:clamp(1.8rem,6vw,3.4rem);font-weight:800;letter-spacing:.14em;color:#7ef9c2;text-shadow:0 0 18px rgba(126,249,194,.55),0 4px 22px rgba(0,0,0,.45);text-transform:uppercase;white-space:nowrap}.checkpoint-message{position:absolute;top:24%;left:50%;transform:translate(-50%,-50%) scale(.9);color:#7ef9c2;font-size:clamp(1.2rem,4vw,2.2rem);font-weight:800;letter-spacing:.16em;text-shadow:0 3px 16px rgba(0,0,0,.5);opacity:0;pointer-events:none;transition:opacity .1s ease,transform .1s ease;z-index:22}.checkpoint-message.visible{opacity:1;transform:translate(-50%,-50%) scale(1)}.hud-lives{color:#ffcf5a}.game-over{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:#080c16c7;opacity:0;pointer-events:none;transition:opacity .15s ease;z-index:40}.game-over.visible{opacity:1;pointer-events:auto}.game-over-active .jump-button,.game-over-active .boost-button,.game-over-active .joystick-base,.game-over-active .joystick-stick{opacity:0;pointer-events:none}.game-over-title{color:#ffcf5a;font-size:clamp(2.5rem,9vw,5.5rem);font-weight:900;letter-spacing:.12em;text-shadow:0 5px 24px rgba(0,0,0,.55)}.game-over-score{color:var(--color-fg);font-size:clamp(1rem,3vw,1.5rem);letter-spacing:.12em}.restart-button{min-width:220px;min-height:76px;padding:16px 32px;border:2px solid #7ef9c2;border-radius:14px;color:#081016;background:#7ef9c2;font:800 clamp(1.1rem,4vw,1.7rem) var(--font);letter-spacing:.12em;touch-action:none;cursor:pointer}.restart-button:active{transform:scale(.95)}:root{--title-fade-ms: .45s;--title-ink: #23164f;--title-ink-deep: #170e35}.title-screen{position:absolute;inset:0;z-index:50;overflow:hidden;opacity:0;pointer-events:none;transition:opacity var(--title-fade-ms) ease;will-change:opacity}.title-screen.visible{opacity:1;pointer-events:auto;cursor:pointer}.title-screen[hidden]{display:none}.title-bg{position:absolute;inset:0;pointer-events:none}.title-bg-sky{background:linear-gradient(180deg,#1a1670,#2246c4 14%,#2b86e0,#46b0ea 50%,#7fd3f0 66%,#bde9f4,#ffdd8f 90%,#ffa646)}.title-bg-sun{background:radial-gradient(ellipse 58% 26% at 50% 97%,#ffe28cf2,#ffa8428c 40%,#ff8c3c00 78%)}.title-bg-stars{top:0;bottom:45%}.title-bg-stars:before,.title-bg-stars:after{content:"";position:absolute;top:0;left:0;width:3px;height:3px;border-radius:50%;background:#fff;box-shadow:8vw 12vh #ffffffe6,17vw 30vh #ffffff8c,26vw 8vh #ffffffbf,34vw 22vh #ffffff73,43vw 5vh #ffffffd9,58vw 15vh #fff9,67vw 32vh #ffffff80,76vw 10vh #fffc,85vw 26vh #ffffff8c,93vw 14vh #ffffffb3;animation:title-twinkle 5.5s ease-in-out infinite}.title-bg-stars:after{width:2px;height:2px;box-shadow:12vw 24vh #ffffff80,22vw 16vh #ffffffb3,39vw 34vh #fff6,50vw 9vh #ffffffa6,62vw 28vh #ffffff73,72vw 19vh #fff9,88vw 34vh #fff6;animation-delay:-2.7s}.title-island{position:absolute;bottom:11%;border-radius:50% 50% 10% 10%/78% 78% 10% 10%}.title-island-a{left:-8%;width:44%;height:12%;background:#261852d1}.title-island-b{right:-10%;width:48%;height:15%;background:#201448db}.title-island-c{left:33%;width:32%;height:8%;bottom:13.5%;background:#3a287099}.title-bg-glow{background:radial-gradient(ellipse 40% 52% at 50% 56%,#fffae257,#ffe8b024 44%,#ffe2a000 72%)}.title-bg-vignette{background:radial-gradient(ellipse 78% 78% at 50% 50%,#0000 58%,#0c082247)}.title-stage{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;height:100%;padding:calc(env(safe-area-inset-top,0px) + 3.2vh) calc(env(safe-area-inset-right,0px) + 3vw) calc(env(safe-area-inset-bottom,0px) + 1.8vh) calc(env(safe-area-inset-left,0px) + 3vw);text-align:center}.title-logo{position:relative;display:flex;flex-direction:column;align-items:center;flex:0 0 auto;gap:.02em;transform:rotate(-2.4deg);font-family:Trebuchet MS,Avenir Next,Segoe UI,system-ui,sans-serif;font-weight:900;letter-spacing:.02em;line-height:.86;text-transform:uppercase}.title-word{position:relative;display:block;color:var(--title-ink);-webkit-text-stroke:.14em var(--title-ink);text-shadow:0 .02em 0 var(--title-ink),0 .04em 0 var(--title-ink),0 .06em 0 var(--title-ink-deep),0 .08em 0 var(--title-ink-deep),0 .1em 0 var(--title-ink-deep),0 .13em .02em rgba(23,14,53,.55),0 .16em .5em rgba(20,10,50,.45)}.title-word:after{content:attr(data-text);position:absolute;left:0;top:0;width:100%;-webkit-text-stroke:0;text-shadow:none;background:linear-gradient(180deg,#fffbe8,#ffe36f 30%,#ffc32e,#ff8f22 82%,#ff6a1f);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.title-word-rocket{font-size:clamp(2.6rem,9.2vw,7.2rem)}.title-word-rush{font-size:clamp(3.6rem,13vw,10rem);margin-left:.14em}.title-spark{position:absolute;width:1.9vw;height:1.9vw;min-width:14px;min-height:14px;background:radial-gradient(ellipse 100% 22% at 50% 50%,#fffdf0,#fff0aa00 70%),radial-gradient(ellipse 22% 100% at 50% 50%,#fffdf0,#fff0aa00 70%);animation:title-twinkle 3.4s ease-in-out infinite}.title-spark-a{top:-4%;right:-2%}.title-spark-b{bottom:6%;left:-3%;transform:scale(.7);animation-delay:-1.6s}.title-hero-wrap{flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;width:100%;margin:.6vh 0}.title-hero{max-height:100%;max-width:min(52vw,580px);width:auto;height:auto;object-fit:contain;filter:drop-shadow(0 1.6vh 1.4vh rgba(28,14,60,.42));animation:title-float 4.6s ease-in-out infinite}.title-start{flex:0 0 auto;margin-top:.4vh;font-family:Trebuchet MS,Avenir Next,Segoe UI,system-ui,sans-serif;font-size:clamp(1.15rem,3.1vw,2.1rem);font-weight:800;letter-spacing:.22em;text-indent:.22em;color:#fffdf2;text-shadow:0 .06em 0 rgba(35,22,79,.95),0 0 .35em rgba(24,14,56,.85),0 0 .9em rgba(255,205,105,.7),0 .12em .5em rgba(18,10,44,.75);animation:title-pulse 1.7s ease-in-out infinite}.title-credits{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:.22em;margin-top:1.7vh;font-family:Trebuchet MS,Avenir Next,Segoe UI,system-ui,sans-serif;color:#fdf4e3;text-shadow:0 .08em .4em rgba(18,10,44,.75)}.title-credits-lead{font-size:clamp(.7rem,1.45vw,.95rem);font-weight:600;letter-spacing:.2em;text-indent:.2em;text-transform:uppercase;opacity:.82}.title-credits-name{font-size:clamp(.88rem,1.85vw,1.2rem);font-weight:700;letter-spacing:.1em;text-indent:.1em}@keyframes title-pulse{0%,to{opacity:.72}50%{opacity:1}}@keyframes title-float{0%,to{transform:translateY(0)}50%{transform:translateY(-1.4vh)}}@keyframes title-twinkle{0%,to{opacity:.35}50%{opacity:1}}.title-screen.activated .title-start{animation:none;opacity:1}@media (prefers-reduced-motion: reduce){.title-start,.title-hero,.title-spark,.title-bg-stars:before,.title-bg-stars:after{animation:none}.title-start{opacity:1}}@media (max-height: 560px){.title-stage{padding-top:calc(env(safe-area-inset-top,0px) + 1.2vh)}.title-word-rocket{font-size:clamp(2rem,6vh,4rem)}.title-word-rush{font-size:clamp(2.8rem,9vh,5.6rem)}.title-hero{max-width:min(38vw,420px)}.title-credits{margin-top:.6vh}}#perf-overlay{z-index:60}.title-active .hud,.title-active .joystick-base,.title-active .joystick-stick,.title-active .jump-button,.title-active .boost-button,.pointer-fine .joystick-base,.pointer-fine .joystick-stick,.pointer-fine .jump-button,.pointer-fine .boost-button{display:none!important}.hud,.jump-button,.boost-button{animation:title-ui-in var(--title-fade-ms) ease both}@keyframes title-ui-in{0%{opacity:0}to{opacity:1}}
