/* Animations */
@keyframes fadeIn {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@keyframes slideUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }

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

@keyframes pulse {
    0% {
        transform: scale(1);
    }

    50% {
        transform: scale(1.05);
    }

    100% {
        transform: scale(1);
    }
}

/* Typewriter Effect */
.typewriter-container {
    display: inline-block;
}

.typewriter {
    overflow: hidden;
    /* Ensures the content is not revealed until the animation */
    border-right: .15em solid var(--primary-color);
    /* 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;
    max-width: 100%;
}

@keyframes typing {
    from {
        width: 0
    }

    to {
        width: 100%
    }
}

@keyframes blink-caret {

    from,
    to {
        border-color: transparent
    }

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

/* Element Animations */
.hero-content {
    animation: fadeIn 1s ease-out, slideUp 0.8s ease-out;
}

.service-card:hover {
    transform: translateY(-10px);
    box-shadow: 0 15px 30px rgba(0, 0, 0, 0.1);
}

.service-icon i {
    transition: var(--transition);
}

.service-card:hover .service-icon i {
    animation: pulse 1s infinite;
}

.btn:hover {
    box-shadow: 0 5px 15px rgba(255, 107, 0, 0.3);
}

/* Scroll Animations */
[data-aos] {
    transition: opacity 0.6s ease, transform 0.6s ease;
}

[data-aos="fade-up"] {
    opacity: 0;
    transform: translateY(30px);
}

[data-aos="fade-up"].aos-animate {
    opacity: 1;
    transform: translateY(0);
}

[data-aos="fade-in"] {
    opacity: 0;
}

[data-aos="fade-in"].aos-animate {
    opacity: 1;
}

[data-aos="zoom-in"] {
    opacity: 0;
    transform: scale(0.9);
}

[data-aos="zoom-in"].aos-animate {
    opacity: 1;
    transform: scale(1);
}