/* Scroll reveal helper (data-reveal="slide-up") */
[data-reveal] {
  --camemat-reveal-distance: 64px;
  --camemat-reveal-duration: 800ms;
  --camemat-reveal-delay: 0ms;
}

/* Prevent initial paint flash before JS marks elements as "ready". */
html.camemat-reveal-js [data-reveal]:not(.is-reveal-ready) {
  opacity: 0;
  translate: 0 var(--camemat-reveal-distance);
  transition: none;
}

[data-reveal].is-reveal-ready {
  opacity: 0;
  transition:
    opacity var(--camemat-reveal-duration) ease var(--camemat-reveal-delay),
    translate var(--camemat-reveal-duration) cubic-bezier(0.2, 0.8, 0.2, 1)
      var(--camemat-reveal-delay);
  translate: 0 var(--camemat-reveal-distance);
  will-change: opacity, translate;
}

[data-reveal].is-reveal-instant {
  transition: none !important;
}

[data-reveal].is-reveal-ready.is-revealed {
  opacity: 1;
  translate: 0 0;
}

@media (prefers-reduced-motion: reduce) {
  html.camemat-reveal-js [data-reveal]:not(.is-reveal-ready) {
    opacity: 1;
    translate: none;
    transition: none;
  }

  [data-reveal].is-reveal-ready {
    opacity: 1;
    translate: none;
    transition: none;
  }
}

/* Fallback for older browsers (use transform if translate isn’t supported). */
@supports not (translate: 0 0) {
  html.camemat-reveal-js [data-reveal]:not(.is-reveal-ready) {
    transform: translate3d(0, var(--camemat-reveal-distance), 0);
    transition: none;
  }

  [data-reveal].is-reveal-ready {
    transform: translate3d(0, var(--camemat-reveal-distance), 0);
    transition:
      opacity var(--camemat-reveal-duration) ease var(--camemat-reveal-delay),
      transform var(--camemat-reveal-duration) cubic-bezier(0.2, 0.8, 0.2, 1)
        var(--camemat-reveal-delay);
    will-change: opacity, transform;
  }

  [data-reveal].is-reveal-instant {
    transition: none !important;
  }

  [data-reveal].is-reveal-ready.is-revealed {
    transform: translate3d(0, 0, 0);
  }

  @media (prefers-reduced-motion: reduce) {
    html.camemat-reveal-js [data-reveal]:not(.is-reveal-ready) {
      transform: none;
    }

    [data-reveal].is-reveal-ready {
      transform: none;
    }
  }
}
