/* ============================================================
   GUÍA FONDOS INDEXADOS · base.css
   Tokens, tipografía, navegación y pie. Común a todas las páginas.
   Las clases usan prefijos (gf-) para no colisionar con el CSS
   interno de las calculadoras.
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@500;600;700;800&family=Inter:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap');

:root{
  /* ── color: la paleta de la cubierta, con disciplina ── */
  --marino:#0B2245;
  --marino-osc:#041C37;
  --marino-claro:#1B3A63;
  --tinta:#141E2E;
  --papel:#F7F0E5;
  --papel-alt:#FDFAF4;
  --blanco:#FFFFFF;
  --linea:#E3D6C2;
  --linea-suave:#EFE7D9;
  --gris:#6A6355;          /* 5.26:1 sobre papel · AA */
  --gris-claro:#6F675A;    /* era #8E8677 (3.18:1, fallaba AA en texto pequeño) */
  --oro:#B8862F;           /* decorativo: reglas, bordes, fondos */
  --oro-texto:#96630D;     /* texto pequeño: 4.54:1 sobre papel · AA */
  --oro-claro:#D9A854;
  --oro-pastel:#F6EBD3;
  --verde:#0E7A5F;

  /* ── tipografía: tres roles ── */
  --f-display:'Manrope',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif; /* titulares */
  --f-texto:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif; /* cuerpo e interfaz */
  --f-cifra:'IBM Plex Mono',ui-monospace,'SFMono-Regular',Menlo,monospace; /* cifras, capítulos, ISBN */

  /* ── escala de espacio ── */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px;
  --s6:32px; --s7:48px; --s8:64px; --s9:88px; --s10:120px;

  --r-sm:8px; --r-md:14px; --r-lg:20px; --r-xl:28px;

  --sombra-1:0 1px 2px rgba(20,30,46,.05), 0 2px 8px rgba(20,30,46,.04);
  --sombra-2:0 2px 4px rgba(20,30,46,.05), 0 14px 30px rgba(20,30,46,.08);
  --sombra-3:0 6px 14px rgba(20,30,46,.08), 0 28px 56px rgba(20,30,46,.14);
  --sombra-marino:0 20px 50px rgba(4,28,55,.28);

  --ancho:1120px;
  --ancho-texto:660px;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--papel);color:var(--tinta);
  font-family:var(--f-texto);font-size:16px;line-height:1.65;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  font-variant-numeric:tabular-nums;
}
img{max-width:100%;height:auto;display:block}
::selection{background:rgba(11,34,69,.15)}

/* cifras siempre en la face monoespaciada */
.gf-num,.gf-chap{font-family:var(--f-cifra);font-variant-numeric:tabular-nums;letter-spacing:-.02em}

/* foco accesible */
a:focus-visible,button:focus-visible,summary:focus-visible,
input:focus-visible,select:focus-visible,textarea:focus-visible{
  outline:2px solid var(--marino);outline-offset:3px;border-radius:4px
}

.gf-wrap{max-width:var(--ancho);margin:0 auto;padding:0 var(--s5)}
@media(max-width:640px){.gf-wrap{padding:0 var(--s4)}}

/* ══════════════════════════════════════════
   NAVEGACIÓN
   ══════════════════════════════════════════ */
.gf-nav{
  position:sticky;top:0;z-index:300;
  background:rgba(253,250,244,.82);
  backdrop-filter:blur(16px) saturate(1.6);-webkit-backdrop-filter:blur(16px) saturate(1.6);
  border-bottom:1px solid var(--linea-suave);
}
.gf-nav-in{max-width:var(--ancho);margin:0 auto;padding:0 var(--s5);height:62px;display:flex;align-items:center;gap:var(--s5)}
@media(max-width:640px){.gf-nav-in{padding:0 var(--s4);height:58px}}

.gf-brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--tinta);white-space:nowrap}
/* área táctil mínima 44×44 en móvil, sin agrandar la marca visualmente:
   el enlace crece con padding transparente alrededor del icono de 26px */
@media(max-width:520px){
  .gf-brand{margin:-9px 0 -9px -9px;padding:9px}
}
.gf-brand-mark{width:26px;height:26px;border-radius:7px;background:var(--marino-osc);
  display:flex;align-items:center;justify-content:center;flex:none}
.gf-brand-mark span{font-family:var(--f-display);font-size:14px;font-weight:600;color:var(--oro-claro);line-height:1}
.gf-brand-txt{font-family:var(--f-display);font-weight:600;font-size:.96rem;letter-spacing:-.01em}
@media(max-width:520px){.gf-brand-txt{display:none}}

.gf-nav-toggle{display:none}
.gf-nav-burger{display:none;margin-left:auto;width:40px;height:34px;border:1px solid var(--linea);
  border-radius:var(--r-sm);background:var(--blanco);cursor:pointer;
  flex-direction:column;justify-content:center;align-items:center;gap:4px}
.gf-nav-burger i{display:block;width:17px;height:1.8px;background:var(--tinta);border-radius:2px}

.gf-nav-links{margin-left:auto;display:flex;align-items:center;gap:2px}
.gf-nav-links>a,.gf-drop>summary{
  display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:#3E4A5A;
  font-size:.875rem;font-weight:500;padding:8px 12px;border-radius:var(--r-sm);
  cursor:pointer;list-style:none;white-space:nowrap;transition:background .15s,color .15s
}
.gf-drop>summary::-webkit-details-marker{display:none}
.gf-drop>summary::after{content:"";width:5px;height:5px;border-right:1.5px solid var(--gris-claro);
  border-bottom:1.5px solid var(--gris-claro);transform:rotate(45deg) translateY(-2px);transition:transform .18s}
.gf-drop[open]>summary::after{transform:rotate(225deg) translateY(1px)}
.gf-nav-links>a:hover,.gf-drop>summary:hover{background:var(--oro-pastel);color:var(--marino-osc)}
.gf-nav-links>a[aria-current="page"]{color:var(--marino-osc);background:#E9EFF7;font-weight:600}

.gf-nav-cta{
  margin-left:var(--s3);background:var(--marino-osc);color:#fff!important;
  font-weight:600!important;padding:9px 18px!important;border-radius:100px!important;
  box-shadow:0 4px 12px rgba(4,28,55,.22);transition:transform .15s,box-shadow .15s
}
.gf-nav-cta:hover{background:var(--marino)!important;transform:translateY(-1px);box-shadow:0 8px 18px rgba(4,28,55,.3)}

.gf-drop{position:relative}
.gf-pop{
  position:absolute;left:0;top:calc(100% + 6px);background:var(--blanco);
  border:1px solid var(--linea-suave);border-radius:var(--r-md);
  box-shadow:var(--sombra-3);padding:6px;min-width:300px;z-index:600
}
.gf-pop a{display:flex;align-items:flex-start;gap:10px;padding:9px 11px;border-radius:var(--r-sm);
  text-decoration:none;color:var(--tinta);font-size:.87rem;font-weight:500;line-height:1.3}
.gf-pop a:hover{background:var(--papel)}
.gf-pop a[aria-current="page"]{background:var(--oro-pastel);box-shadow:inset 2px 0 0 var(--oro)}
.gf-pop .gf-dot{width:9px;height:9px;border-radius:2px;flex:none;margin-top:5px}
.gf-pop small{display:block;color:var(--gris-claro);font-size:.73rem;font-weight:400;
  font-family:var(--f-cifra);letter-spacing:-.01em}

@media(max-width:900px){
  /* ─────────────────────────────────────────────────────────────────
     MOBILE NAV: Logo + Herramientas + Consulta + CTA pequeño
     Hamburguesa solo aparece en pantallas muy estrechas (≤ 360px)
     ───────────────────────────────────────────────────────────────── */
  .gf-nav-in{height:54px;gap:0;padding:0 10px 0 12px}

  /* mostrar todos los elementos en la barra */
  .gf-nav-links{
    margin-left:auto;display:flex;align-items:center;
    flex-direction:row;flex-wrap:nowrap;gap:0;
    /* resetear estados de la hamburguesa */
    position:static;top:auto;left:auto;right:auto;
    background:transparent;border:none;padding:0;
    box-shadow:none;max-height:none;overflow:visible;
    transform:none;opacity:1;visibility:visible;transition:none
  }

  /* "El libro" se oculta: el logo ya enlaza */
  .gf-nav-links>a:first-child{display:none}

  /* hamburguesa ocultada en móvil estándar */
  .gf-nav-burger{display:none}

  /* triggers en la barra: tamaño táctil correcto */
  .gf-drop-trigger{
    padding:8px 9px;font-size:.8rem;white-space:nowrap;
    display:inline-flex;align-items:center;gap:4px
  }

  /* CTA: botón compacto */
  .gf-nav-cta{
    margin-left:6px;padding:7px 13px!important;
    font-size:.77rem!important;white-space:nowrap
  }

  /* ── Mega: bottom sheet desde abajo ── */
  /* position:static para que fixed funcione correctamente */
  .gf-drop--mega{position:static;transform:none}
  .gf-pop--mega{
    position:fixed!important;left:0!important;right:0!important;
    bottom:0!important;top:auto!important;
    border-radius:22px 22px 0 0!important;
    padding:22px 18px env(safe-area-inset-bottom,20px)!important;
    box-shadow:0 -16px 48px rgba(4,28,55,.32)!important;
    max-height:85vh!important;overflow-y:auto!important;
    grid-template-columns:1fr 1fr!important;
    z-index:500!important
  }
  .gf-drop--mega.is-open>.gf-pop--mega{display:grid!important}
  .gf-mega-cab{grid-column:1/-1;border-bottom:1px solid var(--linea-suave);
    padding-bottom:14px;margin-bottom:12px}
  .gf-mega-col{padding:6px 0}
  .gf-mega-h{font-size:.64rem;margin-top:12px}
  .gf-mega-col:first-child .gf-mega-h{margin-top:0}
  .gf-mega-todo{
    grid-column:1/-1;margin-top:16px;padding:13px 16px;
    font-size:.9rem;border-radius:10px
  }

  /* ── Consulta: también bottom sheet ── */
  .gf-drop--consulta{position:static;transform:none}
  .gf-pop--consulta{
    position:fixed!important;left:0!important;right:0!important;
    bottom:0!important;top:auto!important;
    border-radius:22px 22px 0 0!important;
    padding:22px 18px env(safe-area-inset-bottom,20px)!important;
    box-shadow:0 -16px 48px rgba(4,28,55,.32)!important;
    max-height:80vh!important;overflow-y:auto!important;
    min-width:0!important;background:var(--blanco)!important;
    z-index:500!important
  }
  /* overlay oscuro detrás de los paneles */
  .gf-drop--mega.is-open::before,
  .gf-drop--consulta.is-open::before{
    content:"";position:fixed;inset:0;background:rgba(8,16,28,.5);
    z-index:499;animation:fadeIn .2s
  }
  @keyframes fadeIn{from{opacity:0}to{opacity:1}}

  /* pantallas muy estrechas (≤360px): volver a hamburguesa */
}
@media(max-width:360px){
  .gf-nav-burger{display:flex}
  .gf-nav-links{
    position:fixed;top:54px;left:0;right:0;
    flex-direction:column;align-items:stretch;
    background:var(--papel-alt);border-bottom:1px solid var(--linea);
    padding:var(--s3) var(--s4) var(--s5);
    box-shadow:0 20px 40px rgba(20,30,46,.14);
    max-height:calc(100vh - 54px);overflow-y:auto;
    transform:translateY(-10px);opacity:0;visibility:hidden;transition:.2s
  }
  .gf-nav-toggle:checked~.gf-nav-links{transform:none;opacity:1;visibility:visible}
  .gf-nav-links>a:first-child{display:flex}
  .gf-nav-burger{display:flex}
  .gf-nav-links>a,.gf-drop-trigger,.gf-drop>summary{
    padding:13px 12px;font-size:1rem;width:100%
  }
  .gf-pop--mega{position:static!important;box-shadow:none!important;
    border:none!important;padding:2px 0 6px 12px!important;max-height:none!important;
    grid-template-columns:1fr!important;border-radius:0!important}
  .gf-pop--consulta{position:static!important;box-shadow:none!important;
    border:none!important;padding:2px 0 6px 12px!important;border-radius:0!important}
  .gf-mega-cab{display:none}
  .gf-nav-cta{margin:var(--s3) 0 0;justify-content:center;display:flex!important;
    padding:13px 18px!important;font-size:.9rem!important}
}

/* ══════════════════════════════════════════
   PIE
   ══════════════════════════════════════════ */
.gf-foot{margin-top:var(--s9);background:var(--marino-osc);color:#C9D3E0}
.gf-foot-in{max-width:var(--ancho);margin:0 auto;padding:var(--s8) var(--s5) var(--s7)}
@media(max-width:640px){.gf-foot-in{padding:var(--s7) var(--s4)}}
.gf-foot-top{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:var(--s7);padding-bottom:var(--s6);
  border-bottom:1px solid rgba(255,255,255,.1)}
@media(max-width:760px){.gf-foot-top{grid-template-columns:1fr;gap:var(--s5)}}

.gf-foot-marca{font-family:var(--f-display);font-size:1.05rem;color:#fff;
  margin:0 0 var(--s3);font-weight:700}
.gf-foot h4{font-family:var(--f-display);font-size:1.05rem;color:#fff;margin:0 0 var(--s3);font-weight:600}
.gf-foot .gf-foot-lead{font-size:.9rem;line-height:1.6;margin:0;max-width:38ch;color:#A9B6C7}
.gf-foot .gf-foot-isbn{font-family:var(--f-cifra);font-size:.78rem;color:#8494A8;margin-top:var(--s3)}
.gf-foot-col p{font-family:var(--f-texto);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--oro-claro);font-weight:600;margin:0 0 var(--s3)}
.gf-foot-col a{display:block;color:#C9D3E0;text-decoration:none;font-size:.88rem;padding:4px 0;transition:color .15s}
.gf-foot-col a:hover{color:#fff}
.gf-foot-legal{padding-top:var(--s5);font-size:.76rem;line-height:1.6;color:#7C8B9E;max-width:80ch}
.gf-foot-legal a{color:#A9B6C7}

/* ══════════════════════════════════════════
   UTILIDADES compartidas
   ══════════════════════════════════════════ */
.gf-eyebrow{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--f-texto);font-size:.72rem;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;color:var(--oro)
}
.gf-eyebrow::before{content:"";width:22px;height:1.5px;background:var(--oro);flex:none}

.gf-rule{height:1px;background:var(--linea);border:0;margin:0}

.gf-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  font-family:var(--f-texto);font-weight:600;font-size:.94rem;text-decoration:none;
  padding:14px 26px;border-radius:100px;border:1.5px solid transparent;cursor:pointer;
  transition:transform .16s,box-shadow .16s,background .16s,border-color .16s
}
.gf-btn--primario{background:var(--marino-osc);color:#fff;box-shadow:0 6px 18px rgba(4,28,55,.24)}
.gf-btn--primario:hover{background:var(--marino);transform:translateY(-2px);box-shadow:0 12px 28px rgba(4,28,55,.34)}
.gf-btn--linea{color:var(--marino-osc);border-color:#C3CBD6;background:transparent}
.gf-btn--linea:hover{border-color:var(--marino-osc);background:rgba(11,34,69,.05)}
.gf-btn--oro{background:var(--oro-claro);color:#2B1D05;box-shadow:0 6px 18px rgba(184,134,47,.3)}
.gf-btn--oro:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(184,134,47,.4)}
.gf-btn--bloque{width:100%}

@media print{.gf-nav,.gf-foot{display:none}}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important}
}

/* ══════════════════════════════════════════
   PAGINADOR entre herramientas
   ══════════════════════════════════════════ */
.cdh-pager{display:grid;grid-template-columns:1fr 1fr;gap:var(--s4);
  max-width:var(--ancho);margin:var(--s8) auto 0;padding:0 var(--s5)}
@media(max-width:640px){.cdh-pager{grid-template-columns:1fr;padding:0 var(--s4);margin-top:var(--s7)}}
.cdh-pager .pg{display:flex;flex-direction:column;gap:3px;
  background:var(--papel-alt);border:1px solid var(--linea);border-radius:var(--r-md);
  padding:var(--s4) var(--s5);text-decoration:none;color:var(--tinta);
  transition:border-color .18s,transform .18s,box-shadow .18s}
.cdh-pager .pg:hover{border-color:var(--marino);transform:translateY(-2px);box-shadow:var(--sombra-2)}
.cdh-pager .pg.next{text-align:right;align-items:flex-end}
.cdh-pager .pg span{font-family:var(--f-cifra);font-size:.72rem;color:var(--gris-claro);
  letter-spacing:.04em;text-transform:uppercase}
.cdh-pager .pg b{font-family:var(--f-display);font-size:.98rem;font-weight:600;
  color:var(--marino-osc);line-height:1.3}


/* ── Titulares en Manrope: pesos y tracking calibrados para sans ── */
h1,h2,h3,h4{font-family:var(--f-display)}
h1{font-weight:800;letter-spacing:-.03em;line-height:1.08}
h2{font-weight:700;letter-spacing:-.022em}
h3{font-weight:700;letter-spacing:-.015em}
.gf-brand-txt{font-weight:800;letter-spacing:-.02em}
.cdh-pager .pg b{font-weight:700}



/* ══════════════════════════════════════════════════════════
   Tablas de datos en pantallas pequeñas: desplazamiento
   horizontal con sombra en el borde que indica más columnas
   ══════════════════════════════════════════════════════════ */
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;
  background:
    linear-gradient(to right,var(--papel2) 30%,rgba(255,253,249,0)) left center/40px 100% no-repeat,
    linear-gradient(to left,var(--papel2) 30%,rgba(255,253,249,0)) right center/40px 100% no-repeat,
    radial-gradient(farthest-side at 0 50%,rgba(18,35,60,.15),transparent) left center/14px 100% no-repeat,
    radial-gradient(farthest-side at 100% 50%,rgba(18,35,60,.15),transparent) right center/14px 100% no-repeat;
  background-attachment:local,local,scroll,scroll}
.tw table{margin:0}
.tw::-webkit-scrollbar{height:8px}
.tw::-webkit-scrollbar-thumb{background:rgba(18,35,60,.22);border-radius:100px}
@media(max-width:720px){
  .tw table{font-size:.82rem}
  .tw th,.tw td{padding:8px 10px!important;white-space:nowrap}
  .tw table[style*="min-width"]{min-width:0!important}
}
@media(max-width:420px){.tw table{font-size:.77rem}.tw th,.tw td{padding:6px 8px!important}}
@media print{.tw{overflow:visible!important;background:none!important}.tw table{font-size:9pt}}

/* Aviso de que la tabla se desliza.
   No puede ser un ::before del propio contenedor: al llevar
   overflow-x:auto, el eje Y también pasa a auto y el pseudo-elemento
   queda recortado (comprobado). Se inserta como hermano por JS y solo
   cuando la tabla desborda de verdad. */
.tbl-aviso{
  display:none;margin:0 0 8px;
  font-family:var(--f-cifra);font-size:.72rem;color:var(--gris-claro);
  letter-spacing:.02em
}
@media(max-width:720px){.tbl-aviso{display:block}}
@media print{.tbl-aviso{display:none!important}}


/* ══════════════════════════════════════════════════════════
   ACCESIBILIDAD · WCAG 2.1 AA
   Ratios verificados con medición, no a ojo:
     --gris        5.26:1   texto normal          OK
     --gris-claro  4.93:1   texto pequeño         OK (antes 3.18, fallaba)
     --oro-texto   4.54:1   antetítulos y cifras  OK (antes 2.86, fallaba)
   El oro claro y el --oro se reservan a elementos decorativos,
   donde el ratio de contraste no aplica.
   ══════════════════════════════════════════════════════════ */

/* antetítulos: eran oro decorativo sobre papel (2.86:1) */
.gf-eyebrow,.h-eyebrow,.l-eyebrow{color:var(--oro-texto)}
/* los desplegables del menú: el subtítulo pasaba de 3.6:1 */
.gf-pop small{color:var(--gris-claro)}
/* referencias de capítulo, notas y pies de tabla */
.h-ficha-ref,.h-bloque-cuenta,.h-indice a i,.mf-tramos-pie,.mf-ej-t,
.bi-cap,.gf-foot-isbn,.l-paso-h{color:var(--gris-claro)}
/* el oro sobre fondo marino sí cumple: allí se mantiene el claro */
.gf-foot .gf-foot-col p,.l-cifra b,.l-cierre .l-eyebrow,
.l-autor-rol,.l-sello b{color:var(--oro-claro)}

/* foco visible en todo elemento interactivo */
a:focus-visible,button:focus-visible,summary:focus-visible,
input:focus-visible,select:focus-visible,label:focus-visible{
  outline:3px solid var(--marino);outline-offset:2px;border-radius:4px}

/* enlace de salto al contenido, para lectores de pantalla y teclado */
.gf-saltar{position:absolute;left:-9999px;top:0;z-index:999;
  background:var(--marino-osc);color:#fff;padding:12px 20px;border-radius:0 0 10px 0;
  font-weight:700;font-size:.92rem;text-decoration:none}
.gf-saltar:focus{left:0}

/* el título de las obras: mismo aspecto que tenía como h3 */
.bi-titulo{font-size:1.12rem;margin:0 0 4px;line-height:1.3;color:var(--tinta);font-weight:700}

/* veredicto de las calculadoras comparativas: lo rellena el JS,
   por eso es <p> y no encabezado (rompía la jerarquía h1→h3) */
.vt-titulo{font-family:var(--f-display);font-weight:700;font-size:1.35rem;
  letter-spacing:-.02em;margin:0;color:inherit}

/* los dos lados de una comparación están al mismo nivel que el resto
   de secciones: son h2, no h4 (evita el salto h1→h4) */
.cmp-lado{font-family:var(--f-display);font-weight:700;font-size:1.05rem;
  letter-spacing:-.015em;margin:0 0 8px}

/* antetítulos sobre las cabeceras oscuras de herramienta:
   el oro claro daba 4.33:1 y necesita 4.5 para texto pequeño */
:root{--oro-sobre-oscuro:#E0B466}
header .eyebrow,.hero .eyebrow{color:var(--oro-sobre-oscuro)}
/* cursivas pequeñas dentro de notas: subían de --gris-claro para cumplir AA */
.note em,.foot em,figcaption em{color:#5C5648}

/* ══════════════════════════════════════════════════════════
   Menú "Herramientas": mega-panel con las 14 herramientas.
   Nativo <details>/<summary> para que el clic funcione en
   cualquier dispositivo; en escritorio con puntero se añade
   apertura por hover, sin perder el comportamiento por clic.
   ══════════════════════════════════════════════════════════ */
/* El disparador es un <button>, no <details>: los navegadores no
   pintan el contenido de un <details> cerrado aunque el CSS calculado
   diga display:grid (comprobado con hover real, no solo con CSS), así
   que la apertura por hover no es fiable sobre ese elemento. Con un
   div/button normal, :hover funciona exactamente igual que en
   cualquier mega-menú de producción. */
.gf-drop--mega{position:relative}
.gf-drop-trigger{
  display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:#3E4A5A;
  font:inherit;font-size:.875rem;font-weight:500;padding:8px 12px;border-radius:var(--r-sm);
  cursor:pointer;white-space:nowrap;transition:background .15s,color .15s;
  background:none;border:0
}
.gf-drop-trigger:hover,.gf-drop--mega.is-open .gf-drop-trigger,.gf-drop--consulta.is-open .gf-drop-trigger{background:var(--oro-pastel);color:var(--marino-osc)}
.gf-drop-trigger::after{content:"";width:5px;height:5px;border-right:1.5px solid var(--gris-claro);
  border-bottom:1.5px solid var(--gris-claro);transform:rotate(45deg) translateY(-2px);transition:transform .18s}
.gf-drop--mega.is-open .gf-drop-trigger::after,.gf-drop--consulta.is-open .gf-drop-trigger::after{transform:rotate(225deg) translateY(1px)}

.gf-pop--mega{
  display:none;grid-template-columns:repeat(3,190px);gap:4px 22px;
  padding:14px 18px 14px;min-width:0;
  left:auto;right:0
}
.gf-mega-h{grid-column:1/-1;font-family:var(--f-cifra);font-size:.68rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--gris-claro);margin:10px 0 2px;font-weight:600}
.gf-mega-col:first-child .gf-mega-h{margin-top:0}
.gf-pop--mega a{padding:7px 8px}
.gf-pop--mega small{font-size:.7rem}
.gf-mega-todo{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:10px;
  margin-top:12px;padding:13px 18px;border-radius:var(--r-sm);
  font-size:.97rem;font-weight:700;color:var(--marino-osc)!important;text-decoration:none;
  background:#EBF3F0;border:1px solid #C3DDD8;
  transition:background .18s,border-color .18s,transform .18s}
.gf-mega-todo:hover{background:#D5EBE5;border-color:#9ECCC5;transform:translateX(3px);color:var(--marino-osc)!important}

/* abre por clic (JS añade/quita .is-open) y, en escritorio con ratón,
   también por hover — sin JS para ese caso, CSS puro */
.gf-drop--mega.is-open > .gf-pop--mega{display:grid}
/* ── Panel Consulta escritorio ── */
.gf-pop--consulta{
  display:none;
  min-width:280px;
  left:auto;right:0
}
.gf-drop--consulta.is-open > .gf-pop--consulta{display:block}
@media(hover:hover) and (pointer:fine) and (min-width:901px){
  /* hover gestionado por JS */
}

@media(max-width:900px){
  .gf-drop-trigger{padding:13px 12px;font-size:1rem;width:100%;justify-content:flex-start}
  .gf-drop-trigger::after{margin-left:auto}
  .gf-pop--mega{display:none;grid-template-columns:1fr;gap:0;padding:2px 0 6px 12px;
    position:static;box-shadow:none;border:none;background:transparent;left:auto;right:auto}
  .gf-drop--mega.is-open > .gf-pop--mega{display:grid}
/* ── Panel Consulta escritorio ── */
.gf-pop--consulta{
  display:none;
  min-width:280px;
  left:auto;right:0
}
.gf-drop--consulta.is-open > .gf-pop--consulta{display:block}
  .gf-mega-h{margin-top:14px}
  .gf-mega-col:first-child .gf-mega-h{margin-top:6px}
  .gf-mega-todo{border-top:1px solid var(--linea-suave);margin-top:10px;
    background:#EBF3F0;border-radius:var(--r-sm);border:1px solid #C3DDD8;padding:11px 12px;font-size:.9rem}
}

/* ── Encabezado del mega-menú ── */
.gf-mega-cab{
  grid-column:1/-1;
  padding:0 0 14px;margin-bottom:4px;
  border-bottom:1px solid var(--linea-suave)
}
.gf-mega-titulo{
  display:block;
  font-family:var(--f-display);font-weight:800;font-size:1.12rem;
  letter-spacing:-.022em;color:var(--marino-osc);line-height:1.2;
  margin-bottom:3px
}
.gf-mega-sub{
  display:block;
  font-family:var(--f-cifra);font-size:.71rem;font-weight:500;
  color:var(--gris-claro);letter-spacing:.05em
}
@media(max-width:900px){
  .gf-mega-cab{padding:0 0 10px;margin-bottom:8px}
  /* Panel de Herramientas: apretar para que los 15 enlaces quepan casi
     sin deslizar (el contenido medía 795px en un hueco de 717px) */
  .gf-pop--mega a{padding:5px 8px!important}
  .gf-pop--mega small{font-size:.67rem!important;line-height:1.25}
  .gf-pop--mega .gf-mega-h{margin:8px 0 1px!important;font-size:.6rem!important}
  .gf-pop--mega .gf-mega-todo{margin-top:10px!important;padding:11px 14px!important;
    font-size:.9rem!important}
  .gf-mega-titulo{font-size:1.06rem}
}

/* badge "Próximamente" en la edición impresa — mismo estilo que el eBook */
.l-oferta-flag--pronto{background:#F3E9D6;color:#7A5A18}


/* ── navOverlay: solo visible en móvil ───────────────────────────── */
@media (min-width: 901px){
  #navOverlay{
    display: none !important;
    opacity: 0 !important;
    pointer-events: none !important;
  }
}
/* En cualquier anchura: si está hidden, no puede capturar el puntero
   (elementFromPoint lo devolvería aunque sea invisible) */
#navOverlay[style*="display:none"],
#navOverlay[style*="display: none"]{
  pointer-events: none !important;
}

/* imagen ampliada de la portada: solo recibe el puntero con el visor
   abierto; cerrada, no debe bloquear los clics sobre la portada pequeña */
.l-flip-ampliado-img{ pointer-events: none }
.l-flip-overlay.activo + .l-flip-ampliado .l-flip-ampliado-img{ pointer-events: auto }

/* rótulo de la portada: en el visor ocupará espacio en flujo (no flotante) */
.l-flip-ampliado{ flex-direction: column; gap: 16px }
.l-flip-ampliado-img{ max-height: 74vh }
.l-flip-navhint{
  position: static;
  bottom: auto; left: auto;
  transform: none;
  opacity: 1;
  font-size: .74rem;
  font-weight: 500;
  letter-spacing: .17em;
  text-transform: uppercase;
  color: rgba(255,255,255,.92);
  text-shadow: 0 1px 12px rgba(0,0,0,.55);
  white-space: nowrap;
}
.l-flip-navhint[hidden]{ display: none !important }

@media (max-width: 520px){
  .l-flip-ampliado{ gap: 13px }
  .l-flip-ampliado-img{ max-height: 70vh }
  .l-flip-navhint{ font-size: .68rem; letter-spacing: .14em }
}

/* ═══════════════════════════════════════════════════════════════════════
   SECCIÓN DE COMPRA  ·  prefijo .cp-
   Añadir al final de assets/css/base.css
   Hereda los tokens del sitio (--tinta, --papel2, --verde…) y define un
   valor de reserva por si el nombre del token cambia.
   ═══════════════════════════════════════════════════════════════════════ */

.cp{
  --cp-tinta:      var(--tinta, #141E2E);
  --cp-papel:      var(--papel-alt, #FDFAF4);
  --cp-crema:      var(--papel, #F7F0E5);
  --cp-blanco:     var(--blanco, #FFFFFF);
  --cp-gris:       var(--gris, #6A6355);
  --cp-verde:      var(--verde, #0E7A5F);
  --cp-oro-texto:  var(--oro-texto, #96630D);
  --cp-linea:      #E4DBCB;
  --cp-linea-fina: #EFE7DA;

  /* dorado del botón: fondo claro + texto tinta = contraste 7,3:1 (AA) */
  --cp-oro-1:      #F4CE84;
  --cp-oro-2:      #DDA43E;
  --cp-oro-borde:  #B9822A;
  /* dorado un paso más oscuro: cumple AA sobre el tinte del botón pendiente */
  --cp-oro-oscuro: #8C5C0A;

  --cp-display: var(--f-display, "Manrope", "Carlito", system-ui, sans-serif);
  --cp-cuerpo:  var(--f-texto,  "Inter", "Carlito", system-ui, sans-serif);
  --cp-cifra:   var(--f-cifra,   "IBM Plex Mono", "DejaVu Sans Mono", ui-monospace, monospace);

  padding: clamp(56px, 8vw, 96px) 20px;
  background: var(--cp-crema);
}

.cp-in{ max-width: 1060px; margin: 0 auto; }

/* ── cabecera ───────────────────────────────────────────────────────── */
.cp-cab{ text-align: center; max-width: 620px; margin: 0 auto clamp(34px, 5vw, 52px); }

.cp-eyebrow{
  font-family: var(--cp-cifra);
  font-size: .72rem; font-weight: 500;
  letter-spacing: .18em; text-transform: uppercase;
  color: var(--cp-oro-texto);
  margin: 0 0 14px;
}
.cp-eyebrow::before{
  content: ""; display: block;
  width: 34px; height: 2px; margin: 0 auto 14px;
  background: var(--cp-oro-2);
}
.cp-h2{
  font-family: var(--cp-display);
  font-weight: 800; letter-spacing: -.022em; line-height: 1.06;
  font-size: clamp(1.9rem, 4.4vw, 2.9rem);
  color: var(--cp-tinta);
  margin: 0 0 14px;
}
.cp-sub{
  font-family: var(--cp-cuerpo);
  font-size: 1.02rem; line-height: 1.55;
  color: var(--cp-gris);
  margin: 0;
}

/* ── rejilla de las dos fichas ──────────────────────────────────────── */
.cp-rejilla{
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 22px;
  align-items: stretch;
}

.cp-ficha{
  display: flex; flex-direction: column;
  background: var(--cp-blanco);
  border: 1px solid var(--cp-linea);
  border-radius: 16px;
  overflow: hidden;
}
/* la edición de referencia manda: borde de tinta y elevación */
.cp-ficha--destacada{
  border: 1.5px solid var(--cp-tinta);
  box-shadow: 0 18px 44px -22px rgba(20, 30, 46, .34);
}

/* bandas horizontales: la misma altura mínima en las dos fichas, así las
   líneas divisorias quedan alineadas de una columna a la otra */
.cp-banda{ padding: 24px 26px; border-bottom: 1px solid var(--cp-linea-fina); }
.cp-banda:last-child{ border-bottom: 0; }

.cp-banda--id{     min-height: 176px; }
.cp-banda--precio{ min-height: 118px; display: flex; flex-direction: column; justify-content: center; }
.cp-banda--lista{  flex: 1 1 auto; }

/* ── identificación del formato ─────────────────────────────────────── */
.cp-estado{
  display: inline-block;
  font-family: var(--cp-cifra);
  font-size: .66rem; font-weight: 600;
  letter-spacing: .14em; text-transform: uppercase;
  color: var(--cp-crema); background: var(--cp-tinta);
  border-radius: 100px; padding: 5px 12px;
  margin: 0 0 16px;
}
.cp-estado--vivo{ background: var(--cp-verde); }

.cp-formato{
  font-family: var(--cp-cifra);
  font-size: .7rem; font-weight: 500;
  letter-spacing: .15em; text-transform: uppercase;
  color: var(--cp-oro-texto);
  margin: 0 0 6px;
}
.cp-nombre{
  font-family: var(--cp-display);
  font-weight: 800; letter-spacing: -.02em; line-height: 1.1;
  font-size: 1.6rem; color: var(--cp-tinta);
  margin: 0 0 8px;
}
.cp-nota{
  font-family: var(--cp-cuerpo);
  font-size: .93rem; line-height: 1.5;
  color: var(--cp-gris); margin: 0;
}

/* ── precio ─────────────────────────────────────────────────────────── */
.cp-precio{
  font-family: var(--cp-display);
  display: flex; align-items: flex-start; gap: 4px;
  margin: 0 0 6px; color: var(--cp-tinta);
}
.cp-cifra{
  font-weight: 800; letter-spacing: -.03em; line-height: .9;
  font-size: 2.9rem;
  font-variant-numeric: tabular-nums;
}
.cp-moneda{
  font-weight: 700; font-size: 1.3rem; line-height: 1;
  margin-top: .28em; color: var(--cp-oro-texto);
}
.cp-precio--pendiente .cp-cifra{
  font-size: 1.45rem; font-weight: 700;
  letter-spacing: -.015em; color: var(--cp-gris);
}
.cp-precio-nota{
  font-family: var(--cp-cifra);
  font-size: .72rem; letter-spacing: .06em;
  color: var(--cp-gris); margin: 0;
}

/* ── colofón: los datos duros, tratados como la página de créditos ──── */
.cp-colofon{
  margin: 0; display: grid; gap: 9px;
  font-family: var(--cp-cifra); font-size: .76rem;
}
.cp-colofon > div{
  display: flex; align-items: baseline; gap: 10px;
}
.cp-colofon dt{
  flex: 0 0 74px;
  letter-spacing: .1em; text-transform: uppercase;
  font-size: .66rem; color: var(--cp-gris);
}
.cp-colofon dd{
  margin: 0; color: var(--cp-tinta);
  font-variant-numeric: tabular-nums;
  /* puntos de guía entre etiqueta y dato, como en el índice de un libro */
  flex: 1 1 auto; position: relative; text-align: right;
}
.cp-colofon dd::before{
  content: ""; position: absolute; left: 0; right: 0; bottom: .32em;
  border-bottom: 1px dotted var(--cp-linea);
  z-index: 0;
}
.cp-colofon dd span{
  position: relative; z-index: 1;
  background: var(--cp-blanco); padding-right: 6px;
}

/* ── ventajas ───────────────────────────────────────────────────────── */
.cp-lista{ list-style: none; margin: 0; padding: 24px 26px; }
.cp-lista li{
  display: flex; gap: 11px;
  font-family: var(--cp-cuerpo);
  font-size: .93rem; line-height: 1.45;
  color: var(--cp-tinta);
}
.cp-lista li + li{ margin-top: 12px; }
.cp-lista svg{ flex: 0 0 16px; margin-top: 3px; color: var(--cp-verde); }

/* ── acción ─────────────────────────────────────────────────────────── */
.cp-banda--accion{ padding-top: 22px; padding-bottom: 26px; }

.cp-btn{
  display: flex; align-items: center; justify-content: center; gap: 7px;
  width: 100%; box-sizing: border-box;
  min-height: 52px; padding: 14px 22px;
  border: 0; border-radius: 100px; cursor: pointer;
  font-family: var(--cp-display);
  font-size: 1rem; font-weight: 700; letter-spacing: -.005em;
  text-decoration: none; text-align: center;
  transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
}
.cp-btn:focus-visible{ outline: 3px solid var(--cp-tinta); outline-offset: 3px; }

/* primario: dorado con texto tinta */
.cp-btn--oro{
  color: var(--cp-tinta);
  background: linear-gradient(175deg, var(--cp-oro-1), var(--cp-oro-2));
  box-shadow: 0 1px 0 rgba(255,255,255,.5) inset,
              0 10px 22px -10px rgba(185,130,42,.7);
}
.cp-btn--oro:hover{ transform: translateY(-1px); box-shadow: 0 1px 0 rgba(255,255,255,.5) inset, 0 14px 26px -10px rgba(185,130,42,.8); }

/* secundario: contorno de tinta */
.cp-btn--linea{
  color: var(--cp-tinta); background: transparent;
  box-shadow: inset 0 0 0 1.5px var(--cp-tinta);
}
.cp-btn--linea:hover{ background: var(--cp-tinta); color: var(--cp-crema); }

/* estado pendiente: no es un enlace, no se puede pulsar */
.cp-btn--pendiente{
  cursor: default; color: var(--cp-oro-oscuro);
  background: linear-gradient(175deg, #FDF4E2, #F8EBD3);
  box-shadow: inset 0 0 0 1.5px rgba(185,130,42,.45);
}
.cp-btn--pendiente .cp-marca{ color: var(--cp-oro-oscuro) }
.cp-btn--pendiente svg{ flex: 0 0 15px; opacity: .8 }
.cp-btn--pendiente:hover{ transform: none; }

.cp-accion-nota{
  font-family: var(--cp-cifra);
  font-size: .71rem; letter-spacing: .04em; line-height: 1.4;
  color: var(--cp-gris);
  text-align: center; margin: 11px 0 0;
}
.cp-marca{ font-weight: 800; letter-spacing: -.01em; }

/* ── franja de confianza ────────────────────────────────────────────── */
.cp-confianza{
  list-style: none; margin: clamp(28px, 4vw, 40px) 0 0; padding: 0;
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1px; background: var(--cp-linea);
  border: 1px solid var(--cp-linea); border-radius: 14px; overflow: hidden;
}
.cp-confianza li{
  background: var(--cp-crema);
  padding: 18px 20px;
  font-family: var(--cp-cuerpo);
  font-size: .88rem; line-height: 1.45; color: var(--cp-tinta);
}
.cp-confianza b{
  display: block;
  font-family: var(--cp-cifra);
  font-size: .66rem; font-weight: 600;
  letter-spacing: .13em; text-transform: uppercase;
  color: var(--cp-oro-texto); margin-bottom: 6px;
}

/* ── responsive ─────────────────────────────────────────────────────── */
@media (max-width: 860px){
  .cp-rejilla{ grid-template-columns: 1fr; gap: 18px; }
  .cp-banda--id,
  .cp-banda--precio{ min-height: 0; }
  .cp-confianza{ grid-template-columns: 1fr; }
}
@media (max-width: 520px){
  .cp-banda,
  .cp-lista{ padding: 20px 20px; }
  .cp-nombre{ font-size: 1.45rem; }
  .cp-cifra{ font-size: 2.5rem; }
  .cp-colofon dt{ flex-basis: 66px; }
}

@media (prefers-reduced-motion: reduce){
  .cp-btn{ transition: none; }
  .cp-btn--oro:hover{ transform: none; }
}

@media print{
  .cp{ background: #fff; padding: 20px 0 }
  .cp-btn{ box-shadow: none; border: 1px solid #999 }
}


/* ── Nav en móviles estrechos (361–420px) ──────────────────────────
   Al dar a Consulta la misma flecha que Herramientas, la barra pasó a
   medir 396px sobre un ancho de 375: 24px de desborde. Se aprieta el
   espaciado y se recorta la flecha para que las tres piezas entren. */
@media(max-width:420px){
  .gf-nav-in{padding:0 8px 0 10px;gap:0}
  .gf-nav-links{gap:1px}
  .gf-drop-trigger{padding:8px 5px!important;font-size:.76rem!important;gap:2px!important}
  .gf-drop-trigger::after{width:4px;height:4px}
  .gf-nav-cta{margin-left:3px;padding:7px 10px!important;font-size:.73rem!important}
  .gf-brand{flex:none}
}


/* ── Sliders aptos para dedo ──────────────────────────────────── */
@media(pointer:coarse){
  html input[type=range]{height:44px;margin:4px 0 0;background:transparent}
  html input[type=range]::-webkit-slider-runnable-track{
    height:6px;border-radius:100px;background:var(--linea)}
  html input[type=range]::-webkit-slider-thumb{
    -webkit-appearance:none;appearance:none;
    width:26px;height:26px;border-radius:50%;
    background:var(--verde);border:3px solid #fff;
    box-shadow:0 2px 8px rgba(4,28,55,.3);margin-top:-10px}
  html input[type=range]::-moz-range-track{
    height:6px;border-radius:100px;background:var(--linea)}
  html input[type=range]::-moz-range-thumb{
    width:26px;height:26px;border-radius:50%;border:3px solid #fff;
    background:var(--verde);box-shadow:0 2px 8px rgba(4,28,55,.3)}
}
