:root {
    --wv-exact-bg: #ffffff;
    --wv-exact-ink: #202022;
    --wv-exact-ease: cubic-bezier(.22, 1, .36, 1);
}

html.wv-exact-preloader-lock,
html.wv-exact-preloader-lock body,
body.wv-exact-preloader-lock {
    overflow: hidden !important;
}

.wv-exact-preloader {
    position: fixed;
    inset: 0;
    z-index: 2147483000;
    display: grid;
    place-items: center;
    overflow: hidden;
    background: var(--wv-exact-bg);
    opacity: 1;
    visibility: visible;
    transition: opacity .72s var(--wv-exact-ease), visibility .72s ease;
}

.wv-exact-preloader.is-leaving {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.wv-exact-preloader__background,
.wv-exact-preloader__ambient {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.wv-exact-preloader__background {
    background:
        radial-gradient(circle at 50% 45%, rgba(0, 0, 0, .022), transparent 34%),
        linear-gradient(180deg, #ffffff 0%, #fbfbfb 100%);
}

.wv-exact-preloader__ambient::before,
.wv-exact-preloader__ambient::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    translate: -50% -50%;
    border-radius: 999px;
    border: 1px solid rgba(32, 32, 34, .055);
    opacity: 0;
    animation: wvExactAmbient 1.25s var(--wv-exact-ease) .1s forwards;
}

.wv-exact-preloader__ambient::before {
    width: min(74vw, 760px);
    aspect-ratio: 1 / 1;
}

.wv-exact-preloader__ambient::after {
    width: min(92vw, 1080px);
    aspect-ratio: 1.75 / 1;
    animation-delay: .22s;
}

.wv-exact-preloader__stage {
    position: relative;
    z-index: 2;
    width: min(82vw, 825px);
    display: flex;
    flex-direction: column;
    align-items: center;
}

/*
 * IMPORTANT:
 * The supplied logo is 825 × 95 px.
 * The image itself is never transformed, stretched, filtered, blurred,
 * skewed, letter-spaced, sliced, or recomposed. Only its parent reveal
 * window is animated, so the artwork remains exactly intact.
 */
.wv-exact-preloader__logo-reveal {
    position: relative;
    width: 100%;
    overflow: hidden;
    clip-path: inset(0 100% 0 0);
    animation: wvExactReveal 1.15s var(--wv-exact-ease) .12s forwards;
}

.wv-exact-preloader__logo {
    display: block;
    width: 100%;
    height: auto;
    max-width: 825px;
    aspect-ratio: 825 / 95;
    margin: 0;
    padding: 0;
    border: 0;
    opacity: 1;
    transform: none !important;
    filter: none !important;
    object-fit: initial;
    object-position: initial;
    image-rendering: auto;
}

.wv-exact-preloader__shine {
    position: absolute;
    top: -35%;
    bottom: -35%;
    left: -28%;
    width: 18%;
    pointer-events: none;
    opacity: 0;
    transform: skewX(-18deg);
    background: linear-gradient(
        90deg,
        rgba(255, 255, 255, 0),
        rgba(255, 255, 255, .68),
        rgba(255, 255, 255, 0)
    );
    animation: wvExactShine .95s ease 1s forwards;
}

.wv-exact-preloader__progress {
    position: relative;
    width: min(34vw, 220px);
    height: 1px;
    margin-top: clamp(22px, 3vw, 34px);
    overflow: hidden;
    background: rgba(32, 32, 34, .09);
    opacity: 0;
    animation: wvExactProgressIn .35s ease .55s forwards;
}

.wv-exact-preloader__progress-fill {
    position: absolute;
    inset: 0 auto 0 0;
    width: 0;
    background: rgba(32, 32, 34, .58);
    animation: wvExactProgress 1.75s var(--wv-exact-ease) .62s forwards;
}

@keyframes wvExactReveal {
    from { clip-path: inset(0 100% 0 0); }
    to   { clip-path: inset(0 0 0 0); }
}

@keyframes wvExactShine {
    0%   { left: -28%; opacity: 0; }
    15%  { opacity: .72; }
    100% { left: 112%; opacity: 0; }
}

@keyframes wvExactProgressIn {
    to { opacity: 1; }
}

@keyframes wvExactProgress {
    from { width: 0; }
    to   { width: 100%; }
}

@keyframes wvExactAmbient {
    from { opacity: 0; transform: scale(.94); }
    to   { opacity: 1; transform: scale(1); }
}

@media (max-width: 767px) {
    .wv-exact-preloader__stage {
        width: min(86vw, 825px);
    }

    .wv-exact-preloader__progress {
        width: min(44vw, 170px);
        margin-top: 22px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .wv-exact-preloader *,
    .wv-exact-preloader *::before,
    .wv-exact-preloader *::after {
        animation: none !important;
        transition: none !important;
    }

    .wv-exact-preloader__logo-reveal {
        clip-path: none !important;
    }

    .wv-exact-preloader__shine,
    .wv-exact-preloader__ambient,
    .wv-exact-preloader__progress {
        display: none !important;
    }
}
