/* Scroll-triggered slide-in animations. Sections fade up + reveal as they
   enter the viewport. Uses IntersectionObserver (see scroll-animations.js).
   Respects `prefers-reduced-motion`: skips animation, content shows instantly. */

/* Safety valve: the hide rules below (and the [data-reveal] copy compiled
   into the hashed styles bundle) only engage after scroll-animations.js
   tags <html> with .sa-ready. If the script 404s, throws, or never runs,
   no content can be stuck at opacity:0. */
html:not(.sa-ready) [data-reveal],
html:not(.sa-ready) [data-reveal-stagger] > * {
  opacity: 1 !important;
  transform: none !important;
}

@media (prefers-reduced-motion: no-preference) {
  [data-reveal] {
    opacity: 0;
    transform: translateY(24px);
    transition:
      opacity 320ms cubic-bezier(0.22, 0.61, 0.36, 1),
      transform 380ms cubic-bezier(0.22, 0.61, 0.36, 1);
    will-change: opacity, transform;
  }
  [data-reveal="left"]  { transform: translateX(-32px); }
  [data-reveal="right"] { transform: translateX(32px); }
  [data-reveal="zoom"]  { transform: scale(0.97); }

  [data-reveal].is-revealed {
    opacity: 1;
    transform: none;
  }

  /* Stagger children when the parent reveals — kids cascade in. */
  [data-reveal-stagger] > * {
    opacity: 0;
    transform: translateY(20px);
    transition:
      opacity 300ms cubic-bezier(0.22, 0.61, 0.36, 1),
      transform 340ms cubic-bezier(0.22, 0.61, 0.36, 1);
  }
  [data-reveal-stagger].is-revealed > * { opacity: 1; transform: none; }
  [data-reveal-stagger].is-revealed > *:nth-child(1) { transition-delay: 40ms; }
  [data-reveal-stagger].is-revealed > *:nth-child(2) { transition-delay: 80ms; }
  [data-reveal-stagger].is-revealed > *:nth-child(3) { transition-delay: 120ms; }
  [data-reveal-stagger].is-revealed > *:nth-child(4) { transition-delay: 160ms; }
  [data-reveal-stagger].is-revealed > *:nth-child(5) { transition-delay: 200ms; }
  [data-reveal-stagger].is-revealed > *:nth-child(6) { transition-delay: 240ms; }
  [data-reveal-stagger].is-revealed > *:nth-child(7) { transition-delay: 280ms; }
  [data-reveal-stagger].is-revealed > *:nth-child(n+8) { transition-delay: 320ms; }
}
