/* NaN2 site motion (2026-11-02), with nan2fx.js. Lenis base rules + ShinyText + ClickSpark canvas. */
html.lenis, html.lenis body { height: auto; }
html.lenis { scroll-behavior: auto !important; }	/* theme.css smooth scroll would fight Lenis */
.lenis:not(.lenis-autoToggle).lenis-stopped { overflow: clip; }
.lenis [data-lenis-prevent], .lenis [data-lenis-prevent-wheel], .lenis [data-lenis-prevent-touch] { overscroll-behavior: contain; }
.lenis.lenis-smooth iframe { pointer-events: none; }

html.n2-fx-pre main { opacity: 0; }

.n2-fx-w { display: inline-block; will-change: transform, filter, opacity; }

.n2-fx-shine {
	background: linear-gradient(110deg, var(--n2-shine-base) 42%, #fff3cf 50%, var(--n2-shine-base) 58%);
	background-size: 250% 100%;
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
	animation: n2-fx-shine 5s linear infinite;
}
@keyframes n2-fx-shine { from { background-position: 125% 0; } to { background-position: -125% 0; } }

.n2-fx-sparks { position: fixed; inset: 0; width: 100vw; height: 100vh; pointer-events: none; z-index: 9999; }

@media (prefers-reduced-motion: reduce) {
	.n2-fx-shine { animation: none; -webkit-text-fill-color: currentColor; background: none; }
}
