/* Keyframes & Animations */

/* Card Slide In */
@keyframes cardSlideIn {
  from {
    opacity: 0;
    transform: translateY(18px) scale(0.98);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

.card-slide-in {
  animation: cardSlideIn 0.35s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}

/* Pop In */
@keyframes popIn {
  0% {
    opacity: 0;
    transform: scale(0.7);
  }
  70% {
    transform: scale(1.05);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

.pop-in-animation {
  animation: popIn 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}

/* Blink text */
@keyframes blink {
  0% { opacity: 0.4; }
  100% { opacity: 1; }
}

/* Winner Reveal Animation */
@keyframes winnerPulse {
  0% {
    transform: scale(0.95);
  }
  50% {
    transform: scale(1.05);
  }
  100% {
    transform: scale(1);
  }
}

.winner-reveal-animation {
  animation: winnerPulse 0.6s ease-in-out forwards;
}

/* Bounce Micro Animation */
@keyframes bounceSmall {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-4px); }
}

.bounce-hover:hover {
  animation: bounceSmall 0.6s ease infinite;
}
