/*
 * IGC Landing — Animations
 * Todos los keyframes del diseño original (Hero, About, Services, Team, Contact, Notification).
 */

/* ---------- fade in up ---------- */
@keyframes igc-fade-in-up {
	from { opacity: 0; transform: translateY(30px); }
	to { opacity: 1; transform: translateY(0); }
}
.animate-fade-in-up {
	animation: igc-fade-in-up 0.8s ease-out both;
}

/* ---------- float (partículas) ---------- */
@keyframes igc-float {
	0%, 100% { transform: translateY(0) rotate(0deg); }
	25% { transform: translateY(-10px) rotate(5deg); }
	50% { transform: translateY(-20px) rotate(0deg); }
	75% { transform: translateY(-5px) rotate(-5deg); }
}
.animate-float {
	animation: igc-float linear infinite;
}

/* ---------- pulse gentle ---------- */
@keyframes igc-pulse-gentle {
	0%, 100% { opacity: 1; }
	50% { opacity: 0.8; }
}
.animate-pulse-gentle {
	animation: igc-pulse-gentle 3s ease-in-out infinite;
}

/* ---------- pulse slow ---------- */
@keyframes igc-pulse-slow {
	0%, 100% { opacity: 0.2; }
	50% { opacity: 0.4; }
}
.animate-pulse-slow {
	animation: igc-pulse-slow 4s ease-in-out infinite;
}

/* ---------- pulse subtle ---------- */
@keyframes igc-pulse-subtle {
	0%, 100% { opacity: 1; }
	50% { opacity: 0.8; }
}
.animate-pulse-subtle {
	animation: igc-pulse-subtle 3s ease-in-out infinite;
}

/* ---------- pulse number (valores) ---------- */
@keyframes igc-pulse-number {
	0%, 100% { transform: scale(1); }
	50% { transform: scale(1.05); }
}
.animate-pulse-number {
	animation: igc-pulse-number 2s ease-in-out infinite;
}

/* ---------- grow up (barras del chart) ---------- */
@keyframes igc-grow-up {
	0% { height: 0; }
	30% { height: var(--final-height); }
	70% { height: var(--final-height); }
	100% { height: 0; }
}
.animate-grow-up {
	animation: igc-grow-up 3s ease-in-out infinite;
	--final-height: var(--bar-height, 50%);
}

/* ---------- bounce ---------- */
@keyframes igc-bounce {
	0%, 100% { transform: translateY(-25%); animation-timing-function: cubic-bezier(0.8, 0, 1, 1); }
	50% { transform: translateY(0); animation-timing-function: cubic-bezier(0, 0, 0.2, 1); }
}
.animate-bounce {
	animation: igc-bounce 1s infinite;
}
.group:hover .group-hover-animate-bounce {
	animation: igc-bounce 1s infinite;
}

/* ---------- slide in right (notification) ---------- */
@keyframes igc-slide-in-right {
	from { transform: translateX(100%); opacity: 0; }
	to { transform: translateX(0); opacity: 1; }
}
.animate-slide-in-right {
	animation: igc-slide-in-right 0.5s ease-out;
}

@keyframes igc-slide-out-right {
	from { transform: translateX(0); opacity: 1; }
	to { transform: translateX(100%); opacity: 0; }
}
.animate-slide-out-right {
	animation: igc-slide-out-right 0.3s ease-in;
}

/* ---------- bounce gentle (check) ---------- */
@keyframes igc-bounce-gentle {
	0%, 20%, 50%, 80%, 100% { transform: translateY(0); }
	40% { transform: translateY(-3px); }
	60% { transform: translateY(-2px); }
}
.animate-bounce-gentle {
	animation: igc-bounce-gentle 2s infinite;
}

/* ---------- ping ---------- */
@keyframes igc-ping {
	75%, 100% { transform: scale(2); opacity: 0; }
}
.animate-ping {
	animation: igc-ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
}

/* ---------- pulse (dot) ---------- */
@keyframes igc-pulse-dot {
	0%, 100% { transform: scale(1); opacity: 1; }
	50% { transform: scale(1.2); opacity: 0.7; }
}
.animate-pulse-dot {
	animation: igc-pulse-dot 2s infinite;
}

/* ---------- modal slide in ---------- */
@keyframes igc-modal-slide-in {
	from { transform: scale(0.9) translateY(20px); opacity: 0; }
	to { transform: scale(1) translateY(0); opacity: 1; }
}
.animate-modal-slide-in {
	animation: igc-modal-slide-in 0.3s ease-out;
}

/* ---------- timeline modern ---------- */
@keyframes igc-fade-in-up-scale {
	0% { opacity: 0; transform: translateY(40px) scale(0.95); }
	100% { opacity: 1; transform: translateY(0) scale(1); }
}
.timeline-step-modern {
	opacity: 0;
	animation: igc-fade-in-up-scale 0.8s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes igc-slide-in-from-left {
	0% { opacity: 0; transform: translateX(-30px); }
	100% { opacity: 1; transform: translateX(0); }
}
.timeline-step-mobile-modern {
	opacity: 0;
	animation: igc-slide-in-from-left 0.7s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes igc-pulse-glow {
	0%, 100% {
		box-shadow: 0 10px 30px rgba(249, 122, 77, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.2);
	}
	50% {
		box-shadow: 0 15px 45px rgba(249, 122, 77, 0.5), 0 0 30px rgba(249, 122, 77, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.3);
	}
}

/* ---------- prefers-reduced-motion ---------- */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}
	html {
		scroll-behavior: auto;
	}
}
