/* Every entrance resolves in the first 14% of one viewport of travel.
 * Stagger is capped at two steps; the shared engine supplies --p without timers.
 * Defaults, print and reduced motion retain complete, naturally flowing copy.
 */
.reveal-wrap { display: grid; min-width: 0; }
.formats > .reveal-wrap { display: inline-grid; }
.reveal-wrap[data-scroll-reveal][data-scroll-ready] { opacity: 1; transition: none; }
.reveal-line { display: block; }
html[lang="th"] h2.site-reveal { line-height: 1.5; }

@media (prefers-reduced-motion: no-preference) {
  .reveal-wrap[data-scroll-ready] > .site-reveal,
  .reveal-wrap[data-scroll-ready] > .site-reveal > .reveal-line {
    --reveal-progress: clamp(0, calc(var(--p) * 10 - var(--reveal-step, 0) * .2), 1);
    --reveal-travel: 12px;
    opacity: var(--reveal-progress);
    transform: translateY(calc((1 - var(--reveal-progress)) * var(--reveal-travel)));
    transition: none;
  }
  .reveal-wrap[data-scroll-ready] > .site-reveal[data-reveal-lines] {
    opacity: 1;
    transform: none;
  }
  .reveal-wrap[data-scroll-ready][data-scroll-resolved] > .site-reveal,
  .reveal-wrap[data-scroll-ready][data-scroll-resolved] > .site-reveal > .reveal-line {
    --reveal-progress: 1;
  }
}
@media (max-width: 600px) {
  .reveal-wrap[data-scroll-ready] > .site-reveal,
  .reveal-wrap[data-scroll-ready] > .site-reveal > .reveal-line { --reveal-travel: 6px; }
}
@media (prefers-reduced-motion: reduce), print {
  .reveal-wrap[data-scroll-act][data-scroll-ready] > .site-reveal,
  .reveal-wrap[data-scroll-act][data-scroll-ready] > .site-reveal > .reveal-line {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .reveal-line { display: inline; }
}
