/* ═══════════════════════════════════════════════════════════════
   INTELLEGY HUB — Animations
   ═══════════════════════════════════════════════════════════════ */

@keyframes float {
	0%, 100% { transform: translateY(0); }
	50% { transform: translateY(-18px); }
}

@keyframes pulseRing {
	0% { transform: translate(-50%, -50%) scale(0.8); opacity: 0.6; }
	100% { transform: translate(-50%, -50%) scale(1.4); opacity: 0; }
}

@keyframes fadeInUp {
	from { opacity: 0; transform: translateY(30px); }
	to { opacity: 1; transform: translateY(0); }
}

@keyframes fadeIn {
	from { opacity: 0; }
	to { opacity: 1; }
}

@keyframes slideInRight {
	from { transform: translateX(100%); }
	to { transform: translateX(0); }
}

@keyframes scaleIn {
	from { opacity: 0; transform: scale(0.95); }
	to { opacity: 1; transform: scale(1); }
}

@keyframes spin {
	to { transform: rotate(360deg); }
}

/* Reveal on scroll (driven by animations.js / IntersectionObserver) */
.reveal {
	opacity: 0;
	transform: translateY(30px);
	transition: opacity var(--transition-slow), transform var(--transition-slow);
}
.reveal.is-visible {
	opacity: 1;
	transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
	}
	.reveal { opacity: 1; transform: none; }
}
