/* Core Animations */
@keyframes scanline {
    0% {
        transform: translateY(-100%);
    }
    100% {
        transform: translateY(100%);
    }
}

@keyframes blink {
    0%, 50% { opacity: 1; }
    51%, 100% { opacity: 0; }
}

@keyframes scan {
    0% {
        transform: translateY(-100%);
        opacity: 0;
    }
    50% {
        opacity: 0.5;
    }
    100% {
        transform: translateY(100%);
        opacity: 0;
    }
}

@keyframes dataStream {
    0% {
        background-position: 0 0;
    }
    100% {
        background-position: 100% 0;
    }
}

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

@keyframes glitch {
    0% {
        clip-path: inset(40% 0 61% 0);
        transform: translate(-2px, 2px);
    }
    20% {
        clip-path: inset(92% 0 1% 0);
        transform: translate(1px, -3px);
    }
    40% {
        clip-path: inset(43% 0 1% 0);
        transform: translate(-1px, 3px);
    }
    60% {
        clip-path: inset(25% 0 58% 0);
        transform: translate(3px, 1px);
    }
    80% {
        clip-path: inset(54% 0 7% 0);
        transform: translate(-3px, -2px);
    }
    100% {
        clip-path: inset(58% 0 43% 0);
        transform: translate(2px, 2px);
    }
}

/* Loading Animations */
@keyframes loading {
    0% {
        width: 0;
        left: 0;
    }
    50% {
        width: 100%;
        left: 0;
    }
    100% {
        width: 0;
        left: 100%;
    }
}

@keyframes pulse {
    0% {
        transform: scale(1);
        opacity: 1;
    }
    50% {
        transform: scale(1.1);
        opacity: 0.7;
    }
    100% {
        transform: scale(1);
        opacity: 1;
    }
}

/* Terminal Animations */
@keyframes typewrite {
    from { width: 0; }
    to { width: 100%; }
}

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

/* Neural Network Animations */
@keyframes neuronPulse {
    0% {
        transform: scale(1);
        opacity: 0.5;
    }
    50% {
        transform: scale(1.5);
        opacity: 1;
    }
    100% {
        transform: scale(1);
        opacity: 0.5;
    }
}

@keyframes synapseFlow {
    0% {
        stroke-dashoffset: 100;
    }
    100% {
        stroke-dashoffset: 0;
    }
}

/* Lily Portrait Effects */
@keyframes scanningBeam {
    0% {
        transform: translateY(-100%) rotate(45deg);
        opacity: 0;
    }
    50% {
        opacity: 0.5;
    }
    100% {
        transform: translateY(100%) rotate(45deg);
        opacity: 0;
    }
}

@keyframes energyField {
    0% {
        transform: scale(1) rotate(0deg);
        opacity: 0.3;
    }
    50% {
        transform: scale(1.2) rotate(180deg);
        opacity: 0.6;
    }
    100% {
        transform: scale(1) rotate(360deg);
        opacity: 0.3;
    }
}

/* Interactive Element Animations */
@keyframes buttonHover {
    0% {
        box-shadow: 0 0 0 0 rgba(255, 0, 51, 0.4);
    }
    70% {
        box-shadow: 0 0 0 10px rgba(255, 0, 51, 0);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(255, 0, 51, 0);
    }
}

@keyframes cardHover {
    0% {
        transform: translateY(0);
    }
    100% {
        transform: translateY(-10px);
    }
}

.animate-ready {
    opacity: 0;
    transform: translateY(20px);
    transition: all 0.6s ease;
}

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