/* Q版 scene animations: transform/opacity only; paused when the card is closed (.q-paused) or reduced motion. */
.qscene svg{display:block;width:100%;height:auto}
.qscene [class^="q-"],.qscene [class*=" q-"]{transform-box:fill-box;transform-origin:center}
@keyframes q-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-2.5px)}}
@keyframes q-sway{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}
@keyframes q-drift{0%,100%{transform:translateX(-6px)}50%{transform:translateX(8px)}}
@keyframes q-float{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-6px) rotate(2deg)}}
@keyframes q-twinkle{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1.1)}}
@keyframes q-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}
@keyframes q-wave{0%,100%{transform:translateX(0)}50%{transform:translateX(-14px)}}
@keyframes q-wave2{0%,100%{transform:translateX(-10px)}50%{transform:translateX(6px)}}
@keyframes q-flap{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.55)}}
@keyframes q-flag{0%,100%{transform:skewY(0)}50%{transform:skewY(7deg)}}
@keyframes q-arm{0%,100%{transform:rotate(0)}50%{transform:rotate(-14deg)}}
@keyframes q-fall{0%{transform:translateY(-8px);opacity:0}15%{opacity:1}100%{transform:translateY(46px);opacity:0}}
@keyframes q-rise{0%{transform:translateY(8px) scale(.6);opacity:.9}100%{transform:translateY(-34px) scale(1.5);opacity:0}}
@keyframes q-blink{0%,49%{opacity:1}50%,100%{opacity:.15}}
@keyframes q-roll{0%{transform:translateX(-5px)}100%{transform:translateX(5px)}}
@keyframes q-confetti{0%{transform:translateY(-10px) rotate(0);opacity:0}15%{opacity:1}100%{transform:translateY(70px) rotate(240deg);opacity:0}}
.qscene .q-bob{animation:q-bob 2.4s ease-in-out infinite}
.qscene .q-sway{animation:q-sway 3.4s ease-in-out infinite;transform-origin:50% 100%}
.qscene .q-drift{animation:q-drift 9s ease-in-out infinite}
.qscene .q-float{animation:q-float 3.2s ease-in-out infinite}
.qscene .q-twinkle{animation:q-twinkle 2.2s ease-in-out infinite}
.qscene .q-pulse{animation:q-pulse 2.8s ease-in-out infinite}
.qscene .q-wave{animation:q-wave 4s ease-in-out infinite}
.qscene .q-wave2{animation:q-wave2 5s ease-in-out infinite}
.qscene .q-flap{animation:q-flap .9s ease-in-out infinite}
.qscene .q-flag{animation:q-flag 1.6s ease-in-out infinite}
.qscene .q-wave-arm{animation:q-arm 2s ease-in-out infinite;transform-origin:10px -29px;transform-box:view-box}
.qscene .q-fall{animation:q-fall 1.1s linear infinite}
.qscene .q-rise{animation:q-rise 2.2s ease-out infinite}
.qscene .q-blink{animation:q-blink .8s steps(1) infinite}
.qscene .q-roll{animation:q-roll .7s ease-in-out infinite alternate}
.qscene .q-confetti{animation:q-confetti 2.6s linear infinite}
.qscene.q-paused *{animation-play-state:paused!important}
@media (prefers-reduced-motion:reduce){.qscene *{animation:none!important}}
