/* CORE ANIMATIONS */

/* Scanline Overlay */
.scanline {
    position: fixed;
    top: 0; left: 0; width: 100%; height: 100%;
    background: linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255,0) 50%, rgba(0,0,0,0.1) 50%, rgba(0,0,0,0.1));
    background-size: 100% 4px;
    z-index: 9998;
    pointer-events: none;
    opacity: 0.3;
}

/* Typing Cursor */
.cursor {
    display: inline-block;
    width: 10px;
    animation: blink 1s step-end infinite;
}

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

/* Neural Ticker Marquee */
.neural-ticker {
    animation: marquee 30s linear infinite;
}

@keyframes marquee {
    0% { transform: translateX(0); }
    100% { transform: translateX(-50%); } /* Assuming duplicate content in JS for seamless loop */
}

/* Pulse Glows */
.status-pulse {
    animation: pulse-glow 2s infinite;
}

@keyframes pulse-glow {
    0% { box-shadow: 0 0 0 0 rgba(198, 255, 0, 0.7); }
    70% { box-shadow: 0 0 0 10px rgba(198, 255, 0, 0); }
    100% { box-shadow: 0 0 0 0 rgba(198, 255, 0, 0); }
}

.pulse-orange {
    animation: text-pulse 3s infinite;
}

@keyframes text-pulse {
    0%, 100% { text-shadow: 0 0 10px rgba(255, 106, 0, 0.5); }
    50% { text-shadow: 0 0 20px rgba(255, 106, 0, 0.9), 0 0 30px rgba(255, 106, 0, 0.5); }
}

/* Shield Ring Spin */
.shield-ring {
    animation: spin 10s linear infinite;
}

@keyframes spin {
    100% { transform: rotate(360deg); }
}

/* Hero BG morph simulation */
.hero-bg-transition.active .hero-bg-img {
    opacity: 0.8;
    mix-blend-mode: normal;
    transform: scale(1.05);
}

/* Glitch effect on Xray trigger */
@keyframes glitch {
    0% { transform: translate(0) }
    20% { transform: translate(-2px, 2px) }
    40% { transform: translate(-2px, -2px) }
    60% { transform: translate(2px, 2px) }
    80% { transform: translate(2px, -2px) }
    100% { transform: translate(0) }
}

.glitch-anim {
    animation: glitch 0.2s ease-in-out;
}