/* =========================================================================
   Curnutt & Hafer — Scroll & Reveal Animations
   Lightweight IntersectionObserver-driven reveals (no external lib needed)
   ========================================================================= */

/* Reveal states apply ONLY when JS is active (html.js). Without JS, content is
   fully visible — progressive enhancement, never hide content behind a script. */
html.js [data-reveal] {
  opacity: 0;
  transform: translateY(34px);
  transition: opacity .7s var(--ease), transform .7s var(--ease);
  will-change: opacity, transform;
}
html.js [data-reveal].in { opacity: 1; transform: none; }

html.js [data-reveal="left"]  { transform: translateX(-40px); }
html.js [data-reveal="right"] { transform: translateX(40px); }
html.js [data-reveal="zoom"]  { transform: scale(.92); }
html.js [data-reveal="left"].in,
html.js [data-reveal="right"].in,
html.js [data-reveal="zoom"].in { transform: none; }

/* Stagger children */
html.js [data-reveal-stagger] > * {
  opacity: 0; transform: translateY(28px);
  transition: opacity .6s var(--ease), transform .6s var(--ease);
}
html.js [data-reveal-stagger].in > * { opacity: 1; transform: none; }
[data-reveal-stagger].in > *:nth-child(1) { transition-delay: .05s; }
[data-reveal-stagger].in > *:nth-child(2) { transition-delay: .13s; }
[data-reveal-stagger].in > *:nth-child(3) { transition-delay: .21s; }
[data-reveal-stagger].in > *:nth-child(4) { transition-delay: .29s; }
[data-reveal-stagger].in > *:nth-child(5) { transition-delay: .37s; }
[data-reveal-stagger].in > *:nth-child(6) { transition-delay: .45s; }
[data-reveal-stagger].in > *:nth-child(7) { transition-delay: .53s; }
[data-reveal-stagger].in > *:nth-child(8) { transition-delay: .61s; }
[data-reveal-stagger].in > *:nth-child(9) { transition-delay: .69s; }

/* Hero text intro (Swiper slide or single video hero) */
.swiper-slide-active .hero-slide__inner > *,
.hero--single .hero-slide__inner > * { animation: heroUp .8s var(--ease) both; }
.swiper-slide-active .hero-slide__inner > *:nth-child(1),
.hero--single .hero-slide__inner > *:nth-child(1) { animation-delay: .2s; }
.swiper-slide-active .hero-slide__inner > *:nth-child(2),
.hero--single .hero-slide__inner > *:nth-child(2) { animation-delay: .35s; }
.swiper-slide-active .hero-slide__inner > *:nth-child(3),
.hero--single .hero-slide__inner > *:nth-child(3) { animation-delay: .5s; }
.swiper-slide-active .hero-slide__inner > *:nth-child(4),
.hero--single .hero-slide__inner > *:nth-child(4) { animation-delay: .65s; }
@keyframes heroUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: none; } }

@media (prefers-reduced-motion: reduce) {
  [data-reveal], [data-reveal-stagger] > * { opacity: 1 !important; transform: none !important; transition: none !important; }
  .swiper-slide-active .hero-slide__inner > * { animation: none !important; }
  html { scroll-behavior: auto; }
}
