/* Hero Slider — frontend styles
   Kept deliberately small: no grid/flex framework, no icon font,
   just what's needed to render slides. */

.hs-slider {
	position: relative;
	width: 100%;
	height: var(--hs-height, 600px);
	overflow: hidden;
	background: #111;
}

.hs-track {
	position: relative;
	width: 100%;
	height: 100%;
}

.hs-slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity var(--hs-speed, 600ms) ease, transform var(--hs-speed, 600ms) ease;
}

.hs-slide.is-active {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	position: relative;
}

/* Fade mode: all slides stacked, cross-fade via opacity. */
.hs-type-fade .hs-slide {
	position: absolute;
}

/* Slide mode: track shifts horizontally with transform. */
.hs-type-slide .hs-track {
	display: flex;
	height: 100%;
	transition: transform var(--hs-speed, 600ms) ease;
	will-change: transform;
}

.hs-type-slide .hs-slide {
	position: relative;
	flex: 0 0 100%;
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transition: none;
}

.hs-slide-bg {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
}

.hs-overlay {
	position: absolute;
	inset: 0;
	background: #000;
	opacity: var(--hs-overlay, 0.35);
	pointer-events: none;
}

.hs-content {
	position: relative;
	z-index: 2;
	height: 100%;
	width: 100%;
	max-width: var(--hs-content-width, 1140px);
	margin: 0 auto;
	padding: 2rem 1.5rem;
	box-sizing: border-box;
	color: #fff;
}

/* Everything about WHERE the text sits within the max-width box above
   (left/center/right) lives on this inner wrapper, kept separate from
   .hs-content so alignment never has to shift or resize the box itself. */
.hs-content-inner {
	display: flex;
	flex-direction: column;
	justify-content: center;
	height: 100%;
	box-sizing: border-box;
}

/* Full-bleed background: lets the slider ignore a boxed parent (e.g. a
   contained WPBakery/Elementor row) and always span the full browser
   width, while .hs-content above still keeps its own max-width so
   text lines up with the rest of the page's content. Pure CSS —
   no markup changes needed. Note: an ancestor with overflow:hidden
   will still clip this, since no CSS technique can break out of that. */
.hs-full-bleed {
	width: 100vw;
	max-width: 100vw;
	position: relative;
	left: 50%;
	right: 50%;
	margin-left: -50vw;
	margin-right: -50vw;
}

/* WPBakery wraps shortcode/element output in .vc_column-inner. Some
   themes set overflow:hidden there, which would clip the full-bleed
   background even though the width math above is correct — this
   safeguard only relaxes overflow on that one wrapper, and only when
   it actually contains a full-bleed slider. */
.vc_column-inner:has(.hs-full-bleed) {
	overflow: visible !important;
}

/* Center takes most (not all) of the box, so lines don't run edge to
   edge. Left/right each take half the box and are pinned to their
   side via the auto margin, giving a "split" layout against the
   image's other half. All three are relative to .hs-content's own
   max-width (and therefore to the Text Content Max Width fallback
   whenever that's what .hs-content is using). */
.hs-align-center {
	width: 80%;
	margin: 0 auto;
	align-items: center;
	text-align: center;
}

.hs-align-left {
	width: 50%;
	margin-right: auto;
	align-items: flex-start;
	text-align: left;
}

.hs-align-right {
	width: 50%;
	margin-left: auto;
	align-items: flex-end;
	text-align: right;
}

.hs-headline {
	font-size: clamp(1.75rem, 4vw, 3rem);
	line-height: 1.15;
	margin: 0 0 0.5rem;
	color: inherit;
}

.hs-subtitle {
	font-size: clamp(1rem, 1.6vw, 1.25rem);
	line-height: 1.5;
	margin: 0 0 1.25rem;
	max-width: 640px;
	opacity: 0.92;
}

.hs-cta {
	display: inline-block;
	padding: 0.75em 1.75em;
	border-radius: 4px;
	background: #fff;
	color: #111;
	font-weight: 600;
	text-decoration: none;
	transition: transform 150ms ease, opacity 150ms ease;
}

.hs-cta:hover,
.hs-cta:focus {
	opacity: 0.85;
	transform: translateY(-1px);
	color: #111;
}

/* Arrows */
.hs-arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 3;
	width: 44px;
	height: 44px;
	line-height: 44px;
	text-align: center;
	border: none;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.85);
	color: #111;
	font-size: 16px;
	cursor: pointer;
	padding: 0;
}

.hs-arrow:hover {
	background: #fff;
}

.hs-prev {
	left: 16px;
}

.hs-next {
	right: 16px;
}

/* Dots */
.hs-dots {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 18px;
	z-index: 3;
	display: flex;
	justify-content: center;
	gap: 8px;
}

.hs-dot {
	width: 10px;
	height: 10px;
	border-radius: 50%;
	border: none;
	background: rgba(255, 255, 255, 0.5);
	cursor: pointer;
	padding: 0;
}

.hs-dot.is-active {
	background: #fff;
}

@media (max-width: 768px) {
	.hs-slider {
		height: var(--hs-height-mobile, 380px);
	}

	.hs-align-center {
		width: 100%;
	}

	.hs-align-left,
	.hs-align-right {
		width: 100%;
	}

	.hs-arrow {
		width: 36px;
		height: 36px;
		line-height: 36px;
		font-size: 14px;
	}
}
