/* Motion is opt-in after the observer is ready; content stays readable without JS. */
@media (prefers-reduced-motion: no-preference) {
  .motion-ready .motion-reveal {
    opacity: 0;
    transform: translate3d(0, 22px, 0);
    transition: opacity .75s ease, transform .85s cubic-bezier(.2,.7,.2,1);
    transition-delay: var(--motion-delay, 0ms);
  }
  .motion-ready .motion-reveal.motion-visible {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }

  .motion-ready .motion-image {
    opacity: 0;
    transform: translate3d(0, 26px, 0) scale(1.035);
    transition: opacity 1.05s ease, transform 1.2s cubic-bezier(.2,.7,.2,1);
  }
  .motion-ready .motion-image.motion-visible {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
  }

  .motion-ready .motion-rule {
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform .7s cubic-bezier(.22,.68,0,1);
  }
  .motion-ready .motion-rule.motion-visible { transform: scaleX(1); }
}

@media (prefers-reduced-motion: reduce) {
  .motion-reveal, .motion-image, .motion-rule {
    opacity: 1 !important;
    transform: none !important;
    clip-path: none !important;
    transition: none !important;
  }
}
