.eml-motion-enabled,
.eml-motion-enabled > .elementor-widget-container {
	backface-visibility: hidden;
}

/* Present in the server-rendered HTML, so the final state cannot flash before
   IntersectionObserver starts the entrance animation. The delayed animation is
   a safety net that reveals content if JavaScript never initializes. */
.eml-motion-pending {
	opacity: 0;
}

/* Only reveal as a failsafe when JavaScript never initialized this element.
   Initialized elements may legitimately wait off-screen for any amount of time. */
.eml-motion-pending:not(.eml-motion-initialized) {
	animation: eml-motion-failsafe 1ms linear 4s forwards;
}

@keyframes eml-motion-failsafe {
	to { opacity: 1; }
}

.eml-hover {
	transition: transform 280ms cubic-bezier(.16, 1, .3, 1);
	will-change: transform;
}

.eml-hover--grow:hover {
	transform: scale(1.05) !important;
}

.eml-hover--shrink:hover {
	transform: scale(.95) !important;
}

.eml-hover--lift:hover {
	transform: translate3d(0, -10px, 0) !important;
}

.eml-hover--rotate:hover {
	transform: rotate(2deg) scale(1.02) !important;
}

.eml-hover--pulse:hover {
	animation: eml-hover-pulse 700ms ease-in-out infinite alternate;
}

.eml-hover--glow:hover {
	filter: drop-shadow(0 12px 24px rgba(65, 105, 225, .35));
}

@keyframes eml-hover-pulse {
	to { transform: scale(1.045); }
}

.eml-pin-enabled {
	position: sticky !important;
	align-self: flex-start;
}

.eml-pin-stuck.eml-pin-entry--fade {
	animation: eml-pin-fade var(--eml-pin-entry-duration, 300ms) ease-out both;
}

.eml-pin-stuck.eml-pin-entry--slide {
	animation: eml-pin-slide var(--eml-pin-entry-duration, 300ms) cubic-bezier(.16, 1, .3, 1) both;
}

.eml-pin-stuck.eml-pin-entry--scale {
	animation: eml-pin-scale var(--eml-pin-entry-duration, 300ms) cubic-bezier(.16, 1, .3, 1) both;
}

@keyframes eml-pin-fade {
	from { opacity: .25; }
}

@keyframes eml-pin-slide {
	from { opacity: .4; transform: translate3d(0, -18px, 0); }
}

@keyframes eml-pin-scale {
	from { opacity: .4; transform: scale(.94); }
}

@media (prefers-reduced-motion: reduce) {
	.eml-respect-reduced-motion,
	.eml-respect-reduced-motion *,
	.eml-respect-reduced-motion .eml-hover {
		animation: none !important;
		transition: none !important;
		transform: none !important;
		clip-path: none !important;
	}

	.eml-respect-reduced-motion.eml-motion-pending {
		opacity: 1 !important;
	}
}
