/* ============================================
   FNAF Camera Animations & Effects
   ============================================ */

/* Scanline scroll */
@keyframes scanlines {
    0% {
        background-position: 0 0;
    }

    100% {
        background-position: 0 100%;
    }
}

/* Flicker effect */
@keyframes flicker {

    0%,
    100% {
        opacity: 1;
    }

    3% {
        opacity: 0.4;
    }

    6% {
        opacity: 1;
    }

    7% {
        opacity: 0.6;
    }

    9% {
        opacity: 1;
    }

    20% {
        opacity: 1;
    }

    21% {
        opacity: 0.3;
    }

    23% {
        opacity: 1;
    }

    50% {
        opacity: 1;
    }

    55% {
        opacity: 0.7;
    }

    57% {
        opacity: 1;
    }
}

/* REC dot blink */
@keyframes rec-blink {

    0%,
    49% {
        opacity: 1;
    }

    50%,
    100% {
        opacity: 0;
    }
}

/* VHS static noise overlay */
@keyframes static-noise {
    0% {
        transform: translateX(0) translateY(0);
    }

    10% {
        transform: translateX(-2%) translateY(-2%);
    }

    20% {
        transform: translateX(1%) translateY(3%);
    }

    30% {
        transform: translateX(-3%) translateY(1%);
    }

    40% {
        transform: translateX(2%) translateY(-1%);
    }

    50% {
        transform: translateX(-1%) translateY(2%);
    }

    60% {
        transform: translateX(3%) translateY(-3%);
    }

    70% {
        transform: translateX(-2%) translateY(1%);
    }

    80% {
        transform: translateX(1%) translateY(-2%);
    }

    90% {
        transform: translateX(-1%) translateY(3%);
    }

    100% {
        transform: translateX(0) translateY(0);
    }
}

/* Camera switch flash */
@keyframes camera-switch {
    0% {
        opacity: 1;
    }

    10% {
        opacity: 0;
    }

    20% {
        opacity: 0.8;
    }

    30% {
        opacity: 0.1;
    }

    40% {
        opacity: 0.9;
    }

    60% {
        opacity: 0.3;
    }

    80% {
        opacity: 0.7;
    }

    100% {
        opacity: 1;
    }
}

/* Glitch text distortion */
@keyframes glitch-text {

    0%,
    100% {
        text-shadow: 2px 0 #ff0000, -2px 0 #00ff41;
        transform: translate(0);
    }

    20% {
        text-shadow: -2px 0 #ff0000, 2px 0 #00ff41;
        transform: translate(-2px, 1px);
    }

    40% {
        text-shadow: 2px 0 #ff0000, -2px 0 #00ff41;
        transform: translate(2px, -1px);
    }

    60% {
        text-shadow: -1px 0 #ff0000, 1px 0 #00ff41;
        transform: translate(-1px, 2px);
    }

    80% {
        text-shadow: 1px 0 #ff0000, -1px 0 #00ff41;
        transform: translate(1px, -2px);
    }
}

/* VHS tracking lines */
@keyframes vhs-tracking {
    0% {
        top: -10%;
    }

    100% {
        top: 110%;
    }
}

/* Glow pulse for active camera */
@keyframes glow-pulse {

    0%,
    100% {
        box-shadow: 0 0 5px rgba(0, 255, 65, 0.5), inset 0 0 5px rgba(0, 255, 65, 0.1);
    }

    50% {
        box-shadow: 0 0 15px rgba(0, 255, 65, 0.8), inset 0 0 10px rgba(0, 255, 65, 0.2);
    }
}

/* Power indicator flicker */
@keyframes power-flicker {

    0%,
    85%,
    100% {
        opacity: 1;
    }

    86% {
        opacity: 0.3;
    }

    88% {
        opacity: 0.8;
    }

    90% {
        opacity: 0.2;
    }

    92% {
        opacity: 0.9;
    }
}

/* Ambient hum visualizer */
@keyframes ambient-bar {

    0%,
    100% {
        height: 4px;
    }

    25% {
        height: 12px;
    }

    50% {
        height: 6px;
    }

    75% {
        height: 15px;
    }
}

/* CRT turn on/off */
@keyframes crt-on {
    0% {
        transform: scaleY(0.01) scaleX(0.5);
        filter: brightness(10);
    }

    30% {
        transform: scaleY(0.01) scaleX(1);
        filter: brightness(5);
    }

    50% {
        transform: scaleY(1) scaleX(1);
        filter: brightness(2);
    }

    100% {
        transform: scaleY(1) scaleX(1);
        filter: brightness(1);
    }
}

@keyframes crt-off {
    0% {
        transform: scaleY(1) scaleX(1);
        filter: brightness(1);
    }

    60% {
        transform: scaleY(0.01) scaleX(1);
        filter: brightness(5);
    }

    100% {
        transform: scaleY(0) scaleX(0);
        filter: brightness(10);
    }
}

/* Scanline overlay opacity pulse */
@keyframes scanline-pulse {

    0%,
    100% {
        opacity: 0.04;
    }

    50% {
        opacity: 0.08;
    }
}

/* Noise grain */
@keyframes grain {

    0%,
    100% {
        transform: translate(0, 0);
    }

    10% {
        transform: translate(-5%, -10%);
    }

    20% {
        transform: translate(-15%, 5%);
    }

    30% {
        transform: translate(7%, -25%);
    }

    40% {
        transform: translate(-5%, 25%);
    }

    50% {
        transform: translate(-15%, 10%);
    }

    60% {
        transform: translate(15%, 0%);
    }

    70% {
        transform: translate(0%, 15%);
    }

    80% {
        transform: translate(3%, 35%);
    }

    90% {
        transform: translate(-10%, 10%);
    }
}