:root{color-scheme:dark;--bg0: #040412;--bg1: #050528;--text: rgba(255, 255, 255, .92);--muted: rgba(255, 255, 255, .62);--neon-cyan: #2dfcff;--neon-pink: #ff2dfc;--neon-lime: #b7ff2d;--panel: rgba(12, 14, 38, .72);--panel-border: rgba(255, 255, 255, .08);--shadow: 0 20px 80px rgba(0, 0, 0, .6)}html,body{height:100%}*,*:before,*:after{box-sizing:border-box}body{margin:0;overflow:hidden;background:radial-gradient(1000px 600px at 50% 0%,rgba(45,252,255,.08),transparent 60%),radial-gradient(900px 500px at 70% 30%,rgba(255,45,252,.06),transparent 55%),radial-gradient(1000px 700px at 30% 40%,rgba(183,255,45,.05),transparent 60%),linear-gradient(180deg,var(--bg1),var(--bg0));color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}#root{height:100%}.app{height:100%;min-height:0;display:flex;flex-direction:column;align-items:center;padding:clamp(10px,2vh,20px) 16px;gap:clamp(6px,1.2vh,12px);overflow:hidden}.header{position:relative;flex:0 0 auto;text-align:center}.titleRow{display:flex;align-items:center;justify-content:center;gap:12px}.title{font-size:clamp(24px,min(3vw,4.5vh),36px);letter-spacing:.08em;text-transform:uppercase;color:var(--neon-cyan);text-shadow:0 0 16px rgba(45,252,255,.35)}.controlHelp{position:relative;z-index:20}.controlHelp summary{padding:6px 9px;border:1px solid rgba(255,255,255,.18);border-radius:9px;background:#ffffff0f;color:var(--muted);font-size:11px;cursor:pointer;list-style:none;white-space:nowrap}.controlHelp summary::-webkit-details-marker{display:none}.controlHelp[open] summary{color:var(--neon-cyan);border-color:#2dfcff6b}.controlHelpPanel{position:absolute;top:calc(100% + 7px);right:0;width:max-content;max-width:min(620px,82vw);padding:10px 12px;border:1px solid rgba(45,252,255,.26);border-radius:10px;background:#080a1ef7;box-shadow:0 14px 38px #0000008c;color:var(--muted);font-size:12px;line-height:2;white-space:normal}.main{flex:1 1 auto;min-height:0;width:min(960px,100%)}.gameShell{position:relative;width:100%;background:var(--panel);border:1px solid var(--panel-border);border-radius:16px;box-shadow:var(--shadow);overflow:hidden;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.perfDebug{position:absolute;z-index:100;right:10px;bottom:10px;padding:6px 9px;border:1px solid rgba(45,252,255,.42);border-radius:8px;background:#03020de6;color:var(--neon-cyan);font-size:11px;pointer-events:none}.hud{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--panel-border);gap:12px;flex-wrap:wrap}.hudGroup{display:flex;gap:12px;align-items:baseline}.hudLabel{color:var(--muted);font-size:12px;letter-spacing:.08em;text-transform:uppercase}.hudValue{font-size:16px;color:var(--text)}.hudValue.score{color:var(--neon-lime);text-shadow:0 0 12px rgba(183,255,45,.25)}.hudValue.high{color:var(--neon-cyan);text-shadow:0 0 12px rgba(45,252,255,.22)}.hudValue.wave{color:#a38bff;text-shadow:0 0 12px rgba(163,139,255,.22)}.hudValue.lives{color:var(--neon-pink);text-shadow:0 0 12px rgba(255,45,252,.25)}.musicHud{min-width:0;flex:1 1 280px;justify-content:flex-end}.hudValue.musicTrack{min-width:0;max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--neon-cyan);font-size:13px}.musicVolumeControl{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:11px}.musicVolumeControl input{width:84px;accent-color:var(--neon-cyan);cursor:pointer}.musicVolumeControl input:disabled{cursor:not-allowed}.musicVolumeControl output{width:30px;text-align:right}button.musicToggle{min-width:44px;min-height:36px;padding:5px 8px;font-size:16px}.srOnly{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.goalStrip{display:flex;align-items:center;justify-content:center;gap:10px;min-height:32px;padding:6px 14px;border-bottom:1px solid var(--panel-border);background:#05081885;color:var(--muted);font-size:12px;text-align:center}.goalStrip strong{color:#c1b3ff;font-size:13px}.goalStripLabel{color:var(--muted);letter-spacing:.08em;text-transform:uppercase}.goalStripBonus{color:var(--neon-lime)}.canvasFrame{padding:16px;display:flex;justify-content:center}.canvasWrap{position:relative;width:min(100%,calc((100dvh - 250px)*1.5));aspect-ratio:3 / 2;background:#00000080;border:1px solid rgba(255,255,255,.08);border-radius:12px;overflow:hidden}canvas{display:block;width:100%;height:100%;image-rendering:pixelated}.canvasWrap>canvas,.canvasWrap>.scanlines,.canvasWrap>.vignette,.touchControls,.touchControls button{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-user-drag:none;-webkit-tap-highlight-color:transparent}.canvasWrap>canvas{touch-action:none}.scanlines{pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0;background:repeating-linear-gradient(to bottom,rgba(255,255,255,.06) 0px,rgba(255,255,255,.04) 1px,transparent 3px,transparent 6px);mix-blend-mode:overlay;opacity:.15}.vignette{pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 40%,transparent 55%,rgba(0,0,0,.65) 100%)}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:20px;background:#0000008c}.overlayCard{max-width:520px;width:100%;background:#0a0c1ae6;border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:18px 18px 14px;text-align:center;box-shadow:0 18px 60px #000000a6}.overlayTitle{font-size:22px;letter-spacing:.06em;text-transform:uppercase;margin:0;color:var(--neon-cyan)}.overlayText{margin:10px 0 0;color:var(--muted);font-size:14px;line-height:1.5}.actions{margin-top:14px;display:flex;gap:12px;justify-content:center;flex-wrap:wrap}button{background:linear-gradient(180deg,#2dfcff2e,#2dfcff0f);border:1px solid rgba(45,252,255,.45);color:var(--text);padding:10px 14px;border-radius:12px;font:inherit;letter-spacing:.04em;cursor:pointer}button:hover{background:linear-gradient(180deg,#2dfcff3d,#2dfcff14)}button:active{transform:translateY(1px)}button:disabled{opacity:.55;cursor:not-allowed}button.secondary{background:linear-gradient(180deg,#ff2dfc29,#ff2dfc0f);border-color:#ff2dfc73}button.secondary:hover{background:linear-gradient(180deg,#ff2dfc38,#ff2dfc14)}button.tertiary{background:linear-gradient(180deg,#ffffff1a,#ffffff0a);border-color:#ffffff38;color:var(--muted)}button.tertiary:hover{background:linear-gradient(180deg,#ffffff24,#ffffff0f)}button.hudButton{background:linear-gradient(180deg,#ffffff1f,#ffffff0a);border-color:#ffffff38;color:var(--muted);font-size:12px;padding:6px 10px;border-radius:10px}button.hudButton:hover{background:linear-gradient(180deg,#ffffff2e,#ffffff0f)}.runEntry{margin-top:14px;text-align:left}.runEntryLabel{display:block;color:var(--muted);font-size:11px;letter-spacing:.08em;text-transform:uppercase;margin-bottom:5px}.runEntryRow{display:flex;gap:8px}.runEntryRow input{flex:1 1 auto;min-width:0;padding:10px 12px;border:1px solid rgba(45,252,255,.32);border-radius:12px;background:#040412cc;color:var(--text);font:inherit;font-size:16px}.runEntryMessage,.runEntryDone{margin:10px 0 0;color:var(--neon-lime);font-size:13px;line-height:1.5}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;display:flex;align-items:center;justify-content:center;padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));background:#02020cd1}.sheetInner{display:flex;flex-direction:column;width:min(520px,100%);max-height:100%;background:#0a0c1af5;border:1px solid rgba(45,252,255,.28);border-radius:16px;box-shadow:var(--shadow);overflow:hidden}.sheetHead{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--panel-border)}.sheetHead h2{margin:0;font-size:18px;color:var(--neon-cyan)}.sheetTabs{display:flex;gap:6px;padding:10px 12px;overflow-x:auto}button.sheetTab{flex:1 0 auto;padding:7px 10px;font-size:12px;background:linear-gradient(180deg,#ffffff14,#ffffff08);border-color:#ffffff2e;color:var(--muted)}button.sheetTab.isActive{border-color:#2dfcff80;color:var(--neon-cyan)}.sheetBody{flex:1 1 auto;min-height:0;overflow-y:auto;padding:0 16px 12px}.sheetNote,.sheetEmpty{color:var(--muted);font-size:12px;line-height:1.6}.sheetEmpty{padding:16px 0;text-align:center}.ranking{display:grid;gap:5px}.rankingRow{display:grid;grid-template-columns:2.2rem 1fr auto;align-items:center;gap:8px;padding:8px 10px;border-radius:10px;background:#ffffff0d}.rankingName{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rankingMeta{display:grid;justify-items:end}.rankingScore{color:var(--neon-lime)}.rankingSub{color:var(--muted);font-size:11px}.sheetFoot{padding:12px 16px max(12px,env(safe-area-inset-bottom));border-top:1px solid var(--panel-border);display:grid;gap:8px}.sheetRow{display:flex;gap:8px}.sheetRow input{flex:1 1 auto;min-width:0;padding:9px 11px;border:1px solid rgba(255,255,255,.2);border-radius:10px;background:#040412cc;color:var(--text);font:inherit;font-size:16px}.sheetFoot a{color:var(--neon-cyan)}.mobileHint,.touchControls{display:none}.touchControls{padding:0 10px 12px;align-items:center;justify-content:space-between;gap:10px}.touchMoveGroup{display:flex;gap:8px}.touchControls button{min-width:58px;min-height:52px;padding:8px 12px;touch-action:none;-webkit-tap-highlight-color:transparent;font-size:20px;font-weight:700}.touchControls .touchPause{min-width:48px;color:var(--muted);border-color:#ffffff3d;background:#ffffff0f}.touchControls .touchFire{min-width:82px;color:var(--neon-lime);border-color:#b7ff2d8c;background:linear-gradient(180deg,#b7ff2d33,#b7ff2d0f);font-size:15px;letter-spacing:.08em}@media (max-width: 620px){.app{padding:12px 10px 10px;gap:8px}.header{padding-top:36px}.hud{padding:12px;gap:10px}.musicHud{flex-basis:100%;justify-content:space-between}.hudValue.musicTrack{max-width:min(36vw,150px)}.musicVolumeControl input{width:62px}.canvasFrame{padding:10px}.goalStrip{justify-content:space-between;gap:6px;padding-inline:10px}.goalStripLabel{display:none}.overlay{padding:10px}.overlayCard{padding:12px}.overlayTitle{font-size:19px}.overlayText{margin-top:7px;font-size:12px;line-height:1.35}.runEntry{margin-top:9px}.actions{margin-top:10px;gap:8px}.actions button{padding:8px 10px}}@media (max-height: 760px) and (min-width: 621px){.app{padding-block:8px;gap:6px}.title{font-size:24px}.controlHelp summary{padding-block:4px}.hud{padding:8px 12px;gap:8px}.hudGroup{gap:7px}.hudValue{font-size:14px}.goalStrip{min-height:28px;padding-block:4px}.canvasFrame{padding:8px}.canvasWrap{width:min(100%,calc((100dvh - 210px)*1.5))}}@media (hover: none) and (pointer: coarse){.desktopHint{display:none}.mobileHint{display:block}.touchControls{display:flex;padding-bottom:max(12px,env(safe-area-inset-bottom))}}@media (hover: none) and (pointer: coarse) and (orientation: landscape){.app{padding-block:8px;gap:6px}.canvasFrame{padding:6px}.canvasWrap{width:min(100%,calc((100dvh - 280px)*1.5))}}@media (hover: none) and (pointer: coarse) and (max-width: 420px){.touchControls button{min-width:54px}.touchControls .touchFire{min-width:76px}}.kbd{display:inline-flex;align-items:center;justify-content:center;padding:2px 7px;border-radius:7px;border:1px solid rgba(255,255,255,.16);background:#ffffff0f;color:#ffffffd9;font-size:12px}
