/**
 * Site-wide scroll-reveal motion system — marketing pages only.
 * Progressive enhancement: elements are only ever hidden once scroll-reveal.js
 * has confirmed IntersectionObserver support and armed them (added
 * .lg-reveal-armed). No-JS / unsupported-browser visitors see the page
 * exactly as before — nothing is hidden by default.
 * prefers-reduced-motion disables all motion outright (see bottom).
 */

/* ── Section / card reveal ─────────────────────────────────────────── */
/*
 * Split into two classes on purpose. If a single rule both sets the hidden
 * state (opacity/transform) AND defines the transition, adding that class to
 * an element that starts fully visible makes the browser animate FROM
 * visible TO hidden (a visible flash-then-fade-out) instead of snapping
 * straight to hidden. scroll-reveal.js adds .lg-reveal-armed first (instant,
 * no transition yet) and .lg-reveal-ready on the next frame (transition
 * turns on with nothing changing, so it's a no-op) — only then does adding
 * .lg-is-visible actually animate.
 */
.lg-reveal-armed {
  opacity: 0;
  transform: translateY(30px);
  will-change: opacity, transform;
}
.lg-reveal-armed.lg-reveal-ready {
  transition:
    opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1),
    transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
  transition-delay: calc(var(--lg-reveal-index, 0) * 90ms);
}
.lg-reveal-armed.lg-is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Scale-in variant — used on quote cards / stat tiles for a touch more weight */
.lg-reveal-armed.lg-reveal--scale {
  transform: translateY(22px) scale(0.96);
}
.lg-reveal-armed.lg-reveal--scale.lg-is-visible {
  transform: translateY(0) scale(1);
}

/* ── Hero / large image parallax drift ─────────────────────────────── */
.lg-parallax {
  transform: translateY(var(--lg-parallax-y, 0px));
  will-change: transform;
}

/* ── Scroll progress bar ────────────────────────────────────────────── */
#lg-scroll-progress {
  position: fixed;
  top: 0;
  left: 0;
  height: 3px;
  width: 0%;
  background: linear-gradient(90deg, #055e22 0%, #c4a35a 100%);
  z-index: 9999;
  pointer-events: none;
}

/* ── Accessibility: no motion for visitors who asked for it ─────────── */
@media (prefers-reduced-motion: reduce) {
  .lg-reveal-armed {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .lg-parallax {
    transform: none !important;
  }
  #lg-scroll-progress {
    display: none !important;
  }
}
