/* ==========================================================================
   MAI Events Child Theme - Custom Animations
   ========================================================================== */

/* Fade-in up animation utility */
.fade-in-up {
	opacity: 0;
	transform: translateY(30px);
	transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}

.fade-in-up.active {
	opacity: 1;
	transform: translateY(0);
}

/* Pulsing accent shadows */
.shadow-pulse {
	box-shadow: 0 0 0 0 rgba(var(--color-accent-rgb), 0.4);
	animation: pulseShadow 2.5s infinite;
}

@keyframes pulseShadow {
	0% {
		box-shadow: 0 0 0 0 rgba(var(--color-accent-rgb), 0.4);
	}
	70% {
		box-shadow: 0 0 0 15px rgba(var(--color-accent-rgb), 0);
	}
	100% {
		box-shadow: 0 0 0 0 rgba(var(--color-accent-rgb), 0);
	}
}

/* Grid item hover lines */
.hover-border-glow {
	position: relative;
	overflow: hidden;
}

.hover-border-glow::before {
	content: '';
	position: absolute;
	top: 0;
	left: -100%;
	width: 100%;
	height: 2px;
	background: linear-gradient(90deg, transparent, var(--color-primary), transparent);
	transition: left 0.5s ease;
}

.hover-border-glow:hover::before {
	left: 100%;
}
