/* Sitewide Scroll Reveal — front-end animation states. */
html.swsr-page-transitions body {
	opacity: 0;
}

html.swsr-page-transitions body.swsr-page-ready {
	opacity: 1;
	transition: opacity 320ms cubic-bezier(0.22, 1, 0.36, 1);
}

html.swsr-page-transitions body.swsr-page-leaving {
	opacity: 0;
	pointer-events: none;
}

.swsr-reveal {
	--swsr-duration: 700ms;
	--swsr-distance: 28px;
	--swsr-delay: 0ms;
	opacity: 0;
	transform: translate3d(0, var(--swsr-distance), 0);
	transition:
		opacity var(--swsr-duration) cubic-bezier(0.22, 1, 0.36, 1) var(--swsr-delay),
		transform var(--swsr-duration) cubic-bezier(0.22, 1, 0.36, 1) var(--swsr-delay);
	will-change: opacity, transform;
}

.swsr-effect-fade.swsr-reveal {
	transform: none;
}

.swsr-effect-zoom.swsr-reveal {
	transform: scale(0.96);
}

.swsr-effect-slide-left.swsr-reveal {
	transform: translate3d(calc(var(--swsr-distance) * -1), 0, 0);
}

.swsr-effect-slide-right.swsr-reveal {
	transform: translate3d(var(--swsr-distance), 0, 0);
}

.swsr-reveal.swsr-visible {
	opacity: 1;
	transform: none;
	will-change: auto;
}

/* Elementor/Swiper duplicates slides. Carousel content must never inherit a hidden reveal state. */
.elementor-widget-carousel .swsr-reveal,
.elementor-widget-image-carousel .swsr-reveal,
.elementor-widget-media-carousel .swsr-reveal,
.elementor-widget-testimonial-carousel .swsr-reveal,
.elementor-widget-loop-carousel .swsr-reveal,
.elementor-widget-nested-carousel .swsr-reveal,
.elementor-swiper .swsr-reveal,
.swiper .swsr-reveal,
.swiper-slide.swsr-reveal {
	opacity: 1 !important;
	transform: none !important;
	transition: none !important;
}

/* Footer content must remain visible because the page may end before its reveal threshold is reached. */
footer.swsr-reveal,
footer .swsr-reveal,
.elementor-location-footer.swsr-reveal,
.elementor-location-footer .swsr-reveal,
[data-elementor-type="footer"].swsr-reveal,
[data-elementor-type="footer"] .swsr-reveal {
	opacity: 1 !important;
	transform: none !important;
	transition: none !important;
}

@media (prefers-reduced-motion: reduce) {
	html.swsr-page-transitions body,
	html.swsr-page-transitions body.swsr-page-ready,
	html.swsr-page-transitions body.swsr-page-leaving {
		opacity: 1;
		transition: none;
	}

	.swsr-reveal,
	.swsr-reveal.swsr-visible {
		opacity: 1;
		transform: none;
		transition: none;
	}
}

@media print {
	.swsr-reveal,
	.swsr-reveal.swsr-visible {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
	}
}
