/* ============================================
   KidsLang — Animations
   ============================================ */

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

@keyframes bounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-20px); }
}

@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}

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

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

@keyframes pulse-success {
  0% { transform: scale(1); }
  50% { transform: scale(1.08); }
  100% { transform: scale(1); }
}

@keyframes pulse-current {
  0%, 100% { box-shadow: var(--shadow-press), 0 0 0 0 rgba(255, 107, 107, 0.5); }
  50%      { box-shadow: var(--shadow-press), 0 0 0 16px rgba(255, 107, 107, 0); }
}

@keyframes shake {
  0%, 100% { transform: translateX(0); }
  20% { transform: translateX(-8px); }
  40% { transform: translateX(8px); }
  60% { transform: translateX(-6px); }
  80% { transform: translateX(6px); }
}

@keyframes confetti-fall {
  0% { transform: translateY(-100vh) rotate(0); opacity: 1; }
  100% { transform: translateY(100vh) rotate(720deg); opacity: 0; }
}

@keyframes mic-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(78, 205, 196, 0.7); }
  50% { box-shadow: 0 0 0 20px rgba(78, 205, 196, 0); }
}

/* فئات مساعدة */
.is-listening { animation: mic-pulse 1.2s ease-in-out infinite; }
.fade-in { animation: fadeIn var(--t-normal) var(--ease-out); }
.bounce-in { animation: bounce 0.6s var(--ease-bounce); }
