/* Hide targets before JS runs (inline head script adds html.js-scroll-reveal) */
html.js-scroll-reveal:not(.scroll-reveal-ready) .home-search-content > *,
html.js-scroll-reveal:not(.scroll-reveal-ready) .section2-card-link,
html.js-scroll-reveal:not(.scroll-reveal-ready) .section3 > h1,
html.js-scroll-reveal:not(.scroll-reveal-ready) .working-steps-section > .step1,
html.js-scroll-reveal:not(.scroll-reveal-ready) .working-steps-section > .step2,
html.js-scroll-reveal:not(.scroll-reveal-ready) .working-steps-section > .step3,
html.js-scroll-reveal:not(.scroll-reveal-ready) .section4-left,
html.js-scroll-reveal:not(.scroll-reveal-ready) .section4-right > h2,
html.js-scroll-reveal:not(.scroll-reveal-ready) .section4-right > h3,
html.js-scroll-reveal:not(.scroll-reveal-ready) .section4-right > h5,
html.js-scroll-reveal:not(.scroll-reveal-ready) .whatsapp-number-form,
html.js-scroll-reveal:not(.scroll-reveal-ready) .download-button-area,
html.js-scroll-reveal:not(.scroll-reveal-ready) .section5 > h1,
html.js-scroll-reveal:not(.scroll-reveal-ready) .section5 > img,
html.js-scroll-reveal:not(.scroll-reveal-ready) .search-page-hero-text,
html.js-scroll-reveal:not(.scroll-reveal-ready) .search-page-box,
html.js-scroll-reveal:not(.scroll-reveal-ready) .search-results-header,
html.js-scroll-reveal:not(.scroll-reveal-ready) .search-results-body,
html.js-scroll-reveal:not(.scroll-reveal-ready) .footer-main-section > *,
html.js-scroll-reveal:not(.scroll-reveal-ready) .footer-bottom-section {
  opacity: 0;
  transform: translateY(32px);
}

.scroll-reveal {
  opacity: 0;
  transform: translateY(32px);
  transition:
    opacity 0.65s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.65s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--reveal-delay, 0ms);
  will-change: opacity, transform;
}

.scroll-reveal.scroll-revealed {
  opacity: 1;
  transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
  html.js-scroll-reveal:not(.scroll-reveal-ready) .home-search-content > *,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .section2-card-link,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .section3 > h1,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .working-steps-section > .step1,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .working-steps-section > .step2,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .working-steps-section > .step3,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .section4-left,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .section4-right > h2,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .section4-right > h3,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .section4-right > h5,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .whatsapp-number-form,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .download-button-area,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .section5 > h1,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .section5 > img,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .search-page-hero-text,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .search-page-box,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .search-results-header,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .search-results-body,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .footer-main-section > *,
  html.js-scroll-reveal:not(.scroll-reveal-ready) .footer-bottom-section,
  .scroll-reveal {
    opacity: 1;
    transform: none;
    transition: none;
    will-change: auto;
  }
}
