/* =========================================================================
   app.css — page-level glue: intro veil, reveal states, section rhythm.
   ========================================================================= */

/* Intro veil — wipes up on load (PageTransition feel) */
.page-transition {
  position: fixed; inset: 0; z-index: 999;
  background: var(--surface-dark);
  transform-origin: top;
}
body:not(.is-ready) { /* keep content hidden until JS boots to avoid FOUC flash */
  /* nothing drastic — fonts swap in; veil covers the load */
}

/* Reveal-on-scroll opt-in (main.js drives .reveal -> .is-in) */
.reveal { will-change: transform, opacity; }
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1 !important; transform: none !important; }
  .page-transition { display: none; }
}

/* Page sits below the fixed navbar; sections manage their own padding.
   main is a plain flow container. */
main { display: block; position: relative; z-index: 1; }

/* Selection */
::selection { background: var(--orange); color: #fff; }

/* Reusable section padding helper if a section wants the standard rhythm */
.section-pad { padding-top: var(--120-64); padding-bottom: var(--120-64); }

/* Smooth-scroll: when Lenis is active it adds .lenis to <html> */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }
