.duel-room .fx-layer{position:fixed;inset:0;z-index:890;overflow:hidden;pointer-events:none}.duel-room .fx-ghost{position:absolute;transform-origin:center center;will-change:transform,opacity,filter;pointer-events:none}.duel-room .fx-ghost.is-summon{box-shadow:0 0 22px color-mix(in oklab,var(--color-primary) 55%,transparent);border-radius:4px}.duel-room .fx-ghost.is-special{box-shadow:0 0 22px color-mix(in oklab,var(--color-secondary) 55%,transparent)}.duel-room .fx-reveal{position:absolute;transform-origin:center center;will-change:transform,opacity;pointer-events:none;border-radius:6px;animation:fx-reveal-hold var(--fx-dur) cubic-bezier(.2,.9,.2,1) forwards}@keyframes fx-reveal-hold{0%{transform:scale(.82);opacity:0;filter:drop-shadow(0 0 0 transparent)}8%{transform:scale(1.05);opacity:1}14%{transform:scale(1);filter:drop-shadow(0 6px 26px color-mix(in oklab,var(--color-primary) 70%,transparent))}82%{transform:scale(1);opacity:1;filter:drop-shadow(0 6px 26px color-mix(in oklab,var(--color-primary) 70%,transparent))}to{transform:scale(1.03) translateY(-10px);opacity:0;filter:drop-shadow(0 0 0 transparent)}}.duel-room .fx-mark{position:absolute;pointer-events:none;border-radius:3px}.duel-room .fx-reticle{animation:fx-reticle-lock var(--fx-dur) cubic-bezier(.2,.9,.2,1) forwards;filter:drop-shadow(0 0 4px color-mix(in oklab,var(--color-info, var(--color-primary)) 95%,transparent)) drop-shadow(0 0 16px color-mix(in oklab,var(--color-info, var(--color-primary)) 75%,transparent))}.duel-room .fx-reticle:before{content:"";position:absolute;inset:0;border-radius:inherit;transform:var(--fx-flip, rotate(0deg))}.duel-room .fx-reticle:not(.is-shaped):before{border:3px solid var(--color-info, var(--color-primary));box-shadow:inset 0 0 18px color-mix(in oklab,var(--color-info, var(--color-primary)) 45%,transparent)}.duel-room .fx-reticle.is-shaped:before{background:var(--color-info, var(--color-primary));clip-path:var(--fx-clip)}.duel-room .fx-reticle:after{content:"";position:absolute;inset:0;border:2px solid color-mix(in oklab,var(--color-info, var(--color-primary)) 70%,transparent);border-radius:inherit;animation:fx-reticle-ping calc(var(--fx-dur) / 3) ease-out 3}.duel-room .fx-reticle.is-shaped:after{border:0;background:color-mix(in oklab,var(--color-info, var(--color-primary)) 70%,transparent);clip-path:var(--fx-clip)}@keyframes fx-reticle-lock{0%{transform:scale(1.55) rotate(-8deg);opacity:0}7%{opacity:1}15%{transform:scale(1) rotate(0)}25%{transform:scale(1.09)}34%{transform:scale(1)}44%{transform:scale(1.09)}53%{transform:scale(1)}63%{transform:scale(1.09)}72%{transform:scale(1)}82%{transform:scale(1.09)}91%{transform:scale(1);opacity:1}to{transform:scale(1);opacity:0}}@keyframes fx-reticle-ping{0%{transform:var(--fx-flip, rotate(0deg)) scale(1);opacity:.75}to{transform:var(--fx-flip, rotate(0deg)) scale(1.5);opacity:0}}@keyframes fx-fade{0%{opacity:0}25%{opacity:1}to{opacity:0}}.duel-room .fx-activate{animation:fx-activate-flare var(--fx-dur) cubic-bezier(.2,.8,.3,1) forwards;filter:drop-shadow(0 0 6px color-mix(in oklab,var(--color-warning) 90%,transparent)) drop-shadow(0 0 24px color-mix(in oklab,var(--color-warning) 70%,transparent))}.duel-room .fx-activate:before{content:"";position:absolute;inset:0;border-radius:inherit;transform:var(--fx-flip, rotate(0deg));background:color-mix(in oklab,var(--color-warning) 55%,transparent);animation:fx-activate-core var(--fx-dur) ease-out forwards}.duel-room .fx-activate.is-shaped:before{clip-path:var(--fx-clip)}.duel-room .fx-activate:after{content:"";position:absolute;inset:0;border:2px solid color-mix(in oklab,var(--color-warning) 80%,transparent);border-radius:inherit;animation:fx-activate-wave calc(var(--fx-dur) / 3) ease-out 3}.duel-room .fx-activate.is-shaped:after{border:0;background:color-mix(in oklab,var(--color-warning) 80%,transparent);clip-path:var(--fx-clip)}@keyframes fx-activate-flare{0%{transform:scale(.94);opacity:0}12%{transform:scale(1.04);opacity:1}30%{transform:scale(1)}to{transform:scale(1);opacity:1}}@keyframes fx-activate-core{0%{opacity:0}10%{opacity:1}45%{opacity:0}to{opacity:0}}@keyframes fx-activate-wave{0%{transform:var(--fx-flip, rotate(0deg)) scale(1);opacity:.85}to{transform:var(--fx-flip, rotate(0deg)) scale(1.7);opacity:0}}.duel-room .fx-ring{border-radius:50%;border:2px solid var(--color-error);box-shadow:0 0 18px color-mix(in oklab,var(--color-error) 60%,transparent),inset 0 0 14px color-mix(in oklab,var(--color-error) 35%,transparent);animation:fx-ring-burst var(--fx-dur) cubic-bezier(.2,.8,.3,1) forwards}@keyframes fx-ring-burst{0%{transform:scale(.35);opacity:0}18%{opacity:1}to{transform:scale(1.55);opacity:0}}.duel-room .fx-impact{background:color-mix(in oklab,var(--color-error) 35%,transparent);animation:fx-hit-flash var(--fx-dur) forwards}@keyframes fx-hit-flash{0%{opacity:.8}to{opacity:0}}.duel-room .fx-shake{animation:fx-lp-shake .4s}@keyframes fx-lp-shake{0%,to{transform:translate(0)}20%{transform:translate(-5px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}.duel-room .zone.fx-hold>.field-card{opacity:0;pointer-events:none;will-change:opacity}
