@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes spin {
  to { transform: rotate(360deg); }
}

.page-enter {
  animation: fadeIn 0.25s ease;
}

.score-reveal {
  /* Instant presence — no bounce */
}

/* Progress bar: never pulse / bounce / scale */
.tri-bar.in-progress .tri-bar-fill,
.tri-bar.filled .tri-bar-fill {
  animation: none !important;
  transform: none !important;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

html.reduce-motion *,
html.reduce-motion *::before,
html.reduce-motion *::after {
  animation-duration: 0.01ms !important;
  animation-iteration-count: 1 !important;
  transition-duration: 0.01ms !important;
}

html.reduce-motion .btn-primary:hover,
html.reduce-motion .card-hover:hover {
  transform: none;
}
