/* === MISSION CONTROL TIMELINE ANIMATIONS === */

@keyframes gridScroll {
    0% {
        background-position: 0 0;
    }

    100% {
        background-position: 50px 50px;
    }
}

@keyframes progressPulse {

    0%,
    100% {
        opacity: 1;
        box-shadow: 0 0 20px currentColor;
    }

    50% {
        opacity: 0.7;
        transform: scaleX(0.98);
        box-shadow: 0 0 30px currentColor;
    }
}

@keyframes flowDown {
    0% {
        transform: translateY(-100%);
    }

    100% {
        transform: translateY(300%);
    }
}

@keyframes dataPulse {

    0%,
    100% {
        opacity: 0.3;
        transform: scale(1);
    }

    50% {
        opacity: 1;
        transform: scale(1.05);
    }
}

@keyframes animate-pulse-slow {

    0%,
    100% {
        opacity: 1;
        transform: scale(1);
    }

    50% {
        opacity: 0.8;
        transform: scale(1.05);
    }
}

.animate-pulse-slow {
    animation: animate-pulse-slow 3s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

.animate-flowDown {
    animation: flowDown 2s linear infinite;
}

.animate-grid-drift {
    animation: gridScroll 20s linear infinite;
}