/* Utility classes */
.animate {
    animation-duration: 1s;
    animation-fill-mode: both;
}

.animate.animate--infinite {
    animation-iteration-count: infinite;
}

.animate.animate--delay-1s {
    animation-delay: 1s;
}

.animate.animate--fast {
    animation-duration: 0.6s;
}

.animate.animate--slow {
    animation-duration: 3s;
}

/* Animations */
@keyframes slideInLeft {
    from {
        transform: translateX(-300px);
    }

    to {
        transform: translateX(0);
    }
}

.slideInLeft {
    animation-name: slideInLeft;
    animation-timing-function: ease-in;
}

@keyframes slideInRight {
    from {
        transform: translateX(300px);
    }

    to {
        transform: translateX(0);
    }
}

.slideInRight {
    animation-name: slideInRight;
    animation-timing-function: ease-in;
}

@keyframes rotate {
    from {
        transform: rotate(0);
    }

    to {
        transform: rotate(360deg);
    }
}

.rotate {
    animation-name: rotate;
    animation-timing-function: linear;

    transform-origin: top left;
}

@keyframes bounce {

    0%,
    20%,
    50%,
    80%,
    100% {
        transform: translateY(0);
    }

    40% {
        transform: translateY(-30px);
    }

    60% {
        transform: translateY(-15px);
    }
}

.bounce {
    animation-name: bounce;
}