/* ============================================================
   ANIMATIONS — Scroll reveal + minimal keyframes
   ============================================================ */

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

@keyframes scaleIn {
  from { opacity: 0; transform: scale(0.9); }
  to   { opacity: 1; transform: scale(1); }
}


/* --- Scroll reveal base --- */
.reveal {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.5s var(--ease-out), transform 0.5s var(--ease-out);
}

.reveal.fade-left {
  transform: translateX(-20px);
}

.reveal.fade-right {
  transform: translateX(20px);
}

.reveal.scale-in {
  transform: scale(0.95);
}

.reveal.visible {
  opacity: 1;
  transform: translateY(0) translateX(0) scale(1);
}


/* --- Stagger children --- */
.stagger-children .reveal:nth-child(1)  { transition-delay: 0ms; }
.stagger-children .reveal:nth-child(2)  { transition-delay: 60ms; }
.stagger-children .reveal:nth-child(3)  { transition-delay: 120ms; }
.stagger-children .reveal:nth-child(4)  { transition-delay: 180ms; }
.stagger-children .reveal:nth-child(5)  { transition-delay: 240ms; }
.stagger-children .reveal:nth-child(6)  { transition-delay: 300ms; }
.stagger-children .reveal:nth-child(7)  { transition-delay: 360ms; }
.stagger-children .reveal:nth-child(8)  { transition-delay: 420ms; }
.stagger-children .reveal:nth-child(9)  { transition-delay: 480ms; }
.stagger-children .reveal:nth-child(10) { transition-delay: 540ms; }


/* --- Reduced motion --- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  .reveal { opacity: 1; transform: none; }
}
