/* Vurvo motion system, styles. Paired with /js/motion.js.
   Elements only start hidden under html.has-motion, which the head snippet
   sets when JS runs and reduced motion is off, and which motion.js removes if
   GSAP never loads, so content is always readable without the animation. */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }

html.has-motion [data-motion-text],
html.has-motion [data-reveal],
html.has-motion [data-reveal-item],
html.has-motion [data-image-reveal] { visibility: hidden; }

.mo-sr { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0; }
.mo-mask { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .06em; margin-bottom: -.06em; }
.mo-word, .mo-line { display: inline-block; }
[data-motion-text] .mo-line { display: block; }
[data-image-reveal] { overflow: hidden; }
[data-parallax-layer] { will-change: transform; }

[data-cursor] {
  position: fixed; left: 0; top: 0; z-index: 9999; pointer-events: none;
  width: 10px; height: 10px; margin: -5px 0 0 -5px; border-radius: 50%;
  background: var(--chalk, #EEF1F5); mix-blend-mode: difference;
  opacity: 0; transition: opacity .3s, width .35s cubic-bezier(.22,1,.36,1), height .35s cubic-bezier(.22,1,.36,1), margin .35s cubic-bezier(.22,1,.36,1);
  display: grid; place-items: center;
  font: 700 10px/1 var(--body, system-ui); letter-spacing: .08em; text-transform: uppercase; color: #000;
}
[data-cursor].is-on { opacity: 1; }
[data-cursor].is-big { width: 64px; height: 64px; margin: -32px 0 0 -32px; }
@media (prefers-reduced-motion: reduce), (pointer: coarse) { [data-cursor] { display: none; } }
