/* Entrance animations: banner text fades up on load; content blocks in later sections fade up
   as they scroll into view (atc-reveal.js tags them with data-reveal). Hidden states only apply
   once .atc-reveal-ready is set on <html> and the script has tagged a block, so content stays
   visible without JS. Animating `translate` with fill-mode `backwards` leaves existing hover
   transforms and transitions untouched once the entrance finishes. */
@keyframes atcRevealUp{
  from{opacity:0;translate:0 24px}
  to{opacity:1;translate:none}
}

.home-hero-badge,
.home-hero-copy .wrap>*,
.page-hero>.wrap>*,
.page-hero>.container>*,
.feature-hero>.wrap>*,
.process-banner-inner>*{animation:atcRevealUp .8s cubic-bezier(.2,.7,.2,1) backwards}
.home-hero-copy .wrap>:nth-child(2),
.page-hero>.wrap>:nth-child(2),
.page-hero>.container>:nth-child(2),
.feature-hero>.wrap>:nth-child(2),
.process-banner-inner>:nth-child(2){animation-delay:.1s}
.home-hero-copy .wrap>:nth-child(3),
.page-hero>.wrap>:nth-child(3),
.page-hero>.container>:nth-child(3),
.feature-hero>.wrap>:nth-child(3),
.process-banner-inner>:nth-child(3){animation-delay:.2s}
.page-hero>.wrap>:nth-child(n+4),
.page-hero>.container>:nth-child(n+4),
.feature-hero>.wrap>:nth-child(n+4),
.process-banner-inner>:nth-child(n+4){animation-delay:.3s}

.atc-reveal-ready [data-reveal]:not(.is-visible){opacity:0!important}
.atc-reveal-ready [data-reveal].is-visible{animation:atcRevealUp .7s cubic-bezier(.2,.7,.2,1) backwards}

@media(prefers-reduced-motion:reduce){
  .home-hero-badge,
  .home-hero-copy .wrap>*,
  .page-hero>.wrap>*,
  .page-hero>.container>*,
  .feature-hero>.wrap>*,
  .process-banner-inner>*,
  .atc-reveal-ready [data-reveal].is-visible{animation:none}
}
@media print{
  .atc-reveal-ready [data-reveal]:not(.is-visible){opacity:1!important}
}
