@keyframes sk-plane {
    0% {
        transform: perspective(120px) rotateX(0) rotateY(0)
    }

    50% {
        transform: perspective(120px) rotateX(-180.1deg) rotateY(0)
    }

    100% {
        transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg)
    }
}

@keyframes sk-chase {
    100% {
        transform: rotate(360deg)
    }
}

@keyframes sk-chase-dot {
    100%, 80% {
        transform: rotate(360deg)
    }
}

@keyframes sk-chase-dot-before {
    50% {
        transform: scale(.4)
    }

    0%, 100% {
        transform: scale(1)
    }
}

@keyframes sk-bounce {
    0%, 100% {
        transform: scale(0)
    }

    45%, 55% {
        transform: scale(1)
    }
}

@keyframes sk-wave {
    0%, 100%, 40% {
        transform: scaleY(.4)
    }

    20% {
        transform: scaleY(1)
    }
}

@keyframes sk-pulse {
    0% {
        transform: scale(0)
    }

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

@keyframes sk-flow {
    0%, 100%, 80% {
        transform: scale(.3)
    }

    40% {
        transform: scale(1)
    }
}

@keyframes sk-swing {
    100% {
        transform: rotate(360deg)
    }
}

@keyframes sk-swing-dot {
    0%, 100% {
        transform: scale(.2)
    }

    50% {
        transform: scale(1)
    }
}

@keyframes sk-circle {
    0%, 100%, 80% {
        transform: scale(0)
    }

    40% {
        transform: scale(1)
    }
}

@keyframes sk-circle-fade {
    0%, 100%, 39% {
        opacity: 0;
        transform: scale(.6)
    }

    40% {
        opacity: 1;
        transform: scale(1)
    }
}

@keyframes sk-grid {
    0%, 100%, 70% {
        transform: scale3D(1, 1, 1)
    }

    35% {
        transform: scale3D(0, 0, 1)
    }
}

@keyframes sk-fold {
    0%, 10% {
        transform: perspective(140px) rotateX(-180deg);
        opacity: 0
    }

    25%, 75% {
        transform: perspective(140px) rotateX(0);
        opacity: 1
    }

    100%, 90% {
        transform: perspective(140px) rotateY(180deg);
        opacity: 0
    }
}

@keyframes sk-wander {
    0% {
        transform: rotate(0)
    }

    25% {
        transform: translateX(var(--sk-wander-distance)) rotate(-90deg) scale(.6)
    }

    50% {
        transform: translateX(var(--sk-wander-distance)) translateY(var(--sk-wander-distance)) rotate(-179deg)
    }

    50.1% {
        transform: translateX(var(--sk-wander-distance)) translateY(var(--sk-wander-distance)) rotate(-180deg)
    }

    75% {
        transform: translateX(0) translateY(var(--sk-wander-distance)) rotate(-270deg) scale(.6)
    }

    100% {
        transform: rotate(-360deg)
    }
}