.ld-over {
    position: relative;
}

.ld-over>.ld {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 1em;
    height: 1em;
    margin: -0.5em;
    opacity: 0;
    z-index: -1;
    transition: all 0.3s;
    transition-timing-function: ease-in;
    animation-play-state: paused;
}

.ld-over>.ld>* {
    width: 1em;
    height: 1em;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-0.5em, -0.5em);
}

.ld-over.running {
    pointer-events: none;
}

.ld-over.running>.ld {
    opacity: 1;
    z-index: auto;
    visibility: visible;
    animation-play-state: running !important;
    z-index: 4001;
}

.ld-over.running>.ld:before,
.ld-over.running>.ld:after {
    animation-play-state: running !important;
}

.ld-over:before {
    content: " ";
    display: block;
    opacity: 0;
    position: absolute;
    z-index: -1;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    transition: all 0.3s;
    transition-timing-function: ease-in;
    background: rgba(240, 240, 240, 0.8);
}

.ld-over.running:before {
    opacity: 1;
    z-index: 4000;
    display: block;
}

/* we want to prevent the mask from stacking above elements other than its direct parent,
* without relying on the parent's z-index, position or any other styles.
* This can be achieved simply by applying `isolation: isloate` to create a new stack context. */
.ld-over {
    isolation: isolate;
}


.ld-ring {
    width: 1em;
    height: 1em;
    position: relative;
    color: inherit;
    display: inline-block;
    box-sizing: content-box;
}

.ld-ring:after {
    content: " ";
    display: block;
    width: 2em;
    height: 2em;
    box-sizing: border-box;
    transform-origin: 0em 0em;
    transform: translateZ(0) scale(0.5);
    backface-visibility: hidden;
}

.ld-ring:after {
    border-radius: 50%;
    border: 0.3em solid currentColor;
    border-left-color: transparent;
}

@keyframes ld-spin {
    0% {
        animation-timing-function: cubic-bezier(0.5856, 0.0703, 0.4143, 0.9297);
        transform: rotate(0deg);
    }

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

.ld.ld-spin {
    animation: ld-spin 1s infinite linear;
    ;
}