/* =========================================================
   TriPoint – motion.
   Headings fade up as they enter the viewport. The .tp-reveal
   class is added by JavaScript, so headings stay visible if
   scripts fail or are blocked.
   ========================================================= */

/* Lenis smooth scroll */
html.lenis,
html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto !important}
.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}
.lenis.lenis-stopped{overflow:hidden}

/* The hero is hidden before the browser's first paint, otherwise it is
   painted, then hidden by the script, then revealed - a visible flicker.
   The html.tp-js class is set by a small inline script in the head, so with
   JavaScript off or broken the hero is never hidden in the first place. The
   selectors here are real classes in the served HTML, so a plugin removing
   unused CSS will keep them. */
html.tp-js .tp-hero__title,
html.tp-js .tp-hero__lede,
html.tp-js .tp-hero .kb-buttons-wrap,
html.tp-js .tp-credential-card,
html.tp-js .tribe-events-single-event-title,
html.tp-js .tp-ev-hero .tribe-events-schedule,
html.tp-js .tp-ev-hero .tribe-block__events-link,
html.tp-js .tp-ab-hero__title,
html.tp-js .tp-ab-hero__lede,
html.tp-js .tp-ab-hero .kb-buttons-wrap,
html.tp-js .tp-ab-hero__media{
  opacity:0;
  transform:translateY(14px);
}
@media (prefers-reduced-motion:reduce){
  html.tp-js .tp-hero__title,
  html.tp-js .tp-hero__lede,
  html.tp-js .tp-hero .kb-buttons-wrap,
  html.tp-js .tp-credential-card,
  html.tp-js .tribe-events-single-event-title,
  html.tp-js .tp-ev-hero .tribe-events-schedule,
  html.tp-js .tp-ev-hero .tribe-block__events-link,
  html.tp-js .tp-ab-hero__title,
  html.tp-js .tp-ab-hero__lede,
  html.tp-js .tp-ab-hero .kb-buttons-wrap,
  html.tp-js .tp-ab-hero__media{opacity:1;transform:none}
}

/* Heading and card reveals.
   The hidden and visible states are applied as inline styles by
   tripoint-motion.js, so nothing here is needed for them to work and a plugin
   that strips unused CSS cannot break them. This block is the reduced-motion
   guard and a hook for anyone wanting to style revealed elements. */
@media (prefers-reduced-motion:reduce){
  .tp-reveal{opacity:1 !important;transform:none !important;transition:none !important}
}
