@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes boardShake {
  0%, 100% { transform: translateX(0) rotate(0deg); }
  20%, 60% { transform: translateX(-12px) rotate(-4deg); }
  40%, 80% { transform: translateX(12px) rotate(4deg); }
}

@keyframes pulseWin {
  0% {
    transform: scale(1);
    box-shadow: 0 0 12px 4px var(--winning-glow);
  }
  100% {
    transform: scale(1.06);
    box-shadow: 0 0 24px 10px var(--winning-glow);
  }
}

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

@keyframes slideUp {
  from {
    opacity: 0;
    transform: translateY(16px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}