/* ==========================================================================
   SEVENZONE VISUAL EFFECTS & ANIMATIONS
   ========================================================================== */

/* ── SCANLINE SWEEP EFFECT ── */
.scan-line {
    position: absolute;
    left: 0;
    right: 0;
    height: 40px;
    background: linear-gradient(180deg, transparent, rgba(0, 168, 255, 0.08), transparent);
    pointer-events: none;
    top: -100%;
    z-index: 5;
}

.card:hover .scan-line, 
.portfolio-card:hover .scan-line, 
.timeline-item:hover .scan-line {
    animation: scanSweep 1.5s ease-in-out infinite;
}

@keyframes scanSweep {
    0% {
        top: -100%;
    }
    100% {
        top: 200%;
    }
}

/* ── STATUS BADGE PULSE ── */
.status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #10B981;
    display: inline-block;
    box-shadow: 0 0 8px #10B981;
    animation: pulseGreen 2s ease-in-out infinite;
}

@keyframes pulseGreen {
    0%, 100% {
        opacity: 1;
        box-shadow: 0 0 10px #10B981;
    }
    50% {
        opacity: 0.4;
        box-shadow: 0 0 2px #10B981;
    }
}

/* ── SCROLL REVEAL EFFECT ── */
.reveal {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.8s cubic-bezier(0.25, 1, 0.5, 1), transform 0.8s cubic-bezier(0.25, 1, 0.5, 1);
}

.reveal.visible {
    opacity: 1;
    transform: translateY(0);
}

/* Delay classes for staggered loading */
.delay-1 { transition-delay: 0.1s; }
.delay-2 { transition-delay: 0.2s; }
.delay-3 { transition-delay: 0.3s; }
.delay-4 { transition-delay: 0.4s; }

/* ── LIKE POPPING ANIMATION ── */
@keyframes pop {
    0% {
        transform: scale(1);
    }
    50% {
        transform: scale(1.4);
    }
    100% {
        transform: scale(1);
    }
}

/* ── CLI CURSOR BLINKING ── */
.cursor {
    display: inline-block;
    width: 8px;
    height: 16px;
    background: var(--cyan-tech);
    animation: cursorBlink 1.1s step-end infinite;
    vertical-align: middle;
    margin-left: 5px;
    box-shadow: var(--glow-cyan);
}

@keyframes cursorBlink {
    50% {
        opacity: 0;
    }
}

/* ── FADE SLIDE UP ── */
.fade-in-up {
    animation: fadeInUp 0.8s cubic-bezier(0.25, 1, 0.5, 1) both;
}

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

/* ── TERMINAL FADE SLIDE IN ── */
.terminal-box {
    animation: fadeInUp 0.9s cubic-bezier(0.25, 1, 0.5, 1) 0.3s both;
}
