.forge-card-frame-fx{position:absolute;inset:0;z-index:60;border-radius:inherit;pointer-events:none;isolation:isolate;overflow:visible}
.forge-card-frame-fx__layer,.forge-card-frame-fx__particles,.forge-card-frame-fx__scan{position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:var(--fx-opacity,.75);mix-blend-mode:var(--fx-blend,screen);filter:hue-rotate(var(--fx-hue,0deg)) blur(var(--fx-blur,0px));will-change:transform,opacity,background-position,filter;animation-delay:var(--fx-delay,0s)!important}
.forge-card-frame-fx.is-clipped{overflow:hidden}.forge-card-frame-fx.has-hover-boost{pointer-events:auto}.fx-layer-a{scale:var(--fx-scale,1)}.fx-layer-b{inset:4%;opacity:var(--fx-opacity-b,.54)}.fx-layer-c{inset:8%;opacity:var(--fx-opacity-c,.36)}
.direction-reverse .forge-card-frame-fx__layer,.direction-reverse .forge-card-frame-fx__particles,.direction-reverse .forge-card-frame-fx__scan{animation-direction:reverse!important}
.direction-alternate .forge-card-frame-fx__layer,.direction-alternate .forge-card-frame-fx__particles,.direction-alternate .forge-card-frame-fx__scan{animation-direction:alternate!important}
.has-hover-boost:hover .forge-card-frame-fx__layer,.has-hover-boost:hover .forge-card-frame-fx__particles,.has-hover-boost:hover .forge-card-frame-fx__scan{opacity:1;filter:hue-rotate(calc(var(--fx-hue,0deg) + 18deg)) blur(var(--fx-blur,0px)) saturate(1.35)}

.fx-neon-pulse .fx-layer-a{inset:1%;border:2px solid var(--card-primary);box-shadow:0 0 var(--fx-glow-s) var(--card-primary),0 0 var(--fx-glow-m) color-mix(in srgb,var(--card-accent) 70%,transparent),inset 0 0 var(--fx-glow-m) color-mix(in srgb,var(--card-secondary) 35%,transparent);animation:forgeFrameFxPulse var(--fx-duration) ease-in-out infinite}
.fx-chroma-flow .fx-layer-a{inset:-35%;background:conic-gradient(from 0deg,transparent,var(--card-primary),var(--card-accent),var(--card-secondary),var(--card-primary),transparent);mask:radial-gradient(closest-side,transparent 77%,#000 80% 86%,transparent 89%);animation:forgeFrameFxSpin var(--fx-duration) linear infinite}
.fx-chroma-flow .fx-layer-b{background:linear-gradient(110deg,transparent 20%,rgba(255,255,255,.5) 48%,transparent 70%);animation:forgeFrameFxSweep var(--fx-duration) ease-in-out infinite}
.fx-energy-scan .fx-layer-a{background:linear-gradient(90deg,transparent 0 45%,var(--card-primary) 49% 51%,transparent 55%),linear-gradient(0deg,transparent 0 46%,var(--card-accent) 49% 51%,transparent 54%);background-size:220% 220%;animation:forgeFrameFxScan var(--fx-duration) linear infinite}
.fx-energy-scan .forge-card-frame-fx__scan{inset:1%;border:1px solid color-mix(in srgb,var(--card-primary) 50%,transparent);box-shadow:inset 0 0 var(--fx-glow-m) color-mix(in srgb,var(--card-primary) 30%,transparent)}
.fx-lightning .fx-layer-a{background:repeating-conic-gradient(from 0deg,transparent 0 7deg,var(--card-primary) 8deg 9deg,transparent 10deg 28deg,var(--card-accent) 29deg 30deg,transparent 31deg 45deg);mask:radial-gradient(closest-side,transparent 80%,#000 82% 88%,transparent 90%);animation:forgeFrameFxFlicker var(--fx-duration) steps(2,end) infinite}
.fx-lightning .fx-layer-b{background:linear-gradient(115deg,transparent 0 13%,#fff 14% 14.6%,var(--card-primary) 15% 16%,transparent 17% 68%,#fff 69% 69.5%,var(--card-accent) 70% 71%,transparent 72%);animation:forgeFrameFxJolt var(--fx-duration) steps(3,end) infinite}
.fx-ember-storm .fx-layer-a{background:radial-gradient(circle at 12% 92%,#ffe66b 0 2px,transparent 3px),radial-gradient(circle at 30% 84%,#ff7b1c 0 2px,transparent 3px),radial-gradient(circle at 68% 94%,#ff3416 0 2px,transparent 3px),radial-gradient(circle at 88% 80%,#ffd85a 0 1.5px,transparent 2.5px);background-size:var(--fx-particle-x,40px) var(--fx-particle-y,52px);animation:forgeFrameFxRise var(--fx-duration) linear infinite}
.fx-ember-storm .fx-layer-b{background:linear-gradient(0deg,rgba(255,50,5,.22),transparent 38%);animation:forgeFrameFxFlame var(--fx-duration) ease-in-out infinite}
.fx-frost-bloom .fx-layer-a{background:repeating-conic-gradient(from 0deg at 50% 50%,rgba(220,250,255,.45) 0 1deg,transparent 1deg 12deg);mask:radial-gradient(closest-side,transparent 76%,#000 79% 87%,transparent 90%);animation:forgeFrameFxFrost var(--fx-duration) ease-in-out infinite}
.fx-frost-bloom .fx-layer-b{background:repeating-linear-gradient(135deg,transparent 0 18px,rgba(205,245,255,.24) 18px 20px);animation:forgeFrameFxDrift var(--fx-duration) ease-in-out infinite}
.fx-aurora-wave .fx-layer-a{inset:-20%;background:radial-gradient(ellipse at 20% 45%,rgba(30,255,185,.42),transparent 34%),radial-gradient(ellipse at 72% 58%,rgba(90,85,255,.38),transparent 38%),radial-gradient(ellipse at 50% 16%,rgba(255,50,190,.26),transparent 30%);filter:hue-rotate(var(--fx-hue)) blur(calc(10px + var(--fx-blur)));animation:forgeFrameFxAurora var(--fx-duration) ease-in-out infinite}
.fx-holo-radar .fx-layer-a{background:conic-gradient(from 0deg,transparent 0 72%,color-mix(in srgb,var(--card-primary) 55%,transparent) 82%,rgba(255,255,255,.55) 88%,transparent 94%);mask:radial-gradient(closest-side,transparent 70%,#000 72% 74%,transparent 76% 82%,#000 84% 86%,transparent 88%);animation:forgeFrameFxSpin var(--fx-duration) linear infinite}
.fx-holo-radar .fx-layer-b{border:1px solid color-mix(in srgb,var(--card-primary) 38%,transparent);box-shadow:inset 0 0 var(--fx-glow-m) color-mix(in srgb,var(--card-primary) 22%,transparent);animation:forgeFrameFxPulse var(--fx-duration) ease-in-out infinite}
.fx-glitch-signal .fx-layer-a{background:repeating-linear-gradient(0deg,transparent 0 8px,rgba(255,255,255,.11) 8px 9px);animation:forgeFrameFxGlitch var(--fx-duration) steps(2,end) infinite}
.fx-glitch-signal .fx-layer-b{box-shadow:-5px 0 0 rgba(255,0,105,.24),5px 0 0 rgba(0,220,255,.24);animation:forgeFrameFxJolt var(--fx-duration) steps(2,end) infinite}
.fx-cosmic-dust .fx-layer-a{background:radial-gradient(circle at 10% 20%,#fff 0 1px,transparent 1.6px),radial-gradient(circle at 70% 15%,var(--card-primary) 0 1.5px,transparent 2px),radial-gradient(circle at 85% 74%,var(--card-accent) 0 1px,transparent 1.8px),radial-gradient(circle at 30% 88%,#fff 0 1px,transparent 1.7px);background-size:var(--fx-particle-x,34px) var(--fx-particle-y,41px);animation:forgeFrameFxDrift var(--fx-duration) linear infinite}
.fx-cosmic-dust .fx-layer-b{inset:-18%;background:radial-gradient(circle at 30% 40%,color-mix(in srgb,var(--card-accent) 34%,transparent),transparent 34%),radial-gradient(circle at 70% 60%,color-mix(in srgb,var(--card-primary) 28%,transparent),transparent 38%);filter:blur(calc(12px + var(--fx-blur)));animation:forgeFrameFxAurora var(--fx-duration) ease-in-out infinite}
.fx-spotlight-sweep .fx-layer-a{background:linear-gradient(112deg,transparent 0 38%,rgba(255,255,255,.55) 48%,color-mix(in srgb,var(--card-primary) 34%,transparent) 52%,transparent 62%);background-size:260% 100%;animation:forgeFrameFxSweep var(--fx-duration) ease-in-out infinite}
.fx-liquid-metal .fx-layer-a{background:linear-gradient(105deg,transparent 0 18%,rgba(255,255,255,.42) 28%,color-mix(in srgb,var(--card-primary) 30%,transparent) 40%,rgba(255,255,255,.58) 50%,color-mix(in srgb,var(--card-accent) 22%,transparent) 62%,transparent 78%);background-size:220% 140%;filter:hue-rotate(var(--fx-hue)) blur(var(--fx-blur)) contrast(1.25);animation:forgeFrameFxLiquid var(--fx-duration) ease-in-out infinite}
.fx-heartbeat .fx-layer-a{inset:1%;border:2px solid var(--card-accent);box-shadow:0 0 var(--fx-glow-m) var(--card-accent),inset 0 0 var(--fx-glow-m) color-mix(in srgb,var(--card-primary) 30%,transparent);animation:forgeFrameFxHeartbeat var(--fx-duration) ease-in-out infinite}
.fx-plasma-ring .fx-layer-a{inset:-24%;background:conic-gradient(from 0deg,transparent,var(--card-primary),#fff,var(--card-accent),var(--card-secondary),transparent);mask:radial-gradient(closest-side,transparent 72%,#000 76% 84%,transparent 88%);filter:hue-rotate(var(--fx-hue)) blur(calc(3px + var(--fx-blur)));animation:forgeFrameFxSpin var(--fx-duration) linear infinite}
.fx-plasma-ring .fx-layer-b{border:1px solid rgba(255,255,255,.35);box-shadow:0 0 var(--fx-glow-l) var(--card-primary);animation:forgeFrameFxPulse var(--fx-duration) ease-in-out infinite}
.fx-confetti-burst .forge-card-frame-fx__particles{background:linear-gradient(25deg,transparent 48%,#ffdf42 49% 52%,transparent 53%) 0 0/31px 37px,linear-gradient(75deg,transparent 48%,#ff2bb8 49% 52%,transparent 53%) 14px 8px/43px 41px,linear-gradient(125deg,transparent 48%,#18c8ff 49% 52%,transparent 53%) 4px 19px/37px 47px;animation:forgeFrameFxConfetti var(--fx-duration) linear infinite}
.fx-pixel-rain .forge-card-frame-fx__particles{background:repeating-linear-gradient(90deg,transparent 0 10px,color-mix(in srgb,var(--card-primary) 35%,transparent) 10px 12px),repeating-linear-gradient(0deg,transparent 0 18px,color-mix(in srgb,var(--card-accent) 22%,transparent) 18px 21px);background-size:var(--fx-particle-x,28px) var(--fx-particle-y,34px);animation:forgeFrameFxRain var(--fx-duration) linear infinite}
.fx-champion-aura .fx-layer-a{inset:-15%;background:conic-gradient(from 0deg,transparent 0 8%,rgba(255,220,90,.55) 10%,transparent 12% 24%,rgba(255,255,255,.45) 26%,transparent 28% 44%,rgba(255,180,45,.5) 46%,transparent 48%);mask:radial-gradient(closest-side,transparent 70%,#000 75% 82%,transparent 87%);animation:forgeFrameFxSpin var(--fx-duration) linear infinite}
.fx-champion-aura .forge-card-frame-fx__particles::before,.fx-champion-aura .forge-card-frame-fx__particles::after{content:"✦";position:absolute;color:#ffe89d;font-size:var(--fx-star-size,16px);text-shadow:0 0 12px #ffc843;animation:forgeFrameFxStar var(--fx-duration) ease-in-out infinite}.fx-champion-aura .forge-card-frame-fx__particles::before{left:7%;top:16%}.fx-champion-aura .forge-card-frame-fx__particles::after{right:7%;bottom:18%;animation-delay:var(--fx-duration)}
.fx-prismatic-ripple .fx-layer-a{background:repeating-radial-gradient(ellipse at 50% 50%,transparent 0 24px,color-mix(in srgb,var(--card-primary) 22%,transparent) 26px 28px,transparent 30px 48px,color-mix(in srgb,var(--card-accent) 18%,transparent) 50px 52px);animation:forgeFrameFxRipple var(--fx-duration) ease-out infinite}

@keyframes forgeFrameFxPulse{0%,100%{opacity:var(--fx-opacity-low);scale:var(--fx-scale)}50%{opacity:var(--fx-opacity);scale:var(--fx-pulse-scale)}}
@keyframes forgeFrameFxSpin{to{rotate:360deg}}@keyframes forgeFrameFxSweep{0%{background-position:180% 0}100%{background-position:-80% 0}}@keyframes forgeFrameFxScan{0%{background-position:0 0}100%{background-position:180% 180%}}
@keyframes forgeFrameFxRise{0%{background-position:0 60px;opacity:.2}50%{opacity:var(--fx-opacity)}100%{background-position:15px -110px;opacity:.08}}@keyframes forgeFrameFxFlame{0%,100%{transform:translateY(3px) scaleY(.92);opacity:.55}50%{transform:translateY(-5px) scaleY(1.08);opacity:.9}}
@keyframes forgeFrameFxFrost{0%,100%{opacity:.35;filter:hue-rotate(var(--fx-hue)) blur(var(--fx-blur)) brightness(.9)}50%{opacity:.9;filter:hue-rotate(var(--fx-hue)) blur(var(--fx-blur)) brightness(1.35)}}@keyframes forgeFrameFxDrift{0%,100%{transform:translate3d(-2%,-1%,0) rotate(-1deg)}50%{transform:translate3d(3%,2%,0) rotate(1deg)}}
@keyframes forgeFrameFxAurora{0%,100%{transform:translate3d(-5%,-2%,0) scale(.95)}50%{transform:translate3d(5%,3%,0) scale(1.06)}}@keyframes forgeFrameFxFlicker{0%,16%,22%,65%,72%,100%{opacity:.25}18%,20%,67%,70%{opacity:1}}@keyframes forgeFrameFxJolt{0%,100%{transform:translate(0)}25%{transform:translate(-2px,1px)}50%{transform:translate(3px,-1px)}75%{transform:translate(-1px,1px)}}
@keyframes forgeFrameFxGlitch{0%,100%{clip-path:inset(0)}20%{clip-path:inset(12% 0 62% 0);transform:translateX(3px)}42%{clip-path:inset(58% 0 18% 0);transform:translateX(-4px)}66%{clip-path:inset(32% 0 41% 0);transform:translateX(2px)}}@keyframes forgeFrameFxLiquid{0%,100%{background-position:180% 0;transform:skewX(-1deg)}50%{background-position:-40% 100%;transform:skewX(1deg)}}
@keyframes forgeFrameFxHeartbeat{0%,28%,100%{scale:1;opacity:.42}12%{scale:var(--fx-pulse-scale);opacity:1}20%{scale:1.012;opacity:.72}}@keyframes forgeFrameFxConfetti{0%{background-position:0 -70px,14px -100px,4px -130px}100%{background-position:18px 440px,-12px 390px,22px 470px}}@keyframes forgeFrameFxRain{0%{background-position:0 -80px,0 -120px}100%{background-position:14px 240px,-8px 300px}}
@keyframes forgeFrameFxStar{0%,100%{transform:scale(.72) rotate(-8deg);opacity:.4}50%{transform:scale(1.35) rotate(8deg);opacity:1}}@keyframes forgeFrameFxRipple{0%{background-size:70% 70%;opacity:.85}100%{background-size:160% 160%;opacity:0}}
@media(prefers-reduced-motion:reduce){.forge-card-frame-fx__layer,.forge-card-frame-fx__particles,.forge-card-frame-fx__scan{animation:none!important}}
