/* ==========================================================================
   animations.css — pre-animation states for GSAP (assets/js/animations.js)
   --------------------------------------------------------------------------
   Motion is decorative and FAILS OPEN. Every hidden state below applies only
   when all of these hold:
     · <html> has .js            (added by the inline script in <head>)
     · the visitor allows motion (prefers-reduced-motion: no-preference)
     · <html> does NOT have .reveal-all
   .reveal-all is added by animations.js when GSAP is missing, and by a
   3.5-second safety timer in <head> if animations.js never runs at all.
   ========================================================================== */

@media (prefers-reduced-motion: no-preference) {
  .js:not(.reveal-all) [data-reveal] { opacity: 0; transform: translateY(28px); }

  .js:not(.reveal-all) .hero__kicker,
  .js:not(.reveal-all) .hero__lede,
  .js:not(.reveal-all) .hero__actions,
  .js:not(.reveal-all) .hero__values li,
  .js:not(.reveal-all) .page-hero__copy > * { opacity: 0; }
  .js:not(.reveal-all) .hero__line-inner { transform: translateY(108%); }

  .js:not(.reveal-all) .elevation__drawing .ln,
  .js:not(.reveal-all) .mini-elev .ln { stroke-dasharray: 1; stroke-dashoffset: 1; }
  .js:not(.reveal-all) .elevation__photo { clip-path: inset(0 100% 0 0); }
  .js:not(.reveal-all) .elevation__drawing .callout,
  .js:not(.reveal-all) .elevation__drawing .elevation__dim { opacity: 0; }
  .js:not(.reveal-all) .process { --progress: 0; }
}
