.qc-monster-stage {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-height: 240px;
}
.qc-monster-rig, .qc-monster-effects { position: absolute; inset: 0; }
.qc-monster-rig { z-index: 2; transform-origin: 50% 84%; will-change: transform, filter; }
.qc-monster-effects { z-index: 7; pointer-events: none; }
.qc-monster-layer { position: absolute; display: block; image-rendering: pixelated; pointer-events: none; }
.qc-monster-base { inset: 2% 4%; z-index: 1; width: 92%; height: 96%; object-fit: contain; filter: drop-shadow(0 7px 2px rgba(0,0,0,.42)); }

.qc-monster-stage[data-rarity="unique"] { animation: qc-monster-unique-stage 2800ms ease-in-out infinite; }
.qc-monster-stage[data-rarity="legendary"] { animation: qc-monster-legendary-stage 1900ms ease-in-out infinite; }
.qc-monster-stage[data-rarity="unique"] .qc-monster-base { filter: brightness(1.04) drop-shadow(0 0 4px rgba(192,132,252,.54)) drop-shadow(0 8px 2px rgba(0,0,0,.48)); }
.qc-monster-stage[data-rarity="legendary"] .qc-monster-base { filter: brightness(1.1) saturate(1.08) drop-shadow(0 0 7px rgba(255,240,168,.72)) drop-shadow(0 0 13px rgba(239,93,116,.34)) drop-shadow(0 8px 2px rgba(0,0,0,.5)); }
.qc-monster-stage[data-rarity="unique"] .qc-monster-effects::after,
.qc-monster-stage[data-rarity="legendary"] .qc-monster-effects::after { position:absolute; top:18%; left:15%; width:4px; height:4px; background:#e1b8ff; box-shadow:12em 1em #a855f7,2em 9em #c084fc,10em 12em #fff0a8,5em 3em #fff; content:""; animation:qc-monster-motes 2400ms steps(6,end) infinite; }
.qc-monster-stage[data-rarity="legendary"] .qc-monster-effects::after { width:5px;height:5px;background:#fff0a8;box-shadow:11em 1em #ef5d74,1em 7em #fff,12em 10em #f2c771,6em 13em #ef5d74,3em 3em #ffe4a3;animation-duration:1700ms; }

[data-character-animation="idle"] .qc-monster-rig { animation:qc-monster-idle 2200ms ease-in-out infinite; }
[data-character-animation="idle"][data-monster-nature="skittish"] .qc-monster-rig { animation:qc-monster-skittish 1550ms steps(8,end) infinite; }
[data-character-animation="idle"][data-monster-nature="sleepy"] .qc-monster-rig { animation:qc-monster-sleepy 3000ms ease-in-out infinite; }
[data-character-animation="idle"][data-monster-nature="clockwork"] .qc-monster-rig { animation:qc-monster-clockwork 1200ms steps(6,end) infinite; }
[data-character-animation="idle"][data-monster-nature="winged"] .qc-monster-rig { animation:qc-monster-winged 1800ms ease-in-out infinite; }
[data-character-animation="idle"][data-monster-nature="duelist"] .qc-monster-rig { animation:qc-monster-duelist 1900ms ease-in-out infinite; }
[data-character-animation="idle"][data-monster-nature="prowler"] .qc-monster-rig { animation:qc-monster-prowler 2100ms ease-in-out infinite; }
[data-character-animation="idle"][data-monster-nature="pouncer"] .qc-monster-rig { animation:qc-monster-pouncer 1700ms ease-in-out infinite; }
[data-character-animation="idle"][data-monster-nature="brute"] .qc-monster-rig { animation:qc-monster-brute 2300ms steps(8,end) infinite; }
[data-character-animation="idle"][data-monster-nature="strider"] .qc-monster-rig { animation:qc-monster-strider 2400ms ease-in-out infinite; }
[data-character-animation="idle"][data-monster-nature="sentinel"] .qc-monster-rig { animation:qc-monster-sentinel 2600ms ease-in-out infinite; }
[data-character-animation="idle"][data-monster-nature="tyrant"] .qc-monster-rig { animation:qc-monster-tyrant 2000ms ease-in-out infinite; }
[data-character-animation="idle"][data-monster-nature="royal"] .qc-monster-rig { animation:qc-monster-royal 1650ms ease-in-out infinite; }
[data-character-animation="entrance"] .qc-monster-rig { animation:qc-monster-entrance 900ms cubic-bezier(.18,.8,.22,1) both; }
[data-character-animation="run"] .qc-monster-rig { animation:qc-monster-run 700ms ease-in-out infinite; }
[data-character-animation="attack"] .qc-monster-rig { animation:qc-monster-attack 650ms cubic-bezier(.2,.76,.22,1) both; }
[data-character-animation="critical"] .qc-monster-rig { animation:qc-monster-critical 900ms ease-out both; }
[data-character-animation="hit"] .qc-monster-rig { animation:qc-monster-hit 480ms ease-out both; }
[data-character-animation="victory"] .qc-monster-rig { animation:qc-monster-victory 1500ms ease-out both; }
[data-character-animation="defeat"] .qc-monster-rig { animation:qc-monster-defeat 1200ms ease-in both; }

@keyframes qc-monster-idle{0%,100%{transform:translateY(0) rotate(-.4deg)}50%{transform:translateY(-4px) rotate(.4deg)}}
@keyframes qc-monster-skittish{0%,70%,100%{transform:translate(0,0)}74%{transform:translate(-3px,-2px) rotate(-2deg)}78%{transform:translate(3px,-3px) rotate(2deg)}82%{transform:translate(0,-1px)}}
@keyframes qc-monster-sleepy{0%,100%{transform:translateY(1px) rotate(-1deg)}50%{transform:translateY(-1px) rotate(1deg)}}
@keyframes qc-monster-clockwork{0%,100%{transform:translate(0,0)}25%{transform:translate(1px,-2px) rotate(1deg)}50%{transform:translate(0,-3px)}75%{transform:translate(-1px,-2px) rotate(-1deg)}}
@keyframes qc-monster-winged{0%,100%{transform:translateY(2px)}50%{transform:translateY(-7px)}}
@keyframes qc-monster-duelist{0%,100%{transform:translateX(-1px) rotate(-1deg)}50%{transform:translate(2px,-3px) rotate(1.2deg)}}
@keyframes qc-monster-prowler{0%,100%{transform:translate(-3px,1px) rotate(-1.2deg)}50%{transform:translate(4px,-3px) rotate(1.5deg)}}
@keyframes qc-monster-pouncer{0%,100%{transform:translateY(2px) scaleY(.98)}58%{transform:translateY(-5px) scaleY(1.02)}}
@keyframes qc-monster-brute{0%,65%,100%{transform:translateY(0)}70%{transform:translate(-2px,-3px) rotate(-1deg)}76%{transform:translate(2px,1px) rotate(1deg)}82%{transform:translateY(-1px)}}
@keyframes qc-monster-strider{0%,100%{transform:translate(-2px,0) rotate(-1.4deg)}50%{transform:translate(2px,-4px) rotate(1.4deg)}}
@keyframes qc-monster-sentinel{0%,100%{transform:translateY(0);filter:brightness(1)}50%{transform:translateY(-2px);filter:brightness(1.08)}}
@keyframes qc-monster-tyrant{0%,100%{transform:translateY(2px);filter:drop-shadow(0 0 2px #67e8f9)}50%{transform:translateY(-7px);filter:drop-shadow(0 0 7px #b8acd8)}}
@keyframes qc-monster-royal{0%,100%{transform:translateY(2px) rotate(-.5deg);filter:brightness(1.05)}50%{transform:translateY(-8px) rotate(.5deg);filter:brightness(1.2)}}
@keyframes qc-monster-entrance{0%{opacity:0;transform:translateX(120%) rotate(8deg)}55%{opacity:1;transform:translateX(-9%) rotate(-3deg)}78%{transform:translateX(3%) rotate(1deg)}100%{transform:none}}
@keyframes qc-monster-run{0%,100%{transform:translate(-5px,1px) rotate(-2deg)}25%,75%{transform:translateY(-7px)}50%{transform:translate(5px,1px) rotate(2deg)}}
@keyframes qc-monster-attack{0%,100%{transform:none}25%{transform:translate(10px,2px) rotate(4deg)}42%{transform:translate(14px,-2px) rotate(5deg)}63%{transform:translate(-24px,-4px) rotate(-6deg)}82%{transform:translate(-8px,1px) rotate(-2deg)}}
@keyframes qc-monster-critical{0%,100%{transform:none;filter:none}36%{transform:translate(18px,-4px) rotate(8deg)}58%{transform:translate(-31px,-10px) rotate(-10deg);filter:brightness(1.5)}78%{transform:translate(-12px,0) rotate(-3deg)}}
@keyframes qc-monster-hit{0%,100%{transform:none;filter:none}20%{transform:translate(-12px,-2px) rotate(-5deg);filter:brightness(1.8)}45%{transform:translate(9px,2px) rotate(4deg)}70%{transform:translate(-4px,0) rotate(-2deg)}}
@keyframes qc-monster-victory{0%,100%{transform:none}28%{transform:translateY(-14px) rotate(-2deg)}48%{transform:translateY(0)}68%{transform:translateY(-8px) rotate(2deg)}}
@keyframes qc-monster-defeat{0%{opacity:1;transform:none}55%{transform:translateY(12px) rotate(-8deg)}100%{opacity:.5;transform:translateY(30px) rotate(-13deg) scaleY(.72)}}
@keyframes qc-monster-motes{0%,100%{opacity:.2;transform:translateY(12px)}45%{opacity:1;transform:translateY(-7px)}72%{opacity:.5;transform:translate(3px,-16px)}}
@keyframes qc-monster-unique-stage{0%,100%{filter:drop-shadow(0 0 2px #9a54c844)}50%{filter:drop-shadow(0 0 8px #c084fc88)}}
@keyframes qc-monster-legendary-stage{0%,100%{filter:drop-shadow(0 0 4px #d49a3577)}50%{filter:drop-shadow(0 0 10px #fff0a8dd) drop-shadow(0 0 18px #ef5d7466)}}

@media (prefers-reduced-motion:reduce){.qc-monster-stage,.qc-monster-rig,.qc-monster-layer,.qc-monster-effects::after{animation:none!important;transition:none!important}}
