.mmdb-site-loader {
    position: fixed;
    inset: 0;
    z-index: 2147483647;
    display: grid;
    place-items: center;
    background: #0e0e10;
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transition: opacity 420ms ease, visibility 0s linear 420ms;
}

.mmdb-site-loader__icon {
    display: block;
    width: auto;
    height: 12vh;
    transform-origin: 50% 50%;
    will-change: transform, filter, opacity;
    animation: mmdb-loader-wind-release 2.65s cubic-bezier(.45,0,.3,1) infinite;
}

@keyframes mmdb-loader-wind-release {
    0% { transform: rotate(0deg) scale(1); }
    28% { transform: rotate(-20deg) scale(1); }
    34% { transform: rotate(-20deg) scale(1); }
    68% { transform: rotate(340deg) scale(1); }
    78% { transform: rotate(369deg) scale(1); }
    86% { transform: rotate(355deg) scale(1); }
    93% { transform: rotate(362deg) scale(1); }
    100% { transform: rotate(360deg) scale(1); }
}

.mmdb-site-loader.is-completing {
    pointer-events: none;
}

.mmdb-site-loader.is-completing .mmdb-site-loader__icon {
    animation: mmdb-loader-release-out 360ms cubic-bezier(.18,.7,.14,1) forwards;
}

@keyframes mmdb-loader-release-out {
    0% {
        height: 12vh;
        opacity: 1;
        filter: blur(0);
        transform: rotate(360deg) scale(1);
    }
    100% {
        height: 50vh;
        opacity: 0;
        filter: blur(30px);
        transform: rotate(372deg) scale(1);
    }
}

.mmdb-site-loader.is-hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
    .mmdb-site-loader__icon {
        animation: none;
    }
    .mmdb-site-loader.is-completing .mmdb-site-loader__icon {
        animation-duration: 240ms;
    }
}
