@keyframes hit-flash{0%{filter:brightness(1) saturate(1)}20%{filter:brightness(4) saturate(0) invert(.8)}40%{filter:brightness(1) saturate(1)}60%{filter:brightness(3) saturate(0) invert(.6)}to{filter:brightness(1) saturate(1)}}.effect-hit-flash{animation:hit-flash .4s ease-out}@keyframes hp-drain{0%{width:var(--hp-from)}to{width:var(--hp-to)}}.hp-bar-transition{transition:width .6s cubic-bezier(.25,.46,.45,.94)}@keyframes battle-portrait-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.battle-portrait-float{animation:battle-portrait-float 2.8s ease-in-out infinite}.battle-portrait-glow-opponent{box-shadow:0 0 32px rgba(239,68,68,.18)}.battle-portrait-glow-challenger{box-shadow:0 0 32px rgba(59,130,246,.18)}@keyframes battle-sprite-lunge-right{0%{transform:translateX(0) scale(1)}30%{transform:translateX(26px) scale(1.1)}65%{transform:translateX(20px) scale(1.06)}to{transform:translateX(0) scale(1)}}@keyframes battle-sprite-lunge-left{0%{transform:translateX(0) scale(1)}30%{transform:translateX(-26px) scale(1.1)}65%{transform:translateX(-20px) scale(1.06)}to{transform:translateX(0) scale(1)}}.battle-sprite-lunge-challenger{animation:battle-sprite-lunge-right .52s cubic-bezier(.22,1,.36,1)}.battle-sprite-lunge-opponent{animation:battle-sprite-lunge-left .52s cubic-bezier(.22,1,.36,1)}@keyframes battle-sprite-hit{0%{transform:translateX(0);filter:brightness(1) saturate(1)}12%{transform:translateX(-12px);filter:brightness(3.5) saturate(0) sepia(1) hue-rotate(300deg)}30%{transform:translateX(10px);filter:brightness(2) saturate(.3)}50%{transform:translateX(-6px);filter:brightness(1.5) saturate(.7)}70%{transform:translateX(4px);filter:brightness(1)}to{transform:translateX(0);filter:brightness(1) saturate(1)}}.battle-sprite-hit{animation:battle-sprite-hit .56s ease-out}@keyframes battle-sprite-ko-anim{0%{transform:rotate(0deg) scale(1) translateY(0);opacity:1;filter:none}50%{transform:rotate(75deg) scale(.88) translateY(8px);opacity:.6}to{transform:rotate(90deg) scale(.78) translateY(14px);opacity:.32;filter:grayscale(1)}}.battle-sprite-ko{animation:battle-sprite-ko-anim .75s ease-out forwards;transform-origin:bottom center}@keyframes battle-callout-in{0%{opacity:0;transform:translate(-50%,6px) scale(.92)}to{opacity:1;transform:translate(-50%) scale(1)}}@keyframes battle-callout-out{0%{opacity:1}to{opacity:0}}.battle-move-callout{animation:battle-callout-in .32s ease-out forwards}.battle-move-callout-fade{animation:battle-callout-out .35s ease-in forwards}@keyframes battle-lunge{0%,to{transform:scale(1)}40%{transform:scale(1.045)}}@keyframes battle-shake-hit{0%,to{transform:translateX(0)}20%{transform:translateX(-6px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(4px)}}.battle-panel-lunge{animation:battle-lunge .55s ease-out}.battle-panel-hit{animation:battle-shake-hit .55s ease-out}.hp-bar-critical{animation:hp-pulse 1s ease-in-out infinite}@keyframes hp-pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes starlight-beam-out{0%{transform:scaleX(0) translateX(0);opacity:1}60%{transform:scaleX(1) translateX(0);opacity:1}to{transform:scaleX(1) translateX(100%);opacity:0}}@keyframes starlight-impact{0%{transform:scale(0) rotate(0deg);opacity:1}50%{transform:scale(1.8) rotate(180deg);opacity:.9}to{transform:scale(0) rotate(1turn);opacity:0}}.effect-starlight-beam .beam{background:linear-gradient(90deg,transparent,#fef08a,#fde047,#fff);height:6px;border-radius:3px;transform-origin:left center;animation:starlight-beam-out .5s ease-in forwards;box-shadow:0 0 12px 4px rgba(253,224,71,.6)}.effect-starlight-beam .impact{position:absolute;width:60px;height:60px;background:radial-gradient(circle,#fef08a 0,#fde047 40%,transparent 70%);border-radius:50%;animation:starlight-impact .5s ease-out .3s forwards;opacity:0}@keyframes earth-crack-shake{0%,to{transform:translateX(0) translateY(0)}10%{transform:translateX(-4px) translateY(2px)}20%{transform:translateX(4px) translateY(-2px)}30%{transform:translateX(-3px) translateY(1px)}40%{transform:translateX(3px) translateY(-1px)}50%{transform:translateX(-2px) translateY(1px)}}@keyframes rock-rise{0%{transform:translateY(0) scale(.5);opacity:0}30%{opacity:1}70%{transform:translateY(-40px) scale(1);opacity:1}to{transform:translateY(-60px) scale(.8);opacity:0}}.effect-earth-crack{animation:earth-crack-shake .5s ease-out}.effect-earth-crack .rock{position:absolute;width:10px;height:14px;background:linear-gradient(135deg,#78716c,#57534e,#44403c);border-radius:3px;animation:rock-rise .6s ease-out forwards}.effect-earth-crack .rock:nth-child(2){left:20%;animation-delay:.05s;width:8px;height:12px}.effect-earth-crack .rock:nth-child(3){left:40%;animation-delay:.1s;width:12px;height:16px}.effect-earth-crack .rock:nth-child(4){left:60%;animation-delay:.03s;width:7px;height:10px}.effect-earth-crack .rock:nth-child(5){left:80%;animation-delay:.08s;width:9px;height:13px}@keyframes pulse-ring{0%{transform:scale(.1);opacity:.9}to{transform:scale(2.5);opacity:0}}.effect-pulse-shockwave .ring{position:absolute;width:60px;height:60px;border:3px solid #60a5fa;border-radius:50%;box-shadow:0 0 8px 2px rgba(96,165,250,.5);animation:pulse-ring .6s ease-out forwards}.effect-pulse-shockwave .ring:nth-child(2){animation-delay:.15s;border-color:#93c5fd}.effect-pulse-shockwave .ring:nth-child(3){animation-delay:.3s;border-color:#bfdbfe}@keyframes ember-particle{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--tx),var(--ty)) scale(0);opacity:0}}@keyframes ember-core{0%{transform:scale(0);opacity:1}40%{transform:scale(1.5);opacity:1}to{transform:scale(.5);opacity:0}}.effect-ember-burst .core{position:absolute;width:50px;height:50px;background:radial-gradient(circle,#fff7ed 0,#fed7aa 30%,#f97316 60%,transparent 100%);border-radius:50%;animation:ember-core .5s ease-out forwards;box-shadow:0 0 20px 8px rgba(249,115,22,.5)}.effect-ember-burst .particle{position:absolute;width:6px;height:6px;background:#fb923c;border-radius:50%;animation:ember-particle .7s ease-out forwards;box-shadow:0 0 4px rgba(251,146,60,.8)}.effect-ember-burst .particle:first-child{--tx:-30px;--ty:-50px;background:#f97316}.effect-ember-burst .particle:nth-child(2){--tx:30px;--ty:-45px;background:#fb923c;animation-delay:.05s}.effect-ember-burst .particle:nth-child(3){--tx:-45px;--ty:-20px;background:#fed7aa;animation-delay:.1s}.effect-ember-burst .particle:nth-child(4){--tx:45px;--ty:-25px;background:#f97316;animation-delay:.07s}.effect-ember-burst .particle:nth-child(5){--tx:5px;--ty:-55px;background:#fde68a;animation-delay:.03s}.effect-ember-burst .particle:nth-child(6){--tx:-20px;--ty:30px;background:#fb923c;animation-delay:.12s}.effect-ember-burst .particle:nth-child(7){--tx:25px;--ty:28px;background:#f97316;animation-delay:.08s}.effect-ember-burst .particle:nth-child(8){--tx:50px;--ty:10px;background:#fed7aa;animation-delay:.15s}@keyframes iron-slam{0%{transform:scale(0) rotate(-20deg);opacity:0}30%{transform:scale(1.3) rotate(5deg);opacity:1}60%{transform:scale(1.1) rotate(-3deg);opacity:1}to{transform:scale(1) rotate(0deg);opacity:0}}@keyframes iron-spark{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--tx),var(--ty)) scale(0);opacity:0}}.effect-iron-crush .impact{position:absolute;width:70px;height:70px;background:radial-gradient(circle,#e2e8f0 0,#94a3b8 40%,#475569 70%,transparent 100%);border-radius:50%;animation:iron-slam .5s cubic-bezier(.36,.07,.19,.97) forwards;box-shadow:0 0 15px 5px rgba(71,85,105,.4)}.effect-iron-crush .spark{position:absolute;width:4px;height:4px;background:#e2e8f0;border-radius:50%;animation:iron-spark .5s ease-out forwards;box-shadow:0 0 3px #cbd5e1}.effect-iron-crush .spark:nth-child(2){--tx:-25px;--ty:-35px;animation-delay:.1s}.effect-iron-crush .spark:nth-child(3){--tx:30px;--ty:-30px;animation-delay:.05s;background:#94a3b8}.effect-iron-crush .spark:nth-child(4){--tx:-35px;--ty:15px;animation-delay:.15s}.effect-iron-crush .spark:nth-child(5){--tx:35px;--ty:20px;animation-delay:.08s;background:#cbd5e1}@keyframes aether-expand{0%{transform:scale(0);opacity:.9}60%{transform:scale(1.2);opacity:.7}to{transform:scale(1.5);opacity:0}}@keyframes aether-orb-float{0%{transform:translate(0) scale(1);opacity:.9}50%{transform:translate(var(--tx),calc(var(--ty) - 15px)) scale(1.1);opacity:.7}to{transform:translate(var(--tx),var(--ty)) scale(0);opacity:0}}.effect-aether-wave .wave{position:absolute;width:80px;height:80px;background:radial-gradient(circle,rgba(167,139,250,.8) 0,rgba(139,92,246,.5) 50%,transparent 70%);border-radius:50%;border:2px solid rgba(167,139,250,.6);animation:aether-expand .7s ease-out forwards;box-shadow:0 0 20px 8px rgba(139,92,246,.3)}.effect-aether-wave .orb{position:absolute;width:10px;height:10px;background:radial-gradient(circle,#e9d5ff,#a78bfa);border-radius:50%;animation:aether-orb-float .8s ease-out forwards;box-shadow:0 0 8px rgba(167,139,250,.8)}.effect-aether-wave .orb:nth-child(2){--tx:-35px;--ty:-40px;animation-delay:.1s}.effect-aether-wave .orb:nth-child(3){--tx:35px;--ty:-35px;animation-delay:.05s;width:7px;height:7px}.effect-aether-wave .orb:nth-child(4){--tx:-40px;--ty:20px;animation-delay:.15s}.effect-aether-wave .orb:nth-child(5){--tx:40px;--ty:15px;animation-delay:.08s;width:8px;height:8px}@keyframes heal-pulse{0%{transform:scale(1);opacity:0}30%{opacity:.8}70%{transform:scale(1.3);opacity:.5}to{transform:scale(1.5);opacity:0}}@keyframes heal-particle-rise{0%{transform:translateY(0) scale(1);opacity:.9}to{transform:translateY(-50px) scale(0);opacity:0}}.effect-heal-glow .aura{position:absolute;inset:-10px;background:radial-gradient(circle,rgba(74,222,128,.4) 0,rgba(34,197,94,.2) 50%,transparent 70%);border-radius:50%;animation:heal-pulse .8s ease-out forwards;box-shadow:0 0 20px 10px rgba(74,222,128,.3)}.effect-heal-glow .cross{position:absolute;width:20px;height:20px;animation:heal-particle-rise .8s ease-out forwards;opacity:0}.effect-heal-glow .cross:after,.effect-heal-glow .cross:before{content:"";position:absolute;background:#4ade80;border-radius:2px}.effect-heal-glow .cross:before{width:100%;height:30%;top:35%}.effect-heal-glow .cross:after{height:100%;width:30%;left:35%}.effect-heal-glow .cross:nth-child(2){left:15%;animation-delay:.1s}.effect-heal-glow .cross:nth-child(3){left:40%;animation-delay:.2s}.effect-heal-glow .cross:nth-child(4){left:65%;animation-delay:.15s}@keyframes sparkle-rise{0%{transform:translateY(0) rotate(0deg) scale(1);opacity:1}to{transform:translateY(-60px) rotate(var(--rot)) scale(0);opacity:0}}.effect-buff-sparkle .star{position:absolute;width:12px;height:12px;background:#fde047;clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);animation:sparkle-rise .7s ease-out forwards;box-shadow:0 0 6px rgba(253,224,71,.8)}.effect-buff-sparkle .star:first-child{--rot:45deg;left:20%;animation-delay:0s}.effect-buff-sparkle .star:nth-child(2){--rot:-30deg;left:40%;animation-delay:.1s;width:9px;height:9px;background:#fbbf24}.effect-buff-sparkle .star:nth-child(3){--rot:60deg;left:60%;animation-delay:.05s}.effect-buff-sparkle .star:nth-child(4){--rot:-45deg;left:75%;animation-delay:.15s;width:10px;height:10px;background:#fde68a}.effect-buff-sparkle .star:nth-child(5){--rot:30deg;left:10%;animation-delay:.08s;width:8px;height:8px}@keyframes debuff-darken{0%{opacity:0}30%{opacity:.7}to{opacity:0}}.effect-debuff-crack .overlay{position:absolute;inset:0;background:rgba(15,23,42,.5);border-radius:inherit;animation:debuff-darken .6s ease-out forwards}@keyframes status-badge-in{0%{transform:scale(0) rotate(-20deg);opacity:0}70%{transform:scale(1.2) rotate(5deg);opacity:1}to{transform:scale(1) rotate(0deg);opacity:1}}.status-badge{display:inline-flex;align-items:center;gap:2px;padding:2px 6px;border-radius:9999px;font-size:11px;font-weight:600;animation:status-badge-in .3s ease-out forwards}.status-badge.burn{background:rgba(239,68,68,.2);border:1px solid rgba(239,68,68,.4);color:#fca5a5}.status-badge.poison{background:rgba(168,85,247,.2);border:1px solid rgba(168,85,247,.4);color:#d8b4fe}.status-badge.stun{background:rgba(234,179,8,.2);border:1px solid rgba(234,179,8,.4);color:#fde047}.status-badge.slow{background:rgba(59,130,246,.2);border:1px solid rgba(59,130,246,.4);color:#93c5fd}.status-badge.fear{background:rgba(107,114,128,.3);border:1px solid rgba(107,114,128,.5);color:#d1d5db}.status-badge.shield{background:rgba(14,165,233,.2);border:1px solid rgba(14,165,233,.4);color:#7dd3fc}.status-badge.regen{background:rgba(34,197,94,.2);border:1px solid rgba(34,197,94,.4);color:#86efac}.status-badge.soak{background:rgba(6,182,212,.2);border:1px solid rgba(6,182,212,.4);color:#67e8f9}.battle-nameplate{border-radius:12px;padding:8px 12px;min-width:155px;max-width:185px;background:rgba(0,0,0,.68);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.1)}.battle-nameplate-opponent{border-color:rgba(239,68,68,.22)}.battle-nameplate-challenger{border-color:rgba(59,130,246,.22)}.battle-ground-shadow{border-radius:50%;background:rgba(0,0,0,.38);filter:blur(7px);pointer-events:none}@keyframes battle-scene-slide-in-right{0%{transform:translateX(60px);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes battle-scene-slide-in-left{0%{transform:translateX(-60px);opacity:0}to{transform:translateX(0);opacity:1}}.battle-enter-right{animation:battle-scene-slide-in-right .6s cubic-bezier(.22,1,.36,1) both}.battle-enter-left{animation:battle-scene-slide-in-left .6s cubic-bezier(.22,1,.36,1) both}@keyframes confetti-fall{0%{transform:translateY(-20px) rotate(0deg);opacity:1}to{transform:translateY(120px) rotate(2turn);opacity:0}}@keyframes victory-title{0%{transform:scale(.5) translateY(20px);opacity:0}60%{transform:scale(1.1) translateY(-5px);opacity:1}to{transform:scale(1) translateY(0);opacity:1}}.effect-victory .title{animation:victory-title .6s cubic-bezier(.34,1.56,.64,1) forwards}.confetti-piece{position:absolute;width:8px;height:8px;border-radius:2px;animation:confetti-fall var(--duration) ease-in var(--delay) forwards;opacity:0}@keyframes ko-fade{0%{filter:grayscale(0);opacity:1;transform:scale(1)}50%{filter:grayscale(.5)}to{filter:grayscale(1);opacity:.6;transform:scale(.95)}}.effect-ko{animation:ko-fade .8s ease-out forwards}@keyframes super-effective{0%{transform:scale(0) translateY(0);opacity:1}50%{transform:scale(1.3) translateY(-10px);opacity:1}to{transform:scale(1.1) translateY(-20px);opacity:0}}.effect-super-effective{color:#fde047;font-size:13px;font-weight:800;text-shadow:0 0 10px rgba(253,224,71,.8),1px 1px 0 rgba(0,0,0,.5)}.effect-not-very-effective,.effect-super-effective{position:absolute;white-space:nowrap;animation:super-effective 1s ease-out forwards;pointer-events:none}.effect-not-very-effective{color:#94a3b8;font-size:11px;font-weight:600;text-shadow:1px 1px 0 rgba(0,0,0,.5)}@keyframes damage-float{0%{transform:translateY(0) scale(.8);opacity:1}30%{transform:translateY(-15px) scale(1.2);opacity:1}to{transform:translateY(-40px) scale(1);opacity:0}}.damage-number{position:absolute;font-size:20px;font-weight:900;color:#fff;text-shadow:0 0 8px rgba(0,0,0,.8),1px 1px 0 rgba(0,0,0,.5);animation:damage-float 1s ease-out forwards;pointer-events:none;z-index:20}.damage-number.crit{font-size:26px;color:#fde047;text-shadow:0 0 12px rgba(253,224,71,.8),1px 1px 0 rgba(0,0,0,.5)}.heal-number{position:absolute;font-size:18px;font-weight:700;color:#4ade80;text-shadow:0 0 8px rgba(74,222,128,.6),1px 1px 0 rgba(0,0,0,.5);animation:damage-float 1s ease-out forwards;pointer-events:none;z-index:20}@keyframes battle-scene-shake-key{0%,to{transform:translateX(0)}20%{transform:translateX(-5px)}40%{transform:translateX(5px)}60%{transform:translateX(-3px)}80%{transform:translateX(3px)}}.battle-scene-shake{animation:battle-scene-shake-key .38s ease-out}