*{box-sizing:border-box}html{--hud-bottom-font-size:.75rem}@media (orientation:landscape) and (height<=600px){html{--hud-bottom-font-size:.7rem}}html,body{background:#0a0e1a;width:100%;height:100%;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:hidden}#app{width:100%;height:100%}#app canvas{width:100%;height:100%;display:block}#hud-stats{left:max(1.25rem, env(safe-area-inset-left));top:max(1.25rem, env(safe-area-inset-top));z-index:9;color:#e8eefc;text-shadow:0 1px 3px #000000a6;pointer-events:none;-webkit-user-select:none;user-select:none;max-width:min(11.5rem,34vw);position:fixed}#hud{left:max(1.25rem, env(safe-area-inset-left));bottom:max(1.25rem, env(safe-area-inset-bottom));color:#e8eefc;text-shadow:0 1px 3px #000000a6;pointer-events:none;-webkit-user-select:none;user-select:none;flex-direction:column;align-items:flex-start;gap:.15rem;display:flex;position:fixed}.hud-fps{opacity:.48;letter-spacing:.08em;font-variant-numeric:tabular-nums;text-transform:uppercase;font-size:.65rem;font-weight:600}.hud-line{letter-spacing:.02em;font-size:1rem;font-weight:600}#hud-coins{font-variant-numeric:tabular-nums;opacity:.95;margin-top:.2rem}.hud-right{right:max(1.25rem, env(safe-area-inset-right));top:max(1.25rem, env(safe-area-inset-top));z-index:9;pointer-events:none;flex-direction:column;align-items:flex-end;gap:.4rem;display:flex;position:fixed}.hud-center{left:50%;top:max(1rem, env(safe-area-inset-top));z-index:8;text-align:center;pointer-events:none;-webkit-user-select:none;user-select:none;flex-direction:column;align-items:center;gap:.4rem;width:min(22rem,100vw - 8.5rem);display:flex;position:fixed;transform:translate(-50%)}.hud-launch-hint[hidden]{display:none!important}.hud-launch-hint:not([hidden]){flex-direction:column;align-items:center;gap:.28rem;display:flex}.hud-launch-hint{left:50%;top:max(7.25rem, calc(env(safe-area-inset-top) + 26vh));z-index:9;text-align:center;pointer-events:none;-webkit-user-select:none;user-select:none;color:#f4f4f4;text-shadow:0 8px 28px #00000073;letter-spacing:.02em;width:min(22rem,100vw - 3rem);line-height:1.25;position:fixed;transform:translate(-50%)}.hud-launch-hint-title{font-size:1.35rem;font-weight:750}.hud-launch-hint-sub{opacity:.7;font-size:.88rem;font-weight:600}.hud-scores{flex-direction:column;gap:.2rem;margin-top:.45rem;display:flex}.hud-scores[hidden]{display:none!important}.hud-score-row{letter-spacing:.03em;align-items:center;gap:.4rem;font-size:.8rem;font-weight:700;display:flex}.hud-score-dot{border-radius:50%;flex:none;width:.55rem;height:.55rem;box-shadow:0 0 6px}.hud-score-name{text-overflow:ellipsis;white-space:nowrap;max-width:7.5rem;overflow:hidden}.hud-score-coins{font-variant-numeric:tabular-nums;color:#ffd76a}.hud-goal-toast[hidden]{display:none!important}.hud-goal-toast:not([hidden]){display:block}.hud-goal-toast{color:#e8eefc;text-shadow:0 1px 3px #000000a6;letter-spacing:.02em;opacity:1;font-size:.82rem;font-weight:600;line-height:1.35;transition:opacity .45s}.hud-goal-toast.hud-goal--fading{opacity:0}.hud-controls{font-size:var(--hud-bottom-font-size);opacity:.55;letter-spacing:.04em;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;margin-top:0}.hud-controls-keys,.hud-controls-touch{text-transform:uppercase;margin-top:0}.hud-controls-keys{display:block}.hud-controls-touch{display:none}#hud-credit{right:max(1.25rem, env(safe-area-inset-right));bottom:max(1.25rem, env(safe-area-inset-bottom));color:#e8eefc;text-shadow:0 1px 3px #000000a6;-webkit-user-select:none;user-select:none;font-size:var(--hud-bottom-font-size);opacity:.55;letter-spacing:.04em;pointer-events:none;text-align:right;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;font-weight:400;position:fixed}#hud-credit a{pointer-events:auto;color:#f0f0f0;font-size:inherit;font-weight:inherit;border-bottom:1px solid #e6e6e659;text-decoration:none}#hud-credit a:hover{color:#fff;border-bottom-color:#ffffffb3}body.touch-ui{--touch-hud-clearance:2.75rem}body.touch-ui #hud,body.touch-ui #hud-credit{bottom:max(.7rem, env(safe-area-inset-bottom));z-index:41}body.touch-ui #hud-credit{font-size:.65rem}body.touch-ui #hud-stats{left:max(.7rem, env(safe-area-inset-left));top:max(.7rem, env(safe-area-inset-top));max-width:min(10.5rem,36vw)}body.touch-ui .hud-line{font-size:.86rem}body.touch-ui #hud-coins{margin-top:.05rem}body.touch-ui .hud-scores{margin-top:.3rem}body.touch-ui .hud-score-row{font-size:.7rem}body.touch-ui .hud-score-name{max-width:5.2rem}body.touch-ui .hud-right{right:max(.7rem, env(safe-area-inset-right));top:max(.7rem, env(safe-area-inset-top))}body.touch-ui .hud-room{padding:.32rem .7rem;font-size:.68rem}body.touch-ui .hud-menu{min-height:2.5rem;padding:.48rem .95rem;font-size:.82rem}body.touch-ui .hud-center{top:max(.65rem, env(safe-area-inset-top));gap:.32rem;width:min(18rem,100vw - 7.25rem)}body.touch-ui .hud-timer{font-size:1.55rem}body.touch-ui .hud-goal-toast,body.touch-ui .hud-wait{font-size:.74rem}body.touch-ui .hud-arrive,body.touch-ui .hud-launch-hint{top:max(8.5rem, calc(env(safe-area-inset-top) + 30vh))}body.touch-ui .hud-launch-hint-title{font-size:1.2rem}body.touch-ui .hud-launch-hint-sub{font-size:.8rem}@media (orientation:landscape) and (height<=600px){body.touch-ui{--touch-hud-clearance:clamp(2.75rem, 12svh, 4.25rem)}}body.touch-ui .hud-controls-keys{display:none}body.touch-ui .hud-controls-touch{display:block}.touch-controls{--touch-joystick-size:7.5rem;--touch-jump-size:5.75rem;pointer-events:none;z-index:40;position:fixed;inset:0}.touch-joystick,.touch-jump{pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none}.touch-joystick{left:max(1.5rem, calc(env(safe-area-inset-left,0px) + .85rem));bottom:max(.75rem, env(safe-area-inset-bottom));width:var(--touch-joystick-size);height:var(--touch-joystick-size);position:absolute}body.touch-ui .touch-joystick{bottom:calc(max(1.25rem, env(safe-area-inset-bottom,0px)) + var(--touch-hud-clearance,8.25rem))}.touch-joystick-base{background:#ffffff14;border:2px solid #ffffff38;border-radius:50%;position:absolute;inset:0;box-shadow:inset 0 1px #ffffff1f}.touch-joystick-knob{will-change:transform;background:#c8dcff59;border:2px solid #ffffff73;border-radius:50%;width:2.65rem;height:2.65rem;margin-top:-1.325rem;margin-left:-1.325rem;position:absolute;top:50%;left:50%;transform:translate(0);box-shadow:0 2px 10px #00000059}.touch-jump{right:max(1.5rem, calc(env(safe-area-inset-right,0px) + .85rem));bottom:max(.75rem, env(safe-area-inset-bottom));width:var(--touch-jump-size);height:var(--touch-jump-size);color:#f2f2f2;letter-spacing:.06em;text-transform:uppercase;text-shadow:0 1px 2px #00000080;cursor:pointer;background:#2a2a2cb8;border:1.5px solid #e6e6e66b;border-radius:50%;padding:0;font-size:.78rem;font-weight:700;position:absolute;box-shadow:0 2px 12px #00000059}body.touch-ui .touch-jump{bottom:calc(max(1.25rem, env(safe-area-inset-bottom,0px)) + var(--touch-hud-clearance,8.25rem) + (var(--touch-joystick-size) - var(--touch-jump-size)) / 2)}.touch-jump:after{content:"Jump"}.touch-jump.touch-jump--active{color:#161616;background:#e8e8e8eb;border-color:#e8e8e8;transform:scale(.96)}.hud-timer-wrap{text-align:center}.hud-timer{letter-spacing:.05em;font-variant-numeric:tabular-nums;color:#eef4ff;text-shadow:0 2px 10px #0009,0 0 22px #78aaff40;font-size:2rem;font-weight:800}.hud-timer--warn{color:#ffd45e}.hud-timer--danger{color:#ff5e5e;animation:1s ease-in-out infinite timer-pulse}@keyframes timer-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}.hud-bonus{color:#6ef79a;text-shadow:0 1px 8px #0009;opacity:0;font-size:1.15rem;font-weight:800}.hud-bonus--pop{animation:1.8s ease-out forwards bonus-pop}.hud-arrive{left:50%;top:max(7.25rem, calc(env(safe-area-inset-top) + 26vh));z-index:9;text-align:center;pointer-events:none;-webkit-user-select:none;user-select:none;position:fixed;transform:translate(-50%)}.hud-arrive[hidden]{display:none!important}.hud-arrive-kicker{letter-spacing:.42em;text-transform:uppercase;color:#f0f0f08c;font-size:.72rem;font-weight:700}.hud-arrive-num{letter-spacing:.04em;color:#f4f4f4;text-shadow:0 8px 28px #00000073;font-size:clamp(3.2rem,9vw,4.6rem);font-weight:750;line-height:.95}.hud-arrive--in{animation:.55s cubic-bezier(.16,1,.3,1) both arrive-in}.hud-arrive--out{animation:.48s forwards arrive-out}@keyframes arrive-in{0%{opacity:0;transform:translate(-50%)translateY(12px)scale(.92)}to{opacity:1;transform:translate(-50%)translateY(0)scale(1)}}@keyframes arrive-out{to{opacity:0;transform:translate(-50%)translateY(-8px)scale(1.04)}}@media (prefers-reduced-motion:reduce){.hud-arrive--in,.hud-arrive--out{animation:none!important}}@keyframes bonus-pop{0%{opacity:0;transform:translateY(6px)scale(.8)}15%{opacity:1;transform:translateY(0)scale(1.15)}35%{transform:translateY(-4px)scale(1)}to{opacity:0;transform:translateY(-22px)scale(.95)}}.hud-room{letter-spacing:.06em;text-transform:uppercase;color:#f0f0f0;cursor:pointer;pointer-events:auto;white-space:nowrap;background:#2a2a2cb8;border:1px solid #d2d2d247;border-radius:999px;width:max-content;padding:.28rem .65rem;font-size:.75rem;font-weight:700;transition:background .25s,border-color .25s}.hud-room:hover{background:#3a3a3ce6;border-color:#ebebeb73}.hud-room[hidden]{display:none!important}.hud-menu{font:inherit;letter-spacing:.06em;text-transform:uppercase;color:#f0f0f0;cursor:pointer;pointer-events:auto;background:#2a2a2cb8;border:1px solid #d2d2d247;border-radius:999px;padding:.28rem .65rem;font-size:.75rem;font-weight:700;transition:background .25s,color .25s,border-color .25s;display:block}.hud-menu:hover{background:#3a3a3ce6;border-color:#ebebeb73}.hud-menu--armed{color:#161616;background:#e8e8e8;border-color:#e8e8e8}.hud-menu[hidden]{display:none!important}.hud-wait{color:#f0f0f0;letter-spacing:.02em;text-shadow:0 1px 3px #00000080;pointer-events:none;background:#161618c7;border:1px solid #dcdcdc38;border-radius:999px;padding:.4rem .85rem;font-size:.85rem;font-weight:700;animation:1.6s ease-in-out infinite hud-wait-pulse}.hud-wait[hidden]{display:none!important}@keyframes hud-wait-pulse{0%,to{opacity:1}50%{opacity:.65}}.menu-overlay{z-index:100;-webkit-backdrop-filter:blur(10px)saturate(.7);background:radial-gradient(at 50% 42%,#30303047,#0000 42%),#08080ac7;justify-content:center;align-items:center;animation:.55s both menu-veil-in;display:flex;position:fixed;inset:0}.menu-overlay:before{content:"";pointer-events:none;opacity:.7;background-image:radial-gradient(1px 1px at 12% 22%,#ffffff8c,#0000),radial-gradient(1px 1px at 78% 18%,#fff6,#0000),radial-gradient(1.2px 1.2px at 64% 72%,#ffffff59,#0000),radial-gradient(1px 1px at 28% 80%,#ffffff47,#0000),radial-gradient(1px 1px at 88% 54%,#ffffff38,#0000);animation:18s linear infinite menu-stars;position:absolute;inset:0}.menu-overlay--out{pointer-events:none;animation:.28s forwards menu-veil-out}.menu-overlay--out .menu-card{animation:.28s forwards menu-card-out}.menu-card{color:#f0f0f0;background:#161618e0;border:1px solid #dcdcdc38;border-radius:1.6rem;flex-direction:column;gap:.62rem;width:min(21rem,100vw - 2rem);padding:1.75rem 1.45rem 1.35rem;animation:.62s cubic-bezier(.16,1,.3,1) both menu-card-in;display:flex;position:relative;box-shadow:0 24px 70px #0000008c,inset 0 1px #ffffff14}.menu-mark{width:3.1rem;height:3.1rem;margin:.05rem auto .35rem;position:relative}.menu-mark-orb{border:1px solid #e6e6e6b8;border-radius:50%;position:absolute;box-shadow:0 0 0 .5px #00000059}.menu-mark-orb--back{background:#2a2a2a;width:1.85rem;height:1.85rem;animation:7.5s ease-in-out infinite menu-orb-drift;top:.08rem;right:.12rem}.menu-mark-orb--front{background:#6b6b6b;width:2.05rem;height:2.05rem;animation:7.5s ease-in-out infinite reverse menu-orb-drift;bottom:.06rem;left:.08rem}.menu-title{letter-spacing:.01em;text-align:center;color:#f4f4f4;font-size:1.55rem;font-weight:750}.menu-tag{text-align:center;letter-spacing:.01em;color:#e6e6e68c;margin-bottom:.35rem;font-size:.78rem}.menu-label{letter-spacing:.14em;text-transform:uppercase;color:#e6e6e673;font-size:.66rem;font-weight:650}.menu-input{color:#f2f2f2;background:#0a0a0c8c;border:1px solid #d2d2d238;border-radius:999px;outline:none;width:100%;padding:.62rem .8rem;font-size:1rem;font-weight:600;transition:border-color .25s,background .25s,box-shadow .25s}.menu-input::placeholder{color:#e6e6e652}.menu-input:focus{background:#0e0e10bf;border-color:#ebebeb8c;box-shadow:0 0 0 3px #ffffff0f}.menu-btn{color:#f2f2f2;letter-spacing:.03em;cursor:pointer;background:#2a2a2ce6;border:1px solid #d2d2d247;border-radius:999px;width:100%;padding:.72rem .85rem;font-size:.92rem;font-weight:700;transition:background .28s,border-color .28s,color .28s,transform .28s cubic-bezier(.16,1,.3,1),box-shadow .28s}.menu-btn:hover:not(:disabled){background:#3a3a3cf2;border-color:#ebebeb73;transform:translateY(-1px);box-shadow:0 8px 22px #00000047}.menu-btn:active:not(:disabled){transform:translateY(0)scale(.985)}.menu-btn:disabled{opacity:.42;cursor:wait}.menu-btn-primary{color:#161616;background:#e8e8e8;border-color:#e8e8e8}.menu-btn-primary:hover:not(:disabled){color:#111;background:#f6f6f6;border-color:#f6f6f6}.menu-divider{letter-spacing:.2em;text-transform:uppercase;color:#e6e6e661;align-items:center;gap:.65rem;margin:.2rem 0;font-size:.62rem;font-weight:700;display:flex}.menu-divider:before,.menu-divider:after{content:"";background:#dcdcdc24;flex:1;height:1px}.menu-join-row{gap:.5rem;display:flex}.menu-input-code{text-transform:uppercase;letter-spacing:.28em;text-align:center;font-variant-numeric:tabular-nums;flex:1}.menu-btn-join{width:6.2rem}.menu-legal,.menu-credit{text-align:center;color:#e6e6e666;font-size:.66rem}.menu-legal{margin-top:.2rem}.menu-credit{margin-top:.55rem}.menu-legal a,.menu-credit a{color:#f0f0f0b8;border-bottom:1px solid #e6e6e647;text-decoration:none}.menu-legal a:hover,.menu-credit a:hover{color:#fff;border-bottom-color:#ffffff8c}.menu-error{color:#ff9a9a;text-align:center;font-size:.78rem;font-weight:600}@keyframes menu-veil-in{0%{opacity:0}to{opacity:1}}@keyframes menu-veil-out{to{opacity:0}}@keyframes menu-card-in{0%{opacity:0;transform:translateY(14px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes menu-card-out{to{opacity:0;transform:translateY(8px)scale(.98)}}@keyframes menu-orb-drift{0%,to{transform:translate(0)}50%{transform:translate(2px,-2px)}}@keyframes menu-stars{0%{transform:translateY(0)}to{transform:translateY(-18px)}}@media (prefers-reduced-motion:reduce){.menu-overlay,.menu-overlay:before,.menu-card,.menu-mark-orb,.menu-overlay--out,.menu-overlay--out .menu-card{animation:none!important}}.gameover-overlay{z-index:90;-webkit-backdrop-filter:blur(10px)saturate(.7);background:radial-gradient(at 50% 40%,#28282840,#0000 45%),#08080ac7;justify-content:center;align-items:center;animation:.45s both menu-veil-in;display:flex;position:fixed;inset:0}.gameover-overlay[hidden]{display:none!important}.gameover-card{text-align:center;color:#f0f0f0;background:#161618e6;border:1px solid #dcdcdc38;border-radius:1.6rem;flex-direction:column;gap:.85rem;width:min(20rem,100vw - 2rem);padding:1.85rem 1.45rem 1.4rem;animation:.55s cubic-bezier(.16,1,.3,1) both menu-card-in;display:flex;box-shadow:0 24px 70px #0000008c,inset 0 1px #ffffff14}.gameover-title{letter-spacing:.02em;color:#f4f4f4;font-size:1.7rem;font-weight:750}.gameover-stats{color:#e6e6e69e;white-space:pre-line;font-size:.92rem;font-weight:600;line-height:1.7}.gameover-wait{color:#e6e6e68c;font-size:.8rem;font-weight:650;animation:1.6s ease-in-out infinite hud-wait-pulse}.gameover-wait[hidden]{display:none!important}.gameover-menu-btn{opacity:.9}.lobby-code-wrap{position:relative}.lobby-code-copied{z-index:1;letter-spacing:.14em;text-transform:uppercase;color:#ebebebb8;pointer-events:none;white-space:nowrap;font-size:.68rem;font-weight:700;position:absolute;bottom:calc(100% + .12rem);left:50%;transform:translate(-50%)}.lobby-code-copied[hidden]{display:none!important}.lobby-code{letter-spacing:.32em;text-align:center;color:#f2f2f2;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;cursor:pointer;background:#0c0c0e8c;border:1px solid #dcdcdc47;border-radius:999px;margin:.1rem 0 .05rem;padding:.6rem .25rem;font-size:2rem;font-weight:750;transition:border-color .25s,color .25s,background .25s,box-shadow .25s}.lobby-code:hover{background:#121214b3;border-color:#ebebeb80}.lobby-code--copied{color:#d8d8d8;border-color:#ffffffb3;box-shadow:0 0 0 3px #ffffff14}.lobby-players{flex-direction:column;gap:.3rem;max-height:9rem;display:flex;overflow-y:auto}.lobby-player{background:#0c0c0e73;border:1px solid #d2d2d229;border-radius:999px;padding:.42rem .8rem;font-size:.9rem;font-weight:600}.lobby-player-count{opacity:.55;text-align:center;padding-top:.15rem;font-size:.68rem}.lobby-start{margin-top:.35rem}.lobby-waiting{text-align:center;opacity:.75;padding:.55rem 0;font-size:.85rem;animation:1.6s ease-in-out infinite lobby-pulse}@keyframes lobby-pulse{0%,to{opacity:.45}50%{opacity:.9}}.lobby-leave-btn{color:#e6e6e68c;background:0 0;border-color:#d2d2d22e;margin-top:.4rem}.lobby-leave-btn:hover:not(:disabled){color:#f0f0f0;background:#28282ab3;border-color:#e6e6e652}
