/* motion-lite base styles. Hidden states apply only after the script adds .ml-ready,
   so without JS (or with reduced motion) everything is visible. */
.ml-ready [data-reveal] { transition: opacity .8s cubic-bezier(.2,.7,.2,1), transform .9s cubic-bezier(.2,.7,.2,1), clip-path 1.1s cubic-bezier(.7,0,.2,1), filter .9s ease; will-change: opacity, transform; }
.ml-ready [data-reveal]:not(.is-in) { opacity: 0; }
.ml-ready [data-reveal="up"]:not(.is-in), .ml-ready [data-reveal=""]:not(.is-in) { transform: translate3d(0, 28px, 0); }
.ml-ready [data-reveal="left"]:not(.is-in) { transform: translate3d(-36px, 0, 0); }
.ml-ready [data-reveal="right"]:not(.is-in) { transform: translate3d(36px, 0, 0); }
.ml-ready [data-reveal="scale"]:not(.is-in) { transform: scale(.94); }
.ml-ready [data-reveal="blur"]:not(.is-in) { filter: blur(12px); transform: translate3d(0, 12px, 0); }
.ml-ready [data-reveal="clip"] { opacity: 1 !important; }
.ml-ready [data-reveal="clip"]:not(.is-in) { clip-path: inset(0 0 100% 0); }
.ml-ready [data-reveal="clip"].is-in { clip-path: inset(0 0 0 0); }

.ml-word { display: inline-block; overflow: hidden; vertical-align: bottom; padding-bottom: .06em; }
.ml-word__in { display: inline-block; transition: transform .9s cubic-bezier(.2,.7,.2,1), opacity .9s ease; }
.ml-ready [data-split][data-reveal] { opacity: 1 !important; transform: none !important; }
.ml-ready [data-split]:not(.is-in) .ml-word__in { transform: translate3d(0, 105%, 0); opacity: 0; }

.ml-marquee { display: flex; overflow: hidden; white-space: nowrap; }
.ml-marquee__track { display: flex; flex-shrink: 0; gap: inherit; padding-right: var(--ml-gap, 3rem); animation: ml-marquee var(--ml-speed, 38s) linear infinite; }
@keyframes ml-marquee { to { transform: translate3d(-100%, 0, 0); } }

[data-magnetic] { transition: transform .35s cubic-bezier(.2,.7,.2,1); }

@media (prefers-reduced-motion: reduce) {
  .ml-marquee__track { animation: none; }
  [data-parallax] { transform: none !important; }
}
