/* The tall scroll track — height controls how "slow"/long the scrub feels.
   400vh = 4 screen-heights of scrolling to play through the whole video.
   Increase for a slower scrub, decrease for a faster one. */
.ssv-section {
	position: relative;
	height: 400vh;
}

.ssv-video-wrap {
	position: sticky;
	top: 0;
	height: 100vh;
	overflow: hidden;
}

.ssv-video {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

/* Reveal containers — these get pinned to the viewport (position: fixed)
   so they always line up with the sticky video regardless of where the
   Elementor container physically sits in the page. Use Elementor's own
   margin/padding/alignment controls on the container to place it where
   you want it on screen — check the result on the LIVE page, not inside
   the Elementor editor, since the editor iframe can throw off fixed
   positioning. */
.ssv-reveal {
	position: fixed;
	z-index: 10;
	opacity: 0;
	transform: translateY(30px);
	transition: opacity 0.5s ease, transform 0.5s ease;
	pointer-events: none;
}

.ssv-reveal.is-visible {
	opacity: 1;
	transform: translateY(0);
	pointer-events: auto;
}

.ssv-reveal[data-effect='fade-in'] {
	transform: none;
}

.ssv-reveal[data-effect='scale-in'] {
	transform: scale(0.85);
}
.ssv-reveal.is-visible[data-effect='scale-in'] {
	transform: scale(1);
}

@media (prefers-reduced-motion: reduce) {
	.ssv-reveal {
		transition: opacity 0.2s ease;
		transform: none !important;
	}
}
