.tfx{display:inline-block}.tfx-shake{animation:tfx-shake .1s linear infinite}@keyframes tfx-shake{0%,to{transform:translate(0)}25%{transform:translate(-1.5px,1px)}50%{transform:translate(1.5px,-1px)}75%{transform:translate(-1px,-.5px)}}.tfx-wave{animation:tfx-wave 2s ease-in-out infinite;animation-delay:calc(var(--char-i, 0) * 60ms)}@keyframes tfx-wave{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.tfx-fade_in{animation:tfx-fadein .6s ease-out forwards;animation-delay:calc(var(--char-i, 0) * 40ms);opacity:0}@keyframes tfx-fadein{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.tfx-color_pulse{animation:tfx-cpulse 1.5s ease-in-out infinite}@keyframes tfx-cpulse{0%,to{color:inherit}50%{color:var(--gold,#c8a35a);text-shadow:0 0 6px rgba(200,163,90,.4)}}.tfx-size_breathe{animation:tfx-sbreathe 2s ease-in-out infinite}@keyframes tfx-sbreathe{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.tfx-glitch{animation:tfx-glitch .3s steps(2) infinite;text-shadow:2px 0 #ff0040,-2px 0 #0ff}@keyframes tfx-glitch{0%{transform:translate(-2px)}25%{transform:translate(2px,1px)}50%{transform:translate(-1px,-1px)}to{transform:translate(0)}}.tfx-rainbow{animation:tfx-rainbow 3s linear infinite;animation-delay:calc(var(--char-i, 0) * -.12s)}@keyframes tfx-rainbow{0%{color:#f44}16%{color:#f80}33%{color:#fd0}50%{color:#4d4}66%{color:#48f}83%{color:#a4f}to{color:#f44}}.tfx-blur_reveal{animation:tfx-blur .8s ease-out forwards;animation-delay:calc(var(--char-i, 0) * 30ms);filter:blur(6px);opacity:.3}@keyframes tfx-blur{0%{filter:blur(6px);opacity:.3}to{filter:blur(0);opacity:1}}.tfx-drip{animation:tfx-drip 3s ease-in infinite;animation-delay:calc(var(--char-i, 0) * 80ms)}@keyframes tfx-drip{0%,80%{transform:translateY(0)}90%{transform:translateY(3px)}to{transform:translateY(0)}}.tfx-float_up{animation:tfx-float 2.5s ease-out infinite;animation-delay:calc(var(--char-i, 0) * 70ms)}@keyframes tfx-float{0%{transform:translateY(0);opacity:1}80%{transform:translateY(-5px);opacity:.7}to{transform:translateY(0);opacity:1}}.sfx-bloom,.sfx-blur,.sfx-color_shift,.sfx-crt_scanlines,.sfx-desaturate,.sfx-glitch,.sfx-invert_flash,.sfx-sepia,.sfx-vignette_pulse{will-change:filter,transform,box-shadow;transform:translateZ(0)}.sfx-chromatic_aberration{box-shadow:inset 4px 0 8px rgba(255,0,60,.15),inset -4px 0 8px rgba(0,200,255,.15)}.sfx-crt_scanlines:after{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.08) 0,rgba(0,0,0,.08) 4px);animation:sfx-scanflicker .1s steps(2) infinite}@keyframes sfx-scanflicker{0%{opacity:.8}to{opacity:1}}.sfx-vignette_pulse{animation:sfx-vigpulse 2s ease-in-out infinite}@keyframes sfx-vigpulse{0%,to{box-shadow:inset 0 0 80px rgba(0,0,0,.4)}50%{box-shadow:inset 0 0 120px rgba(0,0,0,.7)}}.sfx-blur{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.sfx-desaturate{filter:saturate(.15)}.sfx-red_tint{background:rgba(180,30,30,.12)}.sfx-sepia{filter:sepia(.5) brightness(.9)}.sfx-glitch{animation:sfx-glitch .25s steps(3) infinite}@keyframes sfx-glitch{0%{transform:skewX(0deg)}33%{transform:skewX(-2deg)}66%{transform:skewX(1.5deg)}to{transform:skewX(0deg)}}.sfx-invert_flash{animation:sfx-invert .2s ease-out forwards}@keyframes sfx-invert{0%{filter:invert(1)}to{filter:invert(0)}}.sfx-bloom{filter:brightness(1.25);box-shadow:inset 0 0 60px rgba(255,240,200,.15)}.sfx-pixelate{filter:url(#sfx-pixelate)}.sfx-wave_distort{filter:url(#sfx-wave-distort)}.sfx-color_shift{animation:sfx-huerot 3s linear infinite}@keyframes sfx-huerot{0%{filter:hue-rotate(0deg)}to{filter:hue-rotate(1turn)}}.sfx-noise_grain{filter:url(#sfx-noise)}.sfx-zoom_blur{box-shadow:inset 0 0 100px rgba(0,0,0,.5);filter:contrast(1.1)}.sfx-letterbox:after,.sfx-letterbox:before{content:"";position:absolute;left:0;right:0;height:0;background:#000;z-index:50;transition:height .8s ease}.sfx-letterbox:before{top:0;height:12%}.sfx-letterbox:after{bottom:0;height:12%}.uifx-border_glow,.uifx-breathe,.uifx-shake,.uifx-slide_in,.uifx-slide_out{will-change:transform,opacity,box-shadow;transform:translateZ(0)}.uifx-shake{animation:uifx-shake .15s ease-in-out 3}@keyframes uifx-shake{0%,to{transform:translateX(0)}25%{transform:translateX(-3px) rotate(-.5deg)}75%{transform:translateX(3px) rotate(.5deg)}}.uifx-breathe{animation:uifx-breathe 2.5s ease-in-out infinite}@keyframes uifx-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.006)}}.uifx-crack{position:relative}.uifx-crack:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(135deg,transparent 40%,hsla(0,0%,100%,.06) 40.5%,transparent 41%,transparent 60%,hsla(0,0%,100%,.04) 60.5%,transparent 61%);animation:uifx-crack-in .3s ease-out forwards}@keyframes uifx-crack-in{0%{opacity:0}to{opacity:1}}.uifx-distort{filter:url(#sfx-wave-distort)}.uifx-slide_in{animation:uifx-slidein .5s ease-out forwards}@keyframes uifx-slidein{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.uifx-slide_out{animation:uifx-slideout .4s ease-in forwards}@keyframes uifx-slideout{0%{transform:translateY(0);opacity:1}to{transform:translateY(20px);opacity:0}}.uifx-fade_pulse{animation:uifx-fpulse 1.2s ease-in-out infinite}@keyframes uifx-fpulse{0%,to{opacity:1}50%{opacity:.4}}.uifx-border_glow{animation:uifx-glow 1.5s ease-in-out infinite}@keyframes uifx-glow{0%,to{box-shadow:0 0 5px var(--gold-dim,rgba(200,163,90,.2))}50%{box-shadow:0 0 15px var(--gold,#c8a35a),0 0 30px rgba(200,163,90,.15)}}.sprite-anim-idle{animation:none}@keyframes sprite-shake{0%,to{transform:translateX(0)}15%{transform:translateX(-6px)}30%{transform:translateX(5px)}45%{transform:translateX(-4px)}60%{transform:translateX(4px)}75%{transform:translateX(-2px)}90%{transform:translateX(2px)}}.sprite-anim-shake{animation:sprite-shake .5s ease-out}@keyframes sprite-tremble{0%,to{transform:translate(0)}20%{transform:translate(-1px,1px)}40%{transform:translate(1px,-1px)}60%{transform:translate(-1px,-1px)}80%{transform:translate(1px,1px)}}.sprite-anim-tremble{animation:sprite-tremble .15s linear infinite}@keyframes sprite-bounce{0%,to{transform:translateY(0)}30%{transform:translateY(-22px)}50%{transform:translateY(-8px)}70%{transform:translateY(-14px)}}.sprite-anim-bounce{animation:sprite-bounce .6s ease-out}@keyframes sprite-hop{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.sprite-anim-hop{animation:sprite-hop .35s ease-out}@keyframes sprite-nod{0%,to{transform:translateY(0)}40%{transform:translateY(6px)}70%{transform:translateY(3px)}}.sprite-anim-nod{animation:sprite-nod .5s ease-in-out}@keyframes sprite-lean-back{0%{transform:translateX(0) scale(1)}35%{transform:translateX(18px) scale(.94)}to{transform:translateX(8px) scale(.97)}}.sprite-anim-lean_back{animation:sprite-lean-back .45s ease-out forwards}@keyframes sprite-lean-forward{0%{transform:translateX(0) scale(1)}40%{transform:translateX(-14px) scale(1.04)}to{transform:translateX(-8px) scale(1.02)}}.sprite-anim-lean_forward{animation:sprite-lean-forward .45s ease-out forwards}@keyframes sprite-zoom-in{0%{transform:scale(1)}to{transform:scale(1.15)}}.sprite-anim-zoom_in{animation:sprite-zoom-in .5s ease-out forwards}@keyframes sprite-zoom-out{0%{transform:scale(1)}to{transform:scale(.88)}}.sprite-anim-zoom_out{animation:sprite-zoom-out .5s ease-out forwards}@keyframes sprite-float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.sprite-anim-float{animation:sprite-float 2.5s ease-in-out infinite}@keyframes sprite-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.018)}}.sprite-anim-breathe{animation:sprite-breathe 3s ease-in-out infinite}@keyframes sprite-sway{0%,to{transform:translateX(0) rotate(0deg)}25%{transform:translateX(-5px) rotate(-1.5deg)}75%{transform:translateX(5px) rotate(1.5deg)}}.sprite-anim-sway{animation:sprite-sway 1.8s ease-in-out infinite}@keyframes sprite-slam-in{0%{transform:scale(1.6);opacity:0}50%{transform:scale(.94);opacity:1}70%{transform:scale(1.04)}to{transform:scale(1)}}.sprite-anim-slam_in{animation:sprite-slam-in .5s ease-out}@keyframes sprite-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}.sprite-anim-fade_out{animation:sprite-fade-out .8s ease-in forwards}@keyframes sprite-flash-white{0%{filter:brightness(1)}15%{filter:brightness(3)}40%{filter:brightness(1.5)}to{filter:brightness(1)}}.sprite-anim-flash_white{animation:sprite-flash-white .5s ease-out}.manpu-overlay{position:absolute;pointer-events:none;z-index:3;display:flex;align-items:center;justify-content:center}.manpu-anchor-top{top:-8%;left:50%;transform:translateX(-50%)}.manpu-anchor-top-right{top:-5%;right:5%}.manpu-anchor-side{top:30%;left:-12%}.manpu-anchor-above{top:-15%;left:30%;right:30%;text-align:center}.manpu-anchor-around{top:0;left:0;right:0;bottom:0}@keyframes manpu-pop{0%{transform:scale(0);opacity:0}40%{transform:scale(1.3);opacity:1}60%{transform:scale(.9)}80%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes manpu-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes manpu-float{0%,to{transform:translateY(0);opacity:.9}50%{transform:translateY(-6px);opacity:1}}@keyframes manpu-drip{0%{transform:translateY(-8px);opacity:0}30%{opacity:1}to{transform:translateY(10px);opacity:.3}}@keyframes manpu-fade{0%{opacity:0}20%{opacity:.8}80%{opacity:.8}to{opacity:0}}@keyframes manpu-pulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}@keyframes manpu-rise{0%{transform:translateY(0) scale(1);opacity:.8}to{transform:translateY(-20px) scale(1.3);opacity:0}}@keyframes manpu-sparkle{0%,to{opacity:0;transform:scale(.5) rotate(0deg)}50%{opacity:1;transform:scale(1.1) rotate(20deg)}}@keyframes manpu-flash{0%{opacity:0;transform:scale(.3)}20%{opacity:1;transform:scale(1.4)}to{opacity:0;transform:scale(1.8)}}@keyframes manpu-slash{0%{opacity:0;transform:rotate(-45deg) scaleX(0)}30%{opacity:1;transform:rotate(-45deg) scaleX(1.2)}60%{opacity:.8;transform:rotate(-45deg) scaleX(1)}to{opacity:0}}.manpu-anger_vein{animation:manpu-pop .5s ease-out forwards}.manpu-sweat_drop{animation:manpu-drip .8s ease-in forwards}.manpu-question{animation:manpu-bounce .8s ease-in-out 2}.manpu-exclaim{animation:manpu-pop .4s ease-out forwards}.manpu-heart{animation:manpu-float 1.2s ease-in-out 2}.manpu-gloom_lines{animation:manpu-fade 2s ease-in-out forwards}.manpu-sparkle{animation:manpu-sparkle .8s ease-in-out 3}.manpu-ellipsis{animation:manpu-pulse 1.5s ease-in-out infinite}.manpu-steam{animation:manpu-rise 1s ease-out forwards}.manpu-shock_lines{animation:manpu-flash .6s ease-out forwards}.manpu-attack_slash{animation:manpu-slash .45s ease-out forwards}.manpu-defense_shield{animation:manpu-pulse 1s ease-in-out 2}.manpu-hit_impact{animation:manpu-pop .35s ease-out forwards}.manpu-music_notes{animation:manpu-float 1.5s ease-in-out infinite}.manpu-zzz{animation:manpu-float 2s ease-in-out infinite}:root{--gold:#c4a35a;--gold-dim:#c4a35a44;--gold-glow:#c4a35a22;--bg-deep:#050505;--bg-surface:#0d0d0d;--bg-card:#111;--bg-hover:#1a1a1a;--text-primary:#e0ddd5;--text-dim:#8a8780;--text-faint:#5a5955;--border:#2a2825;--border-hover:#3d3a35;--danger:#c44a4a;--danger-dim:#c44a4a33}*{box-sizing:border-box;margin:0;padding:0}body,html{background:var(--bg-deep);color:var(--text-primary);font-family:Georgia,"Noto Serif SC","Source Han Serif CN",serif;font-size:32px;line-height:1.7;-webkit-font-smoothing:antialiased;height:100vh;height:100dvh;overflow:hidden;text-size-adjust:100%}body:before{content:"";position:fixed;inset:0;z-index:9999;pointer-events:none;opacity:.03;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--bg-deep)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--border-hover)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse-dim{0%,to{opacity:.5}50%{opacity:.8}}@keyframes scan-line{0%{transform:translateY(-100%)}to{transform:translateY(100vh)}}.animate-fadeIn{animation:fadeInUp .6s ease-out both}.animate-fadeIn-delay{animation:fadeInUp .6s ease-out .2s both}.animate-pulse-dim{animation:pulse-dim 2s ease-in-out infinite}button{font-family:inherit;transition:all .2s ease}button:focus-visible{outline:1px solid var(--gold);outline-offset:2px}@keyframes slideIn{0%{transform:translateX(100%)}to{transform:translateX(0)}}::selection{background:var(--gold-dim);color:var(--text-primary)}@media (max-width:768px){html{font-size:18px}body,html{height:100dvh}input,select,textarea{font-size:16px!important}button{min-height:44px}.kbd-hint{display:none}::-webkit-scrollbar{display:none}}@media (max-width:480px){html{font-size:16px}}.kbd-hint{display:inline-block;padding:.1rem .35rem;font-size:.65rem;font-family:monospace;color:var(--text-faint);line-height:1.2;vertical-align:middle}.kbd-hint,[data-tooltip]:hover:after{border:1px solid var(--border);border-radius:2px}[data-tooltip]:hover:after{content:attr(data-tooltip);position:absolute;bottom:100%;left:50%;transform:translateX(-50%);padding:.3rem .6rem;background:var(--bg-card);font-size:.7rem;color:var(--text-dim);white-space:nowrap;pointer-events:none;z-index:100}input:focus,textarea:focus{outline:none;border-color:var(--gold-dim)!important}.narrative-text p+p{margin-top:.6em}@keyframes shake{0%,to{transform:translateX(0)}10%{transform:translateX(-4px) rotate(-.3deg)}20%{transform:translateX(4px) rotate(.3deg)}30%{transform:translateX(-3px)}40%{transform:translateX(3px)}50%{transform:translateX(-2px)}60%{transform:translateX(2px)}70%{transform:translateX(-1px)}80%{transform:translateX(1px)}}.screen-shake{animation:shake .45s ease-in-out}@keyframes flashFade{0%{opacity:.35}to{opacity:0}}.outcome-flash{position:fixed;inset:0;z-index:9998;pointer-events:none;animation:flashFade .8s ease-out forwards}.flash-success{background:radial-gradient(ellipse at center,#2a5a2a 0,transparent 70%)}.flash-crit-success{background:radial-gradient(ellipse at center,#5a4a1a 0,transparent 70%)}.flash-failure{background:radial-gradient(ellipse at center,#5a2a2a 0,transparent 70%)}.flash-crit-failure{background:radial-gradient(ellipse at center,#6a1a1a 0,transparent 70%)}.flash-partial{background:radial-gradient(ellipse at center,#3a3520 0,transparent 70%)}@keyframes deltaFloat{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-18px)}}.status-delta{position:absolute;top:-4px;right:-8px;font-size:.62rem;font-weight:700;font-family:monospace;animation:deltaFloat 1.2s ease-out forwards;pointer-events:none;white-space:nowrap}.delta-positive{color:#5aaa5a}.delta-negative{color:var(--danger)}@keyframes optionPulse{0%{box-shadow:0 0 0 0 var(--gold-dim)}70%{box-shadow:0 0 0 8px transparent}to{box-shadow:0 0 0 0 transparent}}.option-pressed{animation:optionPulse .4s ease-out}@keyframes dangerPulse{0%,to{opacity:.15}50%{opacity:.35}}.hp-danger-vignette{position:fixed;inset:0;z-index:9997;pointer-events:none;background:radial-gradient(ellipse at center,transparent 50%,#1a0000 100%);animation:dangerPulse 3s ease-in-out infinite}@keyframes resultSlideIn{0%{transform:translateY(-10px);opacity:0}to{transform:translateY(0);opacity:1}}.result-banner{animation:resultSlideIn .4s ease-out both}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes crtFlicker{0%{opacity:0}5%{opacity:.02}10%{opacity:0}15%{opacity:.04}25%{opacity:0}30%{opacity:.02}50%{opacity:0}55%{opacity:.03}70%{opacity:0}80%{opacity:.02}to{opacity:0}}.crt-flicker{animation:crtFlicker 3s infinite;background:rgba(196,163,90,.1)}