/*--------------------------------------------------------------
# Global Animations
--------------------------------------------------------------*/

/* Shared keyframe used by page title (CSS on-load) and
   scroll-triggered classes below */
@keyframes fadeInUp {
	from {
		opacity: 0;
		transform: translateY(24px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

/* ----------------------------------------------------------
   Scroll-triggered classes (toggled by Intersection Observer)
---------------------------------------------------------- */
.animate-fade-up,
.animate-fade-left,
.animate-fade-right {
	opacity: 0;
	transition: opacity 0.85s ease, transform 0.85s ease;
}

.animate-fade-up {
	transform: translateY(40px);
}

.animate-fade-left {
	transform: translateX(-40px);
}

.animate-fade-right {
	transform: translateX(40px);
}

.animate-fade-up.is-visible,
.animate-fade-left.is-visible,
.animate-fade-right.is-visible {
	opacity: 1;
	transform: translate(0, 0);
}

