.section-hidden {
	opacity: 0;
	transform: translateY(30px);
	transition: all 0.8s ease-out;
}

.section-visible {
	opacity: 1;
	transform: translateY(0);
}

.timeline-dot {
	animation: pulse 2s infinite;
}

.neural-network-bg {
	background-image:
		radial-gradient(circle at 10% 20%, rgba(30, 64, 175, 0.1) 0%, transparent 20%),
		radial-gradient(circle at 90% 80%, rgba(224, 60, 49, 0.1) 0%, transparent 20%);
}

.gradient-text {
	background: linear-gradient(90deg, #1E40AF, #002147, #E03C31);
	background-size: 200% 200%;
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	animation: gradient 3s ease infinite;
}

.progress-bar {
	width: 0%;
	transition: width 1.5s ease-in-out;
}

.progress-bar.animated {
	width: 100%;
}

.typewriter {
	overflow: hidden;
	border-right: .15em solid #1E40AF;
	white-space: nowrap;
	animation: typing 3.5s steps(40, end), blink-caret .75s step-end infinite;
}

@keyframes typing {
	from {
		width: 0
	}

	to {
		width: 100%
	}
}

@keyframes blink-caret {

	from,
	to {
		border-color: transparent
	}

	50% {
		border-color: #1E40AF;
	}
}

@keyframes pulse-glow {

	0%,
	100% {
		opacity: 0.4;
		transform: scale(1);
	}

	50% {
		opacity: 0.8;
		transform: scale(1.05);
	}
}

@keyframes float {

	0%,
	100% {
		transform: translateY(0) translateX(-50%);
	}

	33% {
		transform: translateY(-3px) translateX(-50%);
	}

	66% {
		transform: translateY(3px) translateX(-50%);
	}
}

.animate-pulse-glow {
	animation: pulse-glow 2s ease-in-out infinite;
}

.animate-float {
	animation: float 3s ease-in-out infinite;
}

/* Smooth all animations */
* {
	animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

/* Subtle shimmer effect for key elements */
@keyframes shimmer {
	0% {
		background-position: -200px 0;
	}

	100% {
		background-position: calc(200px + 100%) 0;
	}
}

.shimmer {
	background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);
	background-size: 200px 100%;
	animation: shimmer 3s infinite;
}

/* For Webkit Browsers (Chrome, Edge, Safari) */
::-webkit-scrollbar {
	width: 10px;
	/* Width of vertical scrollbar */
	height: 10px;
	/* Height of horizontal scrollbar */
}

::-webkit-scrollbar-track {
	background: #f8fafc;
	/* Scrollbar track color (light background) */
	border-radius: 8px;
}

::-webkit-scrollbar-thumb {
	background: #1e40af;
	/* Scrollbar thumb color (accent) */
	border-radius: 8px;
	border: 2px solid #f8fafc;
	/* Adds space around thumb */
}

::-webkit-scrollbar-thumb:hover {
	background: #2563eb;
	/* Darker on hover */
}

/* For Firefox */
* {
	scrollbar-width: thin;
	/* "auto" or "thin" */
	scrollbar-color: #1e40af #f8fafc;
	/* thumb color, track color */
}



@keyframes pulse-glow {
    0%, 100% { 
        opacity: 0.4;
        transform: scale(1);
    }
    50% { 
        opacity: 0.8;
        transform: scale(1.05);
    }
}

@keyframes float {
    0%, 100% { transform: translateY(0) translateX(-50%); }
    33% { transform: translateY(-3px) translateX(-50%); }
    66% { transform: translateY(3px) translateX(-50%); }
}

.animate-pulse-glow {
    animation: pulse-glow 2s ease-in-out infinite;
}

.animate-float {
    animation: float 3s ease-in-out infinite;
}

/* Smooth all animations */
* {
    animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

/* Subtle shimmer effect for key elements */
@keyframes shimmer {
    0% { background-position: -200px 0; }
    100% { background-position: calc(200px + 100%) 0; }
}

.shimmer {
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.1), transparent);
    background-size: 200px 100%;
    animation: shimmer 3s infinite;
}