/* ============================================================
   ANIMATIONS — keyframes + reduced-motion
   ============================================================ */

@keyframes pulse-dot {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.55; transform: scale(0.78); }
}

@keyframes blink {
  50% { opacity: 0; }
}

@keyframes ripple {
  to { transform: scale(3.2); opacity: 0; }
}

@keyframes scroll-drip {
  0% { transform: scaleY(0); transform-origin: top; }
  45% { transform: scaleY(1); transform-origin: top; }
  55% { transform: scaleY(1); transform-origin: bottom; }
  100% { transform: scaleY(0); transform-origin: bottom; }
}

@keyframes border-flow {
  0% { background-position: 0 0, 0% 50%; }
  100% { background-position: 0 0, 300% 50%; }
}

@keyframes toast-in {
  from { opacity: 0; transform: translateX(-50%) translateY(16px); }
  to { opacity: 1; transform: translateX(-50%) translateY(0); }
}

/* ============================================================
   REDUCED MOTION — hamma harakat o'chadi
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }

  *, *::before, *::after {
    animation-duration: 0.001s !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001s !important;
  }

  .reveal { opacity: 1; transform: none; }
  .preloader { display: none; }
  .hero-cli .cursor { animation: none; }
  .course-card.featured { animation: none; }
  .hero-scroll::after { animation: none; }
}
