:root{--navy:#0f1d47;--navy-2:#16296b;--royal:#1f4fd8;--cyan:#35e6ff;--cyan-soft:#8ff4ff;--white:#f4f7fb;--ink:#0b1433;--heart:#ff5d7a;--panel:#0c1842b8;--panel-line:#8ff4ff59;--radius:22px;--font:"Nunito", "Arial Rounded MT Bold", "Varela Round", "Trebuchet MS", system-ui, sans-serif}*{box-sizing:border-box}html,body{background:#0f1d47;height:100%;margin:0;overflow:hidden}body{font-family:var(--font);color:var(--white);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none}#app{touch-action:none;overscroll-behavior:none;-webkit-touch-callout:none;position:fixed;inset:0}#game{cursor:crosshair;outline:none;width:100%;height:100%;display:block;position:absolute;inset:0}#ui{pointer-events:none;position:absolute;inset:0}#ui .interactive,#ui button,#ui input,#ui select,#ui label{pointer-events:auto}.screen{opacity:0;visibility:hidden;justify-content:center;align-items:center;transition:opacity .35s,visibility .35s;display:flex;position:absolute;inset:0}.screen.visible{opacity:1;visibility:visible}.screen.dim{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:radial-gradient(#0f1d4759,#080e28c7)}.panel{pointer-events:auto;border:1.5px solid var(--panel-line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);text-align:center;background:linear-gradient(160deg,#1f4fd861,#0c1842d1 55%);border-radius:30px;min-width:340px;max-width:min(92vw,560px);padding:34px 40px;box-shadow:0 30px 80px #03081e8c,inset 0 1px #ffffff2e}#menu{background:linear-gradient(90deg,#081030c7 0%,#08103059 42%,#08103000 70%);justify-content:flex-start;padding-left:clamp(24px,7vw,120px)}.menu-col{pointer-events:auto;flex-direction:column;gap:18px;max-width:460px;display:flex}.logo{letter-spacing:.04em;background:linear-gradient(#fff 0%,#d8f9ff 55%,#8ff4ff 100%);color:#0000;filter:drop-shadow(0 6px 0 var(--royal)) drop-shadow(0 0 28px #35e6ff8c);-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(64px,10vw,128px);font-weight:900;line-height:.9}.logo-sub{color:var(--cyan-soft);letter-spacing:.02em;text-shadow:0 2px 0 var(--navy);margin:-4px 0 6px;font-size:clamp(20px,2.6vw,30px);font-weight:800}.level-card{border:1px solid var(--panel-line);background:#0c184299;border-radius:18px;align-items:center;gap:14px;padding:14px 18px;display:flex}.level-card .badge{letter-spacing:.14em;background:var(--cyan);color:var(--ink);border-radius:10px;padding:6px 10px;font-size:13px;font-weight:900}.level-card .name{font-size:18px;font-weight:800}.level-card .desc{opacity:.8;font-size:13px}.menu-footer{opacity:.65;letter-spacing:.06em;margin-top:8px;font-size:12px}#victory{background:linear-gradient(90deg,#081030b8 0%,#0810304d 45%,#08103000 70%);justify-content:flex-start;padding-left:clamp(20px,6vw,110px)}#victory .panel{text-align:left}#victory .btn-row{justify-content:flex-start!important}.btn{font-family:var(--font);letter-spacing:.04em;cursor:pointer;color:var(--ink);background:linear-gradient(#fff,#cdefff);border:0;border-radius:16px;padding:14px 26px;font-size:18px;font-weight:900;transition:transform 80ms,box-shadow 80ms,filter .15s;box-shadow:0 5px #6cb8de,0 10px 24px #00000040}.btn:hover{filter:brightness(1.06);transform:translateY(-1px)}.btn:active{transform:translateY(4px);box-shadow:0 1px #6cb8de,0 4px 10px #00000040}.btn:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}.btn.primary{background:linear-gradient(#5af0ff,#1fc8ec);padding:16px 30px;font-size:22px;box-shadow:0 5px #138fb4,0 12px 30px #35e6ff59}.btn.primary:active{box-shadow:0 1px #138fb4}.btn.ghost{color:var(--white);box-shadow:inset 0 0 0 1.5px var(--panel-line);background:#ffffff14}.btn.ghost:active{box-shadow:inset 0 0 0 1.5px var(--cyan)}.btn-row{flex-wrap:wrap;gap:12px;display:flex}.btn-col{flex-direction:column;gap:12px;display:flex}#hud{opacity:0;transition:opacity .3s;position:absolute;inset:0}#hud.visible{opacity:1}.hud-tl{align-items:center;gap:14px;display:flex;position:absolute;top:18px;left:20px}.portrait{border:3px solid var(--cyan);background:radial-gradient(circle at 40% 35%,#2a62ff,#0f1d47 70%);border-radius:50%;place-items:center;width:78px;height:78px;display:grid;box-shadow:0 0 22px #35e6ff80,inset 0 0 14px #0006}.portrait svg{width:62px;height:62px}.hud-stack{flex-direction:column;gap:8px;display:flex}.hearts{gap:6px;display:flex}.heart{filter:drop-shadow(0 2px #00000059);width:30px;height:27px;transition:transform .25s,opacity .25s}.heart.empty{opacity:.35;transform:scale(.85)}.heart.hit{animation:.45s heartHit}@keyframes heartHit{0%{transform:scale(1.4)}60%{transform:scale(.75)}to{transform:scale(.85)}}.pill{background:var(--panel);border:1.5px solid var(--panel-line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:999px;align-items:center;gap:10px;padding:7px 16px 7px 10px;font-size:20px;font-weight:900;display:inline-flex}.pill .u-icon{background:radial-gradient(circle,#35e6ff73,#35e6ff00 70%);border-radius:50%;place-items:center;width:26px;height:26px;display:grid}.pill.bump{animation:.5s bump}@keyframes bump{0%{transform:scale(1)}30%{transform:scale(1.18);box-shadow:0 0 30px #35e6ffcc}to{transform:scale(1)}}.objective{opacity:.92;text-shadow:0 2px 4px #00000073;padding-left:4px;font-size:14px;font-weight:800}.objective.ready{color:var(--cyan-soft)}.hud-tr{flex-direction:column;align-items:flex-end;gap:8px;display:flex;position:absolute;top:20px;right:22px}.timer{font-variant-numeric:tabular-nums}.hud-keys{opacity:.7;text-align:right;text-shadow:0 1px 3px #0009;font-size:12px}.hint{background:var(--panel);border:1.5px solid var(--panel-line);opacity:0;white-space:nowrap;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:16px;padding:12px 22px;font-size:17px;font-weight:700;transition:opacity .3s,transform .3s;position:absolute;bottom:46px;left:50%;transform:translate(-50%,10px)}.hint.visible{opacity:1;transform:translate(-50%)}.hint b{color:var(--cyan);font-weight:900}.lock-hint{opacity:0;background:#080e288c;border-radius:12px;padding:8px 14px;font-size:14px;font-weight:800;transition:opacity .3s;position:absolute;top:18px;left:50%;transform:translate(-50%)}.lock-hint.visible{opacity:.95}.toasts{flex-direction:column;align-items:center;gap:8px;display:flex;position:absolute;top:120px;left:50%;transform:translate(-50%)}.toast{letter-spacing:.02em;color:#fff;text-shadow:0 2px #00000040;background:linear-gradient(#35e6ffeb,#1f4fd8eb);border-radius:14px;padding:10px 20px;font-size:18px;font-weight:900;animation:2.4s forwards toast;box-shadow:0 10px 30px #1f4fd873}@keyframes toast{0%{opacity:0;transform:translateY(-12px)scale(.9)}10%{opacity:1;transform:none}80%{opacity:1}to{opacity:0;transform:translateY(-8px)}}.panel h2{letter-spacing:.03em;margin:0 0 8px;font-size:40px;font-weight:900}.panel p.lead{opacity:.85;margin:0 0 22px}.victory-title{background:linear-gradient(#fff,#8ff4ff);color:#0000;filter:drop-shadow(0 4px 0 var(--royal));-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(34px,5vw,54px);font-weight:900;line-height:1}.stats{grid-template-columns:1fr 1fr;gap:10px;margin:22px 0 26px;display:grid}.stat{border:1px solid var(--panel-line);background:#ffffff12;border-radius:16px;padding:12px}.stat .v{color:var(--cyan-soft);font-variant-numeric:tabular-nums;font-size:26px;font-weight:900}.stat .k{letter-spacing:.1em;text-transform:uppercase;opacity:.75;font-size:12px}.controls{text-align:left;grid-template-columns:auto 1fr;align-items:center;gap:10px 18px;margin:10px 0 24px;display:grid}kbd{font-family:var(--font);text-align:center;min-width:34px;color:var(--ink);background:#fff;border-radius:9px;margin-right:4px;padding:5px 9px;font-size:14px;font-weight:900;display:inline-block;box-shadow:0 3px #8ab5d6}.settings{text-align:left;grid-template-columns:1fr auto;align-items:center;gap:14px 18px;margin:12px 0 24px;font-weight:700;display:grid}.settings select,.settings input[type=range]{font-family:var(--font);font-weight:800}.settings select{color:var(--ink);background:#fff;border:0;border-radius:10px;padding:7px 10px}.settings input[type=range]{width:160px;accent-color:var(--cyan)}.settings input[type=checkbox]{width:22px;height:22px;accent-color:var(--cyan)}#modal{z-index:5}#fade{opacity:0;pointer-events:none;background:radial-gradient(circle,#8ff4fff2,#1f4fd8);transition:opacity .25s;position:absolute;inset:0}#fade.on{opacity:1}#debug{border:1px solid var(--panel-line);white-space:pre;background:#050a1ebf;border-radius:10px;padding:8px 12px;font:12px/1.45 ui-monospace,Menlo,Consolas,monospace;display:none;position:absolute;bottom:12px;left:12px}#debug.visible{display:block}#loading{z-index:10;background:radial-gradient(circle at 50% 40%,#1f4fd8,#0f1d47 70%);place-items:center;transition:opacity .5s;display:grid;position:absolute;inset:0}#loading.done{opacity:0;pointer-events:none}.loader{letter-spacing:.1em;flex-direction:column;align-items:center;gap:18px;font-weight:900;display:flex}.loader .bar{background:#ffffff26;border-radius:8px;width:220px;height:8px;overflow:hidden}.loader .bar i{background:var(--cyan);border-radius:8px;width:40%;height:100%;animation:1.1s ease-in-out infinite load;display:block}@keyframes load{0%{transform:translate(-100%)}to{transform:translate(260%)}}.error{text-align:center;max-width:520px;padding:24px;line-height:1.5}@media (max-width:720px){#menu{background:#08103099;justify-content:center;padding-left:20px;padding-right:20px}.hint{white-space:normal;text-align:center;width:90vw}.hud-keys{display:none}}@media (prefers-reduced-motion:reduce){.toast,.pill.bump,.heart.hit{animation:none}}.panel{max-height:calc(100vh - 24px);overflow-y:auto}@media (max-height:560px){.panel{border-radius:22px;padding:16px 22px}.panel h2{margin-bottom:4px;font-size:26px}.panel p.lead{margin-bottom:10px;font-size:14px}.btn{border-radius:12px;padding:9px 18px;font-size:15px}.btn.primary{padding:10px 20px;font-size:17px}.btn-col{gap:8px}.stats{gap:6px;margin:10px 0 12px}.stat{padding:6px}.stat .v{font-size:18px}.logo{font-size:64px}.menu-col{gap:10px}.level-card{padding:8px 12px}.hud-tl{top:10px;left:10px}.portrait{width:56px;height:56px}.portrait svg{width:44px;height:44px}}.level-grid{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px;max-width:560px;display:grid}.lvl{font-family:var(--font);color:var(--white);text-align:left;cursor:pointer;border:1.5px solid var(--panel-line);background:#0c18429e;border-radius:14px;grid-template-rows:auto auto auto;gap:2px;padding:9px 11px 9px 14px;transition:transform .1s,border-color .15s,background .15s;display:grid;position:relative;overflow:hidden}.lvl:before{content:"";background:linear-gradient(180deg, var(--sw-a), var(--sw-b));width:6px;position:absolute;inset:0 auto 0 0}.lvl:hover:not(.locked){border-color:var(--sw-a);transform:translateY(-2px)}.lvl:focus-visible{outline:3px solid var(--cyan);outline-offset:2px}.lvl.sel{border-color:var(--sw-a);background:linear-gradient(135deg, color-mix(in srgb, var(--sw-a) 30%, transparent), #0c1842bf);box-shadow:0 0 22px color-mix(in srgb, var(--sw-a) 35%, transparent)}.lvl.locked{opacity:.45;cursor:not-allowed}.lvl-num{letter-spacing:.14em;opacity:.75;font-size:12px;font-weight:900}.lvl-name{font-size:15px;font-weight:900;line-height:1.15}.lvl-meta{opacity:.8;font-variant-numeric:tabular-nums;font-size:12px;font-weight:800}.level-info{border:1px solid var(--panel-line);background:#0c184299;border-radius:18px;align-items:center;gap:14px;max-width:560px;padding:12px 16px;display:flex}.level-info .badge{letter-spacing:.12em;color:var(--ink);white-space:nowrap;border-radius:10px;padding:6px 10px;font-size:12px;font-weight:900}.level-info .name{font-size:18px;font-weight:900}.level-info .desc{opacity:.85;font-size:13px}.menu-col{max-width:580px}.hud-level{letter-spacing:.08em;text-transform:uppercase;opacity:.85;text-shadow:0 1px 3px #0009;font-size:12px;font-weight:900}.bossbar{opacity:0;text-align:center;width:min(420px,60vw);transition:opacity .3s,transform .3s;position:absolute;top:58px;left:50%;transform:translate(-50%,-8px)}.bossbar.visible{opacity:1;transform:translate(-50%)}.bb-name{letter-spacing:.2em;color:#ffd27a;text-shadow:0 2px 6px #0009;margin-bottom:5px;font-size:13px;font-weight:900}.bb-track{background:#14040ab3;border:1.5px solid #ffc94a99;border-radius:10px;height:14px;overflow:hidden}.bb-track i{background:linear-gradient(90deg,#ff3a5a,#ffc94a);width:100%;height:100%;transition:width .35s;display:block}.v-record{color:#ffd27a;letter-spacing:.06em;margin:-10px 0 16px;font-weight:900}.intro{text-align:center;pointer-events:none;opacity:0;position:absolute;top:34%;left:50%;transform:translate(-50%,-50%)}.intro.show{animation:2.4s forwards intro}.i-num{letter-spacing:.3em;color:var(--cyan-soft);text-shadow:0 2px 8px #00000080;font-size:clamp(14px,2vw,18px);font-weight:900}.i-name{text-shadow:0 4px #0f1d47b3,0 0 30px #00000059;font-size:clamp(34px,6vw,64px);font-weight:900;line-height:1}@keyframes intro{0%{opacity:0;transform:translate(-50%,-40%)scale(.96)}15%{opacity:1;transform:translate(-50%,-50%)scale(1)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-56%)}}.touch-only{display:none}#ui.is-touch .touch-only{display:inline-block}#ui.is-touch .hud-keys,#ui.is-touch .lock-hint{display:none!important}#touch{touch-action:none;display:none;position:absolute;inset:0}#touch.visible{display:block}#touch .zone{pointer-events:auto;touch-action:none;position:absolute;top:0;bottom:0}#touch .zone.left{width:45%;left:0}#touch .zone.right{width:55%;right:0}.stick-base{pointer-events:none;opacity:.55;background:radial-gradient(circle,#0f1d4740,#0f1d4773);border:2px solid #ffffff59;border-radius:50%;width:132px;height:132px;margin:-66px 0 0 -66px;transition:opacity .15s;position:absolute}.stick-base.active{opacity:1}.stick-knob{background:radial-gradient(circle at 40% 35%,#fff,#bfeaff);border-radius:50%;width:58px;height:58px;margin:-29px 0 0 -29px;position:absolute;top:50%;left:50%;box-shadow:0 4px 14px #00000059}.stick-knob.sprint{background:radial-gradient(circle at 40% 35%,#fff,#5af0ff);box-shadow:0 0 22px #35e6ffcc}.t-btn{pointer-events:auto;touch-action:none;font-family:var(--font);color:var(--ink);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;border:0;border-radius:50%;font-weight:900;position:absolute}.t-jump{width:92px;height:92px;right:max(26px, calc(env(safe-area-inset-right,0px) + 14px));bottom:max(28px, calc(env(safe-area-inset-bottom,0px) + 16px));letter-spacing:.04em;background:radial-gradient(circle at 40% 35%,#8ff8ff,#1fc8ec);font-size:15px;box-shadow:0 6px #138fb4,0 10px 26px #00000059}.t-jump.down{transform:translateY(4px);box-shadow:0 2px #138fb4}.t-pause{width:50px;height:50px;right:max(16px, calc(env(safe-area-inset-right,0px) + 10px));background:#ffffffd9;font-size:16px;top:104px}#ui.is-touch .hint{bottom:max(18px, env(safe-area-inset-bottom,0px));white-space:normal;text-align:center;width:max-content;max-width:calc(100vw - 340px);font-size:14px}#ui.is-touch .hud-tr{top:12px}.rotate-hint{color:var(--cyan-soft);margin-top:4px;font-size:13px;font-weight:800;display:none}@media (orientation:portrait){#ui.is-touch .rotate-hint{display:block}}@media (max-width:720px){.level-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}.lvl-name{font-size:13px}.menu-col{max-width:100%}}@media (max-height:560px){.level-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.lvl{border-radius:10px;padding:6px 6px 6px 10px}.lvl-name{font-size:11px}.lvl-meta{font-size:10px}.level-info{padding:6px 10px}.level-info .desc{display:none}.logo{font-size:46px}.logo-sub{margin:0;font-size:16px}.t-jump{width:78px;height:78px}.t-pause{top:84px}.bossbar{top:44px}}.lvl-name{overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto}@media (max-height:560px){.menu-col{max-width:min(760px,100%)}.level-grid,.level-info{max-width:760px}}@media (max-width:600px){#ui.is-touch .hud-level{display:none}#ui.is-touch .hint{width:calc(100vw - 32px);max-width:none;padding:10px 14px;top:172px;bottom:auto}#ui.is-touch .toasts{top:250px}}@media (max-width:420px){.lvl{padding-right:6px}.lvl-name{overflow-wrap:normal;font-size:12px}}.radar{opacity:0;pointer-events:none;z-index:2;width:0;height:0;transition:opacity .25s;position:absolute;top:0;left:0}.radar.visible{opacity:1}.radar .r-arrow{background:radial-gradient(circle,#35e6ff59,#35e6ff00 70%);border-radius:50%;width:44px;height:44px;position:absolute;top:-22px;left:-22px}.radar .r-arrow:before{content:"";border-left:11px solid #0000;border-right:11px solid #0000;border-bottom:20px solid var(--cyan);filter:drop-shadow(0 0 6px #35e6ffe6);margin-left:-11px;position:absolute;top:2px;left:50%}.radar.on .r-arrow{animation:1s ease-in-out infinite radarBob;top:-60px}.radar .r-txt{white-space:nowrap;color:var(--cyan-soft);background:#080e28a6;border-radius:8px;padding:3px 8px;font-size:12px;font-weight:900;position:absolute;top:26px;left:0;transform:translate(-50%)}.radar.on .r-txt{top:-96px}@keyframes radarBob{0%,to{margin-top:0}50%{margin-top:-6px}}
