/* ============================================================
   動畫：全部在 prefers-reduced-motion 時關閉
   ============================================================ */
@keyframes screen-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes slide-up { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@keyframes pop { 0% { transform: scale(1); } 40% { transform: scale(1.08); } 100% { transform: scale(1); } }
@keyframes ripple { to { transform: scale(4); opacity: 0; } }
@keyframes blink { 50% { opacity: 0; } }
@keyframes bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
@keyframes shake { 0%, 100% { transform: translateX(0); } 20% { transform: translateX(-9px); } 40% { transform: translateX(8px); } 60% { transform: translateX(-6px); } 80% { transform: translateX(4px); } }
@keyframes pulse-ring { 0%, 100% { box-shadow: 0 0 0 4px var(--zone-soft, var(--violet-soft)), var(--shadow); } 50% { box-shadow: 0 0 0 9px rgba(109, 74, 255, 0.12), var(--shadow); } }
@keyframes glow { 0%, 100% { box-shadow: 0 0 0 0 rgba(230, 58, 138, 0); } 50% { box-shadow: 0 0 0 8px rgba(230, 58, 138, 0.28); } }
@keyframes score-pop { 0% { opacity: 0; transform: translate(-50%, 10px) scale(0.7); } 20% { opacity: 1; transform: translate(-50%, -14px) scale(1.15); } 100% { opacity: 0; transform: translate(-50%, -38px) scale(1); } }
@keyframes star-in { 0% { transform: scale(0.2) rotate(-40deg); opacity: 0; } 100% { transform: scale(1) rotate(0); opacity: 1; } }
@keyframes star-dim { to { transform: scale(0.9); opacity: 0.55; } }
@keyframes confetti-fall { 0% { transform: translate(0, 0) rotate(0); opacity: 1; } 100% { transform: translate(var(--x, 0), 105vh) rotate(var(--r, 360deg)); opacity: 0.9; } }
@keyframes banner-in { 0% { transform: scale(0.4) rotate(-6deg); opacity: 0; } 100% { transform: scale(1) rotate(0); opacity: 1; } }
@keyframes fox-hop { 0%, 100% { transform: translateY(0) scale(1); } 30% { transform: translateY(-18px) scale(1.04); } 60% { transform: translateY(0) scale(0.98); } }

.home__mascot img { animation: bob 3.2s ease-in-out infinite; }
.animate-shake { animation: shake 0.5s ease; }
.mascot--hop .mascot__img { animation: fox-hop 0.7s ease; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    animation-delay: 0ms !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .result__star.star--on { transform: none; opacity: 1; }
  .confetti__piece { display: none; }
}
