/* Approved catalogue motions only: 07, 12, 20, 21, 36.
   Scoped to explicitly selected mascots; dimensions stay with the page styles. */
img.bloom-approved[data-bloom-effect] { animation: none; transform-origin: 50% 100%; }
.hero-art.has-approved-motion { transform: none; transition: none; }
img.bloom-approved.is-motion-visible { animation: var(--bloom-motion) var(--bloom-duration) ease-in-out 1; }
img.bloom-approved[data-bloom-effect="7"] { --bloom-motion: bloom-approved-sway; --bloom-duration: 4.6s; }
img.bloom-approved[data-bloom-effect="12"] { --bloom-motion: bloom-approved-float; --bloom-duration: 4.2s; }
img.bloom-approved[data-bloom-effect="20"] { --bloom-motion: bloom-approved-glow; --bloom-duration: 2.8s; }
img.bloom-approved[data-bloom-effect="21"] { --bloom-motion: bloom-approved-walk; --bloom-duration: 3.2s; }
img.bloom-approved[data-bloom-effect="36"] { --bloom-motion: bloom-approved-headshake; --bloom-duration: 3.2s; }
.prose img.bloom-prevention-mascot { float:right; width:84px; height:auto; margin:36px 18px 12px 28px; }
.content-page .prose > img.page-mascot[data-bloom-effect="21"] { margin-right:32px; }
@keyframes bloom-approved-sway { 0%,100% { transform:rotate(-3.5deg) translateY(0); } 50% { transform:rotate(3.5deg) translateY(-6px); } }
@keyframes bloom-approved-float { 0%,100% { transform:translateY(6px) rotate(-2deg); } 50% { transform:translateY(-18px) rotate(2deg); } }
@keyframes bloom-approved-glow { 0%,100% { filter:drop-shadow(0 0 0 rgba(0,207,160,0)); } 50% { filter:drop-shadow(0 0 26px rgba(0,207,160,.75)); } }
@keyframes bloom-approved-walk { 0%,100% { transform:translateX(-30px) rotate(-4deg); } 25% { transform:translateX(-15px) translateY(-10px) rotate(2deg); } 50% { transform:translateX(30px) rotate(4deg); } 75% { transform:translateX(15px) translateY(-10px) rotate(-2deg); } }
@keyframes bloom-approved-headshake { 0%,70%,100% { transform:rotate(0); } 78% { transform:rotate(-8deg); } 86% { transform:rotate(8deg); } 94% { transform:rotate(-4deg); } }
@media (prefers-reduced-motion:reduce) { img.bloom-approved, img.bloom-approved.is-motion-visible { animation:none !important; } }
