/* Scroll reveal and hero entrance animations */
.reveal.d1 {
  transition-delay: 0.08s;
}
.reveal.d2 {
  transition-delay: 0.16s;
}
.reveal.d3 {
  transition-delay: 0.24s;
}

/* hero entrance via .preload-anim class on <html> — base state is VISIBLE so content
never strands if JS/animations don't run (capture, print, reduced-motion) */
.he {
  transition:
    opacity 0.85s var(--ease),
    transform 0.85s var(--ease);
}
.he.a1 {
  transition-delay: 0.08s;
}
.he.a2 {
  transition-delay: 0.2s;
}
.he.a3 {
  transition-delay: 0.32s;
}
.he.a4 {
  transition-delay: 0.44s;
}
.hero-media.he {
  transition-duration: 1s;
}
/* hidden state slides/scales but stays opaque, so content is never invisible
even if the transition is frozen by a capture/print renderer */
html.preload-anim .he {
  transform: translateY(30px);
}
html.preload-anim .hero-media.he {
  transform: translateY(46px) scale(0.92);
}
