/* ==========================================================================
   ANIMATIONS.CSS - Keyframes, Effects & CRT Overlay
   ========================================================================== */

@keyframes engram-flicker {

    0% {
        opacity: 0.9;
        filter: grayscale(100%) sepia(100%) hue-rotate(5deg) brightness(0.82) contrast(1.15);
        transform: skew(0deg) scale(1);
    }

    4% {
        opacity: 0.92;
        filter: brightness(1.22) contrast(1.5) sepia(0.2) saturate(0.2) hue-rotate(165deg);
        transform: skew(2deg) scaleY(1.03);
    }

    8% {
        opacity: 1;
        filter: brightness(1.38) contrast(1.12) sepia(0.76) saturate(1.95) hue-rotate(-68deg);
        transform: skew(-2deg) scaleY(0.97);
    }

    12%,
    74%,
    100% {
        opacity: 1;
        filter: sepia(0.45) saturate(1.05) contrast(1.25) brightness(1.14);
        transform: skew(0deg) scale(1);
    }

    82% {
        opacity: 0.95;
        filter: brightness(1.18) contrast(1.42) sepia(0.28) saturate(0.4) hue-rotate(140deg);
        transform: skew(1.5deg) scaleY(1.02);
    }

    86% {
        opacity: 1;
        filter: brightness(1.26) contrast(1.16) sepia(0.68) saturate(1.6) hue-rotate(-48deg);
        transform: skew(-1.5deg) scaleY(0.98);
    }

    90% {
        opacity: 1;
        filter: sepia(0.45) saturate(1.05) contrast(1.25) brightness(1.14);
        transform: skew(0deg) scale(1);
    }
}



/* --- KEYFRAMES --- */
@keyframes blink {
    50% {
        opacity: 0;
    }
}

@keyframes typing {
    from {
        width: 0;
    }

    to {
        width: 100%;
    }
}

@keyframes blink-caret {
    0% {
        border-color: transparent;
    }

    50% {
        border-color: var(--gold);
    }

    100% {
        border-color: transparent;
    }
}

@keyframes decrypt-fade {
    0% {
        opacity: 0;
        filter: blur(4px);
        transform: translateY(10px);
    }

    100% {
        opacity: 1;
        filter: blur(0);
        transform: translateY(0);
    }
}

/* --- CONTENT FADE-IN --- */
h1,
.line,
.scan-nav,
.catechism,
.terminal-footer,
.story-header,
.archive-figure {
    opacity: 0;
    animation: decrypt-fade 0.8s ease-out forwards;
}

.prose p {
    opacity: 0;
    animation: decrypt-fade 0.6s ease-out forwards;
}

/* Staggered load for prose */
.prose p:nth-child(1) {
    animation-delay: 0.2s;
}

.prose p:nth-child(2) {
    animation-delay: 0.3s;
}

.prose p:nth-child(3) {
    animation-delay: 0.4s;
}

.prose p:nth-child(4) {
    animation-delay: 0.5s;
}

.prose p:nth-child(5) {
    animation-delay: 0.6s;
}

.prose p:nth-child(n+6) {
    animation-delay: 0.7s;
}

.series-hero,
.series-records,
.series-footer-actions {
    opacity: 0;
    animation: decrypt-fade 0.7s ease-out forwards;
}

.series-records {
    animation-delay: 0.18s;
}

.series-footer-actions {
    animation-delay: 0.3s;
}

.series-hero-visual {
    animation: series-visual-drift 18s ease-in-out infinite alternate;
}

@keyframes series-visual-drift {
    from {
        transform: scale(1.01) translate3d(-0.5%, 0, 0);
    }

    to {
        transform: scale(1.06) translate3d(1.5%, -0.8%, 0);
    }
}
