/* ===================================================================
   Animations & Vibrations
   =================================================================== */

/* Wrong Answer Shake / Vibration Effect */
@keyframes shake-vibration {
  0% { transform: translateX(0); }
  15% { transform: translateX(-6px) rotate(-1.5deg); }
  30% { transform: translateX(5px) rotate(1.5deg); }
  45% { transform: translateX(-4px) rotate(-1deg); }
  60% { transform: translateX(4px) rotate(1deg); }
  75% { transform: translateX(-2px) rotate(-0.5deg); }
  90% { transform: translateX(2px) rotate(0.5deg); }
  100% { transform: translateX(0) rotate(0); }
}

.shake-animation {
  animation: shake-vibration 0.45s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
}

/* Correct Answer Pulse Glow */
@keyframes correct-pop {
  0% { transform: scale(0.96); box-shadow: 0 0 0 rgba(16, 185, 129, 0); }
  50% { transform: scale(1.03); box-shadow: 0 0 12px rgba(16, 185, 129, 0.45); }
  100% { transform: scale(1); box-shadow: var(--glow-correct); }
}

.correct-pop-animation {
  animation: correct-pop 0.35s ease-out both;
}

/* Active Slot Target Pulse */
@keyframes slot-pulse {
  0%, 100% {
    box-shadow: 0 0 3px rgba(6, 182, 212, 0.2);
    border-color: var(--color-accent);
  }
  50% {
    box-shadow: 0 0 8px 1px rgba(6, 182, 212, 0.35);
    border-color: #38bdf8;
  }
}

/* Timer warning pulses */
@keyframes pulse-warn {
  0% { opacity: 1; }
  100% { opacity: 0.6; }
}

@keyframes pulse-danger {
  0% { opacity: 1; transform: scale(1); }
  100% { opacity: 0.7; transform: scale(1.05); }
}

/* Modal entrance */
@keyframes modal-enter {
  0% {
    opacity: 0;
    transform: scale(0.92) translateY(15px);
  }
  100% {
    opacity: 1;
    transform: scale(1) translateY(0);
  }
}

/* Confetti particles for perfect score */
@keyframes confetti-fall {
  0% { transform: translateY(-100px) rotate(0deg); opacity: 1; }
  100% { transform: translateY(600px) rotate(720deg); opacity: 0; }
}
