/* Answer buttons bounce in on question load */
@keyframes bounceIn {
  0%   { transform: scale(0.4) translateY(40px); opacity: 0; }
  60%  { transform: scale(1.06) translateY(-6px); opacity: 1; }
  100% { transform: scale(1) translateY(0); }
}

/* Correct answer pulse green */
@keyframes correctPulse {
  0%   { box-shadow: 0 0 0 0   rgba(16,185,129,0.6); }
  70%  { box-shadow: 0 0 0 18px rgba(16,185,129,0); }
  100% { box-shadow: 0 0 0 0   rgba(16,185,129,0); }
}

/* Wrong answer shake */
@keyframes shakeWrong {
  0%, 100% { transform: translateX(0); }
  20%      { transform: translateX(-8px); }
  40%      { transform: translateX(8px); }
  60%      { transform: translateX(-8px); }
  80%      { transform: translateX(8px); }
}

/* Score feedback pop */
@keyframes scorePop {
  0%   { transform: scale(0.5); opacity: 0; }
  60%  { transform: scale(1.15); opacity: 1; }
  100% { transform: scale(1); }
}

/* Countdown number pop */
@keyframes countdownPop {
  0%   { transform: scale(1.8); opacity: 0; }
  40%  { transform: scale(1.0); opacity: 1; }
  80%  { transform: scale(1.0); opacity: 1; }
  100% { transform: scale(0.7); opacity: 0; }
}

/* Podium bar rise from bottom */
@keyframes podiumRise {
  from { transform: scaleY(0); transform-origin: bottom; }
  to   { transform: scaleY(1); transform-origin: bottom; }
}

/* Leaderboard row slide in */
@keyframes slideInRow {
  from { transform: translateX(-60px); opacity: 0; }
  to   { transform: translateX(0);     opacity: 1; }
}

/* Confetti particle float */
@keyframes confettiFloat {
  0%   { transform: translateY(0)     rotate(0deg);   opacity: 1; }
  100% { transform: translateY(-300px) rotate(540deg); opacity: 0; }
}

/* Timer bar color shift as time runs out */
@keyframes timerColorShift {
  0%   { background-color: var(--color-success); }
  60%  { background-color: var(--color-accent); }
  100% { background-color: var(--color-danger); }
}

/* Score tally count-up shimmer */
@keyframes shimmer {
  0%   { background-position: -200% center; }
  100% { background-position:  200% center; }
}

/* Pulse animation */
@keyframes pulse {
  0%, 100% { transform: scale(1); }
  50%      { transform: scale(1.05); }
}

/* Fade in */
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* Fade in up */
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Spin */
@keyframes spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* Slide down */
@keyframes slideDown {
  from { transform: translateY(-100%); opacity: 0; }
  to   { transform: translateY(0); opacity: 1; }
}

/* Loading dots */
@keyframes loadingDots {
  0%, 20%  { opacity: 0; }
  50%      { opacity: 1; }
  80%, 100%{ opacity: 0; }
}
