/* ------------------------------------------------------------------
   Sure-Can — scroll reveal
   Subtle rise + fade for sections and their children.
   Nothing here applies until reveal.js adds .sc-reveal-on to <html>,
   so content stays visible if JS fails or is blocked.
   ------------------------------------------------------------------ */

:root {
  --sc-reveal-distance: 20px;
  --sc-reveal-duration: 900ms;
  --sc-reveal-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
}

.sc-reveal-on [data-sc-reveal] {
  opacity: 0;
  transform: translate3d(0, var(--sc-reveal-distance), 0);
  transition:
    opacity var(--sc-reveal-duration) var(--sc-reveal-ease),
    transform var(--sc-reveal-duration) var(--sc-reveal-ease);
  transition-delay: var(--sc-reveal-delay, 0ms);
  will-change: opacity, transform;
}

.sc-reveal-on [data-sc-reveal].is-revealed {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

/* Drop the compositor hint once the reveal has finished. */
.sc-reveal-on [data-sc-reveal].is-reveal-done {
  will-change: auto;
  transition: none;
}

/* Blocks Spectra already animates (data-aos) are left entirely alone —
   reveal.js skips them, and nothing here touches them, so Spectra's own
   animation keeps working. */

/* Trust / spec strip: the cards are auto-width grid items, so a card
   whose copy is short enough not to fill its column shrinks and centres
   instead of filling it. Forcing the fill keeps the row even. */
.sc-trust-item,
.sc-spec-step {
  width: 100%;
}

/* Accessibility: honour the OS "reduce motion" setting. */
@media (prefers-reduced-motion: reduce) {
  .sc-reveal-on [data-sc-reveal] {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* Printing should never inherit a mid-animation state. */
@media print {
  .sc-reveal-on [data-sc-reveal] {
    opacity: 1 !important;
    transform: none !important;
  }
}
