.site-preloader {
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, var(--color-white) 0%, var(--color-pink-light) 100%);
    transition: opacity .6s ease, visibility .6s ease;
}

.site-preloader-mark {
    width: clamp(220px, 42vw, 460px);
    height: auto;
    display: block;
}

.site-preloader-mark svg {
    display: block;
    width: 100%;
    height: auto;
    /* Evita depender de "height: 100%" del propio SVG (indeterminado sobre  */
    /* un contenedor con height:auto); con aspect-ratio el alto siempre sale */
    /* directo del viewBox del logo, sin importar qué tan viejo esté cacheado */
    /* algún otro estilo.                                                     */
    aspect-ratio: 3205 / 825;
    overflow: visible;
}

/* El color/relleno se fuerza también desde JS al inicializar cada path   */
/* (el SVG original trae stroke:#000 inline, con mayor especificidad que  */
/* estas reglas), pero se deja acá como base/fallback.                    */
.site-preloader-mark path {
    fill: none;
    stroke: var(--color-primary);
}

.site-preloader-phrase {
    position: absolute;
    bottom: 8%;
    left: 50%;
    transform: translateX(-50%);
    width: 100%;
    padding: 0 24px;
    font-family: var(--font-subheading);
    font-size: 22px;
    text-align: center;
    letter-spacing: .02em;
    color: var(--color-text-dark);
}

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

@media (max-width: 640px) {
    .site-preloader-mark {
        width: clamp(200px, 70vw, 340px);
    }

    .site-preloader-phrase {
        font-size: 18px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .site-preloader {
        transition: opacity .3s ease;
    }
}
