.loader-mask {
    height: 100vh;
    width: 100vw;
    background-color: #2c3e50;
}

.loader {
    width: 80px;
    height: 80px;
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    animation: sk-chase 2.5s infinite linear both;
}

.loader-dot {
    width: 100%;
    height: 100%;
    position: absolute;
    left: 0;
    top: 0;
    animation: sk-chase-dot 2.0s infinite ease-in-out both;
}

    .loader-dot:before {
        content: '';
        display: block;
        width: 25%;
        height: 25%;
        background-color: cyan;
        border-radius: 100%;
        animation: sk-chase-dot-before 2.0s infinite ease-in-out both;
    }

    .loader-dot:nth-child(1) {
        animation-delay: -1.1s;
    }

    .loader-dot:nth-child(2) {
        animation-delay: -1.0s;
    }

    .loader-dot:nth-child(3) {
        animation-delay: -0.9s;
    }

    .loader-dot:nth-child(4) {
        animation-delay: -0.8s;
    }

    .loader-dot:nth-child(5) {
        animation-delay: -0.7s;
    }

    .loader-dot:nth-child(6) {
        animation-delay: -0.6s;
    }

    .loader-dot:nth-child(1):before {
        animation-delay: -1.1s;
    }

    .loader-dot:nth-child(2):before {
        animation-delay: -1.0s;
    }

    .loader-dot:nth-child(3):before {
        animation-delay: -0.9s;
    }

    .loader-dot:nth-child(4):before {
        animation-delay: -0.8s;
    }

    .loader-dot:nth-child(5):before {
        animation-delay: -0.7s;
    }

    .loader-dot:nth-child(6):before {
        animation-delay: -0.6s;
    }

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

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

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

    100%, 0% {
        transform: scale(1.0);
    }
}