[data-animate] {
}

[data-animate].animate {
    opacity: 1;
    transform: none;
}

[data-animate="fade-up"] {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s ease, transform 0.8s ease;
    transform: translateY(40px);
}

[data-animate="fade-down"] {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s ease, transform 0.8s ease;
    transform: translateY(-40px);
}

[data-animate="fade-left"] {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s ease, transform 0.8s ease;
    transform: translateX(-40px);
}

[data-animate="fade-right"] {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s ease, transform 0.8s ease;
    transform: translateX(40px);
}

[data-animate="zoom-in"] {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s ease, transform 0.8s ease;
    transform: scale(0.9);
}

[data-animate="flip-up"] {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s ease, transform 0.8s ease;
    transform: rotateX(60deg);
    transform-origin: bottom;
}

[data-animate="pulse-shadow"] {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s ease, transform 0.8s ease;
    box-shadow: 0 0 0 0 rgba(55, 191, 131, 0.5);
}

[data-animate="pulse-shadow"].animate {
    animation: pulseBoxShadow 2.5s infinite ease-in-out;
}

@keyframes pulseBoxShadow {
    0% {
        box-shadow: 0 0 0 0 rgba(55, 191, 131, 0.5);
    }

    50% {
        box-shadow: 0 0 30px 20px rgba(27, 43, 37, 0.6);
    }

    100% {
        box-shadow: 0 0 0 0 rgba(15, 18, 24, 0);
    }
}