/* Nested Slider Stylesheet */

.elementor-widget-eustis-nested-slider {
	position: relative;
	width: 100%;
}

.eustis-nested-slider,
.elementor-widget-eustis-nested-slider .e-n-carousel {
	position: relative;
	width: 100%;
	overflow: hidden;
	list-style: none;
	padding: 0;
	z-index: 1;
	display: flex;
}

.eustis-nested-slider__wrapper,
.elementor-widget-eustis-nested-slider .swiper-wrapper {
	position: relative;
	width: 100%;
	height: 100%;
	z-index: 1;
	display: flex;
	transition-property: transform;
	box-sizing: content-box;
}

.eustis-nested-slider__slide,
.elementor-widget-eustis-nested-slider .swiper-slide {
	flex-shrink: 0;
	width: 100%;
	height: 100%;
	position: relative;
	transition-property: transform;
	display: flex;
	box-sizing: border-box;
}

/* Ensure child Container fills the slide */
:where(.eustis-nested-slider__slide > .e-con) {
	width: 100%;
	min-height: 250px;
	box-sizing: border-box;
}

/* Arrows Navigation */
.eustis-slider-arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%) var(--eustis-arrow-move, translateX(0));
	z-index: 10;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: all 0.3s ease;
	user-select: none;
}

.eustis-slider-prev {
	left: 15px;
	--eustis-arrow-dir: -1;
}

.eustis-slider-next {
	right: 15px;
	--eustis-arrow-dir: 1;
}

/* Keeps Swiper's "not enough slides" hiding above the Arrows Visibility control. */
.elementor-widget-eustis-nested-slider .eustis-slider-arrow.swiper-button-lock {
	display: none;
}

/* Arrow hover animations (Hover Animation control adds eustis-arrow-hover-*). */
.eustis-arrow-hover-grow .eustis-slider-arrow:is(:hover, :focus-visible) {
	--eustis-arrow-move: scale(1.15);
}

.eustis-arrow-hover-shrink .eustis-slider-arrow:is(:hover, :focus-visible) {
	--eustis-arrow-move: scale(0.9);
}

.eustis-arrow-hover-push .eustis-slider-arrow:is(:hover, :focus-visible) {
	--eustis-arrow-move: translateX(calc(var(--eustis-arrow-dir) * 5px));
}

.eustis-arrow-hover-float .eustis-slider-arrow:is(:hover, :focus-visible) {
	--eustis-arrow-move: translateY(-4px);
}

.eustis-arrow-hover-glow .eustis-slider-arrow:is(:hover, :focus-visible) {
	box-shadow: 0 0 0 6px color-mix(in srgb, currentColor 30%, transparent);
}

.eustis-arrow-hover-nudge .eustis-slider-arrow:is(:hover, :focus-visible) {
	animation: eustis-arrow-nudge 0.9s ease-in-out infinite;
}

.eustis-arrow-hover-pulse .eustis-slider-arrow:is(:hover, :focus-visible) {
	animation: eustis-arrow-pulse 1s ease-in-out infinite;
}

@keyframes eustis-arrow-nudge {
	0%, 100% {
		transform: translateY(-50%) translateX(0);
	}
	50% {
		transform: translateY(-50%) translateX(calc(var(--eustis-arrow-dir) * 6px));
	}
}

@keyframes eustis-arrow-pulse {
	0%, 100% {
		transform: translateY(-50%) scale(1);
	}
	50% {
		transform: translateY(-50%) scale(1.12);
	}
}

.eustis-slider-arrow.swiper-button-disabled {
	opacity: 0.35;
	cursor: not-allowed;
	pointer-events: none;
}

/* Pagination */
.eustis-slider-pagination {
	position: absolute;
	text-align: center;
	transition: 0.3s opacity;
	transform: translate3d(0, 0, 0);
	z-index: 10;
	width: 100%;
	left: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
}

/* The slider is as tall as its tallest slide; the JS lifts the dots onto a shorter shown slide. */
.eustis-nested-slider > .eustis-slider-pagination {
	transform: translate3d(0, calc(-1 * var(--eustis-pagination-lift, 0px)), 0);
	transition: 0.3s opacity, 0.3s transform;
}

.eustis-slider-pagination .swiper-pagination-bullet {
	display: inline-block;
	border-radius: 50%;
	cursor: pointer;
	transition: all 0.3s ease;
	opacity: 1;
}

.eustis-slider-pagination .swiper-pagination-bullet-active {
	transform: scale(1.25);
}

/* Pill design: inactive dots stay round, the active one stretches into a pill. */
.eustis-dots-pill .eustis-slider-pagination .swiper-pagination-bullet {
	border-radius: 999px;
	transition: width 0.3s ease, background-color 0.3s ease, opacity 0.3s ease;
}

.eustis-dots-pill .eustis-slider-pagination .swiper-pagination-bullet-active {
	transform: none;
}

/* Show the slide selected in the Elementor sidebar. */
.eustis-slider-editing,
.eustis-slider-editing > .eustis-nested-slider__wrapper {
	display: block;
	overflow: visible;
	height: auto;
}

.eustis-slider-editing > .eustis-nested-slider__wrapper > .eustis-nested-slider__slide {
	display: none;
	height: auto;
}

.eustis-slider-editing > .eustis-nested-slider__wrapper > .eustis-slide-selected {
	display: flex;
}

.elementor-widget-eustis-nested-slider .eustis-slider-editing > .eustis-slider-arrow,
.elementor-widget-eustis-nested-slider .eustis-slider-editing ~ .eustis-slider-arrow,
.eustis-slider-editing > .eustis-slider-arrow,
.eustis-slider-editing > .eustis-slider-pagination,
.eustis-slider-editing ~ .eustis-slider-arrow,
.eustis-slider-editing ~ .eustis-slider-pagination {
	display: none;
}

/*
 * Background animation. The slider JS adds an empty .eustis-slide-bg layer to each
 * slide container; it inherits the container's own background (so images set on the
 * widget, the container, or per breakpoint all work) and only that copy is moved.
 */
/* A slide's own choice (Style > Background) overrides the slider's; reset the pulse-only values first. */
[class*="eustis-slide-bg-anim-"] {
	--eustis-bg-direction: normal;
	--eustis-bg-repeat: 1;
}

.eustis-bg-anim-zoom-in,
.eustis-slide-bg-anim-zoom-in {
	--eustis-bg-from: scale(1);
	--eustis-bg-to: scale(var(--eustis-bg-scale, 1.2));
}

.eustis-bg-anim-zoom-out,
.eustis-slide-bg-anim-zoom-out {
	--eustis-bg-from: scale(var(--eustis-bg-scale, 1.2));
	--eustis-bg-to: scale(1);
}

.eustis-bg-anim-zoom-in-out,
.eustis-slide-bg-anim-zoom-in-out {
	--eustis-bg-from: scale(1);
	--eustis-bg-to: scale(var(--eustis-bg-scale, 1.2));
	--eustis-bg-direction: alternate;
	--eustis-bg-repeat: infinite;
}

/* Pans stay inside the extra size the zoom creates, so the edges never show. */
.eustis-bg-anim-pan-left,
.eustis-slide-bg-anim-pan-left,
.eustis-bg-anim-pan-right,
.eustis-slide-bg-anim-pan-right,
.eustis-bg-anim-pan-up,
.eustis-slide-bg-anim-pan-up,
.eustis-bg-anim-pan-down,
.eustis-slide-bg-anim-pan-down,
.eustis-bg-anim-ken-burns,
.eustis-slide-bg-anim-ken-burns {
	--eustis-bg-shift: calc((var(--eustis-bg-scale, 1.2) - 1) * 45%);
}

.eustis-bg-anim-pan-left,
.eustis-slide-bg-anim-pan-left {
	--eustis-bg-from: translateX(var(--eustis-bg-shift)) scale(var(--eustis-bg-scale, 1.2));
	--eustis-bg-to: translateX(calc(-1 * var(--eustis-bg-shift))) scale(var(--eustis-bg-scale, 1.2));
}

.eustis-bg-anim-pan-right,
.eustis-slide-bg-anim-pan-right {
	--eustis-bg-from: translateX(calc(-1 * var(--eustis-bg-shift))) scale(var(--eustis-bg-scale, 1.2));
	--eustis-bg-to: translateX(var(--eustis-bg-shift)) scale(var(--eustis-bg-scale, 1.2));
}

.eustis-bg-anim-pan-up,
.eustis-slide-bg-anim-pan-up {
	--eustis-bg-from: translateY(var(--eustis-bg-shift)) scale(var(--eustis-bg-scale, 1.2));
	--eustis-bg-to: translateY(calc(-1 * var(--eustis-bg-shift))) scale(var(--eustis-bg-scale, 1.2));
}

.eustis-bg-anim-pan-down,
.eustis-slide-bg-anim-pan-down {
	--eustis-bg-from: translateY(calc(-1 * var(--eustis-bg-shift))) scale(var(--eustis-bg-scale, 1.2));
	--eustis-bg-to: translateY(var(--eustis-bg-shift)) scale(var(--eustis-bg-scale, 1.2));
}

.eustis-bg-anim-ken-burns,
.eustis-slide-bg-anim-ken-burns {
	--eustis-bg-from: translate(0, 0) scale(1);
	--eustis-bg-to: translate(calc(-1 * var(--eustis-bg-shift)), calc(-1 * var(--eustis-bg-shift))) scale(var(--eustis-bg-scale, 1.2));
}

.eustis-slide-bg {
	display: none;
}

[class*="eustis-bg-anim-"]:not(.eustis-bg-anim-none) .eustis-nested-slider__slide > .e-con,
.eustis-nested-slider__slide > .e-con[class*="eustis-slide-bg-anim-"]:not(.eustis-slide-bg-anim-none) {
	isolation: isolate;
}

/* Sits under the container's overlay and content. */
[class*="eustis-bg-anim-"]:not(.eustis-bg-anim-none) .eustis-nested-slider__slide > .e-con > .eustis-slide-bg,
.eustis-nested-slider__slide > .e-con[class*="eustis-slide-bg-anim-"]:not(.eustis-slide-bg-anim-none) > .eustis-slide-bg {
	display: block;
	position: absolute;
	inset: 0;
	z-index: -1;
	overflow: hidden;
	border-radius: inherit;
	background: inherit;
	pointer-events: none;
}

/* A slide set to None stays still even when the slider animates the others. */
.elementor-widget-eustis-nested-slider .eustis-nested-slider__slide > .e-con.eustis-slide-bg-anim-none > .eustis-slide-bg {
	display: none;
}

.eustis-slide-bg__image {
	position: absolute;
	inset: 0;
	background: inherit;
	transform: var(--eustis-bg-from, none);
	transform-origin: center;
	will-change: transform;
}

.eustis-bg-playing > .e-con > .eustis-slide-bg > .eustis-slide-bg__image,
.eustis-slider-editing .eustis-slide-selected > .e-con > .eustis-slide-bg > .eustis-slide-bg__image {
	animation: eustis-bg-move var(--eustis-bg-duration, 10s) var(--eustis-bg-easing, ease-out) both;
	animation-direction: var(--eustis-bg-direction, normal);
	animation-iteration-count: var(--eustis-bg-repeat, 1);
}

@keyframes eustis-bg-move {
	from {
		transform: var(--eustis-bg-from, none);
	}
	to {
		transform: var(--eustis-bg-to, none);
	}
}

@media (prefers-reduced-motion: reduce) {
	.eustis-slider-arrow {
		animation: none !important;
	}

	.eustis-slide-bg__image {
		animation: none !important;
		transform: none;
	}
}
