:root{--bg:#050506;--bg-elevated:#0b0d12;--text:#e8f0ea;--muted:#7a8a80;--green:#39ff14;--green-dim:#1f8f10;--purple:#7c5cff;--cyan:#3ecfff;--danger:#f35;--font-display:"Space Grotesk", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--radius:10px;--focus:0 0 0 2px var(--bg), 0 0 0 4px var(--green)}*,:before,:after{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;color:var(--text);font-family:var(--font-display);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;margin:0}body{background:radial-gradient(ellipse 80% 50% at 50% -10%, #39ff1414, transparent), radial-gradient(ellipse 60% 40% at 100% 100%, #7c5cff12, transparent), var(--bg);min-height:100dvh}body.is-mobile-app{touch-action:manipulation;width:100%;position:fixed;inset:0;overflow:hidden}button,a{font-family:inherit}:focus-visible{box-shadow:var(--focus);outline:none}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;background:var(--green);color:#000;border-radius:6px;padding:8px 12px;font-weight:700;text-decoration:none;position:absolute;top:-40px;left:12px}.skip-link:focus{top:12px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.app-shell{flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:100dvh;padding:16px;display:flex}.game-stage{flex-direction:column;align-items:center;gap:10px;width:min(960px,100%);display:flex}.canvas-wrap{aspect-ratio:960/540;background:#050506;border:1px solid #39ff1438;border-radius:14px;width:100%;max-height:min(540px,72dvh);position:relative;overflow:hidden;box-shadow:0 0 0 1px #7c5cff14,0 20px 60px #0000008c,0 0 80px #39ff140d}.canvas-wrap canvas{image-rendering:auto;width:100%;height:100%;display:block}.desktop-hint{font-family:var(--font-mono);color:var(--muted);letter-spacing:.02em;margin:0;font-size:12px}.overlay{text-align:center;z-index:5;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:linear-gradient(#050506b8 0%,#050506e0 100%);flex-direction:column;justify-content:center;align-items:center;padding:24px;animation:.35s fade-in;display:flex;position:absolute;inset:0}.menu{z-index:5;color:var(--text);flex-direction:column;animation:.4s fade-in;display:flex;position:absolute;inset:0;overflow:hidden}.menu-bg{pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:linear-gradient(#0505068c 0%,#050506d1 55%,#050506eb 100%);position:absolute;inset:0}.menu-bg-glow{background:radial-gradient(circle,#39ff1429,#0000 68%);border-radius:50%;width:min(520px,90vw);height:min(520px,90vw);animation:5s ease-in-out infinite pulse-glow;position:absolute;top:18%;left:50%;transform:translate(-50%)}.menu-bg-grid{background-image:linear-gradient(#39ff140b 1px,#0000 1px),linear-gradient(90deg,#39ff140b 1px,#0000 1px);background-size:28px 28px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(at 50% 35%,#000 10%,#0000 72%);mask-image:radial-gradient(at 50% 35%,#000 10%,#0000 72%)}.menu-bg-scan{opacity:.45;background:repeating-linear-gradient(0deg,#0000,#0000 2px,#0000001f 2px 3px);position:absolute;inset:0}.menu-bg-code{font-family:var(--font-mono);color:#39ff1452;letter-spacing:.02em;white-space:pre;pointer-events:none;margin:0;font-size:10px;line-height:1.55;position:absolute;bottom:52px;left:20px}.menu-stage{z-index:1;text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:0;padding:28px 20px 72px;display:flex;position:relative}.menu-avatar{cursor:pointer;background:0 0;border:none;border-radius:50%;width:clamp(96px,18vw,128px);height:clamp(96px,18vw,128px);margin-bottom:18px;padding:0;animation:4.5s ease-in-out infinite menu-float;position:relative}.menu-avatar-ring{border:1px solid #39ff148c;border-radius:50%;animation:3.2s ease-in-out infinite menu-ring;position:absolute;inset:-6px;box-shadow:0 0 0 6px #39ff140d,0 0 40px #39ff1433}.menu-avatar-img,.menu-avatar-fallback{border-radius:50%;position:absolute;inset:0}.menu-avatar-img{object-fit:cover;object-position:center top;background:#111;width:100%;height:100%}.menu-avatar-fallback{font-family:var(--font-mono);color:var(--green);z-index:-1;background:#0c1016;place-items:center;font-size:28px;font-weight:700;display:grid}.menu-avatar:hover .menu-avatar-ring,.menu-avatar:focus-visible .menu-avatar-ring{border-color:var(--green);box-shadow:0 0 0 8px #39ff1414,0 0 48px #39ff1459}.menu-byline{font-family:var(--font-mono);letter-spacing:.22em;text-transform:uppercase;color:var(--cyan);margin:0 0 8px;font-size:11px}.menu-logo{letter-spacing:-.045em;color:#f2f7f3;text-shadow:0 0 48px #39ff1438;margin:0;font-size:clamp(48px,12vw,88px);font-weight:700;line-height:.92;position:relative}.menu-logo:before,.menu-logo:after{content:attr(data-text);pointer-events:none;opacity:.65;position:absolute;inset:0}.menu-logo:before{color:var(--cyan);mix-blend-mode:screen;animation:3.5s linear infinite alternate-reverse glitch-a;transform:translate(2px,-1px)}.menu-logo:after{color:#7c5cff;mix-blend-mode:screen;animation:2.8s linear infinite alternate-reverse glitch-b;transform:translate(-2px,1px)}.menu-tagline{color:#e8f0eac7;max-width:28ch;margin:14px 0 0;font-size:clamp(15px,2.8vw,19px);line-height:1.35}.menu-roles{font-family:var(--font-mono);letter-spacing:.04em;color:#7a8a80f2;margin:8px 0 0;font-size:12px}.menu-actions{margin-top:28px}.menu-start{appearance:none;min-height:52px;color:var(--green);cursor:pointer;font-family:var(--font-display);letter-spacing:.12em;background:#39ff141f;border:1px solid #39ff14a6;border-radius:4px;align-items:center;gap:14px;padding:0 10px 0 22px;font-weight:700;transition:background .15s,border-color .15s,transform .15s,box-shadow .15s;display:inline-flex;box-shadow:0 0 28px #39ff141f}.menu-start:hover,.menu-start:focus-visible{border-color:var(--green);background:#39ff1438;transform:translateY(-1px);box-shadow:0 0 36px #39ff1447}.menu-start:active{transform:translateY(1px)}.menu-start-label{font-size:14px}.menu-start-key{background:var(--green);color:#041204;min-height:34px;font-family:var(--font-mono);letter-spacing:.08em;border-radius:3px;justify-content:center;align-items:center;padding:0 12px;font-size:11px;display:inline-flex}.menu-record{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:18px 0 0;font-size:11px}.menu-record strong{color:var(--green);font-weight:700}.menu-bar{z-index:2;padding:12px 18px calc(12px + env(safe-area-inset-bottom));font-family:var(--font-mono);letter-spacing:.06em;background:#0505068c;border-top:1px solid #39ff141f;justify-content:space-between;align-items:center;gap:12px;font-size:11px;display:flex;position:absolute;bottom:0;left:0;right:0}.menu-bar-left{color:#7a8a80d9;text-decoration:none}.menu-bar-left:hover,.menu-bar-left:focus-visible{color:var(--green);text-decoration:underline}.menu-bar-link{color:var(--cyan);text-decoration:none}.menu-bar-link:hover,.menu-bar-link:focus-visible{color:var(--green);text-decoration:underline}.high-score{font-family:var(--font-mono);color:var(--muted);letter-spacing:.12em;z-index:1;margin:14px 0 0;font-size:12px}.high-score span,.high-score.subtle{color:var(--green)}@keyframes menu-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes menu-ring{0%,to{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.03)}}.btn{letter-spacing:.06em;cursor:pointer;z-index:1;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 22px;font-size:14px;font-weight:700;text-decoration:none;transition:transform .15s,box-shadow .15s,background .15s,border-color .15s;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--green);color:#041204;box-shadow:0 0 24px #39ff1459}.btn-primary:hover{box-shadow:0 0 36px #39ff148c}.btn-secondary{color:var(--text);background:0 0;border-color:#e8f0ea40}.btn-secondary:hover{border-color:var(--green);color:var(--green)}.btn-ghost{color:var(--cyan);background:#ffffff0a;border-color:#3ecfff59}.btn-accent{color:#fff;background:linear-gradient(135deg,#7c5cffe6,#3ecfffb3)}.btn-row{z-index:1;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:12px;display:flex}.gameover-overlay{gap:6px;animation:.4s fail-in}.fail-label{font-family:var(--font-mono);letter-spacing:.24em;color:var(--danger);text-shadow:0 0 18px #ff335580;margin:0;font-size:12px}.fail-title{margin:0 0 8px;font-size:clamp(22px,5vw,32px)}.score-line{font-family:var(--font-mono);margin:0;font-size:22px}.score-line span{color:var(--green);font-weight:800}.funny{color:var(--muted);max-width:360px;margin:8px 0 4px;font-style:italic}.challenge{max-width:380px;margin:10px 0 4px;font-size:15px}.challenge strong{color:var(--green)}.share-status{font-family:var(--font-mono);color:var(--cyan);margin:8px 0 0;font-size:12px}.glitch-bars{pointer-events:none;background:repeating-linear-gradient(0deg,#0000,#0000 3px,#ff335508 3px 4px);animation:1.2s linear infinite scan;position:absolute;inset:0}.hud{z-index:4;pointer-events:none;justify-content:space-between;align-items:flex-start;padding:12px 14px;display:flex;position:absolute;top:0;left:0;right:0}.hud-left,.hud-right{pointer-events:auto;align-items:center;gap:12px;display:flex}.hud-stat{background:#0505068c;border:1px solid #39ff1426;border-radius:8px;flex-direction:column;min-width:64px;padding:6px 10px;display:flex}.hud-stat.align-right{text-align:right}.hud-label{font-family:var(--font-mono);letter-spacing:.14em;color:var(--muted);font-size:9px}.hud-value{font-family:var(--font-mono);color:var(--green);font-size:16px;font-weight:700}.boss-tag{font-family:var(--font-mono);letter-spacing:.1em;color:var(--danger);background:#ff33551f;border:1px solid #ff335559;border-radius:999px;padding:6px 10px;font-size:11px;animation:1.2s ease-in-out infinite pulse-glow}.icon-btn{width:36px;height:36px;color:var(--text);cursor:pointer;background:#050506a6;border:1px solid #ffffff1f;border-radius:8px;place-items:center;font-size:14px;transition:border-color .15s;display:grid}.icon-btn:hover{border-color:var(--green)}.level-banner{z-index:6;text-align:center;pointer-events:none;background:#050506d1;border:1px solid #39ff1459;border-radius:12px;padding:16px 28px;animation:.45s banner-in;position:absolute;top:22%;left:50%;transform:translate(-50%);box-shadow:0 0 40px #39ff1426}.level-title{font-family:var(--font-mono);letter-spacing:.16em;color:var(--green);margin:0;font-size:14px;font-weight:800}.level-msg{margin:6px 0 0;font-size:16px}.pause-overlay .pause-title{font-family:var(--font-mono);letter-spacing:.2em;color:var(--green);margin:0 0 16px;font-size:28px}.install-prompt{z-index:12;color:var(--green);font-family:var(--font-mono);letter-spacing:.04em;cursor:pointer;background:#050506eb;border:1px solid #39ff1473;border-radius:999px;padding:10px 16px;font-size:12px;font-weight:700;animation:.25s fade-in;position:absolute;bottom:64px;left:50%;transform:translate(-50%)}.install-prompt:hover,.install-prompt:focus-visible{background:#39ff141f;outline:none}.app-shell.is-mobile .install-prompt{bottom:calc(18px + env(safe-area-inset-bottom,0px))}.egg-toast{z-index:8;border:1px solid var(--purple);color:var(--purple);font-family:var(--font-mono);pointer-events:none;white-space:nowrap;text-overflow:ellipsis;background:#0a0c12eb;border-radius:8px;max-width:90%;padding:8px 14px;font-size:12px;animation:.2s fade-in;position:absolute;bottom:72px;left:50%;overflow:hidden;transform:translate(-50%)}.mobile-dock{z-index:8;display:none}.app-shell.is-mobile.has-controls .mobile-dock{pointer-events:none;width:100%;display:block;position:absolute;bottom:0;left:0;right:0}.app-shell.is-mobile.has-controls .mobile-dock-inner{pointer-events:auto}.mobile-dock-inner{box-sizing:border-box;width:100%;padding:8px 6px calc(8px + env(safe-area-inset-bottom));box-shadow:none;background:linear-gradient(#05050600 0%,#05050680 40%,#050506e6 100%);border:none;border-radius:0;grid-template-columns:repeat(5,minmax(0,1fr));align-items:stretch;gap:6px;display:grid}.mc-cluster{display:contents}.mc-btn{appearance:none;width:100%;min-width:0;height:clamp(52px,14vw,68px);min-height:52px;color:var(--green);font-family:var(--font-mono);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0c1016d1;border:1.5px solid #39ff1466;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;padding:4px 2px;font-weight:700;transition:transform 80ms,background 80ms,border-color 80ms,box-shadow 80ms;display:flex;box-shadow:inset 0 1px #ffffff0f,0 4px 12px #00000059}.mc-btn:focus-visible{box-shadow:var(--focus)}.mc-btn.is-active,.mc-btn:active{border-color:var(--green);background:#39ff1438;transform:scale(.94);box-shadow:0 0 14px #39ff1459}.mc-icon{pointer-events:none;justify-content:center;align-items:center;width:clamp(22px,6vw,28px);height:clamp(22px,6vw,28px);line-height:1;display:flex}.mc-svg{width:100%;height:100%;display:block}.mc-jump{color:var(--green);background:#39ff1433;border-color:#39ff14a6}.mc-jump .mc-icon{width:clamp(24px,6.5vw,30px);height:clamp(24px,6.5vw,30px)}.mc-jump.is-active,.mc-jump:active{background:#39ff1459}.mc-dash{color:var(--cyan);background:#3ecfff24;border-color:#3ecfff80}.mc-dash.is-active,.mc-dash:active{border-color:var(--cyan);background:#3ecfff47;box-shadow:0 0 14px #3ecfff59}.mc-crouch{color:gold;background:#ffd70024;border-color:#ffd70073}.mc-crouch.is-active,.mc-crouch:active{background:#ffd70040;border-color:gold;box-shadow:0 0 14px #ffd7004d}@media (width<=380px){.mobile-dock-inner{padding:6px 4px calc(6px + env(safe-area-inset-bottom));gap:4px}.mc-btn{border-radius:12px;height:48px;min-height:48px}.mc-icon{width:22px;height:22px}.mc-jump .mc-icon{width:24px;height:24px}}@media (width<=320px){.mobile-dock-inner{padding:4px 3px calc(4px + env(safe-area-inset-bottom));gap:3px}.mc-btn{border-radius:10px;height:44px;min-height:44px}.mc-icon{width:20px;height:20px}}.app-shell.is-mobile{justify-content:stretch;gap:0;height:100dvh;min-height:100dvh;padding:0;overflow:hidden}.app-shell.is-mobile .game-stage{flex-direction:column;flex:1;gap:0;width:100%;max-width:none;height:100%;min-height:0;display:flex}.app-shell.is-mobile .canvas-wrap{aspect-ratio:auto;width:100%;height:100%;min-height:0;max-height:none;box-shadow:none;background:#050506;border:none;border-radius:0;flex:auto;justify-content:center;align-items:center;display:flex;overflow:hidden}.app-shell.is-mobile.has-controls .canvas-wrap{max-height:none}.app-shell.is-mobile .canvas-wrap canvas{display:block}.app-shell.is-mobile .hud{padding:8px 10px;padding-top:max(8px, env(safe-area-inset-top))}.app-shell.is-mobile .icon-btn{width:40px;height:40px;font-size:15px}.app-shell.is-mobile .boss-tag{text-overflow:ellipsis;white-space:nowrap;max-width:42vw;padding:4px 8px;font-size:9px;overflow:hidden}.app-shell.is-mobile .egg-toast{font-size:11px;bottom:84px}.app-shell.is-mobile .level-banner{max-width:90%;padding:12px 16px;top:18%}.app-shell.is-mobile .overlay{padding:16px 14px}.app-shell.is-mobile .menu-logo{font-size:clamp(40px,11vw,64px)}.app-shell.is-mobile .menu-stage{padding:20px 16px 64px}.app-shell.is-mobile .menu-bg-code{display:none}.app-shell.is-mobile .btn{min-height:48px;font-size:15px}.input-debug{z-index:30;color:var(--green);font-family:var(--font-mono);pointer-events:none;white-space:pre;background:#050506e0;border:1px solid #39ff1459;border-radius:8px;padding:8px 10px;font-size:11px;line-height:1.35;position:absolute;top:52px;left:10px}.input-debug-title{letter-spacing:.08em;color:var(--cyan);margin:0 0 6px;font-size:10px}.input-debug pre{font:inherit;margin:0}.dash-debug{z-index:30;color:#ffd166;min-width:240px;font-family:var(--font-mono);pointer-events:none;white-space:pre;background:#050506e6;border:1px solid #ffd16673;border-radius:8px;padding:8px 10px;font-size:11px;line-height:1.35;position:absolute;top:52px;right:10px}.dash-debug.is-ready{color:#39ff14;border-color:#39ff1473}.dash-debug.is-active{color:#ffd166;border-color:#ffd166b3;box-shadow:0 0 18px #ffd16640}.dash-debug.is-cd{color:#3ecfff;border-color:#3ecfff73}.dash-debug.is-blocked{color:#ff6b85;border-color:#ff6b8580}.dash-debug-title{letter-spacing:.08em;color:#3ecfff;margin:0 0 4px;font-size:10px}.dash-debug-status{letter-spacing:.12em;margin:0 0 6px;font-size:13px;font-weight:800}.dash-debug-status.is-ready{color:#39ff14}.dash-debug-status.is-active{color:#ffd166}.dash-debug-status.is-cd{color:#3ecfff}.dash-debug-status.is-blocked{color:#ff6b85}.dash-debug pre{font:inherit;color:inherit;opacity:.92;margin:0}.rotate-prompt{z-index:40;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:radial-gradient(70% 50% at 50% 30%,#39ff141a,#0000),#050506f0;justify-content:center;align-items:center;padding:24px 20px;animation:.25s fade-in;display:flex;position:absolute;inset:0}.rotate-prompt-card{text-align:center;max-width:320px}.rotate-phone{width:88px;height:120px;margin:0 auto 20px;animation:1.8s ease-in-out infinite rotate-hint;position:relative}.rotate-phone-body{border:2.5px solid var(--green);background:#0a0e12e6;border-radius:12px;justify-content:center;align-items:center;width:64px;height:108px;margin:0 auto;display:flex;box-shadow:0 0 24px #39ff1440}.rotate-phone-screen{background:linear-gradient(#39ff1433,#7c5cff26);border:1px solid #39ff1459;border-radius:4px;width:44px;height:72px}.rotate-arrow{color:var(--cyan);text-shadow:0 0 12px #3ecfff99;font-size:28px;position:absolute;top:40%;right:-4px}.rotate-title{letter-spacing:-.02em;color:var(--text);margin:0 0 10px;font-size:clamp(22px,6vw,28px);font-weight:700}.rotate-desc{color:var(--muted);margin:0;font-size:15px;line-height:1.45}.rotate-hint{font-family:var(--font-mono);letter-spacing:.06em;color:var(--green);opacity:.85;margin:16px 0 0;font-size:11px}@keyframes rotate-hint{0%,to{transform:rotate(0)}40%{transform:rotate(90deg)}60%{transform:rotate(90deg)}}@media (prefers-reduced-motion:reduce){.rotate-phone{animation:none;transform:rotate(90deg)}.menu-avatar,.menu-avatar-ring,.menu-logo:before,.menu-logo:after{animation:none!important}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fail-in{0%{opacity:0;filter:blur(2px);transform:scale(1.02)}to{opacity:1;filter:none;transform:scale(1)}}@keyframes blink{50%{opacity:.35}}@keyframes pulse-glow{0%,to{opacity:.7;filter:brightness()}50%{opacity:1;filter:brightness(1.2)}}@keyframes glitch-a{0%,90%,to{clip-path:inset(0);transform:translate(0)}92%{clip-path:inset(20% 0 40%);transform:translate(3px,-1px)}96%{clip-path:inset(60% 0 10%);transform:translate(-3px,1px)}}@keyframes glitch-b{0%,88%,to{clip-path:inset(0);transform:translate(0)}91%{clip-path:inset(10% 0 55%);transform:translate(-2px)}95%{clip-path:inset(50% 0 20%);transform:translate(2px,1px)}}@keyframes banner-in{0%{opacity:0;transform:translate(-50%,-12px)scale(.96)}to{opacity:1;transform:translate(-50%)scale(1)}}@keyframes scan{0%{background-position:0 0}to{background-position:0 8px}}@media (width<=640px){.app-shell:not(.is-mobile){padding:8px}.btn-row{flex-direction:column;width:min(280px,100%)}.btn{width:100%}.hud-stat{min-width:52px;padding:4px 8px}.hud-value{font-size:14px}}@media (height<=500px) and (orientation:landscape){.app-shell.is-mobile{gap:0;padding:0}.app-shell.is-mobile.has-controls .canvas-wrap{max-height:none}.mobile-dock-inner{padding:4px 6px calc(4px + env(safe-area-inset-bottom));gap:4px}.mc-btn{border-radius:10px;height:44px;min-height:40px}.mc-icon{width:20px;height:20px}.mc-jump .mc-icon{width:22px;height:22px}}
