/* <<<<<<< Loader page design and animation >>>>>>> */

@import url('https://fonts.googleapis.com/css2?family=Courier+Prime &display=swap');

.loader-bg {
    background-color: black;
    width: 100vw;
    height: 100vh;
    position: fixed;
    z-index: 9999;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    flex-direction: column;
    -webkit-box-pack: center;
    -ms-flex-pack: center;
    justify-content: center;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
}

.loader-image {
    left: 30%;
    width: 50%;
}

.loader-image img {
    width: 100%;
    height: auto;
}

.loader-msg {
    display: block;
    text-align: center;
    color: #ffffff;
    margin: 20px auto;
}

.loader-msg p {
    font-family: 'Courier Prime', monospace;
    font-size: 2.5rem;
    font-weight: 500;
}

@media (max-width: 600px) {
    .loader-msg {
        margin: 15px auto;
    }

    .loader-msg p {
        font-size: 1.5rem;
    }

    .loader-image {
        left: 40%;
        width: 60%;
    }
}

.dot-pulse {
    position: relative;
    left: -9999px;
    width: 20px;
    height: 20px;
    border-radius: 10px;
    background-color: #fff;
    color: #fff;
    box-shadow: 9999px 0 0 -5px;
    -webkit-animation: dot-pulse 1.5s infinite linear;
    animation: dot-pulse 1.5s infinite linear;
    -webkit-animation-delay: 0.25s;
    animation-delay: 0.25s;
}

.dot-pulse::before,
.dot-pulse::after {
    content: "";
    display: inline-block;
    position: absolute;
    top: 0;
    width: 20px;
    height: 20px;
    border-radius: 10px;
    background-color: #fff;
    color: #fff;
}

.dot-pulse::before {
    box-shadow: 9969px 0 0 -10px;
    -webkit-animation: dot-pulse-before 1.5s infinite linear;
    animation: dot-pulse-before 1.5s infinite linear;
    -webkit-animation-delay: 0s;
    animation-delay: 0s;
}

.dot-pulse::after {
    box-shadow: 10029px 0 0 -10px;
    -webkit-animation: dot-pulse-after 1.5s infinite linear;
    animation: dot-pulse-after 1.5s infinite linear;
    -webkit-animation-delay: 0.5s;
    animation-delay: 0.5s;
}

@-webkit-keyframes dot-pulse-before {
    0% {
        box-shadow: 9969px 0 0 -5px;
    }

    30% {
        box-shadow: 9969px 0 0 2px;
    }

    60%,
    100% {
        box-shadow: 9969px 0 0 -5px;
    }
}

@keyframes dot-pulse-before {
    0% {
        box-shadow: 9969px 0 0 -5px;
    }

    30% {
        box-shadow: 9969px 0 0 2px;
    }

    60%,
    100% {
        box-shadow: 9969px 0 0 -5px;
    }
}

@-webkit-keyframes dot-pulse {
    0% {
        box-shadow: 9999px 0 0 -5px;
    }

    30% {
        box-shadow: 9999px 0 0 2px;
    }

    60%,
    100% {
        box-shadow: 9999px 0 0 -5px;
    }
}

@keyframes dot-pulse {
    0% {
        box-shadow: 9999px 0 0 -5px;
    }

    30% {
        box-shadow: 9999px 0 0 2px;
    }

    60%,
    100% {
        box-shadow: 9999px 0 0 -5px;
    }
}

@-webkit-keyframes dot-pulse-after {
    0% {
        box-shadow: 10029px 0 0 -5px;
    }

    30% {
        box-shadow: 10029px 0 0 2px;
    }

    60%,
    100% {
        box-shadow: 10029px 0 0 -5px;
    }
}

@keyframes dot-pulse-after {
    0% {
        box-shadow: 10029px 0 0 -5px;
    }

    30% {
        box-shadow: 10029px 0 0 2px;
    }

    60%,
    100% {
        box-shadow: 10029px 0 0 -5px;
    }
}