/* ---------------------------------------------------------------
   Scroll-triggered section heading reveals.
   Progressive enhancement: nothing is hidden unless the tiny
   scroll-reveal.js runs AND marks headings .scroll-reveal while
   <html> carries .scroll-reveal-ready. No-JS = fully visible.
   Added outside dist/ so no asset rebuild is required. Mirrors
   the child-theme override pattern of this file's siblings.
   --------------------------------------------------------------- */

/* Transition declared on a selector matching BOTH states: the
   before/after computed styles must each define it or the reveal
   would jump instead of animate. */
html.scroll-reveal-ready .scroll-reveal {
  -webkit-transition: opacity 0.75s cubic-bezier(0.16, 1, 0.3, 1),
    -webkit-transform 0.75s cubic-bezier(0.16, 1, 0.3, 1);
  transition: opacity 0.75s cubic-bezier(0.16, 1, 0.3, 1),
    transform 0.75s cubic-bezier(0.16, 1, 0.3, 1);
}

html.scroll-reveal-ready .scroll-reveal:not(.is-revealed) {
  opacity: 0;
  -webkit-transform: translateY(28px);
  -ms-transform: translateY(28px);
  transform: translateY(28px);
}

html.scroll-reveal-ready .scroll-reveal.is-revealed {
  opacity: 1;
  -webkit-transform: translateY(0);
  -ms-transform: translateY(0);
  transform: translateY(0);
}

/* Reduced motion: show immediately, no travel. */
@media (prefers-reduced-motion: reduce) {
  html.scroll-reveal-ready .scroll-reveal {
    opacity: 1 !important;
    -webkit-transform: none !important;
    -ms-transform: none !important;
    transform: none !important;
    -webkit-transition: none !important;
    transition: none !important;
  }
}

/* Print: never hide headings. */
@media print {
  html.scroll-reveal-ready .scroll-reveal {
    opacity: 1 !important;
    -webkit-transform: none !important;
    -ms-transform: none !important;
    transform: none !important;
  }
}