
.loader .icon {
    position: fixed;
    left: 50%;
    top: 50%;
    border: 8px solid lightgray;
    border-radius: 50%;
    border-top: 8px solid var(--theme-color-primary);
    border-bottom: 8px solid var(--theme-color-primary);
    width: 60px;
    height: 60px;
    -webkit-animation: spin 2s linear infinite;
    background-color: gray;
    /* Safari */
    animation: spin 2s linear infinite;
    z-index: 9999;
    box-shadow: 0px 0px 5px 5px grey;
}

.loader .icon.top {
    top: 200px;
}

.loader-progress-label.top {
    top: 200px;
    display: block;
}

.loader-progress-label {
    position: fixed;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    font-weight: 900;
    text-shadow: 2px 2px 2px black;
    color: white;
    z-index: 9999;
}

.loader::before {
    background-color: transparent;
    opacity: 40%;
    width: 100%;
    height: 100%;
    top: 0px;
    left: 0px;
    position: fixed;
    content: ' ';
    z-index: 9999;
}

/* Safari */

@-webkit-keyframes spin {
    0% {
        -webkit-transform: translate(-50%, -50%) rotate(0deg);
    }
    100% {
        -webkit-transform: translate(-50%, -50%) rotate(360deg);
    }
}

@keyframes spin {
    0% {
        transform: translate(-50%, -50%) rotate(0deg);
    }
    100% {
        transform: translate(-50%, -50%) rotate(360deg);
    }
}