/* Opt-in, one-time editorial reveals. Elements remain visible until JavaScript
   explicitly marks them as motion-ready, so no-JS rendering stays intact. */
.motion-reveal.is-motion-ready:not(.is-visible) {
  opacity: 0;
  transform: translate3d(0, 22px, 0) scale(0.985);
  will-change: opacity, transform;
}

.motion-reveal.is-motion-ready {
  transition:
    opacity 720ms ease,
    transform 980ms cubic-bezier(0.16, 1, 0.3, 1);
  transition-delay: var(--reveal-delay, 0ms);
}

.motion-reveal.is-motion-ready[data-editorial-reveal="image"]:not(.is-visible) {
  transform: translate3d(0, 28px, 0) scale(0.96);
}

.motion-reveal.is-motion-ready[data-editorial-reveal="fade-left"]:not(.is-visible) {
  transform: translate3d(-38px, 12px, 0);
}

.motion-reveal.is-motion-ready[data-editorial-reveal="fade-right"]:not(.is-visible) {
  transform: translate3d(38px, 12px, 0);
}

.motion-reveal.is-motion-ready.is-visible {
  opacity: 1;
  transform: none;
  will-change: auto;
}

@media (prefers-reduced-motion: reduce) {
  .motion-reveal.is-motion-ready,
  .motion-reveal.is-motion-ready:not(.is-visible),
  .motion-reveal.is-motion-ready.is-visible {
    opacity: 1;
    transform: none;
    transition: none;
    will-change: auto;
  }
}
