/* Keyframes & Animation Utility Classes */

/* Fade In Up */
.reveal-text,
.reveal-left,
.reveal-right {
    opacity: 0;
    transform: translateY(30px);
    transition: all 0.8s ease;
}

.reveal-text.active {
    opacity: 1;
    transform: translateY(0);
}

/* Slide In Left */
.reveal-left {
    transform: translateX(-50px);
}

.reveal-left.active {
    opacity: 1;
    transform: translateX(0);
}

/* Slide In Right */
.reveal-right {
    transform: translateX(50px);
}

.reveal-right.active {
    opacity: 1;
    transform: translateX(0);
}

/* Floating Animation */
@keyframes float {
    0% {
        transform: translateY(0px);
    }

    50% {
        transform: translateY(-20px);
    }

    100% {
        transform: translateY(0px);
    }
}

.floating {
    animation: float 6s ease-in-out infinite;
}

/* Pulse Animation */
@keyframes pulse {
    0% {
        transform: scale(0.95);
        opacity: 0.5;
    }

    50% {
        transform: scale(1);
        opacity: 0.8;
    }

    100% {
        transform: scale(0.95);
        opacity: 0.5;
    }
}

/* Scroll Mouse Animation */
@keyframes scroll {
    0% {
        opacity: 0;
        top: 5px;
    }

    30% {
        opacity: 1;
    }

    100% {
        opacity: 0;
        top: 25px;
    }
}

/* Nav Link Fade for Mobile */
@keyframes navLinkFade {
    from {
        opacity: 0;
        transform: translateX(50px);
    }

    to {
        opacity: 1;
        transform: translateX(0);
    }
}

/* Typing Effect (Simple) */
.typewriter {
    overflow: hidden;
    /* Ensures the content is not revealed until the animation */
    border-right: .15em solid orange;
    /* The typwriter cursor */
    white-space: nowrap;
    /* Keeps the content on a single line */
    margin: 0 auto;
    /* Gives that scrolling effect as the typing happens */
    letter-spacing: .15em;
    /* Adjust as needed */
    animation:
        typing 3.5s steps(40, end),
        blink-caret .75s step-end infinite;
}

@keyframes typing {
    from {
        width: 0
    }

    to {
        width: 100%
    }
}

@keyframes blink-caret {

    from,
    to {
        border-color: transparent
    }

    50% {
        border-color: orange;
    }
}