/* ─── Entrance Animation (CSS-only, no JS required) ─── */
@keyframes revealUp {
  from {
    opacity: 0;
    transform: translateY(24px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (prefers-reduced-motion: no-preference) {
  .reveal {
    opacity: 0;
    animation: revealUp 0.9s var(--ease-out) 0.15s both;
  }

  /* Stagger delays — applied to children of the same parent via nth-child */
  .reveal:nth-child(2)  { animation-delay: 0.25s; }
  .reveal:nth-child(3)  { animation-delay: 0.35s; }
  .reveal:nth-child(4)  { animation-delay: 0.45s; }
  .reveal:nth-child(5)  { animation-delay: 0.55s; }
  .reveal:nth-child(6)  { animation-delay: 0.65s; }
  .reveal:nth-child(7)  { animation-delay: 0.75s; }
  .reveal:nth-child(8)  { animation-delay: 0.85s; }
  .reveal:nth-child(9)  { animation-delay: 0.95s; }

  /* Manual stagger classes for cases where nth-child doesn't apply */
  .reveal-delay-1 { animation-delay: 0.25s; }
  .reveal-delay-2 { animation-delay: 0.40s; }
  .reveal-delay-3 { animation-delay: 0.55s; }
  .reveal-delay-4 { animation-delay: 0.70s; }
}

/* If user prefers reduced motion, show everything immediately */
@media (prefers-reduced-motion: reduce) {
  .reveal {
    opacity: 1;
    transform: none;
  }
}

/* For print: show everything regardless */
@media print {
  .reveal {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }
}
