/* ============================================================
   CAPITAL BUILD — Motion layer (GSAP hooks)
   Only opacity + transform initial states
   ============================================================ */

/* GSAP owns these — start hidden so no FOUC flash of unstyled content
   when ScrollTrigger hasn't fired yet */
.js-motion .reveal {
  opacity: 0;
  visibility: hidden; /* GSAP will set visibility via clearProps / autoAlpha pattern */
}

/* Prefer autoAlpha-friendly setup: GSAP fromTo uses opacity;
   keep visibility handled in JS. Fallback if JS fails: */
.no-js .reveal,


/* Magnetic CTAs — GPU layer */
.btn-magnetic {
  will-change: transform;
  display: inline-flex; /* ensures transform origin feels correct */
}

/* Lenis: prevent native smooth conflict */
html.lenis,
html.lenis body {
  height: auto;
}

.lenis.lenis-smooth {
  scroll-behavior: auto !important;
}

.lenis.lenis-smooth [data-lenis-prevent] {
  overscroll-behavior: contain;
}

.lenis.lenis-stopped {
  overflow: hidden;
}

/* Optional: hide scrollbar jump during Lenis (desktop only applied via class) */
html.lenis-desktop {
  scrollbar-gutter: stable;
}