/* ================================================================
   SINACNÉ — SUCURSAL MONTERREY
   ----------------------------------------------------------------
   Landing page de destino para Google Ads. Arquitectura siguiendo
   SytezAgent Web Standards (ver .claude/skills/web-standards/SKILL.md).

   Identidad visual extraída del código embebido real del sitio en
   Hostinger (sinacne.mx): teal de marca, rojo de marca, tipografía
   Manrope, radios grandes, botones píldora con sombra de color.
   La marca no define dark mode (bg fijo #E8F3F5) — se respeta esa
   decisión: el sitio es de tema claro fijo, no reacciona a
   prefers-color-scheme. Es una landing de campaña: la constancia de
   marca importa más que soportar dark mode.

   Orden:
     1. Reset
     2. Variables (custom properties / design tokens)
     3. Base
     4. Layout
     5. Componentes
     6. Utilities
   ================================================================ */


/* ================================================================
   1. RESET MODERNO
   ================================================================ */

*,
*::before,
*::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    -webkit-text-size-adjust: 100%;
    -moz-tab-size: 4;
    tab-size: 4;
    scroll-behavior: smooth;
}

body {
    min-height: 100vh;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
}

img,
picture,
video,
canvas,
svg {
    display: block;
    max-width: 100%;
    height: auto;
}

input,
button,
textarea,
select {
    font: inherit;
    color: inherit;
}

button {
    background: none;
    border: none;
    cursor: pointer;
}

a {
    color: inherit;
    text-decoration: none;
}

ul,
ol {
    list-style: none;
}

table {
    border-collapse: collapse;
    width: 100%;
}

h1, h2, h3, h4, h5, h6 {
    overflow-wrap: break-word;
    text-wrap: balance;
}

p {
    overflow-wrap: break-word;
    text-wrap: pretty;
}


/* ================================================================
   2. VARIABLES — Design Tokens (identidad real de SinAcné)
   ================================================================ */

:root {
    /* ── Colores ──────────────────────────────────── */
    --color-primary:        #02afca;  /* teal de marca — headings, eyebrows, nav, CTA principal */
    --color-primary-hover:  #029ab2;
    --color-secondary:      #101718;  /* tinta oscura de marca — nombres, texto fuerte */
    --color-heading:        #061B50;  /* azul marino — color fijo de todos los títulos (h1–h6) */
    --color-accent:         #BA2027;  /* rojo de marca — CTA "Agendar", tags, foco */
    --color-accent-hover:   #a01b21;

    /* Verde de WhatsApp — color funcional de la plataforma, no de marca.
       Se mantiene separado del acento para no confundir "CTA urgente" (rojo)
       con "canal de contacto" (verde). */
    --color-whatsapp:       #25D366;
    --color-whatsapp-hover: #20bd5a;

    --color-bg:             #ffffff;
    --color-bg-alt:         #E8F3F5;  /* teal claro de marca — fondo alterno de secciones */
    --color-bg-elevated:    #ffffff;

    --color-text:           #101718;
    --color-text-muted:     #4b5563;
    --color-text-secondary: #6b7280;
    --color-text-inverse:   #ffffff;

    --color-border:         #e5e7eb;
    --color-border-subtle:  #f3f4f6;

    /* ── Tipografía ───────────────────────────────── */
    --font-display: "Manrope", "Noto Sans", system-ui, -apple-system, sans-serif;
    --font-body:    "Manrope", "Noto Sans", system-ui, -apple-system, sans-serif;
    --font-mono:    ui-monospace, "SF Mono", Menlo, monospace;

    /* Escala tipográfica fluida con clamp() */
    --text-xs:   clamp(0.75rem,  0.7rem  + 0.15vw, 0.875rem);
    --text-sm:   clamp(0.875rem, 0.8rem  + 0.2vw,  1rem);
    --text-base: clamp(1rem,     0.9rem  + 0.3vw,  1.125rem);
    --text-lg:   clamp(1.25rem,  1rem    + 0.5vw,  1.5rem);
    --text-xl:   clamp(1.5rem,   1.2rem  + 0.8vw,  2rem);
    --text-2xl:  1.875rem; /* tamaño de título de sección — igual al de "Equipo" (.sn-team__title) */
    --text-hero: clamp(2.25rem,  1.8rem  + 2.2vw,  4rem);

    /* ── Espaciado ──────────────────────────────────
       Escala consistente. No inventar valores fuera de esta escala.
    */
    --space-xs:   0.25rem;  /*  4px */
    --space-sm:   0.5rem;   /*  8px */
    --space-md:   1rem;     /* 16px */
    --space-lg:   1.5rem;   /* 24px */
    --space-xl:   2rem;     /* 32px */
    --space-2xl:  3rem;     /* 48px */
    --space-3xl:  4rem;     /* 64px */
    --space-4xl:  6rem;     /* 96px */

    /* ── Radios ─────────────────────────────────────
       Marca usa esquinas grandes y píldoras — todo redondeado, sin mezclar.
    */
    --radius-sm:    4px;
    --radius-md:    8px;
    --radius-lg:    12px;
    --radius-xl:    16px;
    --radius-2xl:   24px;
    --radius-3xl:   32px;
    --radius-full:  9999px;

    /* ── Sombras ────────────────────────────────────
       Ink de marca (16,23,24) en vez de negro puro + sombra de color
       para CTAs, como en el sitio real.
    */
    --shadow-sm:      0 1px 2px rgba(16, 23, 24, 0.05);
    --shadow-md:      0 8px 20px rgba(16, 23, 24, 0.10);
    --shadow-lg:      0 20px 30px rgba(16, 23, 24, 0.12);
    --shadow-xl:      0 25px 50px rgba(16, 23, 24, 0.18);
    --shadow-primary: 0 10px 25px rgba(2, 175, 202, 0.25);
    --shadow-accent:  0 10px 25px rgba(186, 32, 39, 0.25);

    /* ── Transiciones ───────────────────────────────
       Duraciones según tipo de interacción (ver SKILL.md sección 5).
    */
    --transition-fast: 150ms ease-out;
    --transition-base: 250ms ease-out;
    --transition-slow: 400ms ease-out;

    /* ── Layout — Contenedores ──────────────────── */
    --container-sm:  640px;
    --container-md:  768px;
    --container-lg:  1024px;
    --container-xl:  1280px;
    --container-2xl: 1400px; /* ancho real de marca (--sn-container) */

    /* ── Barra sticky (S0) ──────────────────────── */
    --header-height: 90px;
    --header-margin: 0.75rem; /* separación de la cápsula respecto al borde */
    --mobile-cta-bar-height: 76px;
}

/* Título de sección (h2): mismo salto de tamaño de dos pasos que usa
   "Equipo" (.sn-team__title) — 1.875rem en mobile, 2.25rem desde tablet. */
@media (min-width: 768px) {
    :root {
        --text-2xl: 2.25rem;
    }
}


/* ── Prefers reduced motion — accesibilidad ─────── */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}


/* ================================================================
   3. BASE — Estilos globales del documento
   ================================================================ */

body {
    font-family: var(--font-body);
    font-size: var(--text-base);
    font-weight: 500;
    color: var(--color-text);
    background-color: var(--color-bg);
    /* Sin padding-top: el header flota sobre la foto del hero — no
       reserva su propio espacio (el hero se encarga de despegar su
       contenido, ver .hero__inner). */
}

@media (max-width: 767px) {
    body:has(.mobile-cta-bar) {
        /* Espacio para que la barra fija de contacto (.mobile-cta-bar)
           no tape el final de la página. */
        padding-bottom: calc(var(--mobile-cta-bar-height) + env(safe-area-inset-bottom));
    }
}

/* Compensa el header fijo al saltar a un ancla (nav del footer, CTAs
   "Agendar", etc.). */
section[id],
#agenda {
    scroll-margin-top: calc(var(--header-height) + var(--header-margin) * 2);
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-display);
    font-weight: 800;
    line-height: 1.15;
    color: var(--color-heading);
    letter-spacing: -0.02em;
}

h1 { font-size: var(--text-hero); line-height: 1.08; }
h2 { font-size: var(--text-2xl); }
h3 { font-size: var(--text-xl);  line-height: 1.25; letter-spacing: -0.01em; }

p {
    color: var(--color-text-muted);
}

strong {
    color: var(--color-text);
    font-weight: 700;
}

/* Focus visible — accesibilidad para navegación con teclado */
:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 3px;
    border-radius: var(--radius-sm);
}

/* Selección de texto */
::selection {
    background-color: var(--color-primary);
    color: var(--color-text-inverse);
}

/* Iconografía de marca (Material Symbols Outlined) */
.material-symbols-outlined {
    font-variation-settings: "FILL" 0, "wght" 500, "GRAD" 0, "opsz" 24;
    font-size: 1.5em;
    line-height: 1;
    vertical-align: middle;
    flex-shrink: 0;
}


/* ================================================================
   4. LAYOUT — Contenedores y grids de página
   ================================================================ */

.container {
    width: 100%;
    max-width: var(--container-2xl);
    margin-inline: auto;
    padding-inline: var(--space-md);
}

@media (min-width: 768px) {
    .container {
        padding-inline: var(--space-xl);
    }
}

/* Fondo decorativo — halo radial sutil de marca, reutilizado en varias secciones */
.section--halo {
    position: relative;
    overflow: hidden;
}

.section--halo::before {
    content: "";
    position: absolute;
    top: -10%;
    left: -8%;
    width: 540px;
    height: 540px;
    max-width: 60vw;
    max-height: 60vw;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(2, 175, 202, 0.10) 0%, transparent 70%);
    pointer-events: none;
    z-index: 0;
}

.section--halo > * {
    position: relative;
    z-index: 1;
}

/* Reveal on scroll — usado en casi todas las secciones.
   Oculto solo si JS confirma que va a animarlo (clase .no-js se quita en
   script.js apenas carga) — sin JS, el contenido es visible siempre. */
.reveal {
    transition: opacity var(--transition-slow), transform var(--transition-slow);
}

html:not(.no-js) .reveal {
    opacity: 0;
    transform: translateY(32px);
}

/* Especificidad igual a la regla anterior (html + clase + clase) para
   ganarle en cascada sin depender del orden de aparición. */
html:not(.no-js) .reveal.is-visible {
    opacity: 1;
    transform: translateY(0);
}


/* ================================================================
   5. COMPONENTES
   ================================================================ */

/* ──────────────────────────────────────────────────
   S0 · BARRA STICKY (header)
   Elemento permanente: sólida, siempre visible, nunca desaparece
   (flota sobre el scroll). Sin menú hamburguesa: landing page de una
   sola página — el <nav> con anclas solo se muestra en desktop (ver
   media query más abajo).
   ────────────────────────────────────────────────── */
.site-header {
    position: fixed;
    top: var(--header-margin);
    inset-inline: var(--header-margin);
    max-width: calc(var(--container-2xl) - var(--header-margin) * 2);
    margin-inline: auto;
    z-index: 100;
    height: var(--header-height);
    border-radius: var(--radius-2xl);
    background-color: rgba(255, 255, 255, 0.92);
    box-shadow: var(--shadow-lg);
}

.site-header__container {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-sm);
    height: 100%;
    padding-inline: var(--space-md);
}

@media (min-width: 768px) {
    .site-header__container {
        padding-inline: var(--space-lg);
    }
}

.site-header__brand {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    min-width: 0;
    transition: opacity var(--transition-fast);
}

.site-header__brand:hover {
    opacity: 0.8;
}

.site-header__logo-img {
    display: block;
    height: 52px;
    width: auto;
}

/* ── NAV — solo desktop ────────────────────────────
   En landing pages el <nav> con anclas no se muestra en mobile ni
   lleva hamburguesa (ver SKILL.md sección 1) — el único camino en
   mobile es el CTA. En desktop sí hay espacio para dejar explorar
   sin restarle protagonismo a "Agendar cita". */
.site-nav {
    display: none;
}

@media (min-width: 768px) {
    .site-nav {
        display: block;
    }

    .site-nav__list {
        display: flex;
        align-items: center;
        gap: var(--space-lg);
    }

    .site-nav__link {
        font-size: var(--text-sm);
        font-weight: 700;
        color: var(--color-secondary);
        white-space: nowrap;
        transition: color var(--transition-fast);
    }

    .site-nav__link:hover {
        color: var(--color-primary);
    }
}

/* Solo desktop — en mobile el CTA vive en la barra fija de abajo
   (.mobile-cta-bar), no en el header. */
.site-header__actions {
    display: none;
}

@media (min-width: 768px) {
    .site-header__actions {
        display: flex;
        align-items: center;
        gap: var(--space-sm);
    }

    .site-header__actions .button {
        padding: 0.7rem 1.5rem;
        font-size: var(--text-sm);
    }
}


/* ──────────────────────────────────────────────────
   BUTTON
   ────────────────────────────────────────────────── */
.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.9rem 2.25rem;
    font-family: var(--font-body);
    font-size: var(--text-sm);
    font-weight: 700;
    line-height: 1;
    letter-spacing: 0.01em;
    border: none;
    border-radius: var(--radius-full);
    transition: background-color var(--transition-fast), box-shadow var(--transition-fast), transform 150ms ease;
}

.button:hover {
    transform: translateY(-2px);
}

.button:active {
    transform: translateY(0) scale(0.98);
}

.button:focus-visible {
    outline: 2px solid var(--color-secondary);
    outline-offset: 3px;
}

.button:disabled {
    cursor: not-allowed;
    opacity: 0.5;
    transform: none;
}

.button--primary {
    background-color: var(--color-primary);
    color: var(--color-text-inverse);
    box-shadow: var(--shadow-primary);
}

.button--primary:hover {
    background-color: var(--color-primary-hover);
    box-shadow: 0 14px 30px rgba(2, 175, 202, 0.35);
}

.button--cta {
    background-color: var(--color-accent);
    color: var(--color-text-inverse);
    box-shadow: var(--shadow-accent);
}

.button--cta:hover {
    background-color: var(--color-accent-hover);
    box-shadow: 0 14px 30px rgba(186, 32, 39, 0.35);
}

.button--whatsapp {
    background-color: var(--color-whatsapp);
    color: var(--color-text-inverse);
    box-shadow: 0 10px 25px rgba(37, 211, 102, 0.30);
}

.button--whatsapp:hover {
    background-color: var(--color-whatsapp-hover);
    box-shadow: 0 14px 30px rgba(37, 211, 102, 0.40);
}

.button--outline {
    background-color: transparent;
    color: var(--color-primary);
    border: 1.5px solid var(--color-primary);
}

.button--outline:hover {
    background-color: var(--color-bg-alt);
}

.button--block {
    width: 100%;
}

/* Rectángulo redondeado (no píldora) — usado en el hero y el header,
   igual que en el sitio real, en vez de la píldora que usa el resto. */
.button--rect {
    border-radius: var(--radius-lg);
    padding: 1rem 2.25rem;
    font-size: var(--text-base);
}

.button__icon {
    width: 1.5em;
    height: 1.5em;
    flex-shrink: 0;
    fill: currentColor;
}


/* ──────────────────────────────────────────────────
   EYEBROW — badge de sección
   ────────────────────────────────────────────────── */
.eyebrow {
    display: inline-flex;
    align-items: center;
    padding: 0.4rem 1.2rem;
    border: 1px solid var(--color-primary);
    border-radius: var(--radius-full);
    color: var(--color-primary);
    font-size: var(--text-xs);
    font-weight: 700;
    letter-spacing: 0.02em;
    line-height: 1;
}


/* ──────────────────────────────────────────────────
   SECTION HEADER — eyebrow + título + lead (patrón reutilizado)
   ────────────────────────────────────────────────── */
.section-header {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-md);
    max-width: 65ch;
    margin-inline: auto;
    margin-bottom: var(--space-2xl);
    text-align: center;
}

.section-header__title {
    text-wrap: balance;
}

.section-header__lead {
    font-size: var(--text-lg);
    line-height: 1.6;
}

.section-header--start {
    align-items: flex-start;
    text-align: left;
    margin-inline: 0;
}


/* ──────────────────────────────────────────────────
   MEDIA PLACEHOLDER
   Bloque de imagen pendiente — para secciones donde el brief
   requiere foto real de la sucursal MTY que aún no se entrega.
   Reemplazar por <img> real cuando el cliente entregue el asset.
   ────────────────────────────────────────────────── */
.media-placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--space-sm);
    width: 100%;
    padding: var(--space-lg);
    border: 2px dashed var(--color-primary);
    border-radius: var(--radius-2xl);
    background-color: var(--color-bg-alt);
    color: var(--color-primary);
    text-align: center;
}

.media-placeholder .material-symbols-outlined {
    font-size: 2.5rem;
}

.media-placeholder__label {
    max-width: 28ch;
    font-size: var(--text-sm);
    font-weight: 700;
    color: var(--color-primary);
}


/* ──────────────────────────────────────────────────
   S1 · HERO
   ────────────────────────────────────────────────── */
.hero {
    position: relative;
    overflow: hidden;
    /* Arriba: espacio para despegarse de la cápsula flotante, que no
       reserva su propio espacio en el body (ver comentario en body). */
    padding-block: calc(var(--header-height) + var(--header-margin) * 2 + var(--space-lg)) var(--space-3xl);
    background-color: var(--color-bg-alt);
}

/* La foto es el fondo de todo el hero — en mobile y en desktop, no
   solo una tarjeta antes del contenido. */
.hero__bg {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.hero__bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 20%;
}

/* Velo de marca (navy) sobre la foto — se ve la foto completa, con
   suficiente contraste para el texto blanco encima. */
.hero__bg::after {
    content: "";
    position: absolute;
    inset: 0;
    background: rgba(6, 27, 80, 0.6);
}

@media (min-width: 768px) {
    .hero__bg::after {
        background: linear-gradient(
            100deg,
            rgba(6, 27, 80, 0.72) 0%,
            rgba(6, 27, 80, 0.55) 45%,
            rgba(6, 27, 80, 0.4) 100%
        );
    }
}

.hero__inner {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-2xl);
    align-items: center;
}

.hero__content {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-md);
}

/* Eyebrow sólido — variante exclusiva del hero (el resto del sitio usa
   el badge con borde de .eyebrow). Funciona igual sobre la foto (desktop)
   que sobre el fondo claro (mobile). */
.hero__content .eyebrow {
    background-color: var(--color-primary);
    border-color: var(--color-primary);
    color: var(--color-text-inverse);
}

.hero__title {
    max-width: 20ch;
    color: var(--color-text-inverse);
}

/* Frase resaltada dentro del título — mismo azul que los demás títulos
   del sitio. Selector .hero__title .hero__title-accent (en vez de solo
   la clase) para que gane siempre sobre el "color: blanco" del h1 en
   desktop. */
.hero__title .hero__title-accent {
    color: var(--color-primary);
}

.hero__subtitle {
    max-width: 55ch;
    font-size: var(--text-lg);
    color: var(--color-text-inverse);
}

.hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-md);
    margin-top: var(--space-sm);
}


.hero__trust {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-md) var(--space-lg);
    width: 100%;
    margin-top: var(--space-lg);
    padding-top: var(--space-lg);
    border-top: 1px solid rgba(255, 255, 255, 0.25);
}

.hero__trust-item {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    font-size: var(--text-sm);
    font-weight: 700;
    color: var(--color-text-inverse);
}

.hero__trust-item .material-symbols-outlined {
    color: var(--color-primary);
}

/* Tarjeta de formulario — ocupa el lugar donde antes iba la foto.
   Más angosta que el ancho completo de su columna: no debe competir
   en anchura con el bloque de texto. */
.hero__form-card.appointment__form {
    width: 100%;
    max-width: 400px;
    margin-inline: 0;
    padding: var(--space-lg);
}

.hero__form-title {
    margin: 0;
    font-family: var(--font-display);
    font-weight: 800;
    font-size: var(--text-lg);
    color: var(--color-heading);
}

.hero__form-lead {
    margin-top: -0.5rem;
    font-size: var(--text-sm);
}

@media (min-width: 768px) {
    .hero {
        padding-block: 0;
        min-height: 640px;
        display: flex;
        align-items: center;
    }

    .hero__inner {
        width: 100%;
        grid-template-columns: 1.05fr 0.95fr;
        gap: var(--space-3xl);
        padding-block: calc(var(--header-height) + var(--header-margin) * 2 + var(--space-lg)) var(--space-3xl);
    }

    .hero__trust {
        grid-template-columns: repeat(4, 1fr);
    }

    /* Empuja el formulario al borde derecho de su columna en vez de
       dejarlo pegado al bloque de texto. */
    .hero__form-card.appointment__form {
        margin-left: auto;
    }
}

@media (min-width: 1024px) {
    .hero {
        min-height: 720px;
    }

    .hero__inner {
        gap: var(--space-4xl);
    }
}


/* ──────────────────────────────────────────────────
   S2 · EMPATÍA
   ────────────────────────────────────────────────── */
.empathy {
    padding-block: var(--space-3xl);
}

.empathy__inner {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-2xl);
    align-items: center;
}

.empathy__media {
    order: -1;
    width: 100%;
    aspect-ratio: 4 / 3;
    border-radius: var(--radius-2xl);
    overflow: hidden;
    box-shadow: var(--shadow-lg);
}

.empathy__media video {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.empathy__content {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-lg);
}

.empathy__pain-list {
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
}

.empathy__pain-item {
    display: flex;
    align-items: flex-start;
    gap: var(--space-sm);
    font-size: var(--text-base);
    color: var(--color-text-muted);
    font-weight: 500;
}

.empathy__pain-item .material-symbols-outlined {
    color: var(--color-accent);
    font-size: 1.25rem;
    margin-top: 0.15em;
}

.empathy__bridge {
    padding: var(--space-lg);
    border-left: 4px solid var(--color-primary);
    border-radius: var(--radius-md);
    background-color: var(--color-bg-alt);
    font-size: var(--text-base);
    font-weight: 600;
    color: var(--color-secondary);
    line-height: 1.7;
}

@media (min-width: 768px) {
    .empathy__inner {
        grid-template-columns: 1fr 1fr;
        gap: var(--space-4xl);
    }

    .empathy__media {
        order: 0;
    }
}


/* ──────────────────────────────────────────────────
   S2B · SERVICIOS Y TRATAMIENTOS — "¿Qué ofrecemos?"
   ────────────────────────────────────────────────── */
.services {
    padding-block: var(--space-3xl);
}

.services__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-2xl) var(--space-lg);
    margin-top: var(--space-xl);
}

.service-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--space-sm);
}

.service-card__icon {
    width: 6.5rem;
    height: 6.5rem;
    margin-bottom: var(--space-sm);
}

.service-card__title {
    font-size: var(--text-lg);
}

.service-card__text {
    font-size: var(--text-sm);
    color: var(--color-text-secondary);
    max-width: 32ch;
}

@media (min-width: 640px) {
    .services__grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1024px) {
    .services__grid {
        grid-template-columns: repeat(4, 1fr);
    }
}


/* ──────────────────────────────────────────────────
   S3 · DIFERENCIACIÓN — tabla comparativa
   ────────────────────────────────────────────────── */
.diff {
    position: relative;
    overflow: hidden;
    padding-block: var(--space-3xl);
    background-color: var(--color-bg-alt);
}

.diff__bg {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.diff__bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 20%;
}

.diff__bg::after {
    content: "";
    position: absolute;
    inset: 0;
    background-color: rgba(6, 27, 80, 0.55);
}

.diff .eyebrow {
    background-color: rgba(255, 255, 255, 0.12);
    border-color: rgba(255, 255, 255, 0.5);
    color: var(--color-text-inverse);
}

.diff .section-header__title {
    color: var(--color-text-inverse);
}

.diff > .container {
    position: relative;
    z-index: 1;
}

/* Tabla: solo desktop (≥640px). En mobile se oculta a favor de .diff__stack. */
.diff__table-wrap {
    display: none;
    max-width: 820px;
    margin-inline: auto;
    overflow-x: auto;
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-md);
}

/* Versión apilada: solo mobile (<640px) — ver comentario en el HTML. */
.diff__stack {
    display: flex;
    flex-direction: column;
    gap: var(--space-lg);
    max-width: 480px;
    margin-inline: auto;
}

.diff__stack-group {
    overflow: hidden;
    border-radius: var(--radius-xl);
    background-color: var(--color-bg);
    box-shadow: var(--shadow-md);
}

.diff__stack-heading {
    padding: var(--space-sm) var(--space-md);
    font-family: var(--font-display);
    font-weight: 800;
    font-size: var(--text-sm);
    color: var(--color-text-inverse);
    background-color: var(--color-text-secondary);
}

.diff__stack-group--sinacne .diff__stack-heading {
    background-color: var(--color-primary);
}

.diff__stack-list {
    display: flex;
    flex-direction: column;
}

.diff__stack-list li {
    display: flex;
    align-items: flex-start;
    gap: var(--space-sm);
    padding: var(--space-sm) var(--space-md);
    font-size: var(--text-sm);
    color: var(--color-text-secondary);
    border-bottom: 1px solid var(--color-border-subtle);
}

.diff__stack-list li:last-child {
    border-bottom: none;
}

.diff__stack-group--sinacne .diff__stack-list li {
    font-weight: 700;
    color: var(--color-secondary);
}

.diff__stack-group--sinacne .diff__stack-list li .material-symbols-outlined {
    flex-shrink: 0;
    color: var(--color-primary);
    font-size: 1.1rem;
    margin-top: 0.1em;
}

@media (min-width: 640px) {
    .diff__stack {
        display: none;
    }

    .diff__table-wrap {
        display: block;
    }
}

.diff__table {
    table-layout: fixed;
    background-color: var(--color-bg);
    /* Suficiente para que ambas columnas (que ahora son simétricas, 50%
       cada una) no envuelvan el texto más largo palabra por palabra. */
    min-width: 520px;
}

.diff__table th,
.diff__table td {
    width: 50%;
}

.diff__table th,
.diff__table td {
    padding: 0.625rem var(--space-md);
    text-align: left;
    font-size: var(--text-sm);
    line-height: 1.35;
    border-bottom: 1px solid var(--color-border-subtle);
}

.diff__table thead th {
    font-family: var(--font-display);
    font-weight: 800;
    font-size: var(--text-base);
    color: var(--color-text-inverse);
    padding-block: 0.625rem;
}

.diff__table thead th:first-child {
    background-color: var(--color-text-secondary);
}

.diff__table thead th:last-child {
    background-color: var(--color-primary);
}

.diff__table tbody td:first-child {
    color: var(--color-text-secondary);
}

.diff__table tbody td:last-child {
    font-weight: 700;
    color: var(--color-secondary);
}

.diff__table-row {
    display: flex;
    align-items: flex-start;
    gap: var(--space-sm);
}

.diff__table tbody td:last-child .material-symbols-outlined {
    flex-shrink: 0;
    color: var(--color-primary);
    font-size: 1.1rem;
    margin-top: 0.1em;
}

.diff__table-label {
    flex: 1 1 auto;
    min-width: 0;
}

.diff__table tbody tr:last-child td {
    border-bottom: none;
}


/* ──────────────────────────────────────────────────
   S4 · PRIMERA VALORACIÓN — pasos numerados
   ────────────────────────────────────────────────── */
.steps {
    padding-block: var(--space-3xl);
}

.steps__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-lg);
    margin-bottom: var(--space-2xl);
}

.steps__item {
    position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    gap: var(--space-xs);
    padding: var(--space-xl) var(--space-lg) var(--space-lg);
    background-color: var(--color-bg-elevated);
    border: 1.5px solid var(--color-primary);
    border-radius: var(--radius-2xl);
    box-shadow: var(--shadow-sm);
    transition: transform var(--transition-base), box-shadow var(--transition-base);
}

.steps__item:hover {
    transform: translateY(-6px);
    box-shadow: var(--shadow-lg);
}

.steps__number {
    font-family: var(--font-display);
    font-weight: 800;
    font-size: 2.75rem;
    line-height: 1;
    color: rgba(2, 175, 202, 0.16);
}

.steps__accent {
    display: block;
    width: 2rem;
    height: 3px;
    margin-block: var(--space-sm) 0.25rem;
    border-radius: var(--radius-full);
    background-color: var(--color-primary);
}

.steps__title {
    font-size: var(--text-base);
}

.steps__text {
    font-size: var(--text-sm);
    color: var(--color-text-secondary);
}

.steps__closing {
    max-width: 60ch;
    margin-inline: auto;
    margin-bottom: var(--space-xl);
    text-align: center;
    font-size: var(--text-base);
    font-weight: 700;
    font-style: italic;
    color: var(--color-secondary);
}

.steps__cta {
    display: flex;
    justify-content: center;
}

@media (min-width: 640px) {
    .steps__grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1024px) {
    .steps__grid {
        grid-template-columns: repeat(3, 1fr);
    }
}


/* ──────────────────────────────────────────────────
   S5 · EQUIPO — replicado 1:1 del sitio real de SinAcné
   (bloque .sn-team con sus propias custom properties, tal
   como llegó del código embebido — no usa los tokens
   globales de esta hoja para mantenerlo idéntico al original).
   ────────────────────────────────────────────────── */
.sn-team {
    --sn-primary: #02afca;
    --sn-primary-hover: #029ab2;
    --sn-primary-soft: rgba(2, 175, 202, 0.1);
    --sn-bg-light: #E8F3F5;
    --sn-text-primary: #101718;
    --sn-text-body: #4b5563;
    --sn-text-secondary: #6b7280;
    --sn-text-muted: #9ca3af;
    --sn-border-light: #e5e7eb;
    --sn-border-card: #f3f4f6;
    --sn-white: #ffffff;
    --sn-shadow-sm: 0 1px 2px rgba(16, 23, 24, 0.05);
    --sn-shadow-lg: 0 20px 30px rgba(16, 23, 24, 0.12);
    --sn-shadow-primary: 0 10px 25px rgba(2, 175, 202, 0.25);
    --sn-radius-lg: 1rem;
    --sn-radius-xl: 1.5rem;
    --sn-container: 1200px;
    --sn-transition: 300ms ease;

    width: 100%;
    padding: 4rem 1rem;
    background: var(--sn-bg-light);
    color: var(--sn-text-primary);
    font-family: "Manrope", "Noto Sans", system-ui, -apple-system, sans-serif;
    box-sizing: border-box;
    overflow: hidden;
    position: relative;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.sn-team *,
.sn-team *::before,
.sn-team *::after {
    box-sizing: border-box;
}

.sn-team::before {
    content: "";
    position: absolute;
    top: -18rem;
    right: -14rem;
    width: 36rem;
    height: 36rem;
    border-radius: 999px;
    background: radial-gradient(circle, rgba(2, 175, 202, 0.09) 0%, transparent 70%);
    pointer-events: none;
}

.sn-team__inner {
    width: 100%;
    max-width: var(--sn-container);
    margin: 0 auto;
    position: relative;
    z-index: 1;
}

.sn-team__header {
    max-width: 760px;
    margin: 0 auto 3rem;
    padding-bottom: 2rem;
    border-bottom: 1px solid var(--sn-border-light);
    text-align: center;
}

.sn-team__eyebrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 0 0 1.5rem;
    padding: 0.4rem 1.2rem;
    border: 1px solid var(--sn-primary);
    border-radius: 999px;
    background: transparent;
    color: var(--sn-primary);
    font-size: 0.875rem;
    line-height: 1;
    font-weight: 600;
}

.sn-team__title {
    margin: 0;
    color: var(--sn-text-primary);
    font-size: 1.875rem;
    line-height: 1.1;
    font-weight: 800;
    letter-spacing: -0.02em;
}

.sn-team__description {
    margin: 1.25rem auto 0;
    max-width: 42rem;
    color: var(--sn-text-secondary);
    font-size: 1.0625rem;
    line-height: 1.65;
    font-weight: 500;
}

.sn-team__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2rem;
}

.sn-team-card {
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: var(--sn-white);
    border: 1px solid var(--sn-border-card);
    border-radius: var(--sn-radius-xl);
    box-shadow: var(--sn-shadow-sm);
    transition:
        transform var(--sn-transition),
        box-shadow var(--sn-transition),
        border-color var(--sn-transition);
}

.sn-team-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--sn-shadow-lg);
    border-color: rgba(2, 175, 202, 0.18);
}

.sn-team-card__media {
    position: relative;
    width: 100%;
    aspect-ratio: 4 / 5;
    overflow: hidden;
    background: #e8f3f5;
}

.sn-team-card__media img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    transition: transform 700ms ease;
}

.sn-team-card:hover .sn-team-card__media img {
    transform: scale(1.04);
}

.sn-team-card__body {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: 1.5rem;
}

.sn-team-card__name {
    margin: 0;
    color: var(--sn-text-primary);
    font-size: 1.35rem;
    line-height: 1.2;
    font-weight: 800;
    letter-spacing: -0.015em;
    transition: color var(--sn-transition);
}

.sn-team-card:hover .sn-team-card__name {
    color: var(--sn-primary);
}

.sn-team-card__license {
    display: inline-flex;
    align-items: center;
    align-self: flex-start;
    gap: 0.4rem;
    margin-top: 0.75rem;
    padding: 0.45rem 0.75rem;
    border-radius: 999px;
    background: var(--sn-primary-soft);
    color: var(--sn-primary);
    font-size: 0.78rem;
    line-height: 1;
    font-weight: 800;
}

.sn-team-card__license-dot {
    width: 6px;
    height: 6px;
    border-radius: 999px;
    background: var(--sn-primary);
}

.sn-team-card__quote {
    margin: 1.25rem 0 0;
    color: var(--sn-text-body);
    font-size: 0.98rem;
    line-height: 1.7;
    font-weight: 500;
    font-style: italic;
}

.sn-team-card__footer {
    margin-top: auto;
    padding-top: 1.5rem;
}

/* TEMPORAL: ocultar iconos de redes sociales hasta contar con los enlaces reales */
.sn-team-card__footer {
    display: none;
}

.sn-team-card__socials {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.sn-team-card__social {
    width: 2.75rem;
    height: 2.75rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--sn-border-light);
    border-radius: 999px;
    background: var(--sn-white);
    color: var(--sn-primary);
    text-decoration: none;
    transition:
        background-color var(--sn-transition),
        border-color var(--sn-transition),
        color var(--sn-transition),
        transform 120ms ease,
        box-shadow var(--sn-transition);
}

.sn-team-card__social:hover {
    background: var(--sn-primary);
    border-color: var(--sn-primary);
    color: var(--sn-white);
    box-shadow: var(--sn-shadow-primary);
}

.sn-team-card__social:active {
    transform: scale(0.96);
}

.sn-team-card__social svg {
    width: 1.15rem;
    height: 1.15rem;
    display: block;
    fill: currentColor;
}

@media (min-width: 768px) {
    .sn-team {
        padding: 5rem 2.5rem;
    }

    .sn-team__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .sn-team__title {
        font-size: 2.25rem;
    }
}

@media (min-width: 1024px) {
    .sn-team {
        padding: 6rem 2.5rem;
    }

    .sn-team__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}


/* ──────────────────────────────────────────────────
   S6 · CASOS REALES — antes / después
   ────────────────────────────────────────────────── */
.cases {
    padding-block: var(--space-3xl);
}

.cases__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-lg);
    margin-bottom: var(--space-xl);
}

.case-card {
    background-color: var(--color-bg-elevated);
    border: 1px solid var(--color-border-subtle);
    border-radius: var(--radius-xl);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
}

.case-card__media {
    position: relative;
    aspect-ratio: 3 / 4;
    overflow: hidden;
}

.case-card__video {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.case-card__sound-toggle {
    position: absolute;
    right: var(--space-sm);
    bottom: var(--space-sm);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border: none;
    border-radius: var(--radius-full);
    background-color: rgba(17, 24, 28, 0.55);
    color: var(--color-text-inverse);
    transition: background-color var(--transition-fast);
}

.case-card__sound-toggle:hover {
    background-color: rgba(17, 24, 28, 0.75);
}

.case-card__sound-toggle .material-symbols-outlined {
    font-size: 1.3rem;
}

.cases__disclaimer {
    margin-inline: auto;
    padding: var(--space-md) var(--space-lg);
    border-radius: var(--radius-md);
    background-color: var(--color-bg-alt);
    font-size: var(--text-xs);
    text-align: center;
    color: var(--color-text-secondary);
}

@media (min-width: 640px) {
    .cases__grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .cases__disclaimer {
        max-width: fit-content;
        white-space: nowrap;
    }
}

@media (min-width: 1024px) {
    .cases__grid {
        grid-template-columns: repeat(3, 1fr);
    }

    .case-card__media {
        aspect-ratio: 9 / 16;
    }
}


/* ──────────────────────────────────────────────────
   S7 · RESEÑAS
   ────────────────────────────────────────────────── */
.reviews {
    padding-block: var(--space-3xl);
    background-color: var(--color-bg-alt);
}

.reviews__slider {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    margin-bottom: var(--space-md);
}

.reviews__track {
    display: flex;
    gap: var(--space-lg);
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    scrollbar-width: none;
    padding-block: var(--space-xs);
}

.reviews__track::-webkit-scrollbar {
    display: none;
}

.reviews__arrow {
    flex-shrink: 0;
    display: none;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-full);
    background-color: var(--color-bg);
    color: var(--color-primary);
    box-shadow: var(--shadow-sm);
    transition: background-color var(--transition-fast), color var(--transition-fast);
}

.reviews__arrow:hover {
    background-color: var(--color-primary);
    color: var(--color-text-inverse);
}

.reviews__dots {
    display: flex;
    justify-content: center;
    gap: var(--space-sm);
    margin-bottom: var(--space-xl);
}

.reviews__dot {
    width: 0.55rem;
    height: 0.55rem;
    padding: 0;
    border: none;
    border-radius: var(--radius-full);
    background-color: var(--color-border);
    transition: background-color var(--transition-fast), transform var(--transition-fast);
}

.reviews__dot.is-active {
    background-color: var(--color-primary);
    transform: scale(1.3);
}

.review-card {
    flex: 0 0 100%;
    scroll-snap-align: start;
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
    padding: var(--space-lg);
    background-color: var(--color-bg-elevated);
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-sm);
}

.review-card__stars {
    display: flex;
    gap: 0.15rem;
    color: #f5a623;
}

.review-card__stars .material-symbols-outlined {
    font-size: 1.1rem;
    font-variation-settings: "FILL" 1, "wght" 500, "GRAD" 0, "opsz" 24;
}

.review-card__quote {
    font-size: var(--text-sm);
    line-height: 1.7;
    flex-grow: 1;
}

.review-card__author {
    font-size: var(--text-xs);
    font-weight: 700;
    color: var(--color-secondary);
}

.reviews__cta {
    display: flex;
    justify-content: center;
}

@media (min-width: 640px) {
    .review-card {
        flex-basis: calc(50% - var(--space-lg) / 2);
    }
}

@media (min-width: 1024px) {
    .review-card {
        flex-basis: calc(33.333% - var(--space-lg) * 2 / 3);
    }

    .reviews__arrow {
        display: inline-flex;
    }
}


/* ──────────────────────────────────────────────────
   S8 · PROTOCOLOS Y TECNOLOGÍA
   ────────────────────────────────────────────────── */
.protocols {
    padding-block: var(--space-3xl);
}

.protocols__inner {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-2xl);
    align-items: center;
}

.protocols__content {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-md);
}

.protocols__list {
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
    margin-block: var(--space-sm);
}

.protocols__list-item {
    display: flex;
    align-items: flex-start;
    gap: var(--space-sm);
    font-size: var(--text-sm);
    color: var(--color-text-muted);
    font-weight: 500;
}

.protocols__list-item .material-symbols-outlined {
    color: var(--color-primary);
    font-size: 1.2rem;
    margin-top: 0.1em;
}

.protocols__note {
    padding: var(--space-md);
    border-radius: var(--radius-md);
    background-color: var(--color-bg-alt);
    font-size: var(--text-sm);
    color: var(--color-text-secondary);
}

.protocols__media {
    width: 100%;
    aspect-ratio: 4 / 3;
    border-radius: var(--radius-2xl);
    overflow: hidden;
    box-shadow: var(--shadow-lg);
}

.protocols__media video {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

@media (min-width: 768px) {
    .protocols__inner {
        grid-template-columns: 1fr 1fr;
        gap: var(--space-4xl);
    }
}


/* ──────────────────────────────────────────────────
   S9 · UBICACIÓN
   ────────────────────────────────────────────────── */
.location {
    padding-block: var(--space-3xl);
    background-color: var(--color-bg-alt);
}

.location__inner {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-2xl);
}

.location__media {
    display: flex;
    flex-direction: column;
    gap: var(--space-md);
}

.location__media .media-placeholder {
    aspect-ratio: 16 / 9;
}

.location__map {
    aspect-ratio: 16 / 9;
    border-radius: var(--radius-2xl);
    overflow: hidden;
    box-shadow: var(--shadow-md);
}

.location__map iframe {
    display: block;
    width: 100%;
    height: 100%;
    border: 0;
}

.location__details {
    display: flex;
    flex-direction: column;
    gap: var(--space-lg);
}

.location__list {
    display: flex;
    flex-direction: column;
    gap: var(--space-md);
}

.location__item {
    display: flex;
    align-items: flex-start;
    gap: var(--space-sm);
}

.location__item .material-symbols-outlined {
    color: var(--color-primary);
    margin-top: 0.1em;
    font-size: 1.75rem;
}

.location__item-title {
    font-size: var(--text-base);
    font-weight: 700;
    color: var(--color-secondary);
}

.location__item-text {
    font-size: var(--text-base);
}

.location__item-text a {
    color: var(--color-primary);
    font-weight: 700;
}

.location__socials {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    margin-top: var(--space-md);
}

.location__social {
    width: 2.75rem;
    height: 2.75rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--color-primary);
    border-radius: var(--radius-full);
    background-color: var(--color-primary);
    color: var(--color-text-inverse);
    transition: background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);
}

.location__social:hover {
    background-color: transparent;
    border-color: var(--color-border);
    color: var(--color-primary);
}

.location__social svg {
    width: 1.15rem;
    height: 1.15rem;
    display: block;
    fill: currentColor;
}

@media (min-width: 900px) {
    .location__inner {
        grid-template-columns: 1fr 1fr;
    }
}


/* ──────────────────────────────────────────────────
   S10 · FAQ — acordeón nativo (<details>/<summary>)
   ────────────────────────────────────────────────── */
.faq {
    padding-block: var(--space-3xl);
}

.faq__list {
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
    max-width: var(--container-md);
    margin-inline: auto;
}

.faq-item {
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    background-color: var(--color-bg-elevated);
    overflow: hidden;
}

.faq-item[open] {
    border-color: var(--color-primary);
}

.faq-item__summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-md);
    padding: var(--space-md) var(--space-lg);
    font-weight: 700;
    font-size: var(--text-sm);
    color: var(--color-secondary);
    cursor: pointer;
    list-style: none;
}

.faq-item__summary::-webkit-details-marker {
    display: none;
}

.faq-item__icon {
    flex-shrink: 0;
    color: var(--color-primary);
    transition: transform var(--transition-base);
}

.faq-item[open] .faq-item__icon {
    transform: rotate(45deg);
}

.faq-item__answer {
    padding: 0 var(--space-lg) var(--space-lg);
    font-size: var(--text-sm);
    line-height: 1.7;
}


/* ──────────────────────────────────────────────────
   S11 · CIERRE — CTA final
   ────────────────────────────────────────────────── */
.final-cta {
    padding-block: var(--space-3xl);
}

.final-cta__card {
    position: relative;
    overflow: hidden;
    max-width: var(--container-2xl);
    margin-inline: auto;
    padding: 3.5rem var(--space-lg);
    border-radius: var(--radius-3xl);
    box-shadow: var(--shadow-lg);
    color: var(--color-text-inverse);
    text-align: center;
}

.final-cta__bg {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.final-cta__bg video {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.final-cta__bg::after {
    content: "";
    position: absolute;
    inset: 0;
    background-color: rgba(6, 27, 80, 0.55);
}

.final-cta__inner {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-md);
    max-width: 55ch;
    margin-inline: auto;
}

.final-cta__title {
    color: var(--color-text-inverse);
    font-size: var(--text-xl);
}

.final-cta__subtitle {
    color: rgba(255, 255, 255, 0.85);
    font-size: var(--text-base);
}

.final-cta__actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--space-md);
    margin-top: var(--space-md);
}


/* ──────────────────────────────────────────────────
   FORMULARIO DE AGENDA — vive dentro del hero (.hero__form-card)
   Conectado a Web3Forms (envío vía fetch, ver script.js). Falta
   reemplazar el Access Key placeholder antes de publicar.
   ────────────────────────────────────────────────── */
.appointment__form {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-md);
    max-width: var(--container-sm);
    margin-inline: auto;
    padding: var(--space-xl);
    background-color: var(--color-bg-elevated);
    border-radius: var(--radius-2xl);
    box-shadow: var(--shadow-lg);
}

.form-field {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.form-field__label {
    font-size: var(--text-sm);
    font-weight: 700;
    color: var(--color-secondary);
}

.form-field__input,
.form-field__textarea {
    padding: 0.85rem var(--space-md);
    border: 1.5px solid var(--color-border);
    border-radius: var(--radius-md);
    background-color: var(--color-bg);
    font-size: var(--text-base);
    transition: border-color var(--transition-fast);
}

.form-field__input:focus,
.form-field__textarea:focus {
    border-color: var(--color-primary);
    outline: none;
}

.form-field__textarea {
    resize: vertical;
    min-height: 6rem;
}

.appointment__note {
    font-size: var(--text-xs);
    color: var(--color-text-secondary);
    text-align: center;
}

.appointment__fields {
    display: flex;
    flex-direction: column;
    gap: var(--space-md);
}

.appointment__error {
    font-size: var(--text-xs);
    font-weight: 700;
    color: var(--color-accent);
    text-align: center;
}

/* Aviso de consentimiento bajo el botón (link al Aviso de Privacidad). */
.appointment__legal {
    font-size: var(--text-xs);
    color: var(--color-text-secondary);
    text-align: center;
}

.appointment__legal a {
    color: inherit;
    text-decoration: underline;
}


/* ──────────────────────────────────────────────────
   FOOTER
   ────────────────────────────────────────────────── */
.site-footer {
    padding-top: var(--space-2xl);
    padding-bottom: var(--space-lg);
    background-color: var(--color-heading);
    color: rgba(255, 255, 255, 0.7);
}

.site-footer__container {
    max-width: var(--container-2xl);
    margin-inline: auto;
    padding-inline: var(--space-md);
}

.site-footer__top {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-md);
    margin-bottom: var(--space-lg);
}

.site-footer__logo-img {
    display: block;
    height: 3.5rem;
    width: auto;
}

.site-footer__divider {
    border: none;
    border-top: 1px solid rgba(255, 255, 255, 0.15);
    margin-bottom: var(--space-2xl);
}

.site-footer__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-2xl);
    margin-bottom: var(--space-2xl);
}

.site-footer__heading {
    font-family: var(--font-display);
    font-size: var(--text-base);
    font-weight: 800;
    color: #ffffff;
    margin-bottom: var(--space-md);
}

.site-footer__about {
    font-size: var(--text-sm);
    color: rgba(255, 255, 255, 0.65);
    max-width: 40ch;
    margin-bottom: var(--space-md);
}

.site-footer__socials {
    display: flex;
    gap: var(--space-sm);
}

.site-footer__social {
    width: 2.5rem;
    height: 2.5rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--color-primary);
    border-radius: var(--radius-md);
    background-color: var(--color-primary);
    color: #ffffff;
    transition: background-color var(--transition-fast), color var(--transition-fast);
}

.site-footer__social:hover {
    background-color: #ffffff;
    color: var(--color-primary);
}

.site-footer__social svg {
    width: 1.1rem;
    height: 1.1rem;
    display: block;
    fill: currentColor;
}

.site-footer__services {
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
}

.site-footer__services li {
    display: flex;
    align-items: flex-start;
    gap: var(--space-sm);
    font-size: var(--text-sm);
    font-weight: 600;
    color: rgba(255, 255, 255, 0.8);
}

.site-footer__services .material-symbols-outlined {
    color: var(--color-primary);
    font-size: 1.2em;
    margin-top: 0.1em;
    flex-shrink: 0;
}

.site-footer__services li a {
    display: flex;
    align-items: flex-start;
    gap: var(--space-sm);
    transition: color var(--transition-fast);
}

.site-footer__services li a:hover {
    color: #ffffff;
}

.site-footer__contact {
    display: flex;
    flex-direction: column;
    gap: var(--space-md);
}

.site-footer__contact li {
    display: flex;
    align-items: flex-start;
    gap: var(--space-sm);
}

.site-footer__contact-icon.material-symbols-outlined {
    width: 2.25rem;
    height: 2.25rem;
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-md);
    background-color: #ffffff;
    color: var(--color-primary);
    font-size: 1.15rem;
}

.site-footer__contact-label {
    font-size: var(--text-xs);
    font-weight: 700;
    color: rgba(255, 255, 255, 0.55);
    margin-bottom: 0.15rem;
}

.site-footer__contact-value {
    font-size: var(--text-sm);
    font-weight: 600;
    color: #ffffff;
}

.site-footer__contact-value a {
    color: #ffffff;
}

.site-footer__legal {
    padding-top: var(--space-sm);
    border-top: 1px solid rgba(255, 255, 255, 0.15);
    font-size: var(--text-xs);
    color: rgba(255, 255, 255, 0.5);
    text-align: right;
}

.site-footer__legal a {
    margin-left: var(--space-sm);
    color: inherit;
    text-decoration: underline;
}

.site-footer__legal a:hover {
    color: var(--color-text-inverse);
}

@media (min-width: 768px) {
    .site-footer__grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1024px) {
    .site-footer__grid {
        grid-template-columns: repeat(3, 1fr);
    }
}


/* ──────────────────────────────────────────────────
   BARRA FIJA DE CONTACTO — solo mobile (<768px)
   El header no lleva CTA en mobile (ver .site-header__actions): el
   punto de conversión que siempre está a mano vive aquí abajo en su
   lugar. Elemento estático, nunca se abre ni se cierra — el body ya
   reserva su espacio (ver BASE).
   ────────────────────────────────────────────────── */
.mobile-cta-bar {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 90;
    height: var(--mobile-cta-bar-height);
    padding: var(--space-sm) var(--space-md);
    padding-bottom: calc(var(--space-sm) + env(safe-area-inset-bottom));
    background-color: rgba(255, 255, 255, 0.96);
    box-shadow: 0 -8px 24px rgba(16, 23, 24, 0.12);
}

.mobile-cta-bar__primary {
    display: flex;
    flex: 1;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    height: 48px;
    font-family: var(--font-body);
    font-size: var(--text-sm);
    font-weight: 700;
    color: var(--color-text-inverse);
    background-color: var(--color-primary);
    border-radius: var(--radius-full);
    box-shadow: var(--shadow-primary);
    transition: transform var(--transition-fast);
}

.mobile-cta-bar__primary:active {
    transform: scale(0.97);
}

.mobile-cta-bar__whatsapp {
    display: flex;
    flex: none;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    color: var(--color-text-inverse);
    background-color: var(--color-whatsapp);
    border-radius: var(--radius-full);
    box-shadow: 0 10px 25px rgba(37, 211, 102, 0.30);
    transition: transform var(--transition-fast);
}

.mobile-cta-bar__whatsapp:active {
    transform: scale(0.97);
}

@media (min-width: 768px) {
    .mobile-cta-bar {
        display: none;
    }
}


/* ──────────────────────────────────────────────────
   PÁGINA DE ESTADO — 404 y /gracias/ comparten este patrón
   (logo + mensaje corto + acciones). Sin header ni nav.
   ────────────────────────────────────────────────── */
.status-page {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: var(--space-xl) var(--space-md);
    background-color: var(--color-bg-alt);
    text-align: center;
}

.status-page__container {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-md);
    max-width: var(--container-sm);
}

.status-page__logo {
    width: 180px;
    margin-bottom: var(--space-md);
}

.status-page__icon {
    font-size: 3.5rem;
    color: var(--color-primary);
}

.status-page__code {
    font-family: var(--font-display);
    font-size: var(--text-2xl);
    font-weight: 800;
    color: var(--color-primary);
}

.status-page__title {
    font-size: var(--text-xl);
    text-wrap: balance;
}

.status-page__text {
    color: var(--color-text-muted);
    text-wrap: pretty;
}

.status-page__actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--space-md);
    margin-top: var(--space-sm);
}


/* ──────────────────────────────────────────────────
   PÁGINA LEGAL — Aviso de Privacidad. Reusa el header y el
   footer del home; solo compensa la altura del header fijo.
   ────────────────────────────────────────────────── */
.legal-page {
    padding-top: calc(var(--header-height) + var(--header-margin) * 2 + var(--space-2xl));
    padding-bottom: var(--space-3xl);
}


/* ================================================================
   6. UTILITIES
   ================================================================ */

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* Honeypot anti-spam del formulario (Web3Forms descarta el envío si
   llega marcado). A diferencia de .sr-only, también debe quedar oculto
   para lectores de pantalla: por eso además lleva aria-hidden y
   tabindex="-1" en el HTML. */
.botcheck {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

/* Contenido de formato largo (Aviso de Privacidad). */
.prose {
    max-width: var(--container-md);
    margin-inline: auto;
    line-height: 1.7;
}

.prose > * + * {
    margin-top: var(--space-md);
}

.prose > h2 {
    margin-top: var(--space-2xl);
    font-size: var(--text-xl);
}

.prose ul {
    padding-left: var(--space-lg);
    list-style: disc;
}

.prose a {
    color: var(--color-primary);
    font-weight: 700;
}

.text-balance { text-wrap: balance; }
.text-pretty  { text-wrap: pretty; }
.text-center  { text-align: center; }

.visually-hidden {
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    height: 1px;
    overflow: hidden;
    position: absolute;
    white-space: nowrap;
    width: 1px;
}
