/* motion.css — states used by motion.js (GSAP sets the reveal states itself) */
:root { --ease: cubic-bezier(.2, .7, .1, 1); interpolate-size: allow-keywords; }

/* Lenis smooth scroll */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: clip; }

/* Visually hidden, still read by screen readers */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* Split headings: descenders stay visible inside the line masks */
[data-split] .line-mask { padding-bottom: .12em; margin-bottom: -.12em; }

/* Progressive SVG drawing: every path has pathLength="1" */
.gsap [data-draw] :is(path, line, polyline, rect, circle) {
  stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset 2.2s var(--ease) calc(var(--k, 0) * 40ms);
}
.gsap [data-draw].in :is(path, line, polyline, rect, circle) { stroke-dashoffset: 0; }

[data-magnetic]:active { scale: .96; }

details::details-content { height: 0; overflow: hidden; transition: height .45s var(--ease), content-visibility .45s allow-discrete; }
details[open]::details-content { height: auto; }

/* 3D canvases fade in once the first frame is drawn */
.scene { opacity: 0; transition: opacity 1.4s var(--ease); }
.scene.ready { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; transition-delay: 0s !important; }
  html { scroll-behavior: auto !important; }
}
