/**
 * Haris Widgets — shared scroll animation.
 *
 * Elements carry `.haris-anim`; the widget root carries `.haris-anim-on`.
 * The script adds `.haris-anim-ready` to the root, so without JavaScript
 * nothing is ever hidden.
 */

.haris-anim-on {
	--haris-anim-dist: 26px;
	--haris-anim-dur: 0.75s;
	--haris-anim-delay: 0s;
	--haris-anim-stagger: 0.12s;
	--haris-anim-ease: cubic-bezier(0.22, 1, 0.36, 1);
	--haris-anim-x: 0px;
	--haris-anim-y: 26px;
	--haris-anim-scale: 1;
	--haris-anim-blur: 0px;
}

.haris-anim-on.haris-anim-ready .haris-anim {
	opacity: 0;
	transform: translate3d(var(--haris-anim-x, 0), var(--haris-anim-y, 0), 0)
		scale(var(--haris-anim-scale, 1));
	filter: blur(var(--haris-anim-blur, 0px));
	transition: opacity var(--haris-anim-dur) var(--haris-anim-ease),
		transform var(--haris-anim-dur) var(--haris-anim-ease),
		filter var(--haris-anim-dur) var(--haris-anim-ease);
	transition-delay: calc(
		var(--haris-anim-delay, 0s) +
			var(--haris-anim-stagger, 0s) * var(--haris-anim-index, 0)
	);
	will-change: opacity, transform;
}

.haris-anim-on.haris-anim-ready .haris-anim.is-in {
	opacity: 1;
	transform: none;
	filter: none;
}

/* Replaying (Animate Only Once = off) should not re-stagger on the way out. */
.haris-anim-on.haris-anim-ready .haris-anim:not(.is-in).was-in {
	transition-delay: 0s;
}

@media (prefers-reduced-motion: reduce) {
	.haris-anim-on.haris-anim-ready .haris-anim {
		opacity: 1 !important;
		transform: none !important;
		filter: none !important;
		transition: none !important;
	}
}
