.adh-preloader {
    position: fixed;
    inset: 0;
    z-index: 2147483000;
    display: grid;
    place-items: center;
    overflow: hidden;
    background: var(--adh-preloader-bg, #EDE9DF);
    opacity: 1;
    visibility: visible;
    transition: opacity var(--adh-preloader-fade, 160ms) ease, visibility 0s linear var(--adh-preloader-fade, 160ms);
    pointer-events: auto;
}
.adh-preloader.is-hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}
.adh-preloader-stage {
    position: relative;
    width: min(420px, 88vw);
    height: min(250px, 44vh);
    display: grid;
    place-items: center;
}
.adh-preloader-logo-wrap {
    position: relative;
    z-index: 5;
    display: grid;
    place-items: center;
    width: min(180px, 42vw);
    min-height: 90px;
}
.adh-preloader-logo {
    position: relative;
    z-index: 2;
    display: block;
    max-width: 100%;
    max-height: 120px;
    width: auto;
    height: auto;
    opacity: 0;
    transform: scale(.68) rotate(-2deg);
    animation: adh-logo-reveal var(--adh-preloader-load, 680ms) cubic-bezier(.22,.85,.2,1) both;
}
.adh-preloader--logo_fade .adh-preloader-logo { animation-name: adh-logo-fade; }
.adh-preloader--logo_pulse .adh-preloader-logo { animation-name: adh-logo-pulse; }
.adh-preloader-logo--text {
    font: 700 clamp(22px,4vw,36px)/1.1 Montserrat, sans-serif;
    color: var(--adh-preloader-accent, #660033);
    text-align: center;
}
.adh-preloader-logo-glow {
    position: absolute;
    width: 76%;
    aspect-ratio: 1;
    border-radius: 50%;
    background: color-mix(in srgb, var(--adh-preloader-accent-2, #D6CE2B) 34%, transparent);
    filter: blur(28px);
    opacity: 0;
    animation: adh-logo-glow var(--adh-preloader-load, 680ms) ease both;
}
.adh-preloader-dancer {
    position: absolute;
    z-index: 3;
    width: 52px;
    height: 90px;
    overflow: visible;
    fill: var(--adh-preloader-accent, #660033);
    stroke: var(--adh-preloader-accent, #660033);
    stroke-width: 5;
    stroke-linecap: round;
    stroke-linejoin: round;
    opacity: 0;
    transform-origin: center bottom;
    animation: adh-dancer-converge var(--adh-preloader-load, 680ms) cubic-bezier(.2,.78,.16,1) both;
}
.adh-preloader-dancer circle { stroke: none; }
.adh-preloader-dancer path { fill: none; }
.adh-preloader-dancer--1 { --x:-145px; --y:-24px; --r:-20deg; animation-delay: 0ms; }
.adh-preloader-dancer--2 { --x:-82px; --y:30px; --r:16deg; animation-delay: 28ms; }
.adh-preloader-dancer--3 { --x:0px; --y:-58px; --r:-8deg; animation-delay: 56ms; }
.adh-preloader-dancer--4 { --x:84px; --y:28px; --r:-15deg; animation-delay: 30ms; }
.adh-preloader-dancer--5 { --x:145px; --y:-20px; --r:22deg; animation-delay: 4ms; }
.adh-preloader-merge-ring {
    position: absolute;
    z-index: 4;
    width: 34px;
    height: 34px;
    border: 2px solid var(--adh-preloader-accent-2, #D6CE2B);
    border-radius: 50%;
    opacity: 0;
    animation: adh-merge-ring var(--adh-preloader-load, 680ms) ease both;
}
.adh-preloader-media {
    z-index: 4;
    max-width: min(220px, 55vw);
    max-height: 150px;
    object-fit: contain;
    border-radius: 12px;
}
.adh-preloader--media .adh-preloader-logo-wrap { margin-top: 12px; }

.adh-preloader.is-transitioning { opacity: 1; visibility: visible; pointer-events: auto; transition: none; }
.adh-preloader.is-transitioning .adh-preloader-logo { animation: adh-transition-logo var(--adh-preloader-transition, 240ms) ease-out both; }
.adh-preloader.is-transitioning .adh-preloader-dancer { animation: adh-transition-dancer var(--adh-preloader-transition, 240ms) ease-out both; }

@keyframes adh-dancer-converge {
    0% { opacity: 0; transform: translate(var(--x), var(--y)) rotate(var(--r)) scale(.72); }
    18% { opacity: .98; }
    56% { opacity: 1; transform: translate(calc(var(--x) * .42), calc(var(--y) * .28)) rotate(calc(var(--r) * -.55)) scale(1); }
    78% { opacity: .8; transform: translate(0, 0) rotate(0) scale(.7); }
    100% { opacity: 0; transform: translate(0,0) rotate(0) scale(.12); }
}
@keyframes adh-logo-reveal {
    0%, 55% { opacity: 0; transform: scale(.68) rotate(-2deg); }
    76% { opacity: 1; transform: scale(1.06) rotate(0); }
    100% { opacity: 1; transform: scale(1) rotate(0); }
}
@keyframes adh-logo-fade { 0% {opacity:0;transform:scale(.94)} 100% {opacity:1;transform:scale(1)} }
@keyframes adh-logo-pulse { 0% {opacity:0;transform:scale(.8)} 62% {opacity:1;transform:scale(1.08)} 100% {opacity:1;transform:scale(1)} }
@keyframes adh-logo-glow { 0%,45% {opacity:0;transform:scale(.45)} 80% {opacity:.9;transform:scale(1.1)} 100% {opacity:.38;transform:scale(1)} }
@keyframes adh-merge-ring { 0%,55% {opacity:0;transform:scale(.2)} 74% {opacity:1;transform:scale(1)} 100% {opacity:0;transform:scale(3.7)} }
@keyframes adh-transition-logo { 0% {opacity:0;transform:scale(.86)} 100% {opacity:1;transform:scale(1)} }
@keyframes adh-transition-dancer { 0% {opacity:0;transform:translate(var(--x),var(--y)) scale(.5)} 55% {opacity:.85} 100% {opacity:0;transform:translate(0,0) scale(.1)} }

@media (prefers-reduced-motion: reduce) {
    .adh-preloader *, .adh-preloader *::before, .adh-preloader *::after {
        animation-duration: 1ms !important;
        animation-delay: 0ms !important;
        transition-duration: 1ms !important;
    }
    .adh-preloader-dancer, .adh-preloader-merge-ring { display: none !important; }
    .adh-preloader-logo { opacity: 1; transform: none; }
}
