/* build:v180:2026-08-17:_build/scroll-reveal.css */
/* ============================================================
   SHARED SCROLL-REVEAL STYLES — same file loaded on every page
   that uses the [data-reveal] animation system. Edit this file,
   not individual page copies, then redeploy. Pairs with
   _build/scroll-reveal.js (the IntersectionObserver logic).
   ============================================================

   Fades/slides an element up as it scrolls into view. Opt-in via
   [data-reveal] on an element — nothing animates unless explicitly
   marked. Wrap a group of siblings (e.g. a row of cards) in
   [data-reveal-group] to get an automatic cascading stagger instead
   of everything animating in at once — first child immediately, each
   next one ~90ms later.

   IMPORTANT — apply [data-reveal] to INNER content wrappers, never to
   a bare <section> (or any element whose own background/padding
   define a page region's layout). A section-level reveal was found in
   production to cause a persistent layout gap on one homepage section
   — the section's own background/spacing were tied to the same
   opacity/transform transition as its content, and something about
   that combination (exact mechanism unconfirmed) left a visible empty
   region. Moving [data-reveal] to each section's inner wrapper div
   (so the section itself always renders immediately and normally,
   and only the content inside it animates) resolved it. Follow that
   pattern for every future use of this system.

   The prefers-reduced-motion block is a hard override: even if JS
   never runs at all, nothing stays invisible for a reduced-motion
   visitor. */
[data-reveal]{
  opacity:0;
  transform:translateY(28px);
  transition:opacity .7s cubic-bezier(.16,.8,.24,1),transform .7s cubic-bezier(.16,.8,.24,1);
  will-change:opacity,transform;
}
[data-reveal].is-revealed{ opacity:1; transform:translateY(0); }
[data-reveal-group] > [data-reveal]:nth-child(1){ transition-delay:0ms; }
[data-reveal-group] > [data-reveal]:nth-child(2){ transition-delay:90ms; }
[data-reveal-group] > [data-reveal]:nth-child(3){ transition-delay:180ms; }
[data-reveal-group] > [data-reveal]:nth-child(4){ transition-delay:270ms; }
[data-reveal-group] > [data-reveal]:nth-child(5){ transition-delay:360ms; }
[data-reveal-group] > [data-reveal]:nth-child(6){ transition-delay:450ms; }
[data-reveal-group] > [data-reveal]:nth-child(7){ transition-delay:540ms; }
[data-reveal-group] > [data-reveal]:nth-child(8){ transition-delay:630ms; }
[data-reveal-group] > [data-reveal]:nth-child(n+9){ transition-delay:630ms; }
@media(prefers-reduced-motion:reduce){
  [data-reveal]{ opacity:1 !important; transform:none !important; transition:none !important; }
}
