/* Fortified Networks, Option 3: scroll-linked reveal gating.

   The default state (no html.motion-on) is the finished, fully visible page.
   Nothing here hides content unless JS has confirmed a real scroll engine is
   running, which is why base.css also carries a
   `html:not(.motion-on) [data-reveal]` reset.

   Deliberately there are no pin-space heights in this build. The previous
   version bought its chapter mechanics with 340vh of runway per section,
   which is exactly where the dead-space voids came from: a section was three
   viewports tall and its content filled one. Every section here is as tall as
   its own content. The chapter feeling comes from a sticky heading column
   (see .svc-head in sections.css) plus continuous, reversible scroll-linked
   reveal, both of which cost zero extra page height.

   js/motion.js writes the actual values every tick via registerTick(); this
   file only owns the resting states and the will-change hints. */

html.motion-on [data-reveal] {
  opacity: 0;
  transform: translateY(28px);
  will-change: transform, opacity;
}

html.motion-on [data-scale-head] {
  transform-origin: left top;
  will-change: transform;
}

/* Reveal travel shortens on small screens, where 28px of lift against a
   single narrow column reads as a jump rather than a settle. */
@media (max-width: 719px) {
  html.motion-on [data-reveal] { transform: translateY(18px); }
}
