/* Scroll reveals.
 *
 * Replaces Webflow's stock GSAP reveal (gsap.from('.reveal', {opacity:0, y:50})
 * fired on window load). That version applies its hidden state from JavaScript,
 * so under the deferred-script model GSAP loads seconds late and retroactively
 * yanks already-visible content to opacity:0 before sliding it back: a visible
 * double reveal. Sections already scrolled past never fired at all.
 *
 * Hiding from the first paint in CSS and revealing with an IntersectionObserver
 * (components/site/RevealOnScroll.tsx) gives the same motion with none of that.
 */
.gsapsection .reveal {
  opacity: 0;
  transform: translateY(50px);
  transition: opacity 1s cubic-bezier(0.25, 0.46, 0.45, 0.94),
              transform 1s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.gsapsection .reveal.is-revealed {
  opacity: 1;
  transform: none;
}

/* Without JavaScript nothing would ever add .is-revealed, so show everything. */
@media (prefers-reduced-motion: reduce) {
  .gsapsection .reveal {
    transition-duration: 0.01ms;
  }
}
