/* STELLAH + CO / V17 / Quiet scroll reveal
   Progressive enhancement: all content stays visible unless JS explicitly queues
   elements that are *below* the current viewport for a single, gentle reveal.
   Does not touch the carousel, lightbox, site header, hover states or navigation. */
.motion-reveal {
  opacity: 0;
  transform: translate3d(0, var(--motion-travel, 18px), 0);
  transition:
    opacity var(--motion-duration, 790ms) cubic-bezier(.22, 1, .36, 1),
    transform var(--motion-duration, 790ms) cubic-bezier(.22, 1, .36, 1);
  transition-delay: var(--motion-delay, 0ms);
  will-change: opacity, transform;
}
.motion-reveal.motion-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}
/* Text shifts are smaller than images; the latter stay understated as well. */
.motion-reveal.motion-copy { --motion-travel: 13px; --motion-duration: 800ms; }
.motion-reveal.motion-card { --motion-travel: 20px; --motion-duration: 860ms; }
.motion-reveal.motion-footer { --motion-travel: 12px; --motion-duration: 850ms; }
@media (prefers-reduced-motion: reduce) {
  .motion-reveal, .motion-reveal.motion-visible {
    opacity: 1 !important; transform: none !important;
    transition: none !important; will-change: auto !important;
  }
}
