/*
 * Mezzoforte premium page loader.
 * Full-page navigation/submission states only; inline loaders keep their own UI.
 */
.page-loader {
    --mf-loader-accent: var(--mf-accent-dark, #A68B5B);
    --mf-loader-accent-rgb: var(--mf-accent-dark-rgb, 166, 139, 91);
    --mf-loader-text: var(--mf-dark-text-1, #F5F5F0);
    --mf-loader-veil: rgba(8, 8, 7, 0.62);
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: grid;
    place-items: center;
    padding: max(24px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));
    overflow: hidden;
    color: var(--mf-loader-text);
    background: var(--mf-loader-veil);
    -webkit-backdrop-filter: blur(9px) saturate(0.86);
    backdrop-filter: blur(9px) saturate(0.86);
    opacity: 1;
    visibility: visible;
    pointer-events: all;
    transition: opacity var(--mf-motion-slow, 240ms) var(--mf-ease-standard, ease), visibility var(--mf-motion-slow, 240ms) var(--mf-ease-standard, ease);
}

html[data-theme="light"] .page-loader {
    --mf-loader-accent: var(--mf-accent-light, #80663E);
    --mf-loader-accent-rgb: var(--mf-accent-light-rgb, 128, 102, 62);
    --mf-loader-text: var(--mf-light-text-1, #121212);
    --mf-loader-veil: rgba(250, 248, 243, 0.76);
}

.page-loader[hidden] {
    display: none !important;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.page-loader .page-loader__content {
    display: grid;
    place-items: center;
    gap: 0;
    width: min(100%, 320px);
    font-family: var(--mf-font-ui, "Avenir Next", system-ui, sans-serif);
    text-align: center;
}

.page-loader__orbital {
    position: relative;
    display: grid;
    place-items: center;
    width: clamp(196px, 18vw, 224px);
    aspect-ratio: 1;
    isolation: isolate;
}

.page-loader__orbital::before {
    content: "";
    position: absolute;
    inset: 20%;
    z-index: -1;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(var(--mf-loader-accent-rgb), 0.14) 0%, rgba(var(--mf-loader-accent-rgb), 0.055) 42%, transparent 72%);
    filter: blur(12px);
    animation: mf-loader-halo 3.8s ease-in-out infinite;
}

.page-loader__particles,
.page-loader__trace,
.page-loader__orbit {
    position: absolute;
    display: block;
    border-radius: 50%;
}

.page-loader__particles {
    inset: -4px;
    background: repeating-conic-gradient(from 8deg, rgba(var(--mf-loader-accent-rgb), 0.34) 0deg 0.42deg, transparent 0.42deg 3.3deg);
    -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 1px), #000 calc(100% - 0.8px));
    mask: radial-gradient(farthest-side, transparent calc(100% - 1px), #000 calc(100% - 0.8px));
    opacity: 0.54;
    animation: mf-loader-orbit 14s linear infinite;
}

.page-loader__trace {
    inset: 16px;
    border: 1px solid rgba(var(--mf-loader-accent-rgb), 0.18);
}

.page-loader__orbit {
    will-change: transform;
}

.page-loader__orbit::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: conic-gradient(from 14deg, transparent 0deg 28deg, rgba(var(--mf-loader-accent-rgb), 0.18) 44deg, rgba(var(--mf-loader-accent-rgb), 0.92) 150deg, rgba(var(--mf-loader-accent-rgb), 0.5) 236deg, transparent 286deg 360deg);
    -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 2.2px), #000 calc(100% - 1.6px));
    mask: radial-gradient(farthest-side, transparent calc(100% - 2.2px), #000 calc(100% - 1.6px));
}

.page-loader__orbit--outer {
    inset: 8px;
    animation: mf-loader-orbit 5.6s linear infinite;
}

.page-loader__orbit--inner {
    inset: 28px;
    opacity: 0.9;
    animation: mf-loader-orbit-reverse 7.2s linear infinite;
}

.page-loader__orbit--inner::before {
    background: conic-gradient(from 188deg, transparent 0deg 48deg, rgba(var(--mf-loader-accent-rgb), 0.18) 66deg, rgba(var(--mf-loader-accent-rgb), 0.78) 164deg, rgba(var(--mf-loader-accent-rgb), 0.34) 232deg, transparent 282deg 360deg);
}

.page-loader__spark {
    position: absolute;
    display: block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #F0D28A;
    box-shadow: 0 0 5px rgba(240, 210, 138, 0.94), 0 0 12px rgba(var(--mf-loader-accent-rgb), 0.48);
}

.page-loader__spark--outer-primary {
    top: 3.2%;
    left: 67%;
}

.page-loader__spark--outer-secondary {
    top: 64%;
    left: 96.2%;
    width: 5px;
    height: 5px;
}

.page-loader__spark--inner {
    top: 7.4%;
    left: 73%;
    width: 5px;
    height: 5px;
}

.page-loader .page-loader__orbital .page-loader__brand {
    position: relative;
    z-index: 2;
    width: clamp(104px, 9vw, 122px);
    height: clamp(104px, 9vw, 122px);
    opacity: 1;
    will-change: transform, opacity;
    animation: mf-loader-logo-breathe 4.8s cubic-bezier(0.37, 0, 0.2, 1) infinite;
}

.page-loader .page-loader__brand .mf-brand-icon__asset {
    will-change: filter;
    animation: mf-loader-logo-shine 4.8s cubic-bezier(0.37, 0, 0.2, 1) infinite;
}

.page-loader__label {
    margin: 25px 0 0;
    color: var(--mf-loader-text);
    font-size: clamp(0.94rem, 1.5vw, 1.08rem);
    font-weight: var(--mf-weight-regular, 400);
    line-height: 1.35;
    letter-spacing: 0.005em;
}

.page-loader__dots {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin-top: 15px;
}

.page-loader__dots > span {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--mf-loader-accent);
    opacity: 0.44;
    animation: mf-loader-dot 1.65s ease-in-out infinite;
}

.page-loader__dots > span:nth-child(2) {
    animation-delay: 160ms;
}

.page-loader__dots > span:nth-child(3) {
    animation-delay: 320ms;
}

@keyframes mf-loader-orbit {
    to { transform: rotate(360deg); }
}

@keyframes mf-loader-orbit-reverse {
    to { transform: rotate(-360deg); }
}

@keyframes mf-loader-halo {
    0%, 100% { opacity: 0.58; transform: scale(0.96); }
    50% { opacity: 0.9; transform: scale(1.04); }
}

@keyframes mf-loader-logo-breathe {
    0%, 100% { opacity: 0.86; transform: scale(0.96); }
    50% { opacity: 1; transform: scale(1.04); }
}

@keyframes mf-loader-logo-shine {
    0%, 100% { filter: brightness(0.96) drop-shadow(0 0 2px rgba(var(--mf-loader-accent-rgb), 0.12)); }
    50% { filter: brightness(1.2) drop-shadow(0 0 10px rgba(var(--mf-loader-accent-rgb), 0.42)); }
}

@keyframes mf-loader-dot {
    0%, 70%, 100% { opacity: 0.34; transform: translateY(0) scale(0.9); }
    35% { opacity: 0.96; transform: translateY(-2px) scale(1); }
}

@media (max-width: 480px) {
    .page-loader__orbital {
        width: 188px;
    }

    .page-loader .page-loader__orbital .page-loader__brand {
        width: 104px;
        height: 104px;
    }

    .page-loader__label {
        margin-top: 21px;
    }
}

@media (max-height: 480px) {
    .page-loader__orbital {
        width: 166px;
    }

    .page-loader .page-loader__orbital .page-loader__brand {
        width: 92px;
        height: 92px;
    }

    .page-loader__label {
        margin-top: 14px;
    }

    .page-loader__dots {
        margin-top: 10px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .page-loader,
    .page-loader__orbital::before,
    .page-loader__particles,
    .page-loader__orbit,
    .page-loader .page-loader__brand,
    .page-loader .page-loader__brand .mf-brand-icon__asset,
    .page-loader__dots > span {
        animation: none !important;
        transition-duration: 0.01ms !important;
    }

    .page-loader__particles {
        opacity: 0.28;
    }

    .page-loader__spark {
        box-shadow: 0 0 4px rgba(var(--mf-loader-accent-rgb), 0.34);
    }

    .page-loader__dots > span {
        opacity: 0.72;
        transform: none;
    }
}
