/* Homepage hero intro. The original Webflow IX2 "page load" animation for the
   hero was JS/rAF-driven on the main thread, so the synchronous burst that runs
   right after it starts (webflow.js module init, Lottie JSON parsing, the
   deferred custom scripts) starved its rAF loop and froze it mid-slide for
   ~1.3s - a visible pause. This replaces it with a compositor-driven CSS
   animation, which cannot be frozen by main-thread jank. The six hero
   load-targets carry `hero-intro` + a `--hero-d` stagger delay (their inline
   opacity:0 and data-w-id load bindings were removed so IX2 no longer drives
   them - one animation system, on the compositor). */

@keyframes heroIntro {
  from { opacity: 0; transform: translateY(100px); }
  to   { opacity: 1; transform: translateY(0); }
}

.hero-intro {
  /* fill:both -> hidden (opacity:0, shifted) through the delay, holds end state
     after, so there is never a flash of unstyled/visible content. */
  animation: heroIntro 1.4s cubic-bezier(0.16, 0.84, 0.44, 1) both;
  animation-delay: var(--hero-d, 0s);
  will-change: opacity, transform;
}

@media (prefers-reduced-motion: reduce) {
  .hero-intro { animation: none; opacity: 1; transform: none; }
}
