/* Animations */

@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);
    }
}

@keyframes blink {

    0%,
    100% {
        opacity: 1;
    }

    50% {
        opacity: 0;
    }
}

@keyframes scan {
    0% {
        top: -100%;
    }

    100% {
        top: 100%;
    }
}

@keyframes float {
    0% {
        transform: translateY(0px);
    }

    50% {
        transform: translateY(-10px);
    }

    100% {
        transform: translateY(0px);
    }
}

/* Classes */

.glitch-effect:hover {
    animation: glitch 0.3s cubic-bezier(.25, .46, .45, .94) both infinite;
    color: var(--alert-red);
}

.cursor-blink::after {
    content: '_';
    animation: blink 1s step-end infinite;
}

.float-anim {
    animation: float 6s ease-in-out infinite;
}

.loading-bar {
    width: 100%;
    height: 2px;
    background-color: var(--dark-slate);
    position: relative;
    overflow: hidden;
}

.loading-bar::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 50%;
    background-color: var(--cyber-blue);
    animation: scan 2s linear infinite;
    /* Reuse scan keyframe conceptually or make a new one */
    transform: translateX(-100%);
    animation: loading-scan 2s infinite linear;
}

@keyframes loading-scan {
    0% {
        transform: translateX(-100%);
    }

    100% {
        transform: translateX(200%);
    }
}