/**
 * Lodge Hero Spotlight - Frontend Stylesheet
 * Custom CSS for smooth slideshow cross-fades, Ken Burns zoom, and text roll-in mask transitions.
 */

/* ============================================================
   1. Slideshow Background Layout & Keyframe Animations
   ============================================================ */
.vm-hero__bg {
	overflow: hidden;
	position: absolute;
	inset: 0;
	z-index: 0;
	background-image: none !important; /* Hide parent static background so only child slide zooms and cross-fades */
}

.vm-hero__bg-slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	z-index: 1;
	transition: opacity 1.8s ease-in-out; /* Smooth background cross-fade */
}

.vm-hero__bg-slide.active {
	opacity: 1;
	z-index: 2;
}

/* Zoom Transition Container */
.vm-hero__bg-inner {
	position: absolute;
	inset: 0;
	background-size: cover;
	background-position: center 40%;
	z-index: 0;
	transform: scale(1.16); /* Default initial zoom */
}

/* Starting zoom scales for inactive slides (with transition on exit to prevent jerking) */
.vm-hero__bg-slide[data-zoom-speed="none"] .vm-hero__bg-inner {
	transform: scale(1.0);
	transition: transform 1.8s ease-in-out;
}
.vm-hero__bg-slide[data-zoom-speed="slow"] .vm-hero__bg-inner {
	transform: scale(1.10);
	transition: transform 1.8s ease-in-out;
}
.vm-hero__bg-slide[data-zoom-speed="normal"] .vm-hero__bg-inner {
	transform: scale(1.16);
	transition: transform 1.8s ease-in-out;
}
.vm-hero__bg-slide[data-zoom-speed="fast"] .vm-hero__bg-inner {
	transform: scale(1.24);
	transition: transform 1.8s ease-in-out;
}

/* Active Zoom: Triggers transition when slide becomes active */
.vm-hero__bg-slide.active[data-zoom-speed="none"] .vm-hero__bg-inner {
	transform: scale(1.0);
	transition: none;
}
.vm-hero__bg-slide.active[data-zoom-speed="slow"] .vm-hero__bg-inner {
	transform: scale(1.0);
	transition: transform 8s cubic-bezier(0.25, 1, 0.3, 1);
}
.vm-hero__bg-slide.active[data-zoom-speed="normal"] .vm-hero__bg-inner {
	transform: scale(1.0);
	transition: transform 4.5s cubic-bezier(0.25, 1, 0.3, 1);
}
.vm-hero__bg-slide.active[data-zoom-speed="fast"] .vm-hero__bg-inner {
	transform: scale(1.0);
	transition: transform 2.8s cubic-bezier(0.25, 1, 0.3, 1);
}

.vm-hero__bg-video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 40%;
}

/* ============================================================
   2. Text Slider Layout & Mask Transitions
   ============================================================ */
.vm-hero__text-slider {
	position: relative;
	width: 100%;
}

.vm-hero__text-slide {
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.6s ease;
}

.vm-hero__text-slide.active {
	position: relative;
	opacity: 1;
	pointer-events: auto;
}

.vm-hero__text-slide:not(.active) {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
}

/* Text Mask Elements */
.vm-hero__text-slide .vm-hero__title {
	opacity: 1 !important;
	transform: none !important; /* Override theme's standard slide-up */
}

.vm-roll-line {
	overflow: hidden;
	line-height: 1.25;
	padding-bottom: 0.08em; /* Prevent descenders from clipping */
	vertical-align: top;
}

.vm-roll-inner {
	display: block;
	transform: translateY(115%);
	transition: transform 1.2s cubic-bezier(0.16, 1, 0.3, 1);
}

/* Triggered on active text slide */
.vm-hero__text-slide.active.vm-visible .vm-roll-inner {
	transform: translateY(0);
}

/* Stagger delay for the second (gold) line */
.vm-hero__text-slide.active.vm-visible .gold-line .vm-roll-inner {
	transition-delay: 0.15s;
}

/* Subtitle Transition */
.vm-hero__text-slide .vm-hero__subtitle {
	opacity: 0;
	transform: translateY(15px);
	transition: opacity 1.1s cubic-bezier(0.16, 1, 0.3, 1), transform 1.1s cubic-bezier(0.16, 1, 0.3, 1);
}

.vm-hero__text-slide.active.vm-visible .vm-hero__subtitle {
	opacity: 1;
	transform: translateY(0);
	transition-delay: 0.3s;
}

/* Static CTAs delays (matched to active text slide trigger) */
.vm-hero__actions.vm-reveal {
	transition: opacity 1.2s cubic-bezier(0.16, 1, 0.3, 1), transform 1.2s cubic-bezier(0.16, 1, 0.3, 1);
	transition-delay: 0.45s;
}

/* ============================================================
   3. Interactive Navigation Dots
   ============================================================ */
.vm-hero__dots {
	position: absolute;
	bottom: 95px;
	left: 50%;
	transform: translateX(-50%);
	z-index: 10;
	display: flex;
	gap: 18px;
	align-items: center;
	justify-content: center;
}

.vm-hero__dot {
	width: 13px;
	height: 13px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.4);
	border: 1px solid rgba(255, 255, 255, 0.2);
	cursor: pointer;
	padding: 0;
	margin: 0;
	transition: background 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease;
	outline: none;
}

.vm-hero__dot:hover {
	background: rgba(255, 255, 255, 0.8);
	box-shadow: 0 0 8px rgba(255, 255, 255, 0.6);
}

.vm-hero__dot.active {
	background: var(--vm-gold);
	border-color: var(--vm-gold);
	transform: scale(1.3);
	box-shadow: 0 0 10px rgba(212, 175, 55, 0.8);
}

/* ============================================================
   4. Per-Slide Variable-Driven Dark Overlay
   ============================================================ */
.vm-hero__overlay {
	position: absolute;
	inset: 0;
	background:
		linear-gradient(105deg, rgba(10,15,30,calc(0.96 * var(--overlay-strength, 0.8))) 0%, rgba(10,15,30,calc(0.80 * var(--overlay-strength, 0.8))) 45%, rgba(10,15,30,calc(0.20 * var(--overlay-strength, 0.8))) 100%),
		linear-gradient(to top, rgba(10,15,30,calc(0.70 * var(--overlay-strength, 0.8))) 0%, transparent 50%) !important;
	z-index: 1;
	pointer-events: none;
}
