html,body{overscroll-behavior-y:none;overscroll-behavior:contain;touch-action:pan-y;}body{margin:0;height:175vh;overflow-y:scroll;font-family:monospace;}#ui-container{display:block;position:fixed;top:0;left:0;width:100%;height:100%;z-index:10;}#hud{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:20;}.hud-label{color:rgba(255,255,255,.9);font-size:12px;white-space:nowrap;user-select:none;pointer-events:none;}.hud-toggle{font-family:monospace;font-size:16px;line-height:1;cursor:pointer;user-select:none;opacity:0;color:rgba(220,200,255,.8);pointer-events:auto;z-index:50;text-shadow:0 0 5px rgba(160,120,255,.3);animation:hudFadeIn 1.2s ease forwards .6s;transition:color .25s ease,text-shadow .25s ease,transform .25s ease;}button.hud-toggle{background:none;border:none;padding:0;margin:0;appearance:none;-webkit-appearance:none;}.hud-toggle:hover{color:rgba(255,255,255,1);transform:scale(1.15);text-shadow:0 0 8px rgba(200,160,255,.7),0 0 14px rgba(255,255,255,.4);}.hud-toggle:active{transform:scale(.9);opacity:.9;}#info-button{position:absolute;top:2rem;right:2rem;}@keyframes hudFadeIn{0%{opacity:0;transform:translateY(-4px)}100%{opacity:1;transform:translateY(0)}}#leaderboard-toggle{position:absolute;top:0;left:0;}#leaderboard-toggle.glow{color:rgba(255,255,255,1);text-shadow:0 0 6px rgba(200,150,255,.8);transition:text-shadow .2s ease;}#leaderboard-container{position:absolute;top:2rem;left:2rem;font-family:monospace;color:rgba(220,200,255,.85);font-size:12px;line-height:1.3;pointer-events:auto;user-select:none;}#leaderboard-panel{opacity:0;transition:opacity .25s ease;pointer-events:none;margin-top:2rem;white-space:pre-line;line-height:1.7;}#leaderboard-panel.visible{opacity:1}#leaderboard-panel .lb-cursor{display:inline-block;width:6px;background:rgba(220,200,255,.8);margin-left:2px;animation:blink 1s step-start infinite;}.dots{color:rgba(200,180,255,.35)}.lb-score{display:inline-block;min-width:5ch;text-align:right;}#input-wrapper{position:absolute;top:0;left:calc(1rem + 1rem);font-family:monospace;color:rgba(220,200,255,.95);font-size:12px;z-index:60;white-space:pre;pointer-events:none;width:max-content;}#initials-entry,#save-flash{position:absolute;top:0;left:0;white-space:pre;pointer-events:none;transition:opacity .3s ease;z-index:1000;}#initials-entry{left:2rem;opacity:0;visibility:hidden}#initials-entry.active{opacity:1;visibility:visible;pointer-events:auto}#initials-entry.fading{opacity:0;visibility:visible}#save-flash{opacity:0;visibility:hidden}#save-flash.visible{opacity:1;visibility:visible}#init-text{display:inline-block;width:3ch;text-align:left}.cursor-block{display:inline-block;width:1ch;text-align:center;animation:blink .6s steps(1) infinite;}.empty-block{opacity:.3;color:rgba(220,200,255,.6);}.lb-self{color:#ffeb7a;font-weight:bold;text-shadow:0 0 4px #ffeb7a;}.lb-live{color:rgba(255,235,255,.98);text-shadow:0 0 6px rgba(255,200,255,.65),0 0 12px rgba(255,200,255,.25);animation:lbLivePulse .9s ease-in-out infinite alternate;}@keyframes lbLivePulse{from{filter:brightness(1)}to{filter:brightness(1.22)}}@keyframes blink{50%{opacity:0}}#input-wrapper.flash{animation:flashPulse .35s ease;}@keyframes flashPulse{0%{filter:brightness(1)}40%{filter:brightness(2)}100%{filter:brightness(1)}}.starfield{position:fixed;inset:0;overflow:hidden;pointer-events:none;background:radial-gradient(circle at center,#0a0015 15%,#2a004d 100%);filter:none;transition:filter .3s ease,brightness .3s ease;}.star{position:absolute;font-size:10px;opacity:.6;color:rgba(230,200,255,.9);filter:none;text-shadow:0 0 4px rgba(220,150,255,.6),0 0 6px rgba(200,120,255,.25);transform:translate(var(--start-x,0),var(--start-y,0));transition:transform 2.2s cubic-bezier(.33,1,.68,1),color 1.8s ease,text-shadow 1.8s ease;}.starfield.init-start .star{transform:translate(0,0)}.starfield.init-bounce .star{transition:transform .35s cubic-bezier(.68,-.55,.27,1.55);transform:translate(0,0) scale(1.01)}.layer-near .star{opacity:.8;text-shadow:0 0 8px rgba(255,210,255,.8),0 0 14px rgba(255,180,255,.4);}.layer-mid .star{opacity:.6;text-shadow:0 0 6px rgba(230,200,255,.6),0 0 10px rgba(230,180,255,.3);}.layer-far .star{opacity:.4;font-size:8px;text-shadow:0 0 3px rgba(200,170,255,.4),0 0 6px rgba(180,160,255,.2);}@keyframes twinkle{0%,100%{opacity:.4}50%{opacity:1;text-shadow:0 0 8px rgba(255,230,255,1)}}.starfield.boosting{filter:blur(1.3px) brightness(1.2);}.starfield.boosting .star{filter:blur(1.1px) saturate(1.25);text-shadow:0 0 12px rgba(255,220,160,.9),0 0 20px rgba(102,225,255,.8),0 0 28px rgba(255,255,220,.4);}@media (max-width:480px){.star{font-size:8px}}.health-display{position:fixed;bottom:2vh;left:50%;transform:translateX(-50%);z-index:100;display:flex;align-items:center;justify-content:center;gap:1.2ch;font-family:"Courier New",monospace;white-space:nowrap;user-select:none;opacity:.95;width:95vw;max-width:560px;box-sizing:border-box;}.health-display>*{flex-shrink:0;min-width:0;display:flex;align-items:center;}.health-ratio,.level-display{font-size:clamp(.7rem,2vw,.9rem);color:#fff;opacity:.9;overflow:visible;text-overflow:unset;white-space:nowrap;flex:0 0 auto;line-height:1.2;}.health-ratio{text-align:right;padding-left:.5em}.level-display{text-align:left;padding-right:.5em}.health-bar{position:relative;display:inline-block;border:1px solid #ffffff44;border-radius:4px;padding:.3em .4em;background:rgba(0,0,0,.25);overflow:visible;transition:border-color .25s ease-out,box-shadow .25s ease-out,transform .25s ease-out;z-index:2;font-size:clamp(.8rem,2.5vw,1.1rem);box-sizing:border-box;flex:1 1 auto;min-width:160px;max-width:340px;}.bar-container{position:relative;width:100%;height:.8em;display:flex;align-items:center;justify-content:center;overflow:hidden;}.bar-empty{font-size:clamp(1rem,3vw,1.4rem);color:#555;white-space:pre;line-height:1;transform:translateY(-.05em);user-select:none;pointer-events:none;}.bar-fill{position:absolute;top:0;left:0;height:100%;width:0;background:#fff;box-shadow:0 0 6px #ffffffaa;border-radius:2px;transition:width .45s cubic-bezier(.25,1,.5,1);pointer-events:none;z-index:2;}.health-bar.damage{animation:barShake .35s ease-out,barFlash .4s ease-out,barRecoil .35s ease-out;}@keyframes barShake{0%,100%{transform:translateX(0) scaleY(1)}15%{transform:translateX(-2px) scaleY(.97)}30%{transform:translateX(2px) scaleY(.95)}45%{transform:translateX(-2px) scaleY(.96)}60%{transform:translateX(2px) scaleY(.97)}75%{transform:translateX(-1px) scaleY(.98)}90%{transform:translateX(1px) scaleY(.99)}}@keyframes barRecoil{0%{transform:scaleY(1)}40%{transform:scaleY(.93)}80%{transform:scaleY(.97)}100%{transform:scaleY(1)}}@keyframes barFlash{0%{border-color:#ffffff44}25%{border-color:rgba(255,110,140,.5)}50%{border-color:rgba(255,110,140,.8);box-shadow:0 0 10px rgba(255,110,140,.8)}75%{border-color:rgba(255,110,140,.6)}100%{border-color:#ffffff44;box-shadow:none}}.health-bar.damage .bar-fill{animation:fillFlash .45s ease-out;}@keyframes fillFlash{0%{background:#fff}25%{background:rgba(255,110,140,.5)}50%{background:rgba(255,110,140,.9);box-shadow:0 0 10px rgba(255,110,140,.8)}100%{background:#fff;box-shadow:0 0 6px #ffffff99}}.health-bar.level-up{animation:levelUpFlash 1.4s ease-out,levelUpShake .65s ease-in-out;}@keyframes levelUpFlash{0%{box-shadow:0 0 6px #fff;border-color:#fff;transform:scale(1)}25%{box-shadow:0 0 16px #5ff;border-color:#5ff;transform:scale(1.02)}50%{box-shadow:0 0 20px #8ff;border-color:#8ff;transform:scale(1.04)}75%{box-shadow:0 0 14px #5ff;border-color:#5ff;transform:scale(1.02)}100%{box-shadow:none;border-color:#ffffff44;transform:scale(1)}}@keyframes levelUpShake{0%,100%{transform:translateX(0)}20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1px)}80%{transform:translateX(1px)}}.health-bar.crit{animation:critGlow .4s ease-out;}@keyframes critGlow{0%{border-color:rgba(255,80,80,.5);box-shadow:0 0 10px rgba(255,60,60,.6);transform:scale(1.02)}50%{border-color:rgba(255,40,40,.9);box-shadow:0 0 22px rgba(255,0,0,.9);transform:scale(1.04)}100%{border-color:#ffffff44;box-shadow:none;transform:scale(1)}}#spark-canvas{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:5;filter:drop-shadow(0 0 4px rgba(255,80,80,.6)) drop-shadow(0 0 8px rgba(255,0,0,.4));}@media (max-width:480px){.health-display{gap:1ch;bottom:2rem;max-width:calc(100% - 4rem)}.health-bar{min-width:130px;max-width:280px}.bar-empty{font-size:clamp(.9rem,2.8vw,1.2rem)}}@media (max-height:500px){.health-display{bottom:.5vh}}#ascii-base-layer{position:relative;overflow:visible;}.award-point{position:absolute;font-family:'Courier New',monospace;font-size:1rem;color:#fff;pointer-events:none;text-shadow:0 0 3px #f55,0 0 5px #5ff,0 0 8px rgba(255,255,255,.8);transform:translate(-50%,-50%) scale(.8);opacity:0;animation:awardFly 1.15s cubic-bezier(.3,1.6,.5,1) forwards;z-index:6;}.award-point.bonus{color:#ffeedd;text-shadow:0 0 6px #ff7,0 0 10px #f55;}.award-point.passive{color:#aaff66;text-shadow:0 0 6px #cfff99,0 0 12px #aaff66,0 0 20px rgba(170,255,102,.6);animation:awardFly 1.3s cubic-bezier(.3,1.6,.5,1) forwards;}.award-point.boost{color:#ffd4ff;text-shadow:0 0 6px #ff66d4,0 0 10px #66e1ff,0 0 14px rgba(255,255,255,.9),0 0 20px rgba(255,120,220,.6);animation:awardFly 1.05s cubic-bezier(.3,1.6,.5,1) forwards;}.award-point.level-bonus{color:#ffe97a;text-shadow:0 0 6px #ff0,0 0 12px #f90,0 0 20px #fc0;}.award-point.negative{color:#ff6b6b;text-shadow:0 0 4px #ff2f2f,0 0 10px rgba(255,0,0,.55);animation:awardFlyNegative 1.15s cubic-bezier(.3,1.4,.6,1) forwards;}@keyframes awardFly{0%{opacity:0;transform:translate(-50%,-50%) scale(.8);}20%{opacity:1;transform:translate(calc(-50% + var(--moveX)),calc(-50% + var(--moveY))) scale(1);}45%{opacity:1;transform:translate(calc(-50% + var(--moveX)),calc(-50% + var(--moveY))) scale(1.05);}80%{opacity:.8;transform:translate(calc(-50% + var(--moveX) + var(--driftX)),calc(-50% + var(--moveY) + var(--driftY))) scale(1.25);}100%{opacity:0;transform:translate(calc(-50% + var(--moveX) + var(--driftX)),calc(-50% + var(--moveY) + var(--driftY))) scale(1.45);}}@keyframes awardFlyNegative{0%{opacity:0;transform:scale(.9);}20%{opacity:1;transform:translateY(4px) scale(1);}55%{opacity:1;transform:translateY(12px) scale(1.05);}100%{opacity:0;transform:translateY(18px) scale(.95);}}.debris{position:absolute;font-family:'Courier New',monospace;font-size:.8rem;opacity:0;animation:debrisFadeIn .2s ease-out forwards;pointer-events:none;user-select:none;transform-origin:center;z-index:5;}@keyframes debrisFadeIn{from{opacity:0}to{opacity:1}}.chromatic{animation:chromaticShift 1.6s linear infinite;}@keyframes chromaticShift{0%{filter:hue-rotate(0deg) brightness(1)}50%{filter:hue-rotate(90deg) brightness(1.3)}100%{filter:hue-rotate(180deg) brightness(1)}}@media (max-width:768px){.award-point{text-shadow:none!important;filter:none!important;opacity:.93!important;font-size:.9rem}.award-point.boost{color:#ff66d4!important;text-shadow:none!important;font-weight:600}.debris{text-shadow:none!important;filter:none!important;opacity:.85!important;font-size:.7rem!important}.chromatic{animation:none!important;filter:none!important}}.points-display{position:fixed;top:2rem;left:50%;transform:translateX(-50%);font-family:"Courier New",monospace;font-size:.9rem;color:#ccc;user-select:none;pointer-events:none;z-index:20;text-align:center;}.points-value{display:inline-block;transform-origin:center;transition:color .2s ease-out,text-shadow .2s ease-out;}.points-value.hud-gain{animation:hudFlashBlue .45s ease-out,hudPopUp .45s cubic-bezier(.25,1.5,.5,1);}.points-value.hud-spend{animation:hudFlashRed .45s ease-out,hudPopDown .45s cubic-bezier(.25,1.5,.5,1);}@keyframes hudFlashBlue{0%{color:#eee;text-shadow:none}25%{color:#bdf;text-shadow:0 0 calc(3px + 2px * var(--intensity,1)) #8ef,0 0 calc(6px + 3px * var(--intensity,1)) #5ff}60%{color:#def;text-shadow:0 0 calc(3px * var(--intensity,1)) #8cf}100%{color:#ccc;text-shadow:none}}@keyframes hudFlashRed{0%{color:#eee;text-shadow:none}25%{color:#fbb;text-shadow:0 0 calc(3px + 2px * var(--intensity,1)) #f66,0 0 calc(6px + 3px * var(--intensity,1)) #f33}60%{color:#fcc;text-shadow:0 0 calc(3px * var(--intensity,1)) #f55}100%{color:#ccc;text-shadow:none}}@keyframes hudPopUp{0%,100%{transform:translateY(0) scale(1)}25%{transform:translateY(calc(-6px * var(--intensity,1))) rotate(-1deg) scale(calc(1.1 + .15 * var(--intensity,1)))}50%{transform:translateY(calc(-3px * var(--intensity,1))) rotate(1deg) scale(calc(1.05 + .08 * var(--intensity,1)))}}@keyframes hudPopDown{0%,100%{transform:translateY(0) scale(1)}25%{transform:translateY(calc(6px * var(--intensity,1))) rotate(1deg) scale(calc(1.1 + .15 * var(--intensity,1)))}50%{transform:translateY(calc(3px * var(--intensity,1))) rotate(-1deg) scale(calc(1.05 + .08 * var(--intensity,1)))}}.points-value.hud-gold{animation:hudFlashGold .65s ease-out,hudPopUp .65s cubic-bezier(.25,1.5,.5,1);}@keyframes hudFlashGold{0%{color:#eee;text-shadow:none}25%{color:#ffda60;text-shadow:0 0 calc(4px + 2px * var(--intensity,1)) #ff0,0 0 calc(8px + 3px * var(--intensity,1)) #fc0}60%{color:#ffe97a;text-shadow:0 0 calc(4px * var(--intensity,1)) #fd0}100%{color:#ccc;text-shadow:none}}.points-value.hud-gold{animation:hudFlashGold .65s ease-out,hudPopUp .65s cubic-bezier(.25,1.5,.5,1);}.points-value.hud-destruct{animation:hudDestructiveShake .5s ease-out;}@keyframes hudDestructiveShake{0%{transform:translate(0,0)}15%{transform:translate(calc(-6px * var(--shake-intensity)),calc(-4px * var(--shake-intensity))) rotate(-2deg)}30%{transform:translate(calc(5px * var(--shake-intensity)),calc(3px * var(--shake-intensity))) rotate(2deg)}45%{transform:translate(calc(-4px * var(--shake-intensity)),calc(4px * var(--shake-intensity))) rotate(-1deg)}60%{transform:translate(calc(4px * var(--shake-intensity)),calc(-3px * var(--shake-intensity))) rotate(1deg)}80%{transform:translate(calc(-2px * var(--shake-intensity)),calc(2px * var(--shake-intensity)))}100%{transform:translate(0,0)}}#primary-target{position:fixed;top:50%;left:50%;width:auto;height:auto;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center;pointer-events:none;z-index:999}#ascii-art{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center;font-family:monospace;text-align:center;line-height:1;perspective:1000px;cursor:pointer;box-sizing:border-box;pointer-events:auto;isolation:isolate;}#ascii-art pre{margin:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);user-select:none;white-space:pre;transition:transform .2s ease-out;font-size:clamp(10px,1.2vw,20px);line-height:1;}#ascii-art pre,#ascii-art pre *{pointer-events:none;}#ascii-red-layer{z-index:-2;color:rgba(255,110,140,.8);text-shadow:0 0 1.5px rgba(255,150,180,.25),0 0 2px rgba(255,110,140,.15);}#ascii-blue-layer{z-index:-1;color:rgba(60,220,255,.8);text-shadow:0 0 1.5px rgba(120,255,240,.25),0 0 2px rgba(60,220,255,.15);}#ascii-base-layer{z-index:0;color:white;transition:filter .1s ease-out;}#ascii-red-layer,#ascii-blue-layer{transition:opacity .1s ease-out;}#ascii-base-layer,#ascii-red-layer,#ascii-blue-layer{will-change:transform;transform-style:preserve-3d;}#ascii-red-layer,#ascii-blue-layer{contain:layout style paint;}#ascii-art:hover #ascii-base-layer{filter:drop-shadow(0 0 6px rgba(255,60,60,.3));}.spark{position:absolute;font-family:"Courier New",monospace;font-size:1rem;pointer-events:none;animation:sparkBurst .5s ease-out forwards;text-shadow:0 0 4px currentColor;z-index:5;}@keyframes sparkBurst{0%{opacity:1;transform:translate(0,0) scale(1)}50%{opacity:.8;transform:translate(var(--tx),var(--ty)) scale(1.2)}100%{opacity:0;transform:translate(calc(var(--tx)*1.6),calc(var(--ty)*1.6)) scale(.8)}}.target-dialog{position:fixed;transform:translate(-50%,5px) scale(.3);color:#ccc;font-family:monospace;font-size:clamp(.45rem,.8vw,.65rem);pointer-events:none;opacity:0;z-index:9999;text-align:center;line-height:1;text-shadow:0 0 3px rgba(255,0,80,.8),0 0 6px rgba(0,200,255,.6);}.dialog-tail{display:block;font-size:.7em;margin-top:10px;line-height:.9;opacity:.9;text-shadow:inherit;animation:tailFade 1.8s ease-out forwards;}@keyframes tailFade{0%{opacity:0;transform:translateY(6px)}20%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-6px)}}.target-dialog.fly{animation:flyOut 1.7s cubic-bezier(.2,.7,.3,1.2) forwards;}@keyframes flyOut{0%{transform:translate(-50%,10px) scale(.3);opacity:0}10%{transform:translate(calc(-50% + var(--drift-x,0)*.05),2px) scale(1.3);opacity:1}35%{transform:translate(calc(-50% + var(--drift-x,0)*.3),-10px) scale(1);opacity:1}70%{transform:translate(calc(-50% + var(--drift-x,0)*.7),-35px) scale(.98);opacity:.9}100%{transform:translate(calc(-50% + var(--drift-x,0)),-60px) scale(.9);opacity:0}}.target-dialog.critical{color:#ff5959;font-weight:700;letter-spacing:.02em;text-shadow:0 0 4px rgba(255,80,80,.6),0 0 8px rgba(255,40,40,.4);animation:critSoftPop .18s ease-out,flyOut 1.7s cubic-bezier(.2,.7,.3,1.2) forwards;}@keyframes critSoftPop{0%{transform:translate(-50%,8px) scale(.8);opacity:0}40%{transform:translate(-50%,2px) scale(1.18);opacity:1}100%{transform:translate(-50%,0) scale(1.0);opacity:1}}.target-dialog.defense-miss,.target-dialog.defense-dodge,.target-dialog.defense-block{transition:opacity .25s ease-out;}.target-dialog.defense-miss .dialog-tail,.target-dialog.defense-dodge .dialog-tail,.target-dialog.defense-block .dialog-tail{display:none!important;}.defense-glyph{display:inline-block;animation-duration:1s;animation-fill-mode:forwards;animation-timing-function:ease-out;animation-iteration-count:1;animation-delay:calc(var(--glyph-index,0) * .03s);margin:0 .08em;letter-spacing:.02em}.defense-glyph:first-child,.defense-glyph:last-child{margin:0 .12em}.target-dialog.defense-miss{color:#a8b4c7;text-shadow:0 0 3px rgba(120,140,170,.8),0 0 6px rgba(80,100,130,.6);}.target-dialog.defense-miss.fly{animation:missFloat 1.3s cubic-bezier(.25,.6,.3,1) forwards;}.defense-miss .defense-glyph{margin:0 .1em;}.target-dialog.defense-miss .defense-glyph{animation-name:missGlyphFade;}.target-dialog.defense-dodge{color:#74d7ff;text-shadow:0 0 4px rgba(80,210,255,.9),0 0 8px rgba(40,160,220,.7);}.target-dialog.defense-dodge.fly{animation:dodgeSlip 1.25s cubic-bezier(.25,.55,.4,1.05) forwards;}.target-dialog.defense-dodge .defense-glyph{animation-name:dodgeGlyphShift;}.target-dialog.defense-block{color:#cfe6ff;text-shadow:0 0 4px rgba(180,220,255,.9),0 0 10px rgba(90,170,230,.75);}.target-dialog.defense-block.fly{animation:blockPulse 1.2s cubic-bezier(.25,.7,.35,1.1) forwards;}.target-dialog.defense-block .defense-glyph{animation-name:blockGlyphPulse;}@keyframes missFloat{0%{transform:translate(-50%,8px) scale(.4);opacity:0}15%{transform:translate(calc(-50% + var(--drift-x,0)*.1),0) scale(1);opacity:1}60%{transform:translate(calc(-50% + var(--drift-x,0)*.4),-14px) scale(.96);opacity:.9}100%{transform:translate(calc(-50% + var(--drift-x,0)*.6),-22px) scale(.9);opacity:0}}@keyframes dodgeSlip{0%{transform:translate(-50%,6px) scale(.4);opacity:0}12%{transform:translate(calc(-50% + var(--slide-x,0)*.15),-2px) scale(1.2);opacity:1}35%{transform:translate(calc(-50% + var(--slide-x,0)*.55),-10px) scale(1.02);opacity:1}70%{transform:translate(calc(-50% + var(--slide-x,0)*.9),-20px) scale(.98);opacity:.9}100%{transform:translate(calc(-50% + var(--slide-x,0)),-28px) scale(.9);opacity:0}}@keyframes blockPulse{0%{transform:translate(-50%,4px) scale(.5);opacity:0}15%{transform:translate(-50%,0) scale(1.05);opacity:1}45%{transform:translate(-50%,-6px) scale(1);opacity:1}100%{transform:translate(-50%,-10px) scale(.96);opacity:0}}@keyframes missGlyphFade{0%{opacity:0;transform:translateY(2px)}30%{opacity:1;transform:translateY(0)}100%{opacity:.4;transform:translateY(-2px)}}@keyframes dodgeGlyphShift{0%{transform:translateX(0);opacity:0}25%{transform:translateX(calc(var(--slide-x,12px) * .08));opacity:1}100%{transform:translateX(calc(var(--slide-x,12px) * .12));opacity:1}}@keyframes blockGlyphPulse{0%{transform:translateY(0) scale(1)}30%{transform:translateY(-1px) scale(1.08)}70%{transform:translateY(1px) scale(.98)}100%{transform:translateY(0) scale(1)}}:root{--drift-x:0;--slide-x:0;}#hud .upgrade-container{position:absolute;top:4rem;left:50%;transform:translateX(-50%);display:flex;justify-content:center;align-items:center;gap:.4rem;font-family:"Courier New",monospace;z-index:30;pointer-events:auto;opacity:0;animation:upgradeHudFadeIn 1.2s ease forwards .6s;}.upgrade-btn{position:relative;width:2.4rem;height:3rem;background:rgba(0,0,0,.35);border:1px solid #ffffff22;border-radius:4px;cursor:pointer;overflow:visible;display:flex;flex-direction:column;align-items:center;transition:all .15s ease-out;}.upgrade-btn.flash-red::before{content:"";position:absolute;inset:0;border-radius:4px;background:radial-gradient(circle,rgba(255,80,80,.6),transparent 70%);opacity:0;animation:flashRed .4s ease-out forwards;pointer-events:none;}@keyframes flashRed{0%{opacity:.9;transform:scale(.8)}40%{opacity:1;transform:scale(1.1)}100%{opacity:0;transform:scale(1.3)}}.upgrade-btn .progress{position:absolute;top:0;left:0;height:.15rem;width:var(--fill,0%);background:linear-gradient(90deg,#ff377d,#ff7e5f,#ff2b2b);box-shadow:0 0 3px rgba(255,80,120,.4);transition:width .4s ease-out;}.upgrade-btn .icon{width:1.15rem;height:1.15rem;margin-top:.35rem;opacity:.95;pointer-events:none;user-select:none;color:#f5eaff;filter:brightness(1) saturate(1) drop-shadow(0 0 0 rgba(0,0,0,0));}.upgrade-btn:hover:not(:disabled) .icon{filter:drop-shadow(0 0 3px rgba(200,160,255,.50)) drop-shadow(0 0 6px rgba(170,130,255,.30)) brightness(1.05);}.upgrade-btn .cost{font-size:.55rem;color:#aaa;margin-top:.15rem;}.upgrade-btn:hover:not(:disabled){border-color:#9cf;box-shadow:0 0 6px #aaf2;transform:scale(1.07);}.upgrade-btn:disabled{opacity:.35;cursor:default;border-color:#444;}.upgrade-btn.pressed{transform:scale(.92);border-color:#fff;box-shadow:0 0 8px rgba(255,255,255,.3);}.upgrade-btn .tooltip{position:absolute;top:120%;left:50%;transform:translateX(-50%) scale(.7);font-size:.6rem;color:#b8a0ff;opacity:0;pointer-events:none;white-space:nowrap;transition:opacity .15s ease-out,transform .25s cubic-bezier(.25,1.5,.5,1);transform-origin:top center;}.upgrade-btn:hover:not(:disabled) .tooltip{opacity:1;transform:translateX(-50%) scale(1);}.upgrade-btn.timed-boost .icon{filter:brightness(1) drop-shadow(0 0 0 rgba(0,0,0,0));}.upgrade-btn.timed-boost:hover:not(:disabled) .icon{filter:drop-shadow(0 0 6px rgba(255,210,120,.55)) drop-shadow(0 0 9px rgba(255,160,220,.35));}.upgrade-btn.timed-boost .progress{background:linear-gradient(90deg,#ffd27a,#ff66aa,#66e1ff);box-shadow:0 0 6px rgba(255,210,120,.7);}.upgrade-btn.timed-boost.boost-active{border-color:#ffd27a;box-shadow:0 0 10px #ffd27a66,0 0 16px #66e1ff44;animation:boostPulse 1.1s ease-in-out infinite;}@keyframes boostPulse{0%{transform:scale(1)}50%{transform:scale(1.06)}100%{transform:scale(1)}}.upgrade-btn.chance-upgrade .icon{filter:brightness(1) drop-shadow(0 0 0 rgba(0,0,0,0));}.upgrade-btn.chance-upgrade:hover:not(:disabled) .icon{filter:drop-shadow(0 0 6px rgba(102,255,224,.55)) drop-shadow(0 0 9px rgba(102,180,255,.35));}.upgrade-btn.chance-upgrade .progress{background:linear-gradient(90deg,#66ffe0,#88aaff,#ff66aa);box-shadow:0 0 5px rgba(102,255,224,.7);}.chance-upgrade.penalty-active .progress{position:absolute;top:auto;bottom:.12rem;left:.12rem;right:.12rem;height:.18rem;background:linear-gradient(90deg,#ff4d4d,#ff8080);box-shadow:0 0 4px rgba(255,80,80,.45);opacity:1;transition:none}.upgrade-btn.chance-upgrade.success-pulse::before{content:"";position:absolute;inset:-2px;border-radius:5px;background:radial-gradient(circle at 50% 50%,rgba(180,255,200,.9),transparent 70%);opacity:0;animation:chanceSuccessFlash .45s ease-out forwards;pointer-events:none;}@keyframes chanceSuccessFlash{0%{opacity:.95;transform:scale(.9)}40%{opacity:1;transform:scale(1.05)}100%{opacity:0;transform:scale(1.18)}}.upgrade-btn.chance-upgrade.penalty-pulse::before{content:"";position:absolute;inset:-2px;border-radius:5px;background:radial-gradient(circle at 50% 50%,rgba(255,80,80,.9),transparent 70%);opacity:0;animation:chancePenaltyFlash .45s ease-out forwards;pointer-events:none;}@keyframes chancePenaltyFlash{0%{opacity:1;transform:scale(1.05)}60%{opacity:.7;transform:scale(.96)}100%{opacity:0;transform:scale(1.1)}}.upgrade-btn.chance-upgrade.locked{border-color:#ff4d4d;box-shadow:0 0 10px rgba(255,60,60,.7),0 0 18px rgba(0,0,0,.9);background:radial-gradient(circle at 50% 0%,rgba(255,40,40,.35),rgba(0,0,0,.8));animation:chanceLockedPulse .9s ease-in-out infinite;}.upgrade-btn.chance-upgrade.locked .icon{filter:drop-shadow(0 0 4px rgba(255,60,60,.7));}@keyframes chanceLockedPulse{0%{transform:scale(1);filter:saturate(1)}50%{transform:scale(.94);filter:saturate(.7)}100%{transform:scale(1);filter:saturate(1)}}@keyframes upgradeHudFadeIn{0%{opacity:0}100%{opacity:1}}@media (max-width:768px){.upgrade-btn{box-shadow:none!important;filter:none!important}.upgrade-btn .icon{width:.95rem!important;height:.95rem!important;margin-top:.25rem!important;filter:none!important}.upgrade-btn:hover .icon{filter:none!important}.upgrade-btn.chance-upgrade .progress{box-shadow:none!important}.chance-upgrade.penalty-active .progress{height:.14rem;bottom:.08rem}.upgrade-btn .cost{font-size:.5rem!important;margin-top:.1rem!important}}#scroll-hint{position:fixed;bottom:15%;left:50%;transform:translateX(-50%) translateY(4px);color:#fff;font-family:monospace;font-size:.75rem;text-align:center;letter-spacing:.05em;text-shadow:0 0 6px #a45eff,0 0 12px #a45eff;opacity:0;transition:opacity .6s ease,transform .6s ease;pointer-events:none;z-index:50;}#scroll-hint.intro-hint{opacity:.32;transform:translateX(-50%) translateY(0);}#scroll-hint.intro-hint pre{animation:none!important;opacity:.75;text-shadow:0 0 8px #a45eff;}#scroll-hint:not(.intro-hint) pre{animation:flickerHint 1.8s infinite alternate;}@keyframes flickerHint{0%,100%{opacity:1;text-shadow:0 0 10px #a45eff}50%{opacity:.65;text-shadow:0 0 16px #b77aff}}#scroll-hint.active pre{animation:pulseHint .6s ease-in-out infinite alternate;}@keyframes pulseHint{0%{text-shadow:0 0 12px #c37aff,0 0 20px #d2a8ff}100%{text-shadow:0 0 22px #e2ccff,0 0 40px #fff}}#scroll-hint.near-threshold{transform:translateX(-50%) scale(1.05);opacity:1!important;}#scroll-hint.near-threshold pre{animation:thresholdGlow .35s ease-in-out infinite alternate;}@keyframes thresholdGlow{0%{text-shadow:0 0 14px #e7b1ff,0 0 26px #f9e1ff}100%{text-shadow:0 0 26px #f1d4ff,0 0 42px #fff}}#info-section{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) scale(.95);font-family:monospace;color:#ddd;font-size:.75rem;line-height:2;max-width:700px;width:90vw;padding:3rem;text-align:center;opacity:0;transition:opacity .8s ease,transform .8s ease;pointer-events:none;z-index:100;}#info-section.visible{opacity:1;transform:translate(-50%,-50%) scale(1);pointer-events:auto;}.info-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;animation:fadeInText 1s ease forwards;}@keyframes fadeInText{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}#info-section a{color:#eee;text-decoration:none;border-bottom:1px dotted rgba(164,94,255,.4);transition:color .25s,border-color .25s,text-shadow .3s;}#info-section a:hover{color:#fff;border-color:rgba(164,94,255,.8);text-shadow:0 0 4px rgba(164,94,255,.5);}.ascii-buttons{font-family:monospace;font-size:.75rem;color:#ccc;text-align:center;white-space:pre;margin-top:1.25rem;letter-spacing:.05em;user-select:none;}.ascii-buttons a{color:#ddd;text-decoration:none;border-bottom:1px dotted rgba(164,94,255,.3);transition:color .25s ease,text-shadow .3s ease,border-color .25s ease;}.ascii-buttons a:hover{color:#fff;border-color:rgba(164,94,255,.6);text-shadow:0 0 6px rgba(164,94,255,.7);}@media (max-width:768px){.star{text-shadow:none!important;filter:none!important;opacity:.45!important}.layer-near .star,.layer-mid .star,.layer-far .star{text-shadow:none!important}.starfield.boosting,.starfield.boosting .star{filter:none!important;text-shadow:none!important}#ascii-red-layer,#ascii-blue-layer{text-shadow:none!important;filter:none!important;opacity:.55!important}#ascii-base-layer{filter:none!important;text-shadow:none!important}.target-dialog{text-shadow:none!important}.target-dialog.critical{text-shadow:0 0 4px rgba(255,80,80,.4)!important}.defense-glyph,.spark{text-shadow:none!important;filter:none!important}.debris{text-shadow:none!important;filter:none!important;opacity:.85!important}.chromatic{animation:none!important;filter:none!important}.hud-toggle{text-shadow:none!important;filter:none!important}#leaderboard-toggle.glow{text-shadow:none!important}#scroll-hint,#scroll-hint pre{text-shadow:none!important}.upgrade-btn,.upgrade-btn .glyph,.upgrade-btn .progress{text-shadow:none!important;filter:none!important;box-shadow:none!important}.upgrade-btn{width:2.1rem!important;height:2.6rem!important;padding:0!important}.upgrade-btn .glyph{font-size:.95rem!important;margin-top:.25rem!important}.upgrade-btn.chance-upgrade .glyph,.upgrade-btn.timed-boost .glyph{font-size:.95rem!important}.upgrade-btn .cost{font-size:.5rem!important;margin-top:.1rem!important}}