.magic-layer{position:absolute;inset:0;pointer-events:none;z-index:5}.magic-layer svg{width:100%;height:100%;overflow:visible}.magic-active .fluffy-living{animation:none}.magic-active :is(.fluffy-svg,.costume-art){transform-origin:50% 91%}.magic-stretch :is(.fluffy-svg,.costume-art){animation:jellyStretch 2s ease-in-out 3}.magic-tiny :is(.fluffy-svg,.costume-art){animation:antSize 6s both}.magic-giant :is(.fluffy-svg,.costume-art){animation:growSize 6s both}.magic-pancake :is(.fluffy-svg,.costume-art){animation:pancake 2s 3}.magic-bounce :is(.fluffy-svg,.costume-art){animation:happyBounce 1s ease-in-out 6}.magic-upside :is(.fluffy-svg,.costume-art){animation:upsideFlip 6s both}.magic-spin :is(.fluffy-svg,.costume-art){animation:twirl 1.5s ease-in-out 4}.magic-marshmallow .fluffy-body{transform:translate(-130px,-30px) scale(1.45,1.06);filter:brightness(1.6)}.magic-green .fluffy-body,.magic-green .fluffy-head,.magic-green .fluffy-tail{filter:sepia(1) saturate(2.4) hue-rotate(65deg)}.magic-rainbow :is(.fluffy-svg,.costume-art){animation:rainbowFur 3s linear 2}.magic-glow :is(.fluffy-svg,.costume-art){filter:drop-shadow(0 0 16px #a9f6ed) drop-shadow(0 0 30px #fff5b4)}.magic-invisible :is(.fluffy-svg,.costume-art){animation:vanishing 6s both}.magic-ghost :is(.fluffy-svg,.costume-art){filter:brightness(2) saturate(.1);opacity:.35;animation:ghostFloat 2s ease-in-out 3}.magic-bigwings .fluffy-wing-left,.magic-bigwings .fluffy-wing-right{transform:scale(1.3);transform-origin:250px 300px;animation:bigWingFlap .7s ease-in-out infinite}.magic-bigtail .fluffy-tail{transform-origin:365px 430px;animation:tailGrow 1.2s ease-in-out infinite}.magic-bubblefloat :is(.fluffy-svg,.costume-art),.magic-bubblefloat .magic-orb{animation:ghostFloat 2s ease-in-out 3}.magic-orb{position:absolute;inset:2%;border:3px solid #d5f9ff99;border-radius:50%;box-shadow:inset 10px 8px 22px #ffafec77,inset -9px -8px 24px #91e8ff88,0 0 20px #e0bbf466;background:radial-gradient(circle at 29% 20%,#fff9 0 2%,transparent 4%)}.magic-bigpaws .fluffy-head{transform-origin:300px 270px;transform:translateY(12px) rotate(7deg)}.magic-bigpaws .fluffy-iris{transform:translateY(8px)}.magic-paws{animation:pawsGrow .6s cubic-bezier(.2,1.6,.4,1) both}.trunk-swing{transform-origin:302px 274px;animation:trunkWave 1.5s ease-in-out infinite}.magic-eyes{animation:eyePop .5s both}.magic-tongue{transform-origin:302px 308px;animation:lipLick .85s ease-in-out 5}.breath-particle{position:absolute;left:50%;top:51%;width:8%;height:8%;opacity:0;animation:breathOut 1.7s ease-out infinite;animation-delay:calc(var(--i)*.16s);--drift:0px}.breath-particle.fire{border-radius:65% 25% 65% 40%;background:radial-gradient(at 25% 60%,#fff9b0,#ffbd47 40%,#ef657d 70%,transparent 73%);filter:drop-shadow(0 0 5px #ffa352)}.breath-particle.bubbles{border:2px solid #d7f8ff;border-radius:50%;background:radial-gradient(at 30% 25%,#fffc,transparent 25%),linear-gradient(125deg,#f7b4e522,#8fd8f833);box-shadow:inset -3px -3px 7px #bba3f7}.breath-particle.ice{clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);background:linear-gradient(45deg,#8bd2ef,#fff)}.breath-particle.sneeze{border-radius:50%;background:radial-gradient(#eec5fc,#bf9af455,transparent);width:15%;height:15%}
@keyframes jellyStretch{0%,100%{transform:scale(1)}35%{transform:scale(.58,1.43)}50%{transform:scale(1.22,.72)}65%{transform:scale(.9,1.1)}}@keyframes antSize{0%,100%{transform:scale(1)}18%,85%{transform:scale(.1)}}@keyframes growSize{0%,100%{transform:scale(1)}18%,85%{transform:scale(1.3)}}@keyframes pancake{0%,100%{transform:scale(1)}40%,70%{transform:scale(1.4,.35)}}@keyframes happyBounce{0%,100%{transform:translateY(0) scale(1.08,.9)}50%{transform:translateY(-24%) scale(.95,1.05)}}@keyframes upsideFlip{0%,100%{transform:rotate(0);transform-origin:50% 50%}25%,80%{transform:rotate(180deg);transform-origin:50% 50%}}@keyframes twirl{50%{transform:scaleX(-1)}}@keyframes rainbowFur{to{filter:sepia(.6) saturate(3) hue-rotate(360deg)}}@keyframes vanishing{0%,100%{opacity:1}25%,75%{opacity:.04}}@keyframes ghostFloat{50%{translate:0 -13%}}@keyframes bigWingFlap{50%{transform:scale(1.35) rotate(-13deg)}}@keyframes tailGrow{50%{transform:scale(1.65) rotate(12deg)}}@keyframes pawsGrow{from{opacity:0;scale:.4}to{opacity:1;scale:1}}@keyframes eyePop{from{opacity:0}to{opacity:1}}@keyframes trunkWave{50%{transform:rotate(-14deg)}}@keyframes lipLick{0%,100%{opacity:0;transform:scale(.3)}30%,65%{opacity:1;transform:rotate(-25deg) scale(1.2)}}@keyframes breathOut{0%{opacity:0;translate:0 0;scale:.2}15%{opacity:1}100%{opacity:0;translate:140px var(--drift);scale:1.8}}
@media(prefers-reduced-motion:reduce){.magic-active *{animation-duration:6s!important;animation-iteration-count:1!important}.breath-particle:nth-child(n+5){display:none}}

.feeding-particle{opacity:0;animation:feedingBreath 1.45s ease-out infinite;animation-delay:var(--delay);transform-origin:0 0}.feeding-breath.fire{filter:drop-shadow(0 0 4px #ffd28a)}
@keyframes feedingBreath{0%{opacity:0;transform:translate(0,0) scale(.08)}12%{opacity:.9}100%{opacity:0;transform:translate(215px,var(--drift)) scale(1.2)}}
@media(prefers-reduced-motion:reduce){.feeding-particle{animation-duration:3s}.feeding-particle:nth-child(n+4){display:none}}

.fluffy-kitten.magic-trunk{animation:none!important;transform:none!important}.magic-trunk .fluffy-living,.magic-trunk .fluffy-head{animation:none!important;transform:none!important}

.magic-bigpaws .fluffy-pose{inset:auto;left:4%;top:6%;width:92%;height:88%;object-fit:contain;transform:none;animation:pawReveal .6s ease-out both}@keyframes pawReveal{from{opacity:1;translate:0 8px}to{opacity:1;translate:0 0}}

.magic-orb{width:96%;height:96%;object-fit:contain;border:0;border-radius:0;background:none;box-shadow:none}

/* Large illustrated breath: hold the artwork at full opacity through the puff. */
.feeding-breath.fire .feeding-particle,.feeding-breath.bubbles .feeding-particle,.feeding-breath.ice .feeding-particle{animation-name:visibleFeedingBreath;animation-duration:1.8s}
@keyframes visibleFeedingBreath{0%{opacity:0;transform:translate(0,0) scale(.12)}15%{opacity:1;transform:translate(28px,0) scale(.65)}65%{opacity:1}100%{opacity:0;transform:translate(215px,var(--drift)) scale(1.2)}}
@media(prefers-reduced-motion:reduce){.feeding-breath.fire .feeding-particle,.feeding-breath.bubbles .feeding-particle,.feeding-breath.ice .feeding-particle{animation-duration:3s}}
/* Imported character artwork; each pose stays within the same stage bounds. */
.fluffy-kitten[data-pose^="reaction-"] .fluffy-pose{inset:auto;left:5%;top:5%;width:90%;height:90%;object-fit:contain;transform-origin:50% 94%}
.magic-frog .fluffy-pose{animation:frogHops 2s ease-in-out 3}.magic-bunny .fluffy-pose{animation:bunnyHops 1.6s ease-in-out 3}.magic-duckling .fluffy-pose{animation:duckWaddle 2.8s ease-in-out 2}
.magic-butterfly .fluffy-pose,.magic-dragon .fluffy-pose{animation:creatureFlight 6s ease-in-out both}.magic-bubblefloat .fluffy-pose{animation:bubbleJourney 6s ease-in-out both}.magic-caterpillar .fluffy-pose{animation:inchworm 1.2s ease-in-out 5}.magic-axolotl .fluffy-pose{animation:axolotlSwim 6s ease-in-out both}
@keyframes frogHops{0%,20%,100%{translate:0 0}35%{translate:-7% -17%}50%,65%{translate:-9% 0}80%{translate:0 -14%}}
@keyframes bunnyHops{0%,40%,100%{translate:0 0}65%{translate:3% -12%}}
@keyframes duckWaddle{0%,100%{translate:0 0;rotate:0deg}25%{translate:-5% -2%;rotate:-3deg}50%{translate:-8% 0;rotate:0deg}75%{translate:-3% -2%;rotate:3deg}}
@keyframes creatureFlight{0%,100%{translate:0 0}25%{translate:-6% -14%}55%{translate:5% -19%}80%{translate:7% -10%}}
@keyframes bubbleJourney{0%,100%{translate:0 0}30%{translate:-5% -16%}65%{translate:5% -22%}}
@keyframes inchworm{0%,100%{translate:0 0;scale:1}50%{translate:3% -2%;scale:.96 1.03}}
@keyframes axolotlSwim{0%,100%{translate:0 0;rotate:0deg}35%{translate:-8% -10%;rotate:-5deg}70%{translate:6% -6%;rotate:4deg}}
@media(prefers-reduced-motion:reduce){.fluffy-kitten[data-pose^="reaction-"] .fluffy-pose{animation:none}}

.magic-green .costume-art{filter:sepia(1) saturate(2.4) hue-rotate(65deg)}.magic-marshmallow .costume-art{transform:scale(1.2,1.06);filter:brightness(1.6)}
