:root {
	--efjc-viewport-height: 100vh;
	--efjc-snap-duration: 560ms;
	--efjc-snap-ease: cubic-bezier(0.22, 1, 0.36, 1);
}

@supports (height: 100dvh) {
	:root {
		--efjc-viewport-height: 100dvh;
	}
}

.efjc-fullscreen-jump[data-efjc-fullscreen-jump="true"] {
	position: relative !important;
	box-sizing: border-box !important;
	width: 100% !important;
	min-height: var(--efjc-viewport-height) !important;
	height: var(--efjc-viewport-height) !important;
	max-height: var(--efjc-viewport-height) !important;
	overflow: hidden !important;
	flex: 0 0 var(--efjc-viewport-height) !important;
	overscroll-behavior: contain;
}

html.efjc-jump-in-progress,
html.efjc-jump-in-progress body {
	scroll-behavior: auto !important;
}

/*
 * Snap Reveal is completely independent from Elementor sections.
 * No opacity, filter, transform or background is applied to sec1/sec2/sec3.
 */
.efjc-snap-reveal-layer {
	position: fixed;
	z-index: 2147483646;
	inset: 0;
	pointer-events: none;
	overflow: hidden;
	visibility: hidden;
	opacity: 0;
	contain: strict;
	background: rgba(10, 12, 16, 0.035);
}

.efjc-snap-reveal-layer::before,
.efjc-snap-reveal-layer::after {
	content: "";
	position: absolute;
	left: -12%;
	width: 124%;
	pointer-events: none;
	will-change: transform, opacity;
}

.efjc-snap-reveal-layer::before {
	height: 86vh;
	opacity: 0;
	background: linear-gradient(
		to bottom,
		rgba(18, 22, 30, 0) 0%,
		rgba(18, 22, 30, 0.08) 18%,
		rgba(18, 22, 30, 0.26) 48%,
		rgba(18, 22, 30, 0.1) 76%,
		rgba(18, 22, 30, 0) 100%
	);
}

.efjc-snap-reveal-layer::after {
	height: 3px;
	opacity: 0;
	background: linear-gradient(
		to right,
		rgba(255, 255, 255, 0),
		rgba(255, 255, 255, 0.72),
		rgba(255, 255, 255, 0)
	);
	box-shadow: 0 0 24px rgba(255, 255, 255, 0.18);
}

.efjc-snap-reveal-layer.is-active {
	visibility: visible;
	opacity: 1;
	animation: efjc-snap-layer var(--efjc-snap-duration) linear both;
}

.efjc-snap-reveal-layer.is-active::before {
	animation: efjc-snap-band-forward var(--efjc-snap-duration) var(--efjc-snap-ease) both;
}

.efjc-snap-reveal-layer.is-active::after {
	animation: efjc-snap-edge-forward var(--efjc-snap-duration) var(--efjc-snap-ease) both;
}

.efjc-snap-reveal-layer.is-active.efjc-snap-moving-backward::before {
	animation-name: efjc-snap-band-backward;
}

.efjc-snap-reveal-layer.is-active.efjc-snap-moving-backward::after {
	animation-name: efjc-snap-edge-backward;
}

@keyframes efjc-snap-layer {
	0%, 100% { opacity: 0; }
	12%, 72% { opacity: 1; }
}

@keyframes efjc-snap-band-forward {
	0% {
		opacity: 0;
		transform: translate3d(0, -92vh, 0) scaleY(0.72);
	}
	18% { opacity: 0.86; }
	58% { opacity: 0.52; }
	100% {
		opacity: 0;
		transform: translate3d(0, 116vh, 0) scaleY(1.06);
	}
}

@keyframes efjc-snap-band-backward {
	0% {
		opacity: 0;
		transform: translate3d(0, 116vh, 0) scaleY(0.72);
	}
	18% { opacity: 0.86; }
	58% { opacity: 0.52; }
	100% {
		opacity: 0;
		transform: translate3d(0, -92vh, 0) scaleY(1.06);
	}
}

@keyframes efjc-snap-edge-forward {
	0% {
		opacity: 0;
		transform: translate3d(0, -2vh, 0);
	}
	22% { opacity: 0.78; }
	100% {
		opacity: 0;
		transform: translate3d(0, 102vh, 0);
	}
}

@keyframes efjc-snap-edge-backward {
	0% {
		opacity: 0;
		transform: translate3d(0, 102vh, 0);
	}
	22% { opacity: 0.78; }
	100% {
		opacity: 0;
		transform: translate3d(0, -2vh, 0);
	}
}

@media (prefers-reduced-motion: reduce) {
	.efjc-snap-reveal-layer,
	.efjc-snap-reveal-layer::before,
	.efjc-snap-reveal-layer::after {
		display: none !important;
		animation: none !important;
	}
}

.elementor-editor-active .efjc-fullscreen-jump[data-efjc-fullscreen-jump="true"] {
	overflow: visible !important;
}

.elementor-editor-active .efjc-snap-reveal-layer {
	display: none !important;
}
