/* Core Animation System */
.fade-in {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

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

/* Staggered Delay Utilities */
.delay-100 { transition-delay: 100ms; }
.delay-200 { transition-delay: 200ms; }
.delay-300 { transition-delay: 300ms; }
.delay-400 { transition-delay: 400ms; }

/* Neon Pulse Animation */
@keyframes neon-pulse {
    0% { box-shadow: 0 0 10px var(--glow-purple), inset 0 0 10px var(--glow-purple); }
    50% { box-shadow: 0 0 25px var(--glow-pink), inset 0 0 15px var(--glow-pink); }
    100% { box-shadow: 0 0 10px var(--glow-purple), inset 0 0 10px var(--glow-purple); }
}

.anim-pulse {
    animation: neon-pulse 3s infinite;
}

/* Gradient Shift Animation */
@keyframes gradient-shift {
    0% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
    100% { background-position: 0% 50%; }
}

.anim-gradient {
    background-size: 200% 200%;
    animation: gradient-shift 5s ease infinite;
}

/* Float Animation */
@keyframes float {
    0% { transform: translateY(0px); }
    50% { transform: translateY(-15px); }
    100% { transform: translateY(0px); }
}

.anim-float {
    animation: float 6s ease-in-out infinite;
}

/* Light Flicker */
@keyframes flicker {
    0%, 18%, 22%, 25%, 53%, 57%, 100% {
        opacity: 1;
        text-shadow: 0 0 10px var(--glow-blue);
    }
    20%, 24%, 55% {
        opacity: 0.8;
        text-shadow: none;
    }
}

.anim-flicker {
    animation: flicker 4s infinite alternate;
}

/* Particle Streaks Overlay */
@keyframes streak-move {
    0% { background-position: 0 0; }
    100% { background-position: 100% 100%; }
}

.light-streaks {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-image: radial-gradient(rgba(255,255,255,0.1) 1px, transparent 1px);
    background-size: 50px 50px;
    animation: streak-move 20s linear infinite;
    pointer-events: none;
    z-index: 0;
}