/* ============================================================
   animations.css — All @keyframes
   Live Talk AI Framework v2
   ============================================================ */

/* Background grid scroll */
@keyframes gridMove {
    0% {
        transform: translateY(0);
    }

    100% {
        transform: translateY(50px);
    }
}

/* Orb ripple rings */
@keyframes ripple {
    0% {
        opacity: 0.6;
        transform: scale(1);
    }

    100% {
        opacity: 0;
        transform: scale(1.35);
    }
}

/* Orb listening state */
@keyframes orbListen {
    from {
        transform: scale(0.95);
        box-shadow: 0 0 20px rgba(0, 245, 196, 0.3);
    }

    to {
        transform: scale(1.1);
        box-shadow: 0 0 60px rgba(0, 245, 196, 0.75), 0 0 100px rgba(124, 58, 237, 0.4);
    }
}

/* Orb speaking state */
@keyframes orbSpeak {
    from {
        transform: scale(1);
        box-shadow: 0 0 30px rgba(124, 58, 237, 0.5);
    }

    to {
        transform: scale(1.08);
        box-shadow: 0 0 60px rgba(124, 58, 237, 0.85), 0 0 100px rgba(0, 245, 196, 0.35);
    }
}

/* Orb thinking — slow rotate glow */
@keyframes orbThink {
    0% {
        filter: hue-rotate(0deg) brightness(1);
    }

    50% {
        filter: hue-rotate(30deg) brightness(1.2);
    }

    100% {
        filter: hue-rotate(0deg) brightness(1);
    }
}

/* Mic button recording pulse */
@keyframes recordPulse {

    0%,
    100% {
        box-shadow: 0 0 30px rgba(239, 68, 68, 0.5);
    }

    50% {
        box-shadow: 0 0 60px rgba(239, 68, 68, 0.95);
    }
}

/* Typing dots bounce */
@keyframes bounce {

    0%,
    60%,
    100% {
        transform: translateY(0);
    }

    30% {
        transform: translateY(-6px);
    }
}

/* Message slide in */
@keyframes slideIn {
    from {
        opacity: 0;
        transform: translateY(10px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Toast fade up */
@keyframes fadeUp {
    from {
        opacity: 0;
        transform: translateX(-50%) translateY(14px);
    }

    to {
        opacity: 1;
        transform: translateX(-50%) translateY(0);
    }
}

/* Toast fade out */
@keyframes fadeOut {
    from {
        opacity: 1;
        transform: translateX(-50%) translateY(0);
    }

    to {
        opacity: 0;
        transform: translateX(-50%) translateY(-10px);
    }
}

/* Spinner */
@keyframes spin {
    to {
        transform: rotate(360deg);
    }
}

/* Streaming cursor blink */
@keyframes blinkCursor {

    0%,
    100% {
        opacity: 1;
    }

    50% {
        opacity: 0;
    }
}