/* =========================================================================
 * Hero Slider for Elementor
 * ========================================================================= */

.hsfe-slider {
	position: relative;
	width: 100%;
	height: 80vh;
	overflow: hidden;
}

.hsfe-track {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	perspective: 1400px;
}

/* ---- Slides (stacked) ---- */
.hsfe-slide {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	opacity: 0;
	z-index: 0;
	overflow: hidden;
	transition-property: opacity, transform, filter;
	transition-timing-function: cubic-bezier(0.22, 0.61, 0.36, 1);
	transition-duration: 800ms;
	transform-style: preserve-3d;
	backface-visibility: hidden;
	will-change: opacity, transform;
}

.hsfe-slide.is-active {
	opacity: 1;
	z-index: 2;
	transform: none;
	filter: none;
}

.hsfe-slide.is-leaving {
	z-index: 1;
}

/* ---- Background image ---- */
.hsfe-bg {
	position: absolute;
	inset: 0;
	overflow: hidden;
}

/* !important defeats themes that force `img { height: auto }`, which would
   otherwise let the image keep its intrinsic height and leave a gap below. */
.hsfe-bg .hsfe-img {
	position: absolute !important;
	inset: 0;
	top: 0;
	left: 0;
	width: 100% !important;
	height: 100% !important;
	max-width: none !important;
	max-height: none !important;
	min-height: 100% !important;
	object-position: center;
	object-fit: cover; /* default; the per-slide inline value overrides this */
	display: block;
	margin: 0;
}

/* Responsive image swap.
   Selectors are scoped to .hsfe-bg and use !important so they always beat
   the base `.hsfe-bg .hsfe-img { display: block }` rule above. */
.hsfe-bg .hsfe-img-mobile { display: none !important; }
.hsfe-bg .hsfe-img-desktop { display: block !important; }

@media (max-width: 767px) {
	.hsfe-bg .hsfe-img-desktop { display: none !important; }
	.hsfe-bg .hsfe-img-mobile  { display: block !important; }
}

/* Ken Burns */
.hsfe-slider.hsfe-kenburns .hsfe-slide.is-active .hsfe-img {
	animation: hsfe-kenburns 9s ease-out forwards;
}

@keyframes hsfe-kenburns {
	from { transform: scale(1); }
	to   { transform: scale(1.12); }
}

/* ---- Overlay ---- */
.hsfe-overlay {
	position: absolute;
	inset: 0;
	background-color: #000;
	opacity: 0.35;
	pointer-events: none;
	z-index: 1;
}

/* ---- Content positioning (9 positions) ---- */
.hsfe-content {
	position: absolute;
	inset: 0;
	display: flex;
	padding: 4%;
	z-index: 2;
}

.hsfe-content-inner {
	max-width: 70%;
	position: relative;
}

/* vertical */
.hsfe-pos-top-left .hsfe-content,
.hsfe-pos-top-center .hsfe-content,
.hsfe-pos-top-right .hsfe-content     { align-items: flex-start; }

.hsfe-pos-center-left .hsfe-content,
.hsfe-pos-center-center .hsfe-content,
.hsfe-pos-center-right .hsfe-content  { align-items: center; }

.hsfe-pos-bottom-left .hsfe-content,
.hsfe-pos-bottom-center .hsfe-content,
.hsfe-pos-bottom-right .hsfe-content  { align-items: flex-end; }

/* horizontal */
.hsfe-pos-top-left .hsfe-content,
.hsfe-pos-center-left .hsfe-content,
.hsfe-pos-bottom-left .hsfe-content   { justify-content: flex-start; }

.hsfe-pos-top-center .hsfe-content,
.hsfe-pos-center-center .hsfe-content,
.hsfe-pos-bottom-center .hsfe-content { justify-content: center; }

.hsfe-pos-top-right .hsfe-content,
.hsfe-pos-center-right .hsfe-content,
.hsfe-pos-bottom-right .hsfe-content  { justify-content: flex-end; }

/* ---- Text ---- */
.hsfe-title {
	margin: 0 0 0.4em;
	color: #fff;
	line-height: 1.15;
	font-size: 3rem;
	text-shadow: var(--hsfe-ts-h, 0) var(--hsfe-ts-v, 0) var(--hsfe-ts-blur, 0) var(--hsfe-ts-color, transparent);
}

.hsfe-subtitle {
	margin: 0;
	color: #f0f0f0;
	line-height: 1.5;
	font-size: 1.25rem;
	text-shadow: var(--hsfe-ts-h, 0) var(--hsfe-ts-v, 0) var(--hsfe-ts-blur, 0) var(--hsfe-ts-color, transparent);
}

/* full-slide link */
.hsfe-slide-link {
	position: absolute;
	inset: 0;
	z-index: 3;
	display: block;
	text-indent: -9999px;
}

/* =========================================================================
 * SLIDE TRANSITIONS — inactive = "enter from" state, .is-leaving = "exit to"
 * ========================================================================= */

/* Fade */
.hsfe-transition-fade .hsfe-slide.is-leaving { opacity: 0; }

/* Fade + Scale */
.hsfe-transition-fade-scale .hsfe-slide            { transform: scale(1.06); }
.hsfe-transition-fade-scale .hsfe-slide.is-leaving { opacity: 0; transform: scale(0.96); }

/* Slide Left */
.hsfe-transition-slide-left .hsfe-slide            { transform: translateX(100%); }
.hsfe-transition-slide-left .hsfe-slide.is-leaving { opacity: 1; transform: translateX(-100%); }

/* Slide Right */
.hsfe-transition-slide-right .hsfe-slide            { transform: translateX(-100%); }
.hsfe-transition-slide-right .hsfe-slide.is-leaving { opacity: 1; transform: translateX(100%); }

/* Slide Up */
.hsfe-transition-slide-up .hsfe-slide            { transform: translateY(100%); }
.hsfe-transition-slide-up .hsfe-slide.is-leaving { opacity: 1; transform: translateY(-100%); }

/* Slide Down */
.hsfe-transition-slide-down .hsfe-slide            { transform: translateY(-100%); }
.hsfe-transition-slide-down .hsfe-slide.is-leaving { opacity: 1; transform: translateY(100%); }

/* Zoom In */
.hsfe-transition-zoom-in .hsfe-slide            { transform: scale(0.55); }
.hsfe-transition-zoom-in .hsfe-slide.is-leaving { opacity: 0; transform: scale(1.45); }

/* Zoom Out */
.hsfe-transition-zoom-out .hsfe-slide            { transform: scale(1.45); }
.hsfe-transition-zoom-out .hsfe-slide.is-leaving { opacity: 0; transform: scale(0.55); }

/* Flip Horizontal */
.hsfe-transition-flip-horizontal .hsfe-slide            { transform: rotateY(90deg); }
.hsfe-transition-flip-horizontal .hsfe-slide.is-leaving { opacity: 0; transform: rotateY(-90deg); }

/* Flip Vertical */
.hsfe-transition-flip-vertical .hsfe-slide            { transform: rotateX(90deg); }
.hsfe-transition-flip-vertical .hsfe-slide.is-leaving { opacity: 0; transform: rotateX(-90deg); }

/* Rotate */
.hsfe-transition-rotate .hsfe-slide            { transform: rotate(12deg) scale(1.25); }
.hsfe-transition-rotate .hsfe-slide.is-leaving { opacity: 0; transform: rotate(-12deg) scale(1.25); }

/* Blur */
.hsfe-transition-blur .hsfe-slide            { filter: blur(22px); }
.hsfe-transition-blur .hsfe-slide.is-leaving { opacity: 0; filter: blur(22px); }

/* =========================================================================
 * TEXT ENTRANCE ANIMATIONS (per slide)
 * ========================================================================= */

.hsfe-anim {
	opacity: 0;
	animation-duration: 800ms;
	animation-fill-mode: both;
	animation-timing-function: cubic-bezier(0.22, 0.61, 0.36, 1);
}

/* "None" → always visible, no animation */
.hsfe-anim[data-anim=""],
.hsfe-anim[data-anim="none"] {
	opacity: 1;
	animation: none;
}

/* Only animate text on the active slide */
.hsfe-slide.is-active .hsfe-anim[data-anim="fade-in"]    { animation-name: hsfe-t-fade-in; }
.hsfe-slide.is-active .hsfe-anim[data-anim="fade-up"]    { animation-name: hsfe-t-fade-up; }
.hsfe-slide.is-active .hsfe-anim[data-anim="fade-down"]  { animation-name: hsfe-t-fade-down; }
.hsfe-slide.is-active .hsfe-anim[data-anim="fade-left"]  { animation-name: hsfe-t-fade-left; }
.hsfe-slide.is-active .hsfe-anim[data-anim="fade-right"] { animation-name: hsfe-t-fade-right; }
.hsfe-slide.is-active .hsfe-anim[data-anim="zoom-in"]    { animation-name: hsfe-t-zoom-in; }
.hsfe-slide.is-active .hsfe-anim[data-anim="zoom-out"]   { animation-name: hsfe-t-zoom-out; }
.hsfe-slide.is-active .hsfe-anim[data-anim="flip-up"]    { animation-name: hsfe-t-flip-up; }
.hsfe-slide.is-active .hsfe-anim[data-anim="slide-up"]   { animation-name: hsfe-t-slide-up; }
.hsfe-slide.is-active .hsfe-anim[data-anim="blur-in"]    { animation-name: hsfe-t-blur-in; }
.hsfe-slide.is-active .hsfe-anim[data-anim="bounce-in"]  { animation-name: hsfe-t-bounce-in; animation-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1); }

@keyframes hsfe-t-fade-in    { from { opacity: 0; } to { opacity: 1; } }
@keyframes hsfe-t-fade-up    { from { opacity: 0; transform: translateY(40px); } to { opacity: 1; transform: none; } }
@keyframes hsfe-t-fade-down  { from { opacity: 0; transform: translateY(-40px); } to { opacity: 1; transform: none; } }
@keyframes hsfe-t-fade-left  { from { opacity: 0; transform: translateX(40px); } to { opacity: 1; transform: none; } }
@keyframes hsfe-t-fade-right { from { opacity: 0; transform: translateX(-40px); } to { opacity: 1; transform: none; } }
@keyframes hsfe-t-zoom-in    { from { opacity: 0; transform: scale(0.7); } to { opacity: 1; transform: scale(1); } }
@keyframes hsfe-t-zoom-out   { from { opacity: 0; transform: scale(1.3); } to { opacity: 1; transform: scale(1); } }
@keyframes hsfe-t-flip-up    { from { opacity: 0; transform: perspective(600px) rotateX(75deg); } to { opacity: 1; transform: perspective(600px) rotateX(0); } }
@keyframes hsfe-t-slide-up   { from { opacity: 0; transform: translateY(100%); } to { opacity: 1; transform: none; } }
@keyframes hsfe-t-blur-in    { from { opacity: 0; filter: blur(14px); } to { opacity: 1; filter: blur(0); } }
@keyframes hsfe-t-bounce-in  { 0% { opacity: 0; transform: scale(0.5); } 60% { opacity: 1; transform: scale(1.05); } 100% { transform: scale(1); } }

/* =========================================================================
 * ARROWS
 * ========================================================================= */

.hsfe-slider .hsfe-arrow {
	position: absolute !important;
	top: 50%;
	margin: 0;
	transform: translateY(-50%);
	z-index: 5;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	min-width: 0;
	padding: 0;
	border: none;
	box-shadow: none;
	cursor: pointer;
	background-color: rgba(0, 0, 0, 0.35);
	border-radius: 50%;
	transition: background-color 0.2s ease, opacity 0.2s ease;
	float: none;
}

.hsfe-slider .hsfe-arrow:hover { background-color: rgba(0, 0, 0, 0.6); }
.hsfe-slider .hsfe-arrow:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.hsfe-slider .hsfe-arrow:disabled { opacity: 0.35; cursor: default; }

.hsfe-slider .hsfe-arrow svg {
	width: 22px;
	height: 22px;
	fill: #fff;
	pointer-events: none;
}

/* Pin to opposite edges; left:auto / right:auto stop a theme rule from
   placing both buttons on the same side. */
.hsfe-slider .hsfe-prev { left: 20px; right: auto; }
.hsfe-slider .hsfe-next { right: 20px; left: auto; }

/* =========================================================================
 * REDUCED MOTION
 * ========================================================================= */
@media (prefers-reduced-motion: reduce) {
	.hsfe-slide,
	.hsfe-anim,
	.hsfe-slider.hsfe-kenburns .hsfe-slide.is-active .hsfe-img {
		transition-duration: 0.001ms !important;
		animation-duration: 0.001ms !important;
	}
}
