/* ============================================================================
   CENTRO LEGAL Y DE CONFIANZA  ·  Namespace `lgl-`
   ----------------------------------------------------------------------------
   UNA hoja para las TRES pantallas del sistema documental público:

     • terms/public.blade.php          → LECTURA PÚBLICA de los T&C.
         <body class="lgl-page lgl-page--doc">
     • public/seguridad-privacidad     → CENTRO DE CONFIANZA (venta + transparencia).
         <body class="lgl-page lgl-page--trust">
     • admin/terms/accept.blade.php    → ACEPTACIÓN BLOQUEANTE (gate).
         <body class="lgl-page lgl-page--gate">
         Caja acotada con scroll interno (scroll-to-unlock). Su LÓGICA NO se toca:
         los IDs (#trmScroll, #trmChk, #trmSubmit, #trmForm, #trmHint,
         #trmCheckWrap) se preservan 1:1 desde el diseño anterior.

   Sustituye a `terminos.css` + `seguridad-privacidad.css` (eliminados): el
   documento legal y la página de seguridad son un PAR y deben compartir barra,
   pestañas, botones, escala tipográfica y pie. Duplicar ese chrome en dos hojas
   fue lo que permitió que se desincronizaran.

   REGLAS APLICADAS (CLAUDE.md)
   - Sección servida con `@cssAsset` (media queries crudas): NO pasa por PostCSS,
     NO tiene `.min.css`, NO hay que recompilar `app.min.css`. Cache-bust por mtime.
   - Contraste AA: el botón primario usa `--lgl-p7` (#116d5b, 6.25:1 sobre blanco).
     `--lgl-p` (#199c82) da 3.43:1 y NO se usa para texto ni sobre texto blanco.
   - Sin `backdrop-filter` (coste de composición en tablets Android de gama baja).
   - Anima solo `transform` y `opacity`. `dvh` antes que `vh` (WebKit).
   - Teal anclado a propósito: son páginas públicas del sistema, no heredan el
     branding per-doctora.
   ============================================================================ */

:root {
    /* Marca — teal canónico anclado. */
    --lgl-p:      #199c82;   /* solo fondos decorativos / iconografía */
    --lgl-p6:     #168a73;
    --lgl-p7:     #116d5b;   /* texto, botones, enlaces → AA */
    --lgl-p8:     #0c5344;
    --lgl-p05:    #e6f7f3;
    --lgl-p-rgb:  25, 156, 130;

    /* Neutrales (slate del sistema). */
    --lgl-ink:    #0f172a;
    --lgl-ink-2:  #334155;
    /* Un punto más oscuro que el slate-500 del sistema (#64748b). Ese daba
       4.30:1 sobre el chip teal (`--lgl-p05`) y 4.51:1 sobre `--lgl-bg`:
       pasaba raspando o no pasaba, según el fondo. Este pasa AA sobre los
       TRES fondos de estas páginas (blanco 5.45 · bg 5.17 · chip 4.92). */
    --lgl-muted:  #5b6b7f;
    --lgl-faint:  #94a3b8;
    --lgl-line:   #e6ecec;
    --lgl-line-2: #eef3f2;
    --lgl-bg:     #f5faf8;
    --lgl-card:   #ffffff;

    /* Semánticos (solo para el par "sí hacemos / no hacemos" y avisos). */
    --lgl-warn:      #92400e;
    --lgl-warn-bg:   #fffbeb;
    --lgl-warn-line: #fde68a;
    --lgl-deny:      #9f1239;
    --lgl-deny-bg:   #fff1f2;

    /* Forma. */
    --lgl-radius:    20px;
    --lgl-radius-md: 14px;
    --lgl-radius-sm: 10px;

    /* Elevación (suave, sin filtros caros). */
    --lgl-shadow-sm: 0 1px 2px rgba(15, 23, 42, .04);
    --lgl-shadow-md: 0 10px 30px rgba(15, 23, 42, .06), 0 2px 6px rgba(15, 23, 42, .04);
    --lgl-shadow-lg: 0 26px 64px rgba(16, 109, 91, .12), 0 6px 16px rgba(15, 23, 42, .05);

    /* Medidas. */
    --lgl-maxw:  1180px;   /* barra, pie, centro de confianza */
    --lgl-readw: 720px;    /* columna de lectura ≈ 70 caracteres */
    --lgl-tocw:  244px;    /* rail del índice */

    /* Tipografía. */
    --lgl-font:    'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    --lgl-display: 'Fraunces', 'Georgia', 'Times New Roman', serif;

    /* Escala fluida. */
    --lgl-fs-xs:   clamp(0.76rem, 0.74rem + 0.10vw, 0.82rem);
    --lgl-fs-sm:   clamp(0.86rem, 0.82rem + 0.18vw, 0.95rem);
    --lgl-fs-base: clamp(1.00rem, 0.96rem + 0.22vw, 1.09rem);
    --lgl-fs-read: clamp(1.02rem, 0.98rem + 0.24vw, 1.12rem);
    --lgl-fs-lead: clamp(1.08rem, 1.00rem + 0.42vw, 1.26rem);
    --lgl-fs-h3:   clamp(1.10rem, 1.02rem + 0.38vw, 1.30rem);
    --lgl-fs-h2:   clamp(1.5rem, 1.28rem + 1.05vw, 2.1rem);
    --lgl-fs-h1:   clamp(1.85rem, 1.5rem + 2.0vw, 2.9rem);
}

/* ─── Reset acotado a la página ────────────────────────────────────────── */
.lgl-page *,
.lgl-page *::before,
.lgl-page *::after { box-sizing: border-box; margin: 0; padding: 0; }

.lgl-page {
    margin: 0;
    font-family: var(--lgl-font);
    color: var(--lgl-ink);
    background: var(--lgl-bg);
    line-height: 1.65;
    font-size: var(--lgl-fs-base);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    -webkit-text-size-adjust: 100%;
    text-rendering: optimizeLegibility;
    min-height: 100vh;
    min-height: 100dvh;
    overflow-x: hidden;                /* red de seguridad anti-overflow */
}
.lgl-page img { max-width: 100%; display: block; }
.lgl-page svg { display: block; }
.lgl-page a  { color: var(--lgl-p7); text-decoration: none; }
.lgl-page a:hover { text-decoration: underline; }
.lgl-page ul, .lgl-page ol { list-style: none; }

.lgl-container {
    width: 100%;
    max-width: var(--lgl-maxw);
    margin-inline: auto;
    padding-inline: clamp(18px, 5vw, 40px);
}

/* Salto al contenido (visible solo al foco por teclado). */
.lgl-skip {
    position: absolute;
    left: 12px; top: -60px;
    z-index: 40;
    background: var(--lgl-p7);
    color: #fff;
    padding: 10px 16px;
    border-radius: var(--lgl-radius-sm);
    font-weight: 600;
    transition: top 160ms ease;
}
.lgl-skip:focus { top: 12px; text-decoration: none; }

/* ════════════════════════════════════════════════════════════════════════
   1 · CHROME COMPARTIDO — barra, marca, pestañas, botones, pie
   ════════════════════════════════════════════════════════════════════════ */

/* Barra pegajosa. Fondo SÓLIDO a propósito: `backdrop-filter` obligaba a una
   capa de composición en cada scroll (CLAUDE.md R6/R12). */
.lgl-nav {
    position: sticky; top: 0; z-index: 20;
    background: var(--lgl-card);
    border-bottom: 1px solid var(--lgl-line);
}
.lgl-nav__inner {
    display: flex; align-items: center; justify-content: space-between;
    gap: 14px;
    min-height: 66px;
    padding-block: 11px;
}
/* `min-height` de 44px: la marca es un enlace, y como tap target tenía 36px
   en móvil (WCAG 2.5.5). */
.lgl-brand { display: inline-flex; align-items: center; gap: 11px; min-width: 0; min-height: 44px; }
.lgl-brand__logo {
    width: 40px; height: 40px; flex: none;
    border-radius: 12px; overflow: hidden;
    display: flex; align-items: center; justify-content: center;
    background: linear-gradient(140deg, var(--lgl-p), var(--lgl-p7));
    color: #fff;
    box-shadow: 0 8px 18px rgba(var(--lgl-p-rgb), .26),
                inset 0 1px 0 rgba(255, 255, 255, .25);
}
.lgl-brand__logo img { width: 100%; height: 100%; object-fit: cover; }
.lgl-brand__logo svg { width: 21px; height: 21px; }
.lgl-brand__name {
    font-weight: 700; font-size: 1.05rem; letter-spacing: -.01em;
    color: var(--lgl-ink);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* Botones. */
.lgl-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    min-height: 44px;                  /* WCAG 2.5.5 */
    padding: 11px 19px;
    border-radius: 999px;
    font-family: inherit; font-size: var(--lgl-fs-sm); font-weight: 600; line-height: 1;
    cursor: pointer;
    border: 1.5px solid transparent;
    background: none;
    transition: transform 160ms ease, box-shadow 160ms ease, background-color 160ms ease, border-color 160ms ease;
    white-space: nowrap; text-decoration: none;
}
.lgl-btn:hover { text-decoration: none; }
.lgl-btn:focus-visible { outline: 3px solid rgba(var(--lgl-p-rgb), .4); outline-offset: 2px; }
.lgl-btn svg { flex: none; width: 17px; height: 17px; }
/* ⚠️ Los modificadores van scopeados con `.lgl-page` A PROPÓSITO.
   Estos botones son `<a>`, y arriba existe `.lgl-page a { color: var(--lgl-p7) }`
   con especificidad (0,1,1). Un `.lgl-btn--primary` suelto es (0,1,0) y PIERDE:
   el botón primario quedaba con texto teal sobre fondo teal — contraste 1:1,
   la etiqueta era invisible («Escribir a privacidad» no se leía). El botón
   ghost tapaba el fallo porque él sí quiere texto teal.
   Con `.lgl-page` delante son (0,2,0) y ganan. Mismo motivo en los `:hover`:
   `.lgl-page a:hover` (0,2,1) le subrayaba el texto a todos los botones. */

/* Primario sobre `--lgl-p7`: 6.25:1 con texto blanco (AA). */
.lgl-page .lgl-btn--primary {
    background: var(--lgl-p7); color: #fff;
    box-shadow: 0 8px 20px rgba(var(--lgl-p-rgb), .26);
}
.lgl-page .lgl-btn--primary:hover:not(:disabled) {
    background: var(--lgl-p8); color: #fff; transform: translateY(-1px);
    box-shadow: 0 12px 26px rgba(var(--lgl-p-rgb), .32);
}
.lgl-page .lgl-btn--ghost {
    background: var(--lgl-card); color: var(--lgl-p7);
    border-color: rgba(var(--lgl-p-rgb), .38);
}
.lgl-page .lgl-btn--ghost:hover { background: var(--lgl-p05); transform: translateY(-1px); }
.lgl-page .lgl-btn--quiet { color: var(--lgl-ink-2); border-color: var(--lgl-line); background: var(--lgl-card); }
.lgl-page .lgl-btn--quiet:hover { border-color: var(--lgl-faint); color: var(--lgl-ink); transform: translateY(-1px); }

/* Ningún botón se subraya al pasar por encima, sea `<a>` o `<button>`. */
.lgl-page a.lgl-btn:hover,
.lgl-page a.lgl-btn:focus-visible { text-decoration: none; }
.lgl-btn--lg { min-height: 50px; padding: 14px 26px; font-size: var(--lgl-fs-base); }
.lgl-btn:disabled { opacity: .5; cursor: not-allowed; box-shadow: none; transform: none; }

/* Etiqueta larga / corta del botón de la barra. `--dual` lo pone la vista solo
   cuando pasa las dos etiquetas; la corta releva a la larga en anchos
   intermedios, donde el nombre de la clínica y el botón compiten por el mismo
   renglón. Sin `:has()` a propósito (soporte tardío en WebKit, CLAUDE.md R12). */
.lgl-nav__label-short { display: none; }
@media (min-width: 561px) and (max-width: 800px) {
    .lgl-btn--dual .lgl-nav__label-full  { display: none; }
    .lgl-btn--dual .lgl-nav__label-short { display: inline; }
}

/* Conmutador de documentos: pestañas que NAVEGAN a rutas reales. */
.lgl-tabs { background: var(--lgl-card); border-bottom: 1px solid var(--lgl-line); }
.lgl-tabs__inner {
    display: flex; align-items: stretch; gap: 4px;
    overflow-x: auto;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
}
.lgl-tabs__inner::-webkit-scrollbar { display: none; }
.lgl-tab {
    display: inline-flex; align-items: center; gap: 9px;
    padding: 13px 4px 12px;
    margin-right: 22px;
    font-size: var(--lgl-fs-sm); font-weight: 600;
    color: var(--lgl-muted);
    border-bottom: 2.5px solid transparent;
    white-space: nowrap;
    transition: color 160ms ease, border-color 160ms ease;
}
.lgl-tab:last-child { margin-right: 0; }
.lgl-tab:hover { color: var(--lgl-ink); text-decoration: none; }
.lgl-tab svg { width: 17px; height: 17px; flex: none; }
.lgl-tab[aria-current="page"] { color: var(--lgl-p7); border-bottom-color: var(--lgl-p7); }

/* En móvil los rótulos largos empujaban la segunda pestaña fuera del viewport:
   con solo dos documentos, esconder uno tras un scroll horizontal es esconder
   que el otro documento existe. Debajo de 560px se acortan y entran los dos. */
.lgl-tab__short { display: none; }
@media (max-width: 560px) {
    .lgl-tab { margin-right: 16px; }
    .lgl-tab__long  { display: none; }
    .lgl-tab__short { display: inline; }
}

/* Pie compartido (mismo lenguaje que el pie del sistema, con insignia de versión). */
.lgl-foot {
    background: var(--lgl-ink);
    color: #cbd5e1;
    padding-block: clamp(30px, 5vw, 46px);
    margin-top: auto;
}
.lgl-foot__inner { display: grid; gap: 22px; }
.lgl-foot__top {
    display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px;
}
.lgl-foot__brand { display: inline-flex; align-items: center; gap: 10px; color: #fff; font-weight: 600; }
.lgl-foot__brand svg { width: 22px; height: 22px; color: var(--lgl-p); flex: none; }
.lgl-foot__badge {
    display: inline-flex; align-items: center;
    padding: 3px 10px; border-radius: 999px;
    font-size: .7rem; font-weight: 700; letter-spacing: .06em;
    color: #6ee7c4;
    background: rgba(var(--lgl-p-rgb), .16);
    border: 1px solid rgba(var(--lgl-p-rgb), .34);
}
.lgl-foot__links { display: flex; flex-wrap: wrap; gap: 4px 22px; }
/* Los enlaces del pie son tap targets reales (van en fila, muy juntos): medían
   ~24px de alto. `min-height` los lleva a 44px sin separar visualmente la fila. */
.lgl-foot__links a {
    display: inline-flex; align-items: center;
    min-height: 44px;
    color: #e2e8f0; font-size: var(--lgl-fs-sm);
}
.lgl-foot__meta {
    font-size: var(--lgl-fs-sm); color: #94a3b8;
    border-top: 1px solid rgba(255, 255, 255, .1);
    padding-top: 18px;
}

/* ════════════════════════════════════════════════════════════════════════
   2 · DOCUMENTO LEGAL — índice lateral + hoja de lectura
   ════════════════════════════════════════════════════════════════════════ */
.lgl-page--doc,
.lgl-page--trust { display: flex; flex-direction: column; }

.lgl-page--doc {
    background:
        radial-gradient(1200px 520px at 50% -6%, rgba(var(--lgl-p-rgb), .12), transparent 60%),
        linear-gradient(180deg, #ffffff 0, var(--lgl-bg) 300px);
}

.lgl-work {
    flex: 1 0 auto;
    width: 100%; max-width: var(--lgl-maxw);
    margin-inline: auto;
    padding: clamp(24px, 4vw, 44px) clamp(18px, 5vw, 40px) clamp(44px, 7vw, 78px);
    display: grid;
    gap: clamp(20px, 3vw, 40px);
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
}
@media (min-width: 1080px) {
    .lgl-work { grid-template-columns: var(--lgl-tocw) minmax(0, 1fr); }
}

/* ─── Índice ───────────────────────────────────────────────────────────── */
.lgl-toc { min-width: 0; }
@media (min-width: 1080px) {
    .lgl-toc {
        position: sticky;
        top: 90px;                     /* barra 66 + aire */
        max-height: calc(100dvh - 120px);
        overflow-y: auto;
        overscroll-behavior: contain;
    }
}
.lgl-toc__title {
    font-size: var(--lgl-fs-xs); font-weight: 700;
    letter-spacing: .14em; text-transform: uppercase;
    color: var(--lgl-muted);
    margin-bottom: 12px;
}
.lgl-toc__list { display: grid; gap: 1px; }
.lgl-toc__link {
    display: grid;
    grid-template-columns: 22px minmax(0, 1fr);
    gap: 10px;
    align-items: baseline;
    align-content: center;
    min-height: 44px;                  /* tap target (WCAG 2.5.5) */
    padding: 9px 11px;
    border-radius: var(--lgl-radius-sm);
    font-size: var(--lgl-fs-sm);
    color: var(--lgl-ink-2);
    border-left: 2px solid transparent;
    transition: background-color 150ms ease, color 150ms ease, border-color 150ms ease;
}
.lgl-toc__link:hover { background: var(--lgl-p05); color: var(--lgl-p7); text-decoration: none; }
.lgl-toc__n {
    font-size: var(--lgl-fs-xs); font-weight: 700; font-variant-numeric: tabular-nums;
    color: var(--lgl-faint);
}
.lgl-toc__link.is-active {
    background: var(--lgl-p05);
    color: var(--lgl-p7);
    font-weight: 600;
    border-left-color: var(--lgl-p7);
}
.lgl-toc__link.is-active .lgl-toc__n { color: var(--lgl-p7); }

/* En pantallas angostas el índice colapsa en un desplegable nativo. */
.lgl-toc__mobile {
    background: var(--lgl-card);
    border: 1px solid var(--lgl-line);
    border-radius: var(--lgl-radius-md);
    box-shadow: var(--lgl-shadow-sm);
    overflow: hidden;
}
.lgl-toc__summary {
    display: flex; align-items: center; gap: 10px;
    padding: 14px 16px;
    min-height: 48px;
    font-size: var(--lgl-fs-sm); font-weight: 600; color: var(--lgl-ink);
    cursor: pointer;
    list-style: none;
}
.lgl-toc__summary::-webkit-details-marker { display: none; }
.lgl-toc__summary svg { width: 17px; height: 17px; color: var(--lgl-p7); flex: none; }
.lgl-toc__summary .lgl-toc__chev { margin-left: auto; transition: transform 200ms ease; }
.lgl-toc__mobile[open] .lgl-toc__chev { transform: rotate(180deg); }
.lgl-toc__mobile .lgl-toc__list { padding: 0 10px 12px; }
@media (min-width: 1080px) {
    .lgl-toc__mobile { border: 0; box-shadow: none; background: none; overflow: visible; }
    .lgl-toc__summary { display: none; }
    .lgl-toc__mobile .lgl-toc__list { padding: 0; }
}

/* ─── Hoja de lectura ──────────────────────────────────────────────────── */
.lgl-sheet {
    min-width: 0;
    background: var(--lgl-card);
    border: 1px solid var(--lgl-line);
    border-radius: var(--lgl-radius);
    box-shadow: var(--lgl-shadow-lg);
    padding: clamp(24px, 4.5vw, 52px);
}
.lgl-doc { color: var(--lgl-ink-2); max-width: var(--lgl-readw); }
.lgl-doc a { text-decoration: underline; font-weight: 600; }

/* Portada del documento. */
.lgl-doc__head {
    padding-bottom: 26px;
    border-bottom: 2px solid rgba(var(--lgl-p-rgb), .18);
    margin-bottom: 8px;
}
.lgl-eyebrow {
    display: inline-flex; align-items: center; gap: 8px;
    font-size: .72rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase;
    color: var(--lgl-p7);
    background: var(--lgl-p05);
    border: 1px solid rgba(var(--lgl-p-rgb), .22);
    padding: 6px 12px; border-radius: 999px;
}
.lgl-eyebrow svg { width: 14px; height: 14px; }
.lgl-title {
    font-family: var(--lgl-display); font-optical-sizing: auto;
    font-weight: 600;
    font-size: var(--lgl-fs-h1);
    line-height: 1.1; letter-spacing: -.015em;
    color: var(--lgl-ink);
    margin-top: 16px;
    text-wrap: balance;
    overflow-wrap: anywhere;
}

/* Metadatos del documento. */
.lgl-meta {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(148px, 1fr));
    gap: 10px;
    margin-top: 22px;
}
.lgl-meta__item {
    display: flex; flex-direction: column; gap: 3px;
    padding: 10px 14px;
    background: var(--lgl-bg);
    border: 1px solid var(--lgl-line);
    border-radius: var(--lgl-radius-md);
    min-width: 0;
}
.lgl-meta dt {
    font-size: .66rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
    color: var(--lgl-muted);
}
.lgl-meta dd { font-size: .95rem; font-weight: 600; color: var(--lgl-ink); }
.lgl-meta__item--key { background: var(--lgl-p05); border-color: rgba(var(--lgl-p-rgb), .22); }
.lgl-meta__item--key dd { color: var(--lgl-p7); }

/* Acciones del documento (imprimir / guardar). */
.lgl-doc__actions {
    display: flex; flex-wrap: wrap; gap: 10px;
    margin-top: 20px;
}

/* Entradilla. Alineada a la izquierda a propósito: el texto justificado con
   guionado producía ríos y espaciado irregular en columna estrecha. */
.lgl-lead {
    font-size: var(--lgl-fs-lead); line-height: 1.7;
    color: var(--lgl-ink-2);
    margin-top: 26px;
}

/* ─── Cláusulas ────────────────────────────────────────────────────────── */
.lgl-sec { margin-top: 34px; scroll-margin-top: 96px; }
.lgl-sec__head {
    display: flex; align-items: baseline; gap: 13px;
    margin-bottom: 12px;
}
.lgl-sec__n {
    flex: none;
    width: 28px; height: 28px; border-radius: 9px;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: .82rem; font-weight: 700; line-height: 1;
    font-variant-numeric: tabular-nums;
    color: var(--lgl-p7);
    background: var(--lgl-p05);
    border: 1px solid rgba(var(--lgl-p-rgb), .22);
    transform: translateY(3px);
}
.lgl-sec h2 {
    font-family: var(--lgl-display); font-optical-sizing: auto;
    font-weight: 600; font-size: var(--lgl-fs-h3); letter-spacing: -.01em;
    line-height: 1.3;
    color: var(--lgl-ink);
    min-width: 0;
}
/* Ancla por cláusula: aparece al pasar o al enfocar; siempre alcanzable por teclado. */
.lgl-anchor {
    flex: none;
    margin-left: auto;
    /* Caja de 44px: en móvil el ancla está siempre visible y es un tap target
       real, aunque el glifo "#" ocupe mucho menos (WCAG 2.5.5). */
    min-width: 44px; min-height: 44px;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: .95rem; font-weight: 700;
    color: var(--lgl-faint);
    opacity: 0;
    border-radius: 8px;
    transition: opacity 150ms ease, color 150ms ease;
}
.lgl-sec:hover .lgl-anchor,
.lgl-anchor:focus-visible { opacity: 1; }
.lgl-anchor:hover { color: var(--lgl-p7); text-decoration: none; }

/* Glosa en lenguaje llano. NO vinculante: el rótulo lo dice, y el estilo la
   separa visualmente del texto de la cláusula. */
/* No es una tarjeta con barra de color: es una ANOTACIÓN sobre el documento.
   Se distingue por voz (teal oscuro, peso medio) y por una regla de cierre, no
   por un recuadro — así entra en el flujo de lectura en vez de interrumpirlo,
   y se imprime igual de bien. */
.lgl-gloss {
    margin-bottom: 15px;
    padding-bottom: 14px;
    border-bottom: 1px solid rgba(var(--lgl-p-rgb), .22);
}
.lgl-gloss__label {
    display: inline-flex; align-items: center; gap: 8px;
    font-size: .66rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
    color: var(--lgl-p7);
    margin-bottom: 6px;
}
.lgl-gloss__label::before {
    content: "";
    width: 15px; height: 2px; flex: none;
    background: var(--lgl-p7); border-radius: 2px;
}
.lgl-gloss p {
    font-size: var(--lgl-fs-read);
    color: var(--lgl-p8);            /* #0c5344 sobre blanco → 7.6:1 */
    font-weight: 500;
    line-height: 1.62;
}

.lgl-sec__body p {
    color: var(--lgl-ink-2);
    font-size: var(--lgl-fs-read);
    line-height: 1.75;
}
.lgl-sec__body p + p { margin-top: 12px; }

/* Cierre del documento. */
.lgl-doc__end {
    margin-top: 40px;
    padding-top: 26px;
    border-top: 1px solid var(--lgl-line);
    display: grid;
    gap: 14px;
}
.lgl-doc__end p { font-size: var(--lgl-fs-sm); color: var(--lgl-muted); }
.lgl-doc__end strong { color: var(--lgl-ink-2); font-weight: 700; }

/* Enlace al documento hermano. */
.lgl-sibling {
    display: flex; align-items: center; gap: 14px;
    padding: 16px 18px;
    background: var(--lgl-bg);
    border: 1px solid var(--lgl-line);
    border-radius: var(--lgl-radius-md);
    transition: border-color 160ms ease, transform 160ms ease;
}
.lgl-sibling:hover { border-color: rgba(var(--lgl-p-rgb), .4); transform: translateY(-1px); text-decoration: none; }
.lgl-sibling__ic {
    width: 38px; height: 38px; flex: none;
    border-radius: 11px;
    display: flex; align-items: center; justify-content: center;
    background: var(--lgl-p05); color: var(--lgl-p7);
    border: 1px solid rgba(var(--lgl-p-rgb), .2);
}
.lgl-sibling__ic svg { width: 19px; height: 19px; }
.lgl-sibling__t { min-width: 0; }
.lgl-sibling__t b { display: block; color: var(--lgl-ink); font-size: var(--lgl-fs-sm); }
.lgl-sibling__t span { display: block; color: var(--lgl-muted); font-size: var(--lgl-fs-xs); }
.lgl-sibling__go { margin-left: auto; flex: none; color: var(--lgl-p7); }
.lgl-sibling__go svg { width: 18px; height: 18px; }

/* ════════════════════════════════════════════════════════════════════════
   3 · GATE DE ACEPTACIÓN  (.lgl-page--gate)
   Caja acotada con scroll interno. Lógica intacta: scroll-to-unlock.
   ════════════════════════════════════════════════════════════════════════ */
.lgl-page--gate {
    display: flex; align-items: center; justify-content: center;
    padding: clamp(12px, 3vw, 32px);
    background:
        radial-gradient(900px 480px at 50% -10%, rgba(var(--lgl-p-rgb), .16), transparent 62%),
        var(--lgl-bg);
}
.lgl-gate {
    width: 100%; max-width: 860px;
    max-height: calc(100dvh - clamp(24px, 6vw, 64px));
    display: flex; flex-direction: column;
    background: var(--lgl-card);
    border: 1px solid var(--lgl-line);
    border-radius: var(--lgl-radius);
    box-shadow: var(--lgl-shadow-lg);
    overflow: hidden;
}
.lgl-gate__head {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 16px clamp(18px, 3vw, 28px);
    border-bottom: 1px solid var(--lgl-line);
    flex: none;
}
.lgl-gate__tag {
    font-size: var(--lgl-fs-xs); font-weight: 700;
    color: var(--lgl-p7); background: var(--lgl-p05);
    border: 1px solid rgba(var(--lgl-p-rgb), .22);
    padding: 5px 11px; border-radius: 999px; white-space: nowrap;
}
.lgl-gate__scroll {
    flex: 1 1 auto;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    padding: clamp(20px, 3.5vw, 34px);
}
.lgl-gate__scroll:focus-visible { outline: 3px solid rgba(var(--lgl-p-rgb), .35); outline-offset: -3px; }
.lgl-gate__scroll .lgl-doc { max-width: none; }
/* Dentro del gate el índice sobra: el scroll-to-unlock exige recorrerlo entero. */
.lgl-gate__scroll .lgl-doc__actions { display: none; }

.lgl-gate__actions {
    flex: none;
    padding: clamp(16px, 3vw, 24px);
    border-top: 1px solid var(--lgl-line);
    background: var(--lgl-bg);
    display: grid; gap: 12px;
}
.lgl-alert {
    padding: 11px 14px; border-radius: var(--lgl-radius-sm);
    font-size: var(--lgl-fs-sm);
    background: var(--lgl-deny-bg); color: var(--lgl-deny);
    border: 1px solid #fecdd3;
}
.lgl-alert--info { background: var(--lgl-p05); color: var(--lgl-p7); border-color: rgba(var(--lgl-p-rgb), .25); }
.lgl-hint {
    font-size: var(--lgl-fs-sm); color: var(--lgl-muted); text-align: center;
    transition: opacity 200ms ease;
}
.lgl-hint.is-hidden { opacity: 0; height: 0; overflow: hidden; }
.lgl-check {
    display: flex; align-items: flex-start; gap: 11px;
    padding: 13px 15px;
    background: var(--lgl-card);
    border: 1px solid var(--lgl-line);
    border-radius: var(--lgl-radius-md);
    transition: border-color 160ms ease, opacity 160ms ease;
}
.lgl-check.is-locked { opacity: .55; }
.lgl-check input {
    width: 20px; height: 20px; flex: none; margin-top: 2px;
    accent-color: var(--lgl-p7); cursor: pointer;
}
.lgl-check label { font-size: var(--lgl-fs-sm); color: var(--lgl-ink-2); cursor: pointer; line-height: 1.55; }
.lgl-check label strong { color: var(--lgl-ink); }
.lgl-gate__actions .lgl-btn--primary { width: 100%; }
.lgl-logout {
    background: none; border: 0; cursor: pointer;
    font-family: inherit; font-size: var(--lgl-fs-sm);
    color: var(--lgl-muted); text-decoration: underline;
    padding: 8px; min-height: 44px; width: 100%;
}
.lgl-logout:hover { color: var(--lgl-ink); }

/* ════════════════════════════════════════════════════════════════════════
   4 · CENTRO DE CONFIANZA  (.lgl-page--trust)
   ════════════════════════════════════════════════════════════════════════ */
.lgl-page--trust { background: var(--lgl-bg); }
.lgl-page--trust main { flex: 1 0 auto; }

/* ─── Portada ──────────────────────────────────────────────────────────── */
.lgl-hero {
    position: relative; overflow: hidden;
    background:
        radial-gradient(1200px 520px at 50% -8%, rgba(var(--lgl-p-rgb), .15), transparent 62%),
        linear-gradient(180deg, #ffffff 0%, var(--lgl-bg) 100%);
    border-bottom: 1px solid var(--lgl-line);
}
.lgl-hero__inner {
    padding-block: clamp(40px, 7vw, 82px);
    max-width: 760px;
}
.lgl-hero__title {
    font-family: var(--lgl-display); font-optical-sizing: auto;
    font-weight: 600; font-size: var(--lgl-fs-h1);
    line-height: 1.08; letter-spacing: -.015em;
    color: var(--lgl-ink);
    margin-top: 18px;
    text-wrap: balance;
    overflow-wrap: anywhere;
}
.lgl-hero__title span { color: var(--lgl-p7); }
.lgl-hero__sub {
    font-size: var(--lgl-fs-lead);
    color: var(--lgl-ink-2);
    margin-top: 16px;
    max-width: 62ch;
}
/* Señales verificables, no adornos: cada una responde a una pregunta concreta. */
.lgl-signals {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 10px;
    margin-top: 30px;
}
.lgl-signal {
    display: flex; align-items: flex-start; gap: 11px;
    padding: 14px 16px;
    background: var(--lgl-card);
    border: 1px solid var(--lgl-line);
    border-radius: var(--lgl-radius-md);
    box-shadow: var(--lgl-shadow-sm);
}
.lgl-signal svg { width: 19px; height: 19px; flex: none; color: var(--lgl-p7); margin-top: 2px; }
.lgl-signal b { display: block; font-size: var(--lgl-fs-sm); color: var(--lgl-ink); line-height: 1.35; }
.lgl-signal span { display: block; font-size: var(--lgl-fs-xs); color: var(--lgl-muted); margin-top: 2px; }

/* Fecha de revisión: el dato que separa una página viva de una abandonada. */
.lgl-reviewed {
    display: inline-flex; align-items: center; gap: 9px;
    margin-top: 24px;
    font-size: var(--lgl-fs-sm); color: var(--lgl-muted);
}
.lgl-reviewed svg { width: 16px; height: 16px; flex: none; color: var(--lgl-p7); }
.lgl-reviewed b { color: var(--lgl-ink-2); font-weight: 600; }

/* ─── Secciones del centro de confianza ────────────────────────────────── */
.lgl-band { padding-block: clamp(42px, 6.5vw, 80px); }
.lgl-band--tint { background: linear-gradient(180deg, #ffffff, #f2f8f6); border-block: 1px solid var(--lgl-line); }
.lgl-band__head { max-width: 720px; margin-bottom: clamp(26px, 4vw, 44px); }
.lgl-band__head .lgl-eyebrow { margin-bottom: 15px; }
.lgl-h2 {
    font-family: var(--lgl-display); font-optical-sizing: auto;
    font-weight: 600; font-size: var(--lgl-fs-h2);
    line-height: 1.15; letter-spacing: -.01em;
    color: var(--lgl-ink);
    text-wrap: balance;
}
.lgl-band__intro { margin-top: 13px; font-size: var(--lgl-fs-lead); color: var(--lgl-ink-2); }

/* ─── Preguntas ────────────────────────────────────────────────────────── */
.lgl-qa { display: grid; gap: 12px; }
.lgl-q {
    background: var(--lgl-card);
    border: 1px solid var(--lgl-line);
    border-radius: var(--lgl-radius-md);
    box-shadow: var(--lgl-shadow-sm);
    padding: clamp(18px, 2.6vw, 26px);
    scroll-margin-top: 96px;
}
.lgl-q__ask {
    font-family: var(--lgl-display); font-optical-sizing: auto;
    font-weight: 600; font-size: var(--lgl-fs-h3);
    line-height: 1.3; letter-spacing: -.01em;
    color: var(--lgl-ink);
    margin-bottom: 12px;
    text-wrap: balance;
}
.lgl-q__verdict {
    display: inline-flex; align-items: center; gap: 9px;
    font-size: var(--lgl-fs-base); font-weight: 700;
    color: var(--lgl-p7);
    background: var(--lgl-p05);
    border: 1px solid rgba(var(--lgl-p-rgb), .22);
    border-radius: 999px;
    padding: 7px 15px 7px 12px;
    margin-bottom: 12px;
}
.lgl-q__verdict svg { width: 17px; height: 17px; flex: none; }
.lgl-q__detail p { font-size: var(--lgl-fs-read); color: var(--lgl-ink-2); line-height: 1.7; }
.lgl-q__detail p + p { margin-top: 11px; }
.lgl-q__detail strong { color: var(--lgl-ink); }

/* ─── Pilares de control ───────────────────────────────────────────────── */
.lgl-pillars {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: clamp(14px, 2.2vw, 22px);
}
.lgl-pillar {
    background: var(--lgl-card);
    border: 1px solid var(--lgl-line);
    border-radius: var(--lgl-radius-md);
    box-shadow: var(--lgl-shadow-sm);
    padding: clamp(18px, 2.4vw, 24px);
    display: flex; flex-direction: column; gap: 14px;
    transition: box-shadow 180ms ease, transform 180ms ease;
}
.lgl-pillar:hover { box-shadow: var(--lgl-shadow-md); transform: translateY(-2px); }
.lgl-pillar__head { display: flex; align-items: center; gap: 12px; }
.lgl-pillar__ic {
    width: 40px; height: 40px; flex: none;
    border-radius: 12px;
    display: flex; align-items: center; justify-content: center;
    background: var(--lgl-p05); color: var(--lgl-p7);
    border: 1px solid rgba(var(--lgl-p-rgb), .2);
}
.lgl-pillar__ic svg { width: 21px; height: 21px; }
.lgl-pillar__head h3 {
    font-size: var(--lgl-fs-h3); font-weight: 700; color: var(--lgl-ink);
    line-height: 1.25; letter-spacing: -.01em; min-width: 0;
}
.lgl-controls { display: grid; gap: 13px; }
.lgl-control { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 11px; }
.lgl-control svg { width: 18px; height: 18px; color: var(--lgl-p7); margin-top: 3px; }
.lgl-control b { display: block; font-size: var(--lgl-fs-sm); color: var(--lgl-ink); line-height: 1.4; }
.lgl-control span { display: block; font-size: var(--lgl-fs-sm); color: var(--lgl-muted); line-height: 1.6; margin-top: 3px; }

/* ─── Compromisos: lo que sí / lo que nunca ────────────────────────────── */
.lgl-vows {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
    gap: clamp(14px, 2.2vw, 22px);
}
.lgl-vow {
    background: var(--lgl-card);
    border: 1px solid var(--lgl-line);
    border-radius: var(--lgl-radius-md);
    box-shadow: var(--lgl-shadow-sm);
    padding: clamp(18px, 2.4vw, 24px);
    display: flex; flex-direction: column; gap: 14px;
}
.lgl-vow--do   { border-top: 3px solid var(--lgl-p7); }
.lgl-vow--dont { border-top: 3px solid var(--lgl-deny); }
.lgl-vow__head { display: flex; align-items: center; gap: 10px; }
.lgl-vow__head h3 { font-size: var(--lgl-fs-h3); font-weight: 700; color: var(--lgl-ink); letter-spacing: -.01em; }
.lgl-vow__head svg { width: 20px; height: 20px; flex: none; }
.lgl-vow--do   .lgl-vow__head svg { color: var(--lgl-p7); }
.lgl-vow--dont .lgl-vow__head svg { color: var(--lgl-deny); }
.lgl-vow ul { display: grid; gap: 11px; }
.lgl-vow li {
    display: grid; grid-template-columns: 16px minmax(0, 1fr); gap: 11px;
    font-size: var(--lgl-fs-sm); color: var(--lgl-ink-2); line-height: 1.6;
}
.lgl-vow li svg { width: 16px; height: 16px; margin-top: 4px; }
.lgl-vow--do   li svg { color: var(--lgl-p7); }
.lgl-vow--dont li svg { color: var(--lgl-deny); }
.lgl-vow li b { color: var(--lgl-ink); }

/* ─── El recorrido de una nota ─────────────────────────────────────────── */
.lgl-journey {
    display: grid; gap: 0;
    background: var(--lgl-card);
    border: 1px solid var(--lgl-line);
    border-radius: var(--lgl-radius-md);
    box-shadow: var(--lgl-shadow-sm);
    padding: clamp(18px, 3vw, 30px);
}
.lgl-step {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr);
    gap: 16px;
    padding-bottom: 22px;
    position: relative;
}
.lgl-step:last-child { padding-bottom: 0; }
/* Guía vertical que une los pasos. Es decorativa. */
.lgl-step:not(:last-child)::before {
    content: "";
    position: absolute;
    left: 16px; top: 36px; bottom: 6px;
    width: 2px;
    background: linear-gradient(180deg, rgba(var(--lgl-p-rgb), .3), rgba(var(--lgl-p-rgb), .08));
    border-radius: 2px;
}
.lgl-step__n {
    width: 34px; height: 34px; flex: none;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: .84rem; font-weight: 700; font-variant-numeric: tabular-nums;
    color: var(--lgl-p7);
    background: var(--lgl-p05);
    border: 1px solid rgba(var(--lgl-p-rgb), .28);
    position: relative; z-index: 1;
}
.lgl-step__b { min-width: 0; padding-top: 4px; }
.lgl-step__b b { display: block; font-size: var(--lgl-fs-base); color: var(--lgl-ink); line-height: 1.4; }
.lgl-step__b p { font-size: var(--lgl-fs-sm); color: var(--lgl-muted); line-height: 1.65; margin-top: 4px; }
.lgl-step__b code {
    font-size: .82em;
    background: var(--lgl-bg); border: 1px solid var(--lgl-line);
    padding: 1px 6px; border-radius: 5px; color: var(--lgl-ink-2);
    overflow-wrap: anywhere;
}

/* ─── Bloque legal / cumplimiento ──────────────────────────────────────── */
.lgl-legal {
    background: var(--lgl-card);
    border: 1px solid var(--lgl-line);
    border-radius: var(--lgl-radius);
    box-shadow: var(--lgl-shadow-md);
    padding: clamp(22px, 3.4vw, 38px);
    max-width: 880px;
}
.lgl-legal__head { display: flex; align-items: center; gap: 13px; margin-bottom: 16px; }
.lgl-legal__head svg { width: 26px; height: 26px; flex: none; color: var(--lgl-p7); }
.lgl-legal__head h3 { font-size: var(--lgl-fs-h3); font-weight: 700; color: var(--lgl-ink); letter-spacing: -.01em; }
.lgl-legal p { font-size: var(--lgl-fs-read); color: var(--lgl-ink-2); line-height: 1.72; }
.lgl-legal p + p { margin-top: 13px; }
.lgl-legal strong { color: var(--lgl-ink); }
.lgl-note {
    display: flex; gap: 13px; align-items: flex-start;
    margin-top: 22px; padding: 15px 17px;
    background: var(--lgl-warn-bg);
    border: 1px solid var(--lgl-warn-line);
    border-radius: var(--lgl-radius-md);
}
.lgl-note svg { width: 19px; height: 19px; flex: none; color: var(--lgl-warn); margin-top: 2px; }
.lgl-note span { font-size: var(--lgl-fs-sm); color: #78350f; line-height: 1.65; }
.lgl-note strong { color: #78350f; }

/* ─── Derechos ─────────────────────────────────────────────────────────── */
.lgl-rights {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 12px;
}
.lgl-right {
    display: flex; align-items: flex-start; gap: 12px;
    background: var(--lgl-card);
    border: 1px solid var(--lgl-line);
    border-radius: var(--lgl-radius-md);
    box-shadow: var(--lgl-shadow-sm);
    padding: 16px 18px;
}
.lgl-right__ic {
    width: 34px; height: 34px; flex: none;
    border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    background: var(--lgl-p05); color: var(--lgl-p7);
    border: 1px solid rgba(var(--lgl-p-rgb), .2);
}
.lgl-right__ic svg { width: 17px; height: 17px; }
.lgl-right b { display: block; font-size: var(--lgl-fs-sm); color: var(--lgl-ink); }
.lgl-right span { display: block; font-size: var(--lgl-fs-xs); color: var(--lgl-muted); margin-top: 2px; line-height: 1.55; }

/* ─── Contacto ─────────────────────────────────────────────────────────── */
.lgl-contacts {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: clamp(14px, 2.2vw, 22px);
}
.lgl-contact {
    background: var(--lgl-card);
    border: 1px solid var(--lgl-line);
    border-radius: var(--lgl-radius-md);
    box-shadow: var(--lgl-shadow-sm);
    padding: clamp(20px, 2.8vw, 28px);
    display: flex; flex-direction: column; gap: 13px; align-items: flex-start;
}
.lgl-contact__ic {
    width: 40px; height: 40px; flex: none;
    border-radius: 12px;
    display: flex; align-items: center; justify-content: center;
    background: var(--lgl-p05); color: var(--lgl-p7);
    border: 1px solid rgba(var(--lgl-p-rgb), .2);
}
.lgl-contact__ic svg { width: 20px; height: 20px; }
.lgl-contact h3 { font-size: var(--lgl-fs-h3); font-weight: 700; color: var(--lgl-ink); letter-spacing: -.01em; }
.lgl-contact p { font-size: var(--lgl-fs-sm); color: var(--lgl-ink-2); line-height: 1.65; }
.lgl-contact .lgl-btn { margin-top: auto; }

/* ════════════════════════════════════════════════════════════════════════
   5 · RESPONSIVE
   ════════════════════════════════════════════════════════════════════════ */
@media (max-width: 900px) {
    .lgl-nav__inner { min-height: 60px; }
    .lgl-brand__logo { width: 36px; height: 36px; border-radius: 11px; }
    .lgl-brand__logo svg { width: 19px; height: 19px; }
    .lgl-brand__name { font-size: .98rem; }
}
@media (max-width: 560px) {
    /* La barra pasa a dos filas antes que recortar el botón (CLAUDE.md R14). */
    .lgl-nav__inner { flex-wrap: wrap; justify-content: center; }
    .lgl-nav__inner .lgl-btn { width: 100%; }
    .lgl-anchor { opacity: 1; }        /* sin hover en táctil: siempre visible */
    .lgl-foot__top { justify-content: flex-start; }
    .lgl-journey { padding-inline: 16px; }
    .lgl-step { grid-template-columns: 30px minmax(0, 1fr); gap: 13px; }
    .lgl-step__n { width: 30px; height: 30px; font-size: .78rem; }
    .lgl-step:not(:last-child)::before { left: 14px; top: 32px; }
}
@media (max-width: 400px) {
    .lgl-meta { grid-template-columns: 1fr; }
    .lgl-doc__actions .lgl-btn { width: 100%; }
}

/* Movimiento reducido: se apaga todo lo no esencial. */
@media (prefers-reduced-motion: reduce) {
    .lgl-page *,
    .lgl-page *::before,
    .lgl-page *::after {
        animation-duration: .001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .001ms !important;
        scroll-behavior: auto !important;
    }
    .lgl-btn:hover, .lgl-pillar:hover, .lgl-sibling:hover { transform: none; }
}

/* ════════════════════════════════════════════════════════════════════════
   6 · IMPRESIÓN — el contrato tiene que poder archivarse
   ════════════════════════════════════════════════════════════════════════ */
@media print {
    .lgl-page {
        background: #fff !important;
        color: #000;
        font-size: 11pt;
        min-height: 0;
    }
    .lgl-nav,
    .lgl-tabs,
    .lgl-toc,
    .lgl-foot,
    .lgl-skip,
    .lgl-doc__actions,
    .lgl-sibling,
    .lgl-anchor { display: none !important; }

    .lgl-work { display: block; padding: 0; max-width: none; }
    .lgl-sheet {
        border: 0; box-shadow: none; padding: 0;
        border-radius: 0; background: #fff;
    }
    .lgl-doc { max-width: none; color: #000; }
    .lgl-title { font-size: 20pt; color: #000; }
    .lgl-eyebrow { border-color: #999; color: #000; background: none; }

    .lgl-meta { display: flex; flex-wrap: wrap; gap: 6pt 16pt; }
    .lgl-meta__item { border: 0; background: none; padding: 0; }
    .lgl-meta__item--key dd { color: #000; }

    /* Ninguna cláusula se parte entre páginas si puede evitarse. */
    .lgl-sec { break-inside: avoid; page-break-inside: avoid; margin-top: 16pt; }
    .lgl-sec h2 { color: #000; font-size: 13pt; }
    .lgl-sec__n { border: 1px solid #666; background: none; color: #000; }
    .lgl-sec__body p { color: #000; font-size: 11pt; line-height: 1.5; }

    /* La glosa se imprime, marcada como lo que es. */
    .lgl-gloss { border-bottom: 1px solid #bbb; }
    .lgl-gloss__label { color: #333; }
    .lgl-gloss__label::before { background: #666; }
    .lgl-gloss p { color: #333; font-size: 10.5pt; }

    /* Las URL de los enlaces salen en el papel. */
    .lgl-doc a[href^="mailto:"]::after { content: " (" attr(href) ")"; font-size: 9pt; color: #444; }

    .lgl-doc__end { border-top: 1px solid #bbb; }
}
