:root{--ink:#140f2e;--ink-soft:#140f2eb8;--good:#4dff9f;--bad:#ff3b5c;--hot:#ffd23f;--cool:#7de3ff;--pink:#ff4d9f;--purple:#c46bff;--display:900 1rem/1 "Arial Black", "Arial Bold", Impact, "Segoe UI", system-ui, sans-serif;--body:700 1rem/1.4 "Segoe UI", system-ui, -apple-system, sans-serif;--edge:3px solid var(--ink);--shadow-hard:0 4px 0 #140f2e8c;--hud-scale:1}*{box-sizing:border-box;margin:0;padding:0}html,body{color:#fff;width:100%;height:100%;font:var(--body);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;touch-action:none;overscroll-behavior:none;background:#0b1026;overflow:hidden}#app{position:fixed;top:0;bottom:0;left:0;right:0}#scene{width:100%;height:100%;display:block;position:absolute;top:0;bottom:0;left:0;right:0}body.playing #scene{cursor:none}#ui-root{pointer-events:none;font-size:calc(16px * var(--hud-scale));position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}#ui-root>*{pointer-events:none}.clickable{pointer-events:auto;cursor:pointer}.panel{background:var(--ink-soft);border:var(--edge);-webkit-backdrop-filter:blur(6px);box-shadow:var(--shadow-hard), inset 0 1px 0 #ffffff1f;border-radius:14px}.title{font:var(--display);letter-spacing:.02em;text-transform:uppercase;-webkit-text-stroke:3px var(--ink);paint-order:stroke fill}#hud{opacity:0;transition:opacity .3s;position:absolute;top:0;bottom:0;left:0;right:0}#hud.on{opacity:1}#vitals{width:20rem;padding:.7rem .8rem .6rem;position:absolute;top:1.1rem;left:1.1rem}.bar{border:var(--edge);background:#00000073;border-radius:999px;height:1.35rem;margin-bottom:.35rem;position:relative;overflow:hidden}.bar .fill{transform-origin:0;border-radius:999px;transition:transform .12s cubic-bezier(.2,.9,.25,1);position:absolute;top:0;bottom:0;left:0;right:0}.bar .ghost{transform-origin:0;background:#ffffff8c;border-radius:999px;transition:transform .55s ease-out .18s;position:absolute;top:0;bottom:0;left:0;right:0}.bar .label{font:var(--display);text-shadow:0 2px #0009;letter-spacing:.04em;justify-content:center;align-items:center;font-size:.8rem;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}#hp-fill{background:linear-gradient(#6cff9f,#16b45f)}#hp-bar.low #hp-fill{background:linear-gradient(#ff8a6c,#d41f2e)}#sh-bar{height:.8rem}#sh-fill{background:linear-gradient(#b6f2ff,#2aa5d8)}#focus-bar{height:.7rem;margin-bottom:0}#focus-fill{background:linear-gradient(#ffe89a,#ff9a3f)}#focus-bar.ready{box-shadow:0 0 12px #ffd23fcc}.stat-row{font:var(--display);gap:.5rem;margin-top:.5rem;font-size:.78rem;display:flex}.chip{border:2px solid var(--ink);background:#00000059;border-radius:8px;flex:1;justify-content:center;align-items:center;gap:.25rem;padding:.3rem .2rem;transition:transform .12s,background .2s;display:flex}.chip.pulse{animation:.38s cubic-bezier(.2,1.5,.4,1) chipPop}@keyframes chipPop{0%{transform:scale(1)}35%{background:#ffd23f8c;transform:scale(1.28)}to{transform:scale(1)}}.chip .v{color:var(--hot)}.chip.guns .v{color:var(--cool)}.chip.rate .v{color:var(--good)}#wave-box{text-align:center;width:26rem;max-width:46vw;padding:.55rem .8rem .6rem;position:absolute;top:1.1rem;left:50%;transform:translate(-50%)}#wave-name{font:var(--display);letter-spacing:.05em;font-size:1.05rem}#wave-sub{opacity:.8;letter-spacing:.12em;margin-top:.1rem;font-size:.72rem}#wave-progress{height:.55rem;margin-top:.45rem}#wave-fill{background:linear-gradient(90deg, var(--cool), var(--purple))}#boss-box{text-align:center;opacity:0;width:40rem;max-width:72vw;padding:.5rem .8rem .6rem;transition:opacity .35s,transform .35s cubic-bezier(.2,1.4,.4,1);position:absolute;top:1.1rem;left:50%;transform:translate(-50%)scale(.9)}#boss-box.on{opacity:1;transform:translate(-50%)scale(1)}#wave-box{transition:opacity .3s,transform .3s}#wave-box.hidden{opacity:0;transform:translate(-50%)translateY(-1.5rem)}#boss-name{font:var(--display);letter-spacing:.16em;color:#ff8aa0;font-size:1rem}#boss-bar{height:1.15rem;margin-top:.35rem}#boss-fill{background:linear-gradient(#ff8a6c,#b0122c)}#boss-pips{justify-content:center;gap:.3rem;margin-top:.35rem;display:flex}#boss-pips i{border:1px solid var(--ink);background:#ffffff40;border-radius:999px;width:1.6rem;height:.3rem}#boss-pips i.on{background:var(--hot)}#score-box{text-align:right;min-width:12rem;padding:.6rem .9rem;position:absolute;top:1.1rem;right:1.1rem}#score{font:var(--display);color:#fff;letter-spacing:.02em;font-size:1.7rem}#score.pop{animation:.3s cubic-bezier(.2,1.6,.4,1) scorePop}@keyframes scorePop{0%{transform:scale(1)}40%{transform:scale(1.16)}to{transform:scale(1)}}.score-sub{font:var(--display);opacity:.95;justify-content:flex-end;gap:.9rem;margin-top:.25rem;font-size:.78rem;display:flex}.score-sub .coin{color:var(--hot)}.score-sub .dist{color:var(--cool)}#overcharge{text-align:center;opacity:0;visibility:hidden;width:26rem;max-width:80vw;transition:opacity .16s,transform .16s,visibility 0s linear .16s;position:absolute;top:30%;left:50%;transform:translate(-50%,-50%)scale(.92)}#overcharge.on{opacity:1;visibility:visible;transition:opacity .16s,transform .16s,visibility;transform:translate(-50%,-50%)scale(1)}#oc-name{font:var(--display);letter-spacing:.1em;color:#ff3b5c;text-shadow:0 0 .5rem #ff3b5cd9, 0 .12rem 0 var(--ink);font-size:1.5rem;animation:.5s ease-in-out infinite alternate ocPulse}@keyframes ocPulse{0%{transform:scale(1)}to{transform:scale(1.06)}}#oc-bar{border:var(--edge);background:#080614bf;border-radius:999px;height:1.1rem;margin:.35rem 0 .3rem;position:relative;overflow:hidden}#oc-fill{transform-origin:0;background:linear-gradient(#ff8a6c,#b0122c)}#oc-break{transform-origin:0;opacity:.95;background:linear-gradient(#fff,#7de3ff);height:42%;top:29%}#oc-hint{font:var(--display);letter-spacing:.12em;color:#fff;opacity:.9;text-shadow:0 .1rem 0 var(--ink);font-size:.78rem}.chip.aegis{color:#7de3ff}#combo{text-align:right;opacity:0;transition:opacity .18s,transform .18s;position:absolute;top:42%;right:2.2rem;transform:translate(1.5rem)}#combo.on{opacity:1;transform:translate(0)}#combo-n{font:var(--display);color:var(--hot);-webkit-text-stroke:4px var(--ink);paint-order:stroke fill;text-shadow:0 0 24px #ffd23f99;font-size:3.4rem;line-height:.9}#combo-n.hit{animation:.22s cubic-bezier(.2,1.6,.4,1) comboHit}@keyframes comboHit{0%{transform:scale(1)}40%{transform:scale(1.25)rotate(-3deg)}to{transform:scale(1)}}#combo-tier{font:var(--display);letter-spacing:.16em;color:#fff;margin-top:-.1rem;font-size:1rem}#combo-ring{border:2px solid var(--ink);background:#fff3;border-radius:999px;height:.3rem;margin-top:.3rem;overflow:hidden}#combo-ring i{background:var(--hot);transform-origin:100%;height:100%;display:block}#crosshair{opacity:0;width:46px;height:46px;margin:-23px 0 0 -23px;transition:opacity .18s;position:absolute;top:50%;left:50%}#crosshair.on{opacity:1}#crosshair i{background:#fff;position:absolute;box-shadow:0 0 0 2px #140f2ee6}#crosshair i:first-child{width:2px;height:12px;margin-left:-1px;top:0;left:50%}#crosshair i:nth-child(2){width:2px;height:12px;margin-left:-1px;bottom:0;left:50%}#crosshair i:nth-child(3){width:12px;height:2px;margin-top:-1px;top:50%;left:0}#crosshair i:nth-child(4){width:12px;height:2px;margin-top:-1px;top:50%;right:0}#crosshair.hit i{background:var(--bad)}#crosshair-dot{background:var(--hot);border-radius:50%;width:4px;height:4px;margin:-2px 0 0 -2px;position:absolute;top:50%;left:50%;box-shadow:0 0 0 2px #140f2ee6}#banners{flex-direction:column;align-items:center;gap:.4rem;display:flex;position:absolute;top:23%;left:0;right:0}.banner{font:var(--display);-webkit-text-stroke:5px var(--ink);paint-order:stroke fill;text-align:center;white-space:nowrap;animation:.45s cubic-bezier(.15,1.5,.4,1) forwards bannerIn,.4s 1.05s forwards bannerOut}.banner.wave{color:#fff;font-size:3.6rem}.banner.wave small{letter-spacing:.3em;color:var(--cool);-webkit-text-stroke:3px var(--ink);margin-top:.3rem;font-size:1.1rem;display:block}.banner.combo{color:var(--hot);font-size:2.4rem}#combo.tierup #combo-n{animation:.5s cubic-bezier(.2,1.5,.4,1) tierUp}#combo.tierup #combo-tier{animation:.5s cubic-bezier(.2,1.5,.4,1) 60ms tierUp}@keyframes tierUp{0%{transform:scale(1)}30%{filter:brightness(1.7);transform:scale(1.5)}to{transform:scale(1)}}.banner.gate{font-size:2.4rem}.banner.gate.good{color:var(--good)}.banner.gate.bad{color:var(--bad)}.banner.boss{color:var(--bad);font-size:3rem;animation-duration:.5s,.4s}.banner.clear{color:var(--good);font-size:3.2rem}@keyframes bannerIn{0%{opacity:0;transform:scale(.3)translateY(30px)}60%{opacity:1;transform:scale(1.12)translateY(0)}to{opacity:1;transform:scale(1)}}@keyframes bannerOut{to{opacity:0;transform:scale(1.25)translateY(-24px)}}#toasts{flex-direction:column;align-items:center;gap:.3rem;display:flex;position:absolute;top:7.5rem;left:50%;transform:translate(-50%)}.toast.again{animation:.3s cubic-bezier(.2,1.6,.4,1) toastAgain}@keyframes toastAgain{40%{transform:scale(1.14)}}.toast{font:var(--display);letter-spacing:.12em;border:var(--edge);background:var(--ink-soft);border-radius:999px;padding:.35rem .8rem;font-size:.95rem;animation:.3s cubic-bezier(.2,1.5,.4,1) forwards toastIn,.35s 1.3s forwards toastOut}@keyframes toastIn{0%{opacity:0;transform:translateY(14px)scale(.85)}}@keyframes toastOut{to{opacity:0;transform:translateY(-10px)}}#build{flex-wrap:wrap;gap:.3rem;max-width:26rem;display:flex;position:absolute;bottom:1.1rem;left:1.1rem}.build-chip{border:2px solid var(--ink);background:var(--ink-soft);font:var(--display);border-radius:8px;align-items:center;gap:.25rem;padding:.22rem .45rem;font-size:.72rem;display:flex}.build-chip .n{opacity:.85}#hint{font:var(--display);letter-spacing:.16em;opacity:.55;text-align:center;font-size:.74rem;position:absolute;bottom:1.2rem;left:50%;transform:translate(-50%)}#hurt-vignette{opacity:0;transition:opacity .35s;position:absolute;top:0;bottom:0;left:0;right:0;box-shadow:inset 0 0 14rem #ff3b5ce6}.screen{opacity:0;pointer-events:none;visibility:hidden;background:radial-gradient(at 50% 45%,#140f2e61,#080614d9);flex-direction:column;justify-content:center;align-items:center;gap:1.2rem;padding:2rem;transition:opacity .35s,visibility 0s linear .35s;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.screen.on{opacity:1;pointer-events:auto;visibility:visible;transition:opacity .35s,visibility}.logo{font:var(--display);letter-spacing:-.01em;text-align:center;background:linear-gradient(180deg, #fff 20%, var(--hot) 55%, var(--pink) 100%);color:#0000;-webkit-text-stroke:6px var(--ink);paint-order:stroke fill;filter:drop-shadow(0 8px #140f2e80);-webkit-background-clip:text;background-clip:text;font-size:clamp(3rem,9vw,7rem);line-height:.92;animation:3.4s ease-in-out infinite logoFloat}@keyframes logoFloat{0%,to{transform:translateY(0)rotate(-1deg)}50%{transform:translateY(-10px)rotate(1deg)}}.tagline{font:var(--display);letter-spacing:.28em;color:var(--cool);text-align:center;font-size:1rem}.btn{font:var(--display);letter-spacing:.1em;border:4px solid var(--ink);color:var(--ink);background:linear-gradient(#ffe27a,#ff9a3f);border-radius:16px;padding:.85rem 2.4rem;font-size:1.35rem;transition:transform .1s,box-shadow .1s,filter .15s;box-shadow:0 6px #140f2ea6}.btn:hover{filter:brightness(1.08);transform:translateY(-2px);box-shadow:0 8px #140f2ea6}.btn:active{transform:translateY(4px);box-shadow:0 2px #140f2ea6}.btn.ghost{color:#fff;background:#ffffff1a;padding:.6rem 1.6rem;font-size:1rem;box-shadow:0 4px #140f2e99}.keys{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.5rem 1.4rem;width:100%;max-width:44rem;font-size:.85rem;display:grid}.keys div{justify-content:flex-start;align-items:center;gap:.5rem;display:flex}kbd{text-align:center;white-space:nowrap;border:2px solid var(--ink);min-width:2rem;color:var(--ink);font:var(--display);background:#fff;border-bottom-width:4px;border-radius:6px;flex:none;padding:.18rem .5rem;font-size:.72rem;display:inline-block}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));gap:.7rem;width:100%;max-width:40rem;display:grid}.stat-card{text-align:center;border:var(--edge);background:var(--ink-soft);border-radius:12px;padding:.7rem .5rem}.stat-card .k{letter-spacing:.16em;opacity:.75;font-size:.68rem}.stat-card .v{font:var(--display);margin-top:.2rem;font-size:1.5rem}.stat-card.best .v{color:var(--hot)}#draft .cards{flex-wrap:wrap;justify-content:center;gap:1.1rem;display:flex}.card{text-align:center;border:4px solid var(--ink);background:linear-gradient(#261e4ef5,#120e2cfa);border-radius:20px;flex-direction:column;align-items:center;gap:.55rem;width:15rem;min-height:16.5rem;padding:1.1rem 1rem;transition:transform .14s cubic-bezier(.2,1.4,.4,1),box-shadow .14s,filter .14s;animation:.4s cubic-bezier(.2,1.4,.4,1) backwards cardIn;display:flex;position:relative;overflow:hidden;box-shadow:0 8px #140f2e99}.card:before{content:"";background:radial-gradient(ellipse at 50% 100%, var(--glow), transparent 70%);pointer-events:none;height:60%;position:absolute;top:-40%;bottom:auto;left:-10%;right:-10%}.card:first-child{animation-delay:40ms}.card:nth-child(2){animation-delay:.12s}.card:nth-child(3){animation-delay:.2s}@keyframes cardIn{0%{opacity:0;transform:translateY(40px)scale(.85)rotate(-3deg)}}.card:hover{filter:brightness(1.1);transform:translateY(-10px)scale(1.04);box-shadow:0 16px #140f2e99}.card .rar{font:var(--display);letter-spacing:.22em;font-size:.68rem}.card .icon{filter:drop-shadow(0 4px #0006);font-family:Segoe UI Emoji,Apple Color Emoji,Noto Color Emoji,sans-serif;font-size:3.4rem;line-height:1}.build-chip span:first-child{font-family:Segoe UI Emoji,Apple Color Emoji,Noto Color Emoji,sans-serif}.card .name{font:var(--display);letter-spacing:.02em;font-size:1.05rem}.card .desc{opacity:.88;font-size:.84rem;line-height:1.35}.card .stacks{letter-spacing:.14em;opacity:.6;margin-top:auto;font-size:.7rem}.card .pickhint{font:var(--display);letter-spacing:.18em;border:2px solid;border-radius:999px;margin-top:.5rem;padding:.2rem .7rem;font-size:.7rem}.shop-grid{grid-template-columns:repeat(auto-fit,minmax(19rem,1fr));gap:.6rem;width:100%;max-width:62rem;max-height:58vh;padding:.2rem;display:grid;overflow-y:auto}.shop-item{border:3px solid var(--ink);background:linear-gradient(#282054f2,#140f2ef2);border-radius:14px;align-items:center;gap:.8rem;padding:.6rem .8rem;transition:transform .1s,filter .15s,border-color .15s;display:flex;box-shadow:0 4px #140f2e99}.shop-item:hover{filter:brightness(1.12);border-color:var(--hot);transform:translate(3px)}.shop-item.poor{opacity:.5}.shop-item.poor:hover{border-color:var(--ink);transform:none}.shop-item.maxed{border-color:var(--good);opacity:.8}.shop-item.maxed:hover{transform:none}.si-icon{text-align:center;flex:none;width:2.4rem;font-family:Segoe UI Emoji,Apple Color Emoji,Noto Color Emoji,sans-serif;font-size:1.9rem}.si-main{flex:1;min-width:0}.si-name{font:var(--display);letter-spacing:.04em;font-size:.86rem}.si-lv{color:var(--cool);opacity:.8;font-size:.72rem}.si-desc{opacity:.82;margin-top:.1rem;font-size:.74rem}.si-step{opacity:.55;font-size:.68rem}.si-cost{color:var(--cool)}.si-pips{flex-wrap:wrap;gap:.16rem;margin-top:.3rem;display:flex}.si-pips i{border:1px solid var(--ink);background:#ffffff2e;border-radius:999px;width:.8rem;height:.3rem}.si-pips i.on{background:var(--hot)}.si-cost{font:var(--display);color:var(--cool);text-align:right;flex:none;min-width:5rem;font-size:.92rem}.shop-item.maxed .si-cost{color:var(--good)}#pause .rows{flex-direction:column;align-items:center;gap:.6rem;display:flex}.slider-row{font:var(--display);letter-spacing:.1em;align-items:center;gap:.8rem;font-size:.82rem;display:flex}.slider-row input{width:12rem;accent-color:var(--hot)}#perf{opacity:.62;text-align:right;white-space:pre;text-shadow:0 1px #000c;font:700 .68rem/1.35 ui-monospace,Cascadia Mono,Consolas,monospace;display:none;position:absolute;bottom:.5rem;right:.6rem}#perf.on{display:block}#touch{display:none;position:absolute;top:0;bottom:0;left:0;right:0}body.touch #touch{display:block}.touch-pad{width:4.6rem;height:4.6rem;font:var(--display);letter-spacing:.06em;touch-action:none;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#140f2e73;border:3px solid #ffffff73;border-radius:50%;justify-content:center;align-items:center;font-size:.62rem;transition:transform 80ms,background 80ms;display:flex;position:absolute}.touch-pad.down{background:#ffd23f80;transform:scale(.9)}#touch-focus{border-color:var(--hot);bottom:6.4rem;right:1.2rem}#touch-jump{bottom:2.4rem;right:6.4rem}#touch-dodge{bottom:1.2rem;right:1.2rem}#touch-aegis{color:#7de3ff;border-color:#7de3ff;width:5.6rem;height:5.6rem;display:none;bottom:1.2rem;left:1.2rem}body.touch #touch-aegis.on{display:flex}:root{--hud-side:20rem}#wave-box{max-width:min(46vw, calc(100vw - 2 * var(--hud-side) - 2rem))}#boss-box{max-width:min(72vw, calc(100vw - 2 * var(--hud-side) - 2rem))}@media (max-width:900px){#ui-root{font-size:calc(13px * var(--hud-scale))}:root{--hud-side:15rem}#vitals{width:15rem}#combo{right:1rem}.card{width:11rem;min-height:15rem;padding:.8rem .6rem}.card .icon{font-size:2.4rem}}@media (max-width:620px){#vitals{width:auto;max-width:58vw;padding:.45rem .55rem .4rem;top:.6rem;left:.6rem}#vitals .stat-row{flex-wrap:nowrap}#vitals .chip{padding:.12rem .3rem;font-size:.62rem}#score-box{min-width:0;padding:.4rem .6rem;top:.6rem;right:.6rem}#score{font-size:1.3rem}.score-sub{gap:.5rem;font-size:.68rem}#wave-box,#boss-box{width:auto;max-width:94vw;top:7.2rem}#boss-box{transform:translate(-50%)scale(.95)}#boss-box.on{transform:translate(-50%)scale(1)}#build{max-width:50vw;bottom:.7rem;left:.7rem}#hint{display:none}#combo{top:34%;right:.8rem}}#fps{font:var(--display);letter-spacing:.08em;color:#fff;opacity:.75;pointer-events:none;white-space:nowrap;background:#0806148c;border-radius:999px;padding:.15rem .5rem;font-size:.68rem;position:absolute;top:.5rem;left:50%;transform:translate(-50%)}#fps.good{color:#4dff9f}#fps.warn{color:#ffd23f}#fps.bad{color:#ff3b5c}
