/* ---- Página: Publicaciones (usa ca-theme.css compartida) ---- */

  /* BIBLIOTECA: bloque blanco. Cabecera + herramientas + chips de tipo + rejilla de documentos. */
  .library{padding-block:clamp(48px,6vw,84px) clamp(64px,7vw,104px);background:var(--white)}
  .library .head{margin-bottom:2rem;max-width:66ch}
  .library .head h2{font-size:clamp(1.9rem,3.2vw,2.8rem);font-weight:700;margin-top:.5rem;color:var(--ink)}
  .library .head p{color:var(--acero);margin-top:.7rem;max-width:66ch;font-size:1rem}

  /* Barra de herramientas: búsqueda + área + orden */
  .lib-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.8rem;margin-bottom:1.3rem}
  .lib-search{display:flex;align-items:center;gap:.5rem;border:1px solid var(--line-strong);border-radius:999px;padding:.5rem 1rem;background:#fff;flex:1 1 280px;max-width:420px;transition:border-color .18s}
  .lib-search:focus-within{border-color:var(--azul)}
  .lib-search .ico{stroke:var(--azul);width:17px;height:17px;flex:none}
  .lib-search input{border:0;outline:0;background:transparent;color:var(--ink);font:inherit;font-size:.92rem;width:100%}
  .lib-search input::placeholder{color:var(--acero)}
  .lib-order{display:flex;align-items:center;gap:.5rem;margin-left:auto;font-family:'Space Grotesk';font-weight:600;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--acero)}
  .lib-order select{font-family:'Geist',Arial,sans-serif;font-size:.9rem;letter-spacing:0;text-transform:none;border:1px solid var(--line-strong);border-radius:999px;padding:.5rem 1rem;background:#fff;color:var(--ink);cursor:pointer;min-height:42px}
  .lib-area{display:flex;align-items:center;gap:.5rem;font-family:'Space Grotesk';font-weight:600;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--acero)}
  .lib-area select{font-family:'Geist',Arial,sans-serif;font-size:.9rem;letter-spacing:0;text-transform:none;border:1px solid var(--line-strong);border-radius:999px;padding:.5rem 1rem;background:#fff;color:var(--ink);cursor:pointer;min-height:42px}

  /* Chips de TIPO (eje 1): pastilla; inactiva = contorno azul; activa (incl. "Todas") = azul pleno */
  .lib-chips{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:1rem}
  .lib-chip{display:inline-flex;align-items:center;gap:.5rem;font-family:'Space Grotesk';font-weight:600;font-size:.8rem;letter-spacing:.02em;padding:.55rem 1rem;border-radius:999px;border:1.5px solid var(--azul);background:#fff;color:var(--azul);cursor:pointer;min-height:40px;transition:background .16s,color .16s,border-color .16s,transform .12s ease-out}
  .lib-chip .cnt{font-variant-numeric:tabular-nums;font-size:.7rem;padding:.06rem .42rem;border-radius:999px;background:var(--azul-claro);color:var(--azul-deep);transition:background .16s,color .16s}
  .lib-chip:hover{background:var(--azul-claro);border-color:var(--azul-claro);color:var(--azul-deep)}
  .lib-chip[aria-pressed="true"]{background:var(--azul);color:#fff;border-color:var(--azul)}
  .lib-chip[aria-pressed="true"] .cnt{background:rgba(255,255,255,.25);color:#fff}
  .lib-chip[aria-pressed="true"]:hover{background:var(--azul-deep);border-color:var(--azul-deep)}
  .lib-chip[disabled]{opacity:.4;cursor:not-allowed}
  .lib-chip:active{transform:scale(.97)}

  .lib-count{font-family:'Space Grotesk';font-weight:600;font-size:.78rem;letter-spacing:.03em;color:var(--acero);margin-bottom:1.6rem;font-variant-numeric:tabular-nums}
  .lib-count b{color:var(--azul);font-weight:700}

  /* Rejilla de resultados */
  .lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:clamp(16px,1.6vw,22px)}
  .lib-card{background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:16px;box-shadow:var(--sh);overflow:hidden;display:flex;flex-direction:column;cursor:pointer;transition:transform .2s,box-shadow .2s;animation:cardIn .5s both}
  .lib-card:hover{transform:translateY(-3px);box-shadow:0 18px 40px rgba(0,60,110,.16)}
  @keyframes cardIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
  @media (prefers-reduced-motion:reduce){.lib-card{animation:none!important}}

  .lib-card .cover{aspect-ratio:3/4;background:var(--niebla);position:relative;overflow:hidden;flex:none;border-bottom:1px solid var(--line)}
  .lib-card .cover img{width:100%;height:100%;object-fit:cover}
  /* Portada tipográfica honesta para el relleno de muestra (se carga del CMS) */
  .cover-type{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;padding:1rem;background:var(--azul-deep)}
  .cover-type .ct-eyebrow{font-family:'Space Grotesk';font-weight:600;font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.65)}
  .cover-type .ct-type{font-size:1.26rem;font-weight:700;line-height:1.15;color:#fff;text-wrap:balance}
  .cover-type .ct-year{font-family:'Space Grotesk';font-weight:600;font-size:.7rem;letter-spacing:.06em;color:rgba(255,255,255,.75);font-variant-numeric:tabular-nums}
  .cover-type .ct-rule{width:26px;height:2px;background:#7ec6f2;opacity:.75}

  .lib-card .body{padding:1.1rem 1.2rem 1.3rem;display:flex;flex-direction:column;gap:.4rem;flex:1}
  .lib-card .body::after{content:"Ver publicación →";margin-top:.6rem;align-self:flex-start;color:var(--azul);font-family:'Space Grotesk';font-weight:600;font-size:.78rem;letter-spacing:.01em;transition:color .16s}
  .lib-card:hover .body::after{color:var(--azul-deep)}
  .lib-card .k{font-family:'Space Grotesk';font-weight:600;font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;color:var(--azul)}
  .lib-card h4{font-size:1rem;font-weight:700;line-height:1.28;color:var(--ink);margin:.15rem 0}
  .lib-card .meta{font-size:.78rem;color:var(--acero);font-variant-numeric:tabular-nums;margin-top:auto}
  .lib-card .sample{display:inline-flex;align-items:center;gap:.35rem;align-self:flex-start;font-family:'Space Grotesk';font-weight:600;font-size:.62rem;letter-spacing:.05em;text-transform:uppercase;color:var(--acero);border:1px solid var(--line-strong);border-radius:999px;padding:.16rem .55rem;margin-top:.15rem}

  /* Tarjeta destacada: ocupa toda la fila, portada + cuerpo */
  .lib-card.feat{grid-column:1 / -1;flex-direction:row;position:relative}
  .lib-card.feat .cover{width:230px;aspect-ratio:auto;flex:none;border-bottom:0;border-right:1px solid var(--line)}
  .lib-card.feat .body{padding:1.8rem;gap:.7rem;justify-content:center}
  .lib-card.feat h4{font-size:1.4rem;font-weight:700;line-height:1.2}
  .lib-card.feat .feat-tag{position:absolute;top:.8rem;left:.8rem;font-family:'Space Grotesk';font-weight:700;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:#fff;background:var(--azul);padding:.28rem .7rem;border-radius:999px;z-index:1}
  .lib-card.feat p{color:var(--acero);font-size:.96rem;max-width:68ch}
  .lib-card.feat .acts{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:.5rem}
  .lib-card.feat .body::after{content:none}

  .lib-empty{grid-column:1/-1;padding:2.6rem 1rem;text-align:center;color:var(--acero);font-size:.98rem;border:1px dashed var(--line-strong);border-radius:16px}

  /* Nota del acervo */
  .lib-note{margin-top:2rem;display:flex;align-items:center;gap:.9rem;background:var(--niebla);border:1px solid var(--line);border-radius:16px;padding:1.15rem 1.35rem;color:var(--acero);font-size:.92rem}
  .lib-note .ico{stroke:var(--azul);width:22px;height:22px;flex:none}
  .lib-note strong{color:var(--ink)}

  @media (max-width:640px){
    .lib-order,.lib-area{margin-left:0}
    .lib-card.feat{flex-direction:column}
    .lib-card.feat .cover{width:100%;aspect-ratio:16/10;border-right:0;border-bottom:1px solid var(--line)}
    .lib-card.feat .body{padding:1.3rem}
  }

  /* ===== FICHA DE PUBLICACIÓN: panel lateral no-modal (navy, texto blanco — contraste con biblioteca blanca) ===== */
  .pub-sb{position:fixed;inset:0;z-index:210;display:none}
  .pub-sb.is-open{display:block}
  .pub-sb__backdrop{position:absolute;inset:0;background:rgba(11,30,52,.55)}
  .pub-sb__panel{position:absolute;top:0;right:0;height:100%;width:min(460px,90vw);background:var(--azul-deep);color:#fff;padding:1.6rem 1.6rem 2rem;display:flex;flex-direction:column;overflow-y:auto;box-shadow:-8px 0 40px -12px rgba(11,30,52,.45)}
  .pub-sb__head{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.3rem}
  .pub-sb__eyebrow{font-family:'Space Grotesk';font-weight:600;font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;color:#7ec6f2}
  .pub-sb__close{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.3);border-radius:50%;width:38px;height:38px;display:grid;place-items:center;color:#fff;cursor:pointer;flex:none}
  .pub-sb__close:hover{background:rgba(255,255,255,.22)}
  .pub-sb__close .ico{width:18px;height:18px}
  .pub-sb__body{display:flex;flex-direction:column;gap:.9rem}
  .pub-sb__body.swap{animation:sbSwap .28s ease}
  @keyframes sbSwap{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
  @media (prefers-reduced-motion:reduce){.pub-sb__body.swap{animation:none!important}}
  .pub-sb__cover{width:150px;border-radius:10px;overflow:hidden;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);margin-bottom:.4rem}
  .pub-sb__cover img{width:100%;display:block}
  .pub-sb__cover .ct{aspect-ratio:3/4;display:flex;flex-direction:column;justify-content:space-between;padding:.9rem}
  .pub-sb__cover .ct-t{font-family:'Space Grotesk';font-weight:700;font-size:.95rem;color:#fff;line-height:1.2}
  .pub-sb__cover .ct-y{font-family:'Space Grotesk';font-weight:600;font-size:.75rem;color:rgba(255,255,255,.7)}
  .pub-sb__k{font-family:'Space Grotesk';font-weight:600;font-size:.78rem;letter-spacing:.03em;color:#7ec6f2}
  .pub-sb__title{font-size:1.4rem;font-weight:700;line-height:1.2;color:#fff}
  .pub-sb__meta{font-size:.82rem;color:rgba(255,255,255,.72);font-variant-numeric:tabular-nums}
  .pub-sb__desc{font-size:.95rem;line-height:1.55;color:rgba(255,255,255,.85)}
  .pub-sb__acts{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:.4rem}
  .pub-sb__util{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:.6rem}
  .pub-sb__open{margin-top:auto;padding-top:1.2rem;border-top:1px solid rgba(255,255,255,.2);font-family:'Space Grotesk';font-weight:600;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.6)}
  body.pub-sb-open{overflow:hidden}
  .pub-sb__toast{position:fixed;bottom:1.5rem;left:50%;transform:translateX(-50%) translateY(20px);background:var(--ink);color:#fff;padding:.7rem 1.2rem;border-radius:999px;font-size:.85rem;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;z-index:300}
  .pub-sb__toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
  @media (max-width:480px){.pub-sb__panel{width:100vw}}

  /* ===== MENÚ MÓVIL (faltaba: el nav se ocultaba <1000px sin reemplazo) ===== */
  .nav-toggle{display:none;background:none;border:0;color:var(--ink);cursor:pointer;padding:.4rem;line-height:0}
  .nav-toggle .ico{width:26px;height:26px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
  @media (max-width:1000px){.nav-toggle{display:inline-flex;align-items:center}}
  .m-nav{position:fixed;inset:0;z-index:200;display:none}
  .m-nav.is-open{display:block}
  .m-nav__backdrop{position:absolute;inset:0;background:rgba(11,30,52,.5)}
  .m-nav__panel{position:absolute;top:0;right:0;height:100%;width:min(340px,86vw);background:#fff;padding:1.3rem 1.25rem;display:flex;flex-direction:column;overflow-y:auto;box-shadow:-8px 0 40px -12px rgba(11,30,52,.35)}
  .m-nav__head{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.1rem}
  .m-nav__brand{font-family:'Space Grotesk';font-weight:700;color:var(--ink);font-size:1.05rem}
  .m-nav__close{background:none;border:0;cursor:pointer;color:var(--ink);padding:.3rem;line-height:0}
  .m-nav__close .ico{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round}
  .m-nav__links a{display:block;padding:.75rem .2rem;border-bottom:1px solid var(--niebla);color:var(--ink);font-size:1rem;text-decoration:none}
  .m-nav__links a:hover,.m-nav__links a.active{color:var(--azul);font-weight:600}
  .m-nav__cta{margin-top:1.2rem;display:inline-flex;justify-content:center;background:var(--azul);color:#fff;padding:.8rem 1.1rem;border-radius:6px;font-weight:600;text-decoration:none}
  body.m-open{overflow:hidden}
html{scroll-padding-top:100px}

/* === FICHA-FIX 24-jul: no tapar menu + portada mayor + tipografia/botones del sistema === */
.pub-sb{z-index:40;top:var(--sb-top,124px)}
.pub-sb__backdrop{top:0}
.pub-sb__panel{top:0;height:100%}
.pub-sb__cover{width:min(230px,62%)}
.pub-sb__title{font-family:"Space Grotesk",sans-serif;font-size:1.5rem;line-height:1.22}
.pub-sb__desc{font-size:.95rem;line-height:1.6;color:#d6e9f7}
.pub-sb #pubSbRead{background:#fff;color:var(--azul-deep);border-color:#fff}
.pub-sb #pubSbRead:hover{background:#0072BC;color:#fff;border-color:#0072BC}
.pub-sb .btn-outline{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.55)}
.pub-sb .btn-outline:hover{background:#0072BC;color:#fff;border-color:#0072BC}
.pub-sb__open{font-family:"Space Grotesk",sans-serif;font-weight:600;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:#7ec6f2}

/* ================= FICHA-FIX-2 · 24-jul (correcciones de Roberto) ================= */

/* [1] Header no debe parpadear en blanco al abrir el sidebar: la scrollbar desaparecia
   con overflow:hidden y el header sticky con backdrop-filter repintaba su base blanca.
   Reservamos el canaleta de scroll (sin reflow) y forzamos el header 100% opaco azul. */
html{scrollbar-gutter:stable}
header.site{background:var(--azul)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}

/* [3] La X de cerrar debe quedar SIEMPRE visible aunque se scrollee el panel:
   cabecera pegajosa dentro del panel, con el fondo navy del propio sidebar. */
.pub-sb__panel{padding-top:0}
.pub-sb__head{position:sticky;top:0;z-index:2;background:var(--azul-deep);margin:0 -1.6rem 1rem;padding:1.2rem 1.6rem;border-bottom:1px solid rgba(255,255,255,.12)}

/* [4] Tarjetas minimas: categoria (azul) + Nombre (año) + boton. Nada mas.
   Ocultamos cualquier resto de muestras/meta/autor en la tarjeta. */
.lib-card .body{gap:.5rem;padding:1rem 1.15rem 1.15rem}
.lib-card .body::after{content:none!important}   /* mata el viejo pseudo-enlace "Ver publicacion" */
.lib-card .sample,.lib-card .meta{display:none!important}
.lib-card h4{font-size:.98rem;line-height:1.3}
.lib-card h4 .yr{color:var(--acero);font-weight:600;white-space:nowrap}

/* [6] Boton real (no el enlace mediocre): pildora azul solida con flecha, como la ficha. */
.lib-cta{margin-top:.7rem;align-self:flex-start;display:inline-flex;align-items:center;gap:.4rem;
  background:var(--azul);color:#fff;font-family:'Space Grotesk';font-weight:600;font-size:.82rem;
  letter-spacing:.01em;padding:.5rem .95rem;border-radius:999px;transition:background .16s,transform .16s}
.lib-cta .ico{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .16s}
.lib-card:hover .lib-cta{background:var(--azul-deep)}
.lib-card:hover .lib-cta .ico{transform:translateX(3px)}
@media (prefers-reduced-motion:reduce){.lib-cta,.lib-cta .ico{transition:none}}

/* [5] Portadas 9:16 completas (asi se disenaron): el cover era 3/4 y recortaba.
   Ahora la caja es 9:16 y la imagen entra completa (contain) sobre banda niebla. */
.lib-card .cover{aspect-ratio:9/16}
.lib-card .cover img{object-fit:contain;background:var(--niebla)}
.lib-card .cover .cover-type{aspect-ratio:auto}

/* [1b] Scroll-lock a prueba de balas: el fondo se congela con position:fixed (el JS
   guarda/restaura la posición). El header sticky queda pineado y el menú no se daña. */
body.pub-sb-open{position:fixed!important;left:0;right:0;width:100%;overflow:hidden}
.pub-sb__panel{overscroll-behavior:contain}

/* [1c] EL MENÚ NUNCA SE OCULTA: mientras el sidebar está abierto, el header se ancla
   a top:0 con position:fixed (siempre visible aunque se abriera con la página scrolleada).
   El fondo queda congelado por [1b] y el sidebar arranca bajo el menú (--sb-top = alto header). */
body.pub-sb-open header.site{position:fixed!important;top:0!important;left:0;right:0;z-index:60}
body.pub-sb-open .topbar{display:none}   /* la topbar sí puede ceder su espacio; el menú principal manda */

/* ============ GRID-FIX 24-jul: 4 por fila + botón anclado + portada sin bandas ============ */

/* [A] 5 documentos por fila en desktop (tarjetas más contenidas, acorde al tema sobrio);
   responsive hacia abajo. */
.lib-grid{grid-template-columns:repeat(5,1fr)!important;gap:clamp(16px,1.5vw,24px)!important}
@media (max-width:1200px){.lib-grid{grid-template-columns:repeat(4,1fr)!important}}
@media (max-width:980px){.lib-grid{grid-template-columns:repeat(3,1fr)!important}}
@media (max-width:680px){.lib-grid{grid-template-columns:repeat(2,1fr)!important}}
@media (max-width:440px){.lib-grid{grid-template-columns:1fr!important}}

/* [B] Botón SIEMPRE al fondo de la tarjeta, alineado en toda la fila (margin-top:auto). */
.lib-card .body{flex:1;display:flex;flex-direction:column}
.lib-cta{margin-top:auto!important}
.lib-card h4{margin-bottom:.2rem}

/* [C] Portada uniforme sin bandas blancas: caja 3:4 (proporción real de las portadas)
   y cover anclado arriba — se preserva el título de la cubierta, recorte mínimo abajo. */
.lib-card .cover{aspect-ratio:3/4!important}
.lib-card .cover img{object-fit:cover!important;object-position:center top!important;background:var(--niebla)}

/* ============ PORTADA-FIX 24-jul (definitivo): ratios heterogéneos sin recorte ni vacío ============
   Cada portada se muestra COMPLETA (contain, nunca recorta) sobre un fondo que es la propia
   portada ampliada y difuminada. Resultado: tarjetas idénticas, portada íntegra, cero bandas blancas.
   Patrón usado por bibliotecas/streaming para carátulas de distinto tamaño. */
.lib-card .cover{aspect-ratio:3/4!important;position:relative;overflow:hidden;background:var(--niebla)}
.lib-card .cover.has-img::before{content:"";position:absolute;inset:0;z-index:0;
  background:var(--cover) center/cover no-repeat;
  filter:blur(20px) brightness(.95) saturate(1.15);transform:scale(1.18)}
.lib-card .cover.has-img::after{content:"";position:absolute;inset:0;z-index:1;background:rgba(11,60,102,.10)}
.lib-card .cover img{position:relative;z-index:2;width:100%;height:100%;
  object-fit:contain!important;object-position:center!important;padding:7% 9%;
  filter:drop-shadow(0 6px 16px rgba(11,30,52,.28))}
@media (prefers-reduced-motion:reduce){.lib-card .cover.has-img::before{filter:blur(20px)}}
