/**
 * Descubridor Biblioteca IP Chile -- capa de identidad grafica sobre bootstrap5.
 *
 * Orden del archivo:
 *   1. Tipografia autoalojada        6. Portada (hero + colecciones)
 *   2. Tokens de diseno              7. Resultados y facetas
 *   3. Base y tipografia             8. Ficha de registro
 *   4. Controles (botones, forms)    9. Pie de pagina
 *   5. Cabecera y buscador          10. Utilidades, accesibilidad, impresion
 */

/* ============================================================
   1. TIPOGRAFIA
   ============================================================ */

/* Albert Sans -- fuente corporativa IP Chile, servida desde el propio
   servidor para no depender de Google Fonts. Es una fuente variable:
   un solo archivo cubre los pesos 100-900. */
@font-face {
  font-family: 'Albert Sans';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('../assets/fonts/albert-sans-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Albert Sans';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('../assets/fonts/albert-sans-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
    U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
    U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ============================================================
   2. TOKENS DE DISENO
   ============================================================ */

:root {
  /* --------------------------------------------------------------
     Paleta institucional -- manual de marca IPCHILE (1.c.1 Cromatica
     corporativa). El azul primario esta verificado contra el manual;
     el magenta secundario es la lectura de Pantone Process Magenta C
     y conviene confirmarlo con el valor HEX oficial.
        Primario   Pantone 293 C            RGB 0 95 171
        Secundario Pantone Process Magenta C RGB 211 6 108
     -------------------------------------------------------------- */
  --ipc-blue-900: #00243F;
  --ipc-blue-800: #00365F;
  --ipc-blue-700: #004B87;
  --ipc-blue-600: #005FAB; /* PRIMARIO -- Pantone 293 C */
  --ipc-blue-500: #0272BE;
  --ipc-blue-400: #3D93CE;
  --ipc-blue-200: #B8D5EA;
  --ipc-blue-100: #E1EFF9;
  --ipc-blue-50:  #F1F7FC;

  --ipc-magenta:  #D3066C; /* SECUNDARIO -- Pantone Process Magenta C */
  --ipc-magenta-dark: #A50553;

  /* Cromatica de escuelas -- manual de marca IPCHILE (1.c.2). Se usa como
     acento para diferenciar los bloques de colecciones.
     OJO: en la captura del manual los valores RGB venian cortados, asi que
     estos HEX son una reconstruccion a partir del Pantone y del primer
     componente visible. Confirmar contra el manual antes de dar por cerrada
     la identidad.
        Salud          Pantone 3115 C        RGB 71  ..  ..
        Administracion Pantone Process Blue C RGB 21  ..  ..
        Humanidades    Pantone 186 C         RGB 208 ..  ..
        Ingenieria     Pantone 418 C         RGB 101 ..  .. */
  --ipc-school-health: #47BFD1;      /* Escuela de Salud */
  --ipc-school-business: #1590D2;    /* Administracion, Negocios y Servicios */
  --ipc-school-humanities: #D01C33;  /* Humanidades y Ciencias Sociales */
  --ipc-school-engineering: #656B60; /* Ingenieria y Procesos Industriales */

  /* Alias heredados, mantenidos por compatibilidad con plantillas antiguas */
  --ipc-accent-2: var(--ipc-school-business);
  --ipc-accent-3: var(--ipc-school-health);

  /* Colores funcionales (no corporativos): estado y foco */
  --ipc-amber:    #FFB600;
  --ipc-green:    #2E9E5B;

  /* Neutros */
  --ipc-ink:     #0E1A26;
  --ipc-body:    #46545F;
  --ipc-muted:   #6B7887;
  --ipc-line:    #DDE4EC;
  --ipc-line-soft: #EDF1F6;
  --ipc-surface: #FFFFFF;
  --ipc-canvas:  #F4F7FA;

  /* Tipografia */
  --ipc-font: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI',
    Roboto, 'Helvetica Neue', Arial, sans-serif;

  /* Radios */
  --ipc-r-sm: 8px;
  --ipc-r-md: 12px;
  --ipc-r-lg: 18px;
  --ipc-r-xl: 26px;
  --ipc-r-pill: 999px;

  /* Sombras */
  --ipc-sh-1: 0 1px 2px rgba(14, 26, 38, .06), 0 1px 3px rgba(14, 26, 38, .08);
  --ipc-sh-2: 0 4px 10px rgba(14, 26, 38, .07), 0 2px 4px rgba(14, 26, 38, .05);
  --ipc-sh-3: 0 12px 28px rgba(14, 26, 38, .10), 0 4px 10px rgba(14, 26, 38, .06);
  --ipc-sh-hero: 0 18px 46px rgba(0, 40, 74, .28);

  --ipc-transition: 160ms cubic-bezier(.2, .7, .3, 1);

  /* Puentes hacia las variables de Bootstrap 5 */
  --bs-primary: var(--ipc-blue-600);
  --bs-primary-rgb: 0, 95, 171;
  --bs-link-color: var(--ipc-blue-700);
  --bs-link-color-rgb: 0, 75, 135;
  --bs-link-hover-color: var(--ipc-blue-900);
  --bs-body-color: var(--ipc-body);
  --bs-body-font-family: var(--ipc-font);
  --bs-border-color: var(--ipc-line);
  --bs-border-radius: var(--ipc-r-sm);
  --bs-focus-ring-color: rgba(0, 95, 171, .35);
}

/* ============================================================
   3. BASE Y TIPOGRAFIA
   ============================================================ */

html {
  -webkit-text-size-adjust: 100%;
  overflow-x: hidden; /* el hero rompe el contenedor a ancho completo */
}

body {
  font-family: var(--ipc-font);
  font-size: 1rem;
  line-height: 1.6;
  color: var(--ipc-body);
  background-color: var(--ipc-canvas);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
  font-family: var(--ipc-font);
  color: var(--ipc-ink);
  font-weight: 700;
  letter-spacing: -.015em;
  line-height: 1.22;
}

h1, .h1 { font-size: clamp(1.75rem, 1.3rem + 1.6vw, 2.4rem); }
h2, .h2 { font-size: clamp(1.4rem, 1.15rem + .9vw, 1.8rem); }
h3, .h3 { font-size: 1.25rem; }
h4, .h4 { font-size: 1.075rem; }

a {
  color: var(--ipc-blue-700);
  text-decoration-thickness: 1px;
  text-underline-offset: .18em;
  transition: color var(--ipc-transition);
}
a:hover, a:focus-visible { color: var(--ipc-blue-900); }

/* Anillo de foco unico y visible en todo el sitio (WCAG 2.4.7) */
:focus-visible {
  outline: 3px solid var(--ipc-amber);
  outline-offset: 2px;
  border-radius: 3px;
}

hr { border-color: var(--ipc-line); opacity: 1; }

::selection { background: var(--ipc-blue-100); color: var(--ipc-blue-900); }

/* Lienzo de contenido: tarjeta blanca sobre fondo gris */
.main .container {
  background-color: var(--ipc-surface);
  border-radius: var(--ipc-r-lg);
  box-shadow: var(--ipc-sh-1);
  padding-top: 1.5rem;
  padding-bottom: 2rem;
  margin-top: 1.5rem;
  margin-bottom: 2.5rem;
}
.template-name-home .main .container,
.template-dir-search.template-name-home .main .container {
  background: transparent;
  box-shadow: none;
  padding: 0;
}

.mainbody { padding-top: .25rem; }
.mainbody > h2:first-child,
.mainbody > h1:first-child { margin-top: 0; }

/* ============================================================
   4. CONTROLES: BOTONES Y FORMULARIOS
   ============================================================ */

.btn {
  font-family: var(--ipc-font);
  font-weight: 600;
  letter-spacing: .005em;
  border-radius: var(--ipc-r-pill);
  padding: .5rem 1.15rem;
  transition: background-color var(--ipc-transition), color var(--ipc-transition),
    box-shadow var(--ipc-transition), transform var(--ipc-transition);
}
.btn:active { transform: translateY(1px); }

.btn-primary {
  --bs-btn-bg: var(--ipc-blue-600);
  --bs-btn-border-color: var(--ipc-blue-600);
  --bs-btn-hover-bg: var(--ipc-blue-700);
  --bs-btn-hover-border-color: var(--ipc-blue-700);
  --bs-btn-active-bg: var(--ipc-blue-800);
  --bs-btn-active-border-color: var(--ipc-blue-800);
  --bs-btn-disabled-bg: var(--ipc-blue-200);
  --bs-btn-disabled-border-color: var(--ipc-blue-200);
  box-shadow: 0 2px 6px rgba(0, 95, 171, .28);
}
.btn-primary:hover { box-shadow: 0 4px 12px rgba(0, 95, 171, .34); }

.btn-secondary {
  --bs-btn-bg: var(--ipc-magenta);
  --bs-btn-border-color: var(--ipc-magenta);
  --bs-btn-hover-bg: var(--ipc-magenta-dark);
  --bs-btn-hover-border-color: var(--ipc-magenta-dark);
}

/* El tema base usa .btn-default en muchas plantillas heredadas */
.btn-default,
.btn-outline-secondary {
  background-color: var(--ipc-surface);
  border: 1px solid var(--ipc-line);
  color: var(--ipc-blue-800);
}
.btn-default:hover,
.btn-outline-secondary:hover {
  background-color: var(--ipc-blue-50);
  border-color: var(--ipc-blue-400);
  color: var(--ipc-blue-900);
}

.btn-link { color: var(--ipc-blue-700); font-weight: 600; }

.form-control,
.form-select {
  font-family: var(--ipc-font);
  border: 1px solid var(--ipc-line);
  border-radius: var(--ipc-r-sm);
  padding: .5rem .8rem;
  color: var(--ipc-ink);
  transition: border-color var(--ipc-transition), box-shadow var(--ipc-transition);
}
.form-control:focus,
.form-select:focus {
  border-color: var(--ipc-blue-500);
  box-shadow: 0 0 0 3px rgba(0, 95, 171, .16);
}
.form-control::placeholder { color: #93A0AE; }

.form-label, label { font-weight: 600; color: var(--ipc-ink); }

/* Badges y etiquetas */
.badge { border-radius: var(--ipc-r-pill); font-weight: 600; letter-spacing: .01em; }
.badge.bg-primary { background-color: var(--ipc-blue-600) !important; }

/* Alertas */
.alert { border: 0; border-left: 4px solid; border-radius: var(--ipc-r-md); }
.alert-info    { background: var(--ipc-blue-50);  border-color: var(--ipc-blue-500); color: var(--ipc-blue-900); }
.alert-success { background: #EAF7EF; border-color: var(--ipc-green); color: #15532F; }
.alert-warning { background: #FFF6E0; border-color: var(--ipc-amber); color: #6B4A00; }
.alert-danger  { background: #FDEBF3; border-color: var(--ipc-magenta); color: #7A0040; }

/* ============================================================
   5. CABECERA Y BUSCADOR
   ============================================================ */

header.hidden-print {
  background: var(--ipc-surface);
  box-shadow: 0 1px 0 var(--ipc-line), 0 2px 12px rgba(14, 26, 38, .05);
  position: relative;
  z-index: 20;
}

/* --- Barra de utilidades (franja azul superior) --- */
.ipc-utilitybar {
  background: linear-gradient(90deg, var(--ipc-blue-800) 0%, var(--ipc-blue-600) 55%, var(--ipc-blue-500) 100%);
  color: #fff;
  font-size: .8125rem;
}
.ipc-utilitybar__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  min-height: 36px;
  flex-wrap: wrap;
}
.ipc-utilitybar__tag {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  font-size: .6875rem;
  color: rgba(255, 255, 255, .92);
}
.ipc-utilitybar__links {
  display: flex;
  align-items: center;
  gap: .25rem;
  list-style: none;
  margin: 0;
  padding: 0;
}
.ipc-utilitybar__links a {
  color: rgba(255, 255, 255, .9);
  text-decoration: none;
  padding: .3rem .6rem;
  border-radius: var(--ipc-r-pill);
  font-weight: 500;
  white-space: nowrap;
}
.ipc-utilitybar__links a:hover,
.ipc-utilitybar__links a:focus-visible {
  background: rgba(255, 255, 255, .16);
  color: #fff;
}

/* --- Barra principal (logo + navegacion) --- */
.banner.navbar {
  --bs-navbar-color: var(--ipc-ink);
  --bs-navbar-hover-color: var(--ipc-blue-700);
  background: var(--ipc-surface);
  border-radius: 0;
  padding-top: .7rem;
  padding-bottom: .7rem;
}

.banner .navbar-brand {
  display: inline-flex;
  align-items: center;
  gap: .9rem;
  padding: 0;
  margin-right: 1.25rem;
  text-decoration: none;
}
.banner .navbar-brand::before {
  content: '';
  display: block;
  width: 148px;
  height: 48px;
  background: url('../images/ipchile-logo.png') left center / contain no-repeat;
  flex: 0 0 auto;
}
.ipc-brand__divider {
  width: 1px;
  align-self: stretch;
  margin: .15rem 0;
  background: var(--ipc-line);
}
.ipc-brand__text {
  display: flex;
  flex-direction: column;
  line-height: 1.15;
}
.ipc-brand__title {
  font-size: 1.0625rem;
  font-weight: 700;
  color: var(--ipc-ink);
  letter-spacing: -.01em;
}
.ipc-brand__sub {
  font-size: .6875rem;
  font-weight: 600;
  letter-spacing: .11em;
  text-transform: uppercase;
  color: var(--ipc-blue-600);
}

.banner .navbar-nav .nav-link {
  font-weight: 600;
  font-size: .9375rem;
  color: var(--ipc-ink);
  border-radius: var(--ipc-r-pill);
  padding: .45rem .85rem;
  transition: background-color var(--ipc-transition), color var(--ipc-transition);
}
.banner .navbar-nav .nav-link:hover,
.banner .navbar-nav .nav-link:focus-visible,
.banner .navbar-nav .show > .nav-link {
  background: var(--ipc-blue-50);
  color: var(--ipc-blue-700);
}

/* "Entrar" / cuenta destacado como accion principal */
.banner .navbar-nav .logoutOptions .nav-link,
.banner .navbar-nav .account .nav-link,
.banner .navbar-nav li:last-child > .nav-link.icon-link {
  background: var(--ipc-blue-600);
  color: #fff;
}
.banner .navbar-nav .account .nav-link:hover,
.banner .navbar-nav .account .nav-link:focus-visible,
.banner .navbar-nav li:last-child > .nav-link.icon-link:hover,
.banner .navbar-nav li:last-child > .nav-link.icon-link:focus-visible {
  background: var(--ipc-blue-700);
  color: #fff;
}

.banner .navbar-toggler {
  border: 1px solid var(--ipc-line);
  border-radius: var(--ipc-r-sm);
  color: var(--ipc-blue-700);
  padding: .35rem .6rem;
}

.dropdown-menu {
  border: 1px solid var(--ipc-line);
  border-radius: var(--ipc-r-md);
  box-shadow: var(--ipc-sh-3);
  padding: .4rem;
}
.dropdown-item { border-radius: var(--ipc-r-sm); font-weight: 500; padding: .5rem .7rem; }
.dropdown-item:hover, .dropdown-item:focus { background: var(--ipc-blue-50); color: var(--ipc-blue-800); }

/* --- Buscador de las paginas internas --- */
.search.container.navbar {
  background: transparent;
  padding: 0 var(--bs-gutter-x, .75rem) .9rem;
}
.search.container.navbar .searchbox { width: 100%; }

.searchForm { width: 100%; }

.searchForm-inputs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .4rem;
}
/* El CSS base deja .searchForm-query como inline-block sin ancho, de modo que
   el input conservaba su tamano intrinseco (~20 caracteres) por mucho que
   creciera el contenedor. Se estira el input al ancho disponible. */
.searchForm-query {
  flex: 1 1 18rem;
  min-width: 0;
  position: relative;
  display: block;
}
.searchForm-query .form-control,
.searchForm-query #searchForm_lookfor {
  width: 100%;
  min-width: 0;
}
.searchForm-inputs .form-control,
.searchForm-inputs .form-select { height: 46px; }
.searchForm-inputs .btn-primary { height: 46px; padding-inline: 1.35rem; white-space: nowrap; }
.searchForm-inputs .advanced-search-link { white-space: nowrap; }

/* Grupo unificado tipo "pildora": caja + selector + boton dentro de un
   mismo contenedor con borde, en las paginas internas. */
.search.container.navbar .searchForm-inputs {
  background: var(--ipc-surface);
  border: 1px solid var(--ipc-line);
  border-radius: var(--ipc-r-xl);
  box-shadow: var(--ipc-sh-1);
  padding: .3rem .35rem .3rem .55rem;
}
.search.container.navbar .searchForm-inputs .form-control,
.search.container.navbar .searchForm-inputs .form-select {
  border-color: transparent;
  background: transparent;
  box-shadow: none;
}
.search.container.navbar .searchForm-inputs .form-control:focus,
.search.container.navbar .searchForm-inputs .form-select:focus {
  background: transparent;
  border-color: transparent;
  box-shadow: 0 0 0 3px rgba(0, 95, 171, .18);
  border-radius: var(--ipc-r-md);
}
.search.container.navbar .searchForm-inputs .form-select {
  border-left: 1px solid var(--ipc-line);
  border-radius: 0;
  max-width: 13rem;
}
.search.container.navbar .searchForm-inputs .advanced-search-link {
  order: 10;
}

/* Pestanas de busqueda */
.searchForm .nav-tabs { border-bottom: 0; gap: .3rem; margin-bottom: .6rem; }
.searchForm .nav-tabs .nav-link {
  border: 1px solid var(--ipc-line);
  border-radius: var(--ipc-r-pill);
  background: var(--ipc-surface);
  color: var(--ipc-body);
  font-weight: 600;
  font-size: .875rem;
  padding: .3rem .9rem;
}
.searchForm .nav-tabs .nav-link.active {
  background: var(--ipc-blue-600);
  border-color: var(--ipc-blue-600);
  color: #fff;
}

/* Migas de pan */
.breadcrumbs { background: transparent; }
.breadcrumbs .breadcrumb {
  margin: 0;
  padding: .85rem 0 0;
  font-size: .875rem;
  background: transparent;
}
.breadcrumb-item + .breadcrumb-item::before { color: var(--ipc-muted); }
.breadcrumb-item.active { color: var(--ipc-muted); }

/* ============================================================
   6. PORTADA: HERO Y BLOQUES DE COLECCIONES
   ============================================================ */

.searchHomeContent {
  position: relative;
  isolation: isolate;
  margin: 0 calc(50% - 50vw);
  padding: clamp(2.75rem, 1.5rem + 5vw, 5.5rem) 1.25rem clamp(3rem, 2rem + 4vw, 5rem);
  background:
    radial-gradient(1100px 520px at 12% -10%, rgba(2, 114, 190, .55), transparent 62%),
    radial-gradient(900px 480px at 92% 8%, rgba(211, 6, 108, .30), transparent 62%),
    linear-gradient(135deg, var(--ipc-blue-900) 0%, var(--ipc-blue-700) 48%, var(--ipc-blue-600) 100%);
  color: #fff;
  overflow: hidden;
}

/* Trama sutil de "lomos de libros" -- guino bibliotecario sin recurrir a
   fotografia, para que la portada cargue liviana. */
.searchHomeContent::before {
  content: '';
  position: absolute;
  inset: auto 0 0 0;
  height: 168px;
  z-index: -1;
  opacity: .16;
  background-image: repeating-linear-gradient(
    90deg,
    rgba(255, 255, 255, .9) 0 3px,
    transparent 3px 11px,
    rgba(255, 255, 255, .55) 11px 16px,
    transparent 16px 27px,
    rgba(255, 255, 255, .75) 27px 31px,
    transparent 31px 46px
  );
  mask-image: linear-gradient(to top, #000 0%, transparent 100%);
  -webkit-mask-image: linear-gradient(to top, #000 0%, transparent 100%);
}

/* Halo de luz superior */
.searchHomeContent::after {
  content: '';
  position: absolute;
  z-index: -1;
  top: -55%;
  left: 50%;
  width: min(1200px, 120%);
  aspect-ratio: 2 / 1;
  transform: translateX(-50%);
  background: radial-gradient(closest-side, rgba(255, 255, 255, .16), transparent 70%);
  pointer-events: none;
}

.ipc-hero {
  max-width: 940px;
  margin-inline: auto;
  text-align: center;
}
.ipc-hero__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .3rem .9rem;
  margin-bottom: 1.1rem;
  border: 1px solid rgba(255, 255, 255, .28);
  border-radius: var(--ipc-r-pill);
  background: rgba(255, 255, 255, .1);
  backdrop-filter: blur(6px);
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .95);
}
.ipc-hero__title {
  color: #fff;
  font-size: clamp(1.9rem, 1.2rem + 2.8vw, 3.15rem);
  font-weight: 800;
  letter-spacing: -.03em;
  line-height: 1.08;
  margin: 0 0 .75rem;
  text-wrap: balance;
}
.ipc-hero__title em {
  font-style: normal;
  color: var(--ipc-amber);
}
.ipc-hero__lead {
  max-width: 44rem;
  margin: 0 auto clamp(1.5rem, 1rem + 1.5vw, 2.25rem);
  font-size: clamp(1rem, .95rem + .3vw, 1.15rem);
  color: rgba(255, 255, 255, .88);
  text-wrap: pretty;
}

/* Caja de busqueda protagonista */
.searchHomeContent .searchForm {
  max-width: 940px;
  margin-inline: auto;
  text-align: start;
}
.searchHomeContent .searchForm-inputs {
  background: #fff;
  border-radius: var(--ipc-r-xl);
  box-shadow: var(--ipc-sh-hero);
  padding: .45rem .5rem .45rem .85rem;
  gap: .3rem;
}
.searchHomeContent .searchForm-inputs .form-control,
.searchHomeContent .searchForm-inputs .form-select {
  height: 54px;
  width: 100%;
  border-color: transparent;
  background: transparent;
  box-shadow: none;
  font-size: 1.0625rem;
}
.searchHomeContent .searchForm-inputs .form-select {
  border-left: 1px solid var(--ipc-line);
  border-radius: 0;
  max-width: 14rem;
  font-size: .9375rem;
  color: var(--ipc-body);
}
.searchHomeContent .searchForm-inputs .btn-primary {
  height: 46px;
  border-radius: var(--ipc-r-pill);
  padding-inline: 1.6rem;
}
.searchHomeContent .searchForm-inputs .advanced-search-link {
  order: 10;
  color: #fff;
  opacity: .92;
  text-decoration: underline;
}
.searchHomeContent .searchForm-inputs .advanced-search-link:hover { color: #fff; opacity: 1; }
.searchHomeContent .nav-tabs { justify-content: center; }
.searchHomeContent .nav-tabs .nav-link {
  background: rgba(255, 255, 255, .12);
  border-color: rgba(255, 255, 255, .3);
  color: #fff;
}
.searchHomeContent .nav-tabs .nav-link.active {
  background: #fff;
  border-color: #fff;
  color: var(--ipc-blue-800);
}

/* Atajos bajo el buscador */
.ipc-hero__shortcuts {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .5rem;
  margin-top: 1.4rem;
  list-style: none;
  padding: 0;
}
.ipc-hero__shortcuts a {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  padding: .42rem 1rem;
  border: 1px solid rgba(255, 255, 255, .3);
  border-radius: var(--ipc-r-pill);
  background: rgba(255, 255, 255, .08);
  color: #fff;
  font-size: .875rem;
  font-weight: 600;
  text-decoration: none;
  transition: background-color var(--ipc-transition), border-color var(--ipc-transition), transform var(--ipc-transition);
}
.ipc-hero__shortcuts a:hover,
.ipc-hero__shortcuts a:focus-visible {
  background: rgba(255, 255, 255, .2);
  border-color: rgba(255, 255, 255, .55);
  color: #fff;
  transform: translateY(-1px);
}

/* --- Secciones de la portada --- */
.ipc-home {
  padding-inline: calc(var(--bs-gutter-x, 1.5rem) * .5);
  padding-bottom: 3rem;
}

.ipc-section { margin-top: clamp(2.25rem, 1.5rem + 2.5vw, 3.5rem); }
.ipc-section__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 1.35rem;
}
.ipc-section__title {
  margin: 0;
  font-size: clamp(1.3rem, 1.1rem + .7vw, 1.65rem);
  font-weight: 700;
  letter-spacing: -.02em;
}
.ipc-section__title::after {
  content: '';
  display: block;
  width: 44px;
  height: 4px;
  margin-top: .55rem;
  border-radius: var(--ipc-r-pill);
  background: linear-gradient(90deg, var(--ipc-blue-600), var(--ipc-magenta));
}
.ipc-section__lead {
  margin: 0;
  color: var(--ipc-muted);
  font-size: .9375rem;
  max-width: 34rem;
}

/* Rejilla de colecciones */
.ipc-grid {
  display: grid;
  gap: 1.1rem;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}

.ipc-card {
  display: flex;
  flex-direction: column;
  background: var(--ipc-surface);
  border: 1px solid var(--ipc-line);
  border-radius: var(--ipc-r-lg);
  padding: 1.35rem 1.35rem 1.15rem;
  box-shadow: var(--ipc-sh-1);
  position: relative;
  overflow: hidden;
  transition: transform var(--ipc-transition), box-shadow var(--ipc-transition), border-color var(--ipc-transition);
}
.ipc-card::before {
  content: '';
  position: absolute;
  inset: 0 0 auto 0;
  height: 4px;
  background: var(--ipc-accent, var(--ipc-blue-600));
  opacity: 0;
  transition: opacity var(--ipc-transition);
}
.ipc-card:hover,
.ipc-card:focus-within {
  transform: translateY(-3px);
  box-shadow: var(--ipc-sh-3);
  border-color: var(--ipc-blue-200);
}
.ipc-card:hover::before,
.ipc-card:focus-within::before { opacity: 1; }

.ipc-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  margin-bottom: .9rem;
  border-radius: var(--ipc-r-md);
  background: color-mix(in srgb, var(--ipc-accent, var(--ipc-blue-600)) 14%, #fff);
  /* Los acentos claros (p. ej. el cyan de Salud) no contrastan sobre un fondo
     casi blanco: se oscurecen hacia el azul profundo institucional. */
  color: color-mix(in srgb, var(--ipc-accent, var(--ipc-blue-600)) 72%, #00243F);
  font-size: 1.15rem;
}
.ipc-card__title {
  margin: 0 0 .2rem;
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--ipc-ink);
}
.ipc-card__desc {
  margin: 0 0 1rem;
  font-size: .875rem;
  color: var(--ipc-muted);
}
.ipc-card__links {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
  margin-top: auto;
}
.ipc-card__links a {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .32rem .8rem;
  border-radius: var(--ipc-r-pill);
  background: var(--ipc-blue-50);
  border: 1px solid transparent;
  color: var(--ipc-blue-800);
  font-size: .8125rem;
  font-weight: 600;
  text-decoration: none;
  transition: background-color var(--ipc-transition), border-color var(--ipc-transition), color var(--ipc-transition);
}
.ipc-card__links a:hover,
.ipc-card__links a:focus-visible {
  background: color-mix(in srgb, var(--ipc-accent, var(--ipc-blue-600)) 14%, #fff);
  border-color: color-mix(in srgb, var(--ipc-accent, var(--ipc-blue-600)) 35%, #fff);
  color: color-mix(in srgb, var(--ipc-accent, var(--ipc-blue-600)) 40%, #00243F);
}

/* Bloque de ayuda / servicios */
.ipc-help {
  display: grid;
  gap: 1.1rem;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}
.ipc-help__panel {
  background: linear-gradient(160deg, var(--ipc-blue-50), var(--ipc-surface) 65%);
  border: 1px solid var(--ipc-line);
  border-radius: var(--ipc-r-lg);
  padding: 1.4rem;
}
.ipc-help__panel h3 {
  display: flex;
  align-items: center;
  gap: .55rem;
  margin: 0 0 .85rem;
  font-size: 1.05rem;
}
.ipc-help__panel h3 .icon { color: var(--ipc-blue-600); }
.ipc-help__panel ul { list-style: none; margin: 0; padding: 0; }
.ipc-help__panel li + li { margin-top: .1rem; }
.ipc-help__panel li a {
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: .45rem .6rem;
  border-radius: var(--ipc-r-sm);
  color: var(--ipc-blue-800);
  font-weight: 600;
  font-size: .9375rem;
  text-decoration: none;
  transition: background-color var(--ipc-transition), padding-inline-start var(--ipc-transition);
}
.ipc-help__panel li a::before {
  content: '';
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--ipc-magenta);
  flex: 0 0 auto;
}
.ipc-help__panel li a:hover,
.ipc-help__panel li a:focus-visible {
  background: #fff;
  box-shadow: var(--ipc-sh-1);
  color: var(--ipc-blue-900);
}

/* Banda de cierre con llamado a la accion */
.ipc-cta {
  margin-top: clamp(2.25rem, 1.5rem + 2.5vw, 3.5rem);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem;
  padding: 1.75rem clamp(1.25rem, 1rem + 1.5vw, 2.25rem);
  border-radius: var(--ipc-r-lg);
  background: linear-gradient(120deg, var(--ipc-blue-900), var(--ipc-blue-600) 65%, var(--ipc-accent-3));
  color: #fff;
  box-shadow: var(--ipc-sh-2);
}
.ipc-cta h2 { color: #fff; margin: 0 0 .3rem; font-size: 1.3rem; }
.ipc-cta p { margin: 0; color: rgba(255, 255, 255, .85); font-size: .9375rem; }
.ipc-cta .btn {
  background: #fff;
  color: var(--ipc-blue-800);
  border: 0;
  font-weight: 700;
  padding: .6rem 1.4rem;
}
.ipc-cta .btn:hover { background: var(--ipc-amber); color: var(--ipc-blue-900); }

/* ============================================================
   7. RESULTADOS Y FACETAS
   ============================================================ */

.search-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  padding-bottom: .9rem;
  margin-bottom: 1.1rem;
  border-bottom: 1px solid var(--ipc-line);
}
.search-stats {
  font-size: .9375rem;
  color: var(--ipc-muted);
}
.search-stats strong { color: var(--ipc-ink); font-weight: 700; }
.search-controls { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }

/* Filtros activos como chips */
.filters .filter-value,
.active-filters .filter-value,
.search-filters .filter-value {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  background: var(--ipc-blue-50);
  border: 1px solid var(--ipc-blue-200);
  border-radius: var(--ipc-r-pill);
  padding: .2rem .7rem;
  font-size: .8125rem;
  color: var(--ipc-blue-900);
}

/* --- Lista de resultados como tarjetas --- */
.record-list { padding-left: 0; list-style: none; }

.record-list > .result {
  position: relative;
  display: flex;
  gap: .75rem;
  background: var(--ipc-surface);
  border: 1px solid var(--ipc-line);
  border-radius: var(--ipc-r-md);
  padding: 1rem 1.1rem;
  margin-bottom: .8rem;
  transition: border-color var(--ipc-transition), box-shadow var(--ipc-transition), transform var(--ipc-transition);
}
.record-list > .result:hover {
  border-color: var(--ipc-blue-200);
  box-shadow: var(--ipc-sh-2);
}
.record-list > .result .record-number {
  color: var(--ipc-muted);
  font-size: .8125rem;
  font-weight: 700;
  min-width: 1.75rem;
  padding-top: .15rem;
}

.result .media-body .result-body > h2 {
  font-size: 1.075rem;
  line-height: 1.35;
  margin: 0 0 .35rem;
}
.result .title {
  color: var(--ipc-blue-800);
  font-weight: 700;
  text-decoration: none;
}
.result .title:hover,
.result .title:focus-visible { color: var(--ipc-blue-900); text-decoration: underline; }
.result .authors {
  display: block;
  font-size: .875rem;
  font-weight: 500;
  color: var(--ipc-muted);
  margin-top: .15rem;
}
.result .authors a { color: var(--ipc-muted); }
.result .authors a:hover { color: var(--ipc-blue-700); }
.result .result-formats,
.result .format {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
}
.result .callnumber,
.result .result-details { font-size: .875rem; color: var(--ipc-muted); }

/* Portadas */
.result .media-left img,
.result .media-right img,
.recordcover {
  border-radius: var(--ipc-r-sm);
  box-shadow: var(--ipc-sh-1);
  background: var(--ipc-blue-50);
}

/* Distintivos de disponibilidad */
.status .text-success,
.availability-status.available,
.text-success { color: var(--ipc-green) !important; font-weight: 600; }
.status .text-danger,
.availability-status.unavailable,
.text-danger { color: var(--ipc-magenta) !important; font-weight: 600; }

/* --- Barra lateral de facetas --- */
.sidebar { padding-top: .25rem; }

.sidebar .facet-group {
  background: var(--ipc-surface);
  border: 1px solid var(--ipc-line);
  border-radius: var(--ipc-r-md);
  margin-bottom: .8rem;
  overflow: hidden;
}
.sidebar .facet-group > .facet-title { margin: 0; }
.sidebar .facet-group .title,
.sidebar .facet-group > .facet-title > .title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
  width: 100%;
  background: transparent;
  border: 0;
  padding: .8rem 1rem;
  font-size: .9375rem;
  font-weight: 700;
  color: var(--ipc-ink);
  text-align: start;
}
.sidebar .facet-group .title:hover { background: var(--ipc-blue-50); }

.sidebar .facet-group .facet-list,
.sidebar .facet-group .list-group { padding: .25rem .5rem .6rem; }

.sidebar .facet,
.sidebar .facet-list .facet-value,
.sidebar a.facet {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
  padding: .38rem .55rem;
  border-radius: var(--ipc-r-sm);
  color: var(--ipc-body);
  font-size: .875rem;
  text-decoration: none;
  border: 0;
  background: transparent;
}
.sidebar .facet:hover,
.sidebar a.facet:hover,
.sidebar .facet:focus-visible {
  background: var(--ipc-blue-50);
  color: var(--ipc-blue-900);
}
.sidebar .facet.active,
.sidebar .facet[aria-selected="true"] {
  background: var(--ipc-blue-100);
  color: var(--ipc-blue-900);
  font-weight: 700;
}
.sidebar .badge,
.sidebar .facet .badge {
  background: var(--ipc-line-soft);
  color: var(--ipc-muted);
  font-size: .6875rem;
  font-weight: 700;
}

/* Paginacion */
.pagination { gap: .25rem; }
.pagination .page-link {
  border: 1px solid var(--ipc-line);
  border-radius: var(--ipc-r-sm);
  color: var(--ipc-blue-800);
  font-weight: 600;
  min-width: 40px;
  text-align: center;
}
.pagination .page-link:hover { background: var(--ipc-blue-50); border-color: var(--ipc-blue-200); }
.pagination .page-item.active .page-link {
  background: var(--ipc-blue-600);
  border-color: var(--ipc-blue-600);
  color: #fff;
}

/* ============================================================
   8. FICHA DE REGISTRO
   ============================================================ */

.record .media { gap: 1.5rem; }
.record h1 { margin-bottom: .35rem; }

.record-tabs .nav-tabs { border-bottom: 1px solid var(--ipc-line); gap: .25rem; }
.record-tabs .nav-tabs .nav-link {
  border: 0;
  border-bottom: 3px solid transparent;
  border-radius: 0;
  color: var(--ipc-muted);
  font-weight: 600;
  padding: .65rem 1rem;
}
.record-tabs .nav-tabs .nav-link:hover { color: var(--ipc-blue-700); background: var(--ipc-blue-50); }
.record-tabs .nav-tabs .nav-link.active {
  color: var(--ipc-blue-800);
  border-bottom-color: var(--ipc-blue-600);
  background: transparent;
}
.record-tabs .tab-content { padding-top: 1.25rem; }

.table > :not(caption) > * > * { padding: .65rem .75rem; }
.table th { color: var(--ipc-ink); font-weight: 700; width: 30%; }
.table-striped > tbody > tr:nth-of-type(odd) > * { background-color: var(--ipc-blue-50); }

.toolbar,
.record-nav {
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
}

/* ============================================================
   9. PIE DE PAGINA
   ============================================================ */

footer.hidden-print {
  margin-top: 2rem;
  background: linear-gradient(180deg, var(--ipc-blue-900), #001A2E);
  color: rgba(255, 255, 255, .82);
}

.footer-container {
  display: grid;
  gap: 1.75rem;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  max-width: 1320px;
  margin-inline: auto;
  padding: 2.75rem 1.25rem 2rem;
}
.footer-column h2 {
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--ipc-amber);
  margin: 0 0 .9rem;
}
.footer-column ul { list-style: none; margin: 0; padding: 0; }
.footer-column li + li { margin-top: .1rem; }
.footer-column a {
  display: inline-block;
  padding: .22rem 0;
  color: rgba(255, 255, 255, .82);
  font-size: .9375rem;
  text-decoration: none;
}
.footer-column a:hover,
.footer-column a:focus-visible { color: #fff; text-decoration: underline; }

/* Columna de identidad institucional */
.ipc-footer-brand__logo {
  display: block;
  width: 168px;
  height: 53px;
  background: url('../images/ipchile-logo-white.png') left center / contain no-repeat;
  margin-bottom: 1rem;
}
.ipc-footer-brand p {
  font-size: .875rem;
  color: rgba(255, 255, 255, .7);
  margin: 0 0 .75rem;
  max-width: 30ch;
}
.ipc-footer-brand__meta {
  font-size: .8125rem;
  color: rgba(255, 255, 255, .55);
}

footer .poweredby {
  border-top: 1px solid rgba(255, 255, 255, .12);
  padding: 1rem 1.25rem 1.5rem;
  text-align: center;
  font-size: .8125rem;
  color: rgba(255, 255, 255, .55);
}
footer .poweredby a { color: rgba(255, 255, 255, .75); }

/* ============================================================
   10. UTILIDADES, ACCESIBILIDAD E IMPRESION
   ============================================================ */

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

/* Respetar la preferencia del sistema de movimiento reducido */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
  .ipc-card:hover,
  .ipc-hero__shortcuts a:hover { transform: none; }
}

/* Mas contraste si el usuario lo pide */
@media (prefers-contrast: more) {
  :root { --ipc-muted: #4A5763; --ipc-line: #A9B6C4; }
  .ipc-card { border-width: 2px; }
}

/* --- Responsive --- */
@media (max-width: 991.98px) {
  .banner .navbar-brand::before { width: 124px; height: 40px; }
  .ipc-brand__title { font-size: .95rem; }
}

@media (max-width: 767.98px) {
  .ipc-utilitybar__inner { justify-content: center; }
  .ipc-utilitybar__tag { display: none; }
  .banner .navbar-collapse {
    margin-top: .75rem;
    padding-top: .75rem;
    border-top: 1px solid var(--ipc-line);
  }
  .banner .navbar-nav { width: 100%; }
  .banner .navbar-nav .nav-link { padding-inline: .6rem; }
  .searchHomeContent .searchForm-inputs { padding: .6rem; }
  .searchHomeContent .searchForm-inputs > * { width: 100%; }
  .searchHomeContent .searchForm-inputs .form-select {
    max-width: none;
    border-left: 0;
    border-top: 1px solid var(--ipc-line);
    border-radius: 0;
  }
  .searchHomeContent .searchForm-inputs .btn-primary { width: 100%; }
  .searchHomeContent .searchForm-inputs .advanced-search-link { text-align: center; }
  .search.container.navbar .searchForm-inputs { border-radius: var(--ipc-r-md); padding: .5rem; }
  .search.container.navbar .searchForm-inputs > * { width: 100%; }
  .search.container.navbar .searchForm-inputs .form-select { max-width: none; border-left: 0; }
  .main .container { border-radius: 0; margin-top: 0; padding-inline: 1rem; }
  .ipc-cta { flex-direction: column; align-items: flex-start; }
}

@media print {
  .searchHomeContent, .ipc-utilitybar, .ipc-cta { background: none !important; color: #000 !important; }
  .main .container { box-shadow: none; border-radius: 0; }
}

/* Cabecera pegajosa: gana sombra al desplazar (clase puesta por ipchile.js) */
@media (min-width: 768px) {
  header.hidden-print {
    position: sticky;
    top: 0;
  }
}
header.hidden-print.ipc-header--scrolled {
  box-shadow: 0 1px 0 var(--ipc-line), 0 6px 20px rgba(14, 26, 38, .10);
}
header.hidden-print.ipc-header--scrolled .ipc-utilitybar { display: none; }
header.hidden-print.ipc-header--scrolled .banner.navbar {
  padding-top: .45rem;
  padding-bottom: .45rem;
}
header.hidden-print.ipc-header--scrolled .banner .navbar-brand::before {
  width: 118px;
  height: 38px;
  transition: width var(--ipc-transition), height var(--ipc-transition);
}

/* Detalles de cada ejemplar en la pestana de Existencias
   (codigo de barras, coleccion, tipo de item). */
.ipc-item-meta {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem .9rem;
  margin: .5rem 0 0;
  padding: .5rem .7rem;
  border-radius: var(--ipc-r-sm);
  background: var(--ipc-blue-50);
  font-size: .8125rem;
}
.ipc-item-meta dt {
  margin: 0;
  color: var(--ipc-muted);
  font-weight: 600;
}
.ipc-item-meta dt::after { content: ':'; }
.ipc-item-meta dd {
  margin: 0 .6rem 0 0;
  color: var(--ipc-ink);
  font-weight: 600;
}
.ipc-item-meta__barcode {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-weight: 500;
  letter-spacing: .02em;
}
