/* Animação Flutuante */
@keyframes float {
    0% {
        transform: translateY(0px);
    }
    50% {
        transform: translateY(-20px);
    }
    100% {
        transform: translateY(0px);
    }
}

/* Animações de Entrada */
[data-aos="fade-up"] {
    transform: translateY(50px);
    opacity: 0;
    transition: all 0.8s ease;
}

[data-aos="fade-up"].aos-animate {
    transform: translateY(0);
    opacity: 1;
}

[data-aos="fade-down"] {
    transform: translateY(-50px);
    opacity: 0;
    transition: all 0.8s ease;
}

[data-aos="fade-down"].aos-animate {
    transform: translateY(0);
    opacity: 1;
}

[data-aos="fade-right"] {
    transform: translateX(-50px);
    opacity: 0;
    transition: all 0.8s ease;
}

[data-aos="fade-right"].aos-animate {
    transform: translateX(0);
    opacity: 1;
}

[data-aos="fade-left"] {
    transform: translateX(50px);
    opacity: 0;
    transition: all 0.8s ease;
}

[data-aos="fade-left"].aos-animate {
    transform: translateX(0);
    opacity: 1;
}

[data-aos="zoom-in"] {
    transform: scale(0.8);
    opacity: 0;
    transition: all 0.8s ease;
}

[data-aos="zoom-in"].aos-animate {
    transform: scale(1);
    opacity: 1;
}

[data-aos="flip-left"] {
    transform: perspective(1000px) rotateY(90deg);
    opacity: 0;
    transition: all 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

[data-aos="flip-left"].aos-animate {
    transform: perspective(1000px) rotateY(0);
    opacity: 1;
}

/* Efeito de Digitação */
.typewriter {
    overflow: hidden;
    border-right: 3px solid var(--primary-color);
    white-space: nowrap;
    margin: 0 auto;
    letter-spacing: 2px;
    animation: typing 3.5s steps(40, end), blink-caret 0.75s step-end infinite;
}

@keyframes typing {
    from {
        width: 0;
    }
    to {
        width: 100%;
    }
}

@keyframes blink-caret {
    from, to {
        border-color: transparent;
    }
    50% {
        border-color: var(--primary-color);
    }
}

/* Animação de Preenchimento */
@keyframes fill {
    0% {
        width: 0%;
    }
    100% {
        width: attr(data-level);
    }
}

/* Animação de Rotação */
@keyframes rotate {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}

.rotate {
    animation: rotate 10s linear infinite;
}