/*
 * Backend theme styling.
 *
 * - Global: makes default Bootstrap buttons a little smaller/softer so toolbars
 *   like the Libros index don't feel oversized.
 * - Biblioteca theme (data-theme-mode="biblioteca"): repaints contextual button
 *   colors with a warm, muted "library" palette (sage, dusty rose, parchment,
 *   ink blue...) instead of the default saturated Bootstrap colors.
 */

/* ---------- Global: slightly more compact buttons ---------- */
.btn {
    --bs-btn-padding-y: 0.3rem;
    --bs-btn-padding-x: 0.7rem;
    --bs-btn-font-size: 0.85rem;
    --bs-btn-border-radius: 0.375rem;
    font-weight: 500;
    letter-spacing: 0.1px;
}

.btn-lg {
    --bs-btn-padding-y: 0.45rem;
    --bs-btn-padding-x: 0.95rem;
    --bs-btn-font-size: 0.95rem;
}

.btn-sm {
    --bs-btn-padding-y: 0.2rem;
    --bs-btn-padding-x: 0.5rem;
    --bs-btn-font-size: 0.78rem;
}

/* Toolbar-ish button groups breathe a bit less */
.btn+.btn,
.btn-toolbar .btn {
    margin-left: 0.15rem;
}

/* ---------- Biblioteca theme: pastel / library palette ---------- */
:root[data-theme-mode="biblioteca"] {
    /* Library-inspired tokens */
    --biblio-ink: #4a6b8a;
    /* muted navy ink */
    --biblio-ink-hover: #3d5a75;
    --biblio-sage: #8aa884;
    /* sage green */
    --biblio-sage-hover: #6f8e69;
    --biblio-parchment: #d6b577;
    /* warm parchment / amber */
    --biblio-parchment-hover: #c09d5c;
    --biblio-terracotta: #c08478;
    /* dusty terracotta */
    --biblio-terracotta-hover: #a66a5e;
    --biblio-teal: #7ca9ad;
    /* muted teal */
    --biblio-teal-hover: #5f8f93;
    --biblio-kraft: #b8a88a;
    /* kraft paper */
    --biblio-kraft-hover: #9c8d70;
    --biblio-cream: #f5efe4;
    /* soft cream surface */
    --biblio-sidebar-tree-line: rgba(245, 239, 228, 0.18);

    /* La serifa queda reservada a la marca; el contenido hereda la sans global. */
    --biblio-font-display: 'Iowan Old Style', 'Palatino Linotype', Palatino, Georgia, 'Times New Roman', serif;

    /* Superficies papel (escala cálida) */
    --biblio-paper: #faf7ef;
    --biblio-paper-2: #f1ebdd;
    --biblio-paper-3: #ece4d1;
    --biblio-border-warm: #e0d8c4;

    /* Escala única de radios y foco (regla 6 de la auditoría) */
    --biblio-radius-sm: 6px;
    --biblio-radius: 8px;
    --biblio-radius-lg: 12px;
    --biblio-focus-ring: 0 0 0 0.16rem rgba(74, 107, 138, 0.2);
    --biblio-on-accent: #fff;
    /* Texto sobre pasteles: también supera 4,5:1 en hover/activo. */
    --biblio-on-sage: #172019;
    --biblio-on-terracotta: #0f0806;
    --biblio-on-teal: #102025;
    --biblio-on-kraft: #292318;
    --biblio-on-warning: #3b2e13;

    /* Remapeo de superficies Bootstrap a tonos papel para que body, cards,
       navbar, footer, inputs y dropdowns compartan la misma temperatura.
       Los subárboles con data-bs-theme="dark" (sidebar) no se ven afectados
       porque Bootstrap redefine estas variables a nivel de elemento. */
    --bs-body-bg: var(--biblio-paper);
    --bs-body-bg-rgb: 250, 247, 239;
    --bs-tertiary-bg: var(--biblio-paper-2);
    --bs-tertiary-bg-rgb: 241, 235, 221;
    --bs-secondary-bg: var(--biblio-paper-3);
    --bs-secondary-bg-rgb: 236, 228, 209;
    --bs-body-color: #2e3a45;
    --bs-body-color-rgb: 46, 58, 69;
}

/* btn-primary -> ink blue */
:root[data-theme-mode="biblioteca"] .btn-primary {
    --bs-btn-color: var(--biblio-on-accent);
    --bs-btn-bg: var(--biblio-ink);
    --bs-btn-border-color: var(--biblio-ink);
    --bs-btn-hover-color: var(--biblio-on-accent);
    --bs-btn-hover-bg: var(--biblio-ink-hover);
    --bs-btn-hover-border-color: var(--biblio-ink-hover);
    --bs-btn-active-color: var(--biblio-on-accent);
    --bs-btn-active-bg: var(--biblio-ink-hover);
    --bs-btn-active-border-color: var(--biblio-ink-hover);
    --bs-btn-disabled-color: var(--biblio-on-accent);
    --bs-btn-disabled-bg: var(--biblio-ink);
    --bs-btn-disabled-border-color: var(--biblio-ink);
}

/* btn-success -> sage */
:root[data-theme-mode="biblioteca"] .btn-success {
    --bs-btn-bg: var(--biblio-sage);
    --bs-btn-border-color: var(--biblio-sage);
    --bs-btn-hover-bg: var(--biblio-sage-hover);
    --bs-btn-hover-border-color: var(--biblio-sage-hover);
    --bs-btn-active-bg: var(--biblio-sage-hover);
    --bs-btn-active-border-color: var(--biblio-sage-hover);
    --bs-btn-disabled-bg: var(--biblio-sage);
    --bs-btn-disabled-border-color: var(--biblio-sage);
    --bs-btn-color: var(--biblio-on-sage);
    --bs-btn-hover-color: var(--biblio-on-sage);
    --bs-btn-active-color: var(--biblio-on-sage);
    --bs-btn-disabled-color: var(--biblio-on-sage);
}

/* btn-warning -> parchment amber */
:root[data-theme-mode="biblioteca"] .btn-warning {
    --bs-btn-bg: var(--biblio-parchment);
    --bs-btn-border-color: var(--biblio-parchment);
    --bs-btn-hover-bg: var(--biblio-parchment-hover);
    --bs-btn-hover-border-color: var(--biblio-parchment-hover);
    --bs-btn-active-bg: var(--biblio-parchment-hover);
    --bs-btn-active-border-color: var(--biblio-parchment-hover);
    --bs-btn-color: var(--biblio-on-warning);
    --bs-btn-hover-color: var(--biblio-on-warning);
    --bs-btn-active-color: var(--biblio-on-warning);
    --bs-btn-disabled-color: var(--biblio-on-warning);
}

/* btn-danger -> dusty terracotta */
:root[data-theme-mode="biblioteca"] .btn-danger {
    --bs-btn-bg: var(--biblio-terracotta);
    --bs-btn-border-color: var(--biblio-terracotta);
    --bs-btn-hover-bg: var(--biblio-terracotta-hover);
    --bs-btn-hover-border-color: var(--biblio-terracotta-hover);
    --bs-btn-active-bg: var(--biblio-terracotta-hover);
    --bs-btn-active-border-color: var(--biblio-terracotta-hover);
    --bs-btn-disabled-bg: var(--biblio-terracotta);
    --bs-btn-disabled-border-color: var(--biblio-terracotta);
    --bs-btn-color: var(--biblio-on-terracotta);
    --bs-btn-hover-color: var(--biblio-on-terracotta);
    --bs-btn-active-color: var(--biblio-on-terracotta);
    --bs-btn-disabled-color: var(--biblio-on-terracotta);
}

/* btn-info -> muted teal */
:root[data-theme-mode="biblioteca"] .btn-info {
    --bs-btn-bg: var(--biblio-teal);
    --bs-btn-border-color: var(--biblio-teal);
    --bs-btn-hover-bg: var(--biblio-teal-hover);
    --bs-btn-hover-border-color: var(--biblio-teal-hover);
    --bs-btn-active-bg: var(--biblio-teal-hover);
    --bs-btn-active-border-color: var(--biblio-teal-hover);
    --bs-btn-color: var(--biblio-on-teal);
    --bs-btn-hover-color: var(--biblio-on-teal);
    --bs-btn-active-color: var(--biblio-on-teal);
    --bs-btn-disabled-color: var(--biblio-on-teal);
}

/* btn-secondary -> kraft */
:root[data-theme-mode="biblioteca"] .btn-secondary {
    --bs-btn-bg: var(--biblio-kraft);
    --bs-btn-border-color: var(--biblio-kraft);
    --bs-btn-hover-bg: var(--biblio-kraft-hover);
    --bs-btn-hover-border-color: var(--biblio-kraft-hover);
    --bs-btn-active-bg: var(--biblio-kraft-hover);
    --bs-btn-active-border-color: var(--biblio-kraft-hover);
    --bs-btn-color: var(--biblio-on-kraft);
    --bs-btn-hover-color: var(--biblio-on-kraft);
    --bs-btn-active-color: var(--biblio-on-kraft);
    --bs-btn-disabled-color: var(--biblio-on-kraft);
}

/* Outline variants */
:root[data-theme-mode="biblioteca"] .btn-outline-primary {
    --bs-btn-color: var(--biblio-ink);
    --bs-btn-border-color: var(--biblio-ink);
    --bs-btn-hover-bg: var(--biblio-ink);
    --bs-btn-hover-border-color: var(--biblio-ink);
    --bs-btn-active-bg: var(--biblio-ink);
    --bs-btn-active-border-color: var(--biblio-ink);
}

:root[data-theme-mode="biblioteca"] .btn-outline-success {
    --bs-btn-color: #285b35;
    --bs-btn-border-color: var(--biblio-sage);
    --bs-btn-hover-color: var(--biblio-on-sage);
    --bs-btn-hover-bg: var(--biblio-sage);
    --bs-btn-hover-border-color: var(--biblio-sage);
    --bs-btn-active-color: var(--biblio-on-sage);
    --bs-btn-active-bg: var(--biblio-sage);
    --bs-btn-active-border-color: var(--biblio-sage);
}

:root[data-theme-mode="biblioteca"] .btn-outline-danger {
    --bs-btn-color: #8b352c;
    --bs-btn-border-color: var(--biblio-terracotta);
    --bs-btn-hover-color: var(--biblio-on-terracotta);
    --bs-btn-hover-bg: var(--biblio-terracotta);
    --bs-btn-hover-border-color: var(--biblio-terracotta);
    --bs-btn-active-color: var(--biblio-on-terracotta);
    --bs-btn-active-bg: var(--biblio-terracotta);
    --bs-btn-active-border-color: var(--biblio-terracotta);
}

:root[data-theme-mode="biblioteca"] .btn-outline-warning {
    --bs-btn-color: #715015;
    --bs-btn-border-color: var(--biblio-parchment);
    --bs-btn-hover-color: var(--biblio-on-warning);
    --bs-btn-hover-bg: var(--biblio-parchment);
    --bs-btn-hover-border-color: var(--biblio-parchment);
    --bs-btn-active-color: var(--biblio-on-warning);
    --bs-btn-active-bg: var(--biblio-parchment);
    --bs-btn-active-border-color: var(--biblio-parchment);
}

:root[data-theme-mode="biblioteca"] .btn-outline-info {
    --bs-btn-color: #285d65;
    --bs-btn-border-color: var(--biblio-teal);
    --bs-btn-hover-color: var(--biblio-on-teal);
    --bs-btn-hover-bg: var(--biblio-teal);
    --bs-btn-hover-border-color: var(--biblio-teal);
    --bs-btn-active-color: var(--biblio-on-teal);
    --bs-btn-active-bg: var(--biblio-teal);
    --bs-btn-active-border-color: var(--biblio-teal);
}

:root[data-theme-mode="biblioteca"] .btn-outline-secondary {
    --bs-btn-color: #534831;
    --bs-btn-border-color: var(--biblio-kraft);
    --bs-btn-hover-color: var(--biblio-on-kraft);
    --bs-btn-hover-bg: var(--biblio-kraft);
    --bs-btn-hover-border-color: var(--biblio-kraft);
    --bs-btn-active-color: var(--biblio-on-kraft);
    --bs-btn-active-bg: var(--biblio-kraft);
    --bs-btn-active-border-color: var(--biblio-kraft);
}

:root[data-theme-mode="biblioteca"] .btn-default {
    --bs-btn-color: var(--biblio-ink);
    --bs-btn-bg: #fff;
    --bs-btn-border-color: #cfd8df;
    --bs-btn-hover-color: var(--biblio-ink-hover);
    --bs-btn-hover-bg: #edf3f7;
    --bs-btn-hover-border-color: #bacad3;
    --bs-btn-active-color: var(--biblio-ink-hover);
    --bs-btn-active-bg: #e4edf2;
    --bs-btn-active-border-color: #b4c4ce;
}

/* ---------- Control de accesos (sidebar widget) ---------- */
.control-accesos-card {
    background: rgba(255, 255, 255, 0.06);
    backdrop-filter: blur(2px);
    border-radius: 0.6rem;
}

.control-accesos-title {
    font-size: 0.72rem;
    letter-spacing: 0.5px;
    color: rgba(255, 255, 255, 0.75);
    margin-bottom: 0.5rem !important;
}

.control-accesos-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.35rem;
    width: 100%;
}

.control-accesos-grid .btn {
    --bs-btn-padding-y: 0.3rem;
    --bs-btn-padding-x: 0.4rem;
    --bs-btn-font-size: 0.78rem;
    min-width: 0;
    width: 100%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    column-gap: 0.25rem;
    text-align: center;
}

.control-accesos-grid .btn.control-accesos-btn-disabled,
.control-accesos-grid .btn:disabled {
    opacity: 0.32;
    filter: grayscale(35%);
    cursor: not-allowed;
}

.control-accesos-total {
    color: rgba(255, 255, 255, 0.8);
    padding-top: 0.4rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.control-accesos-total strong {
    color: #fff;
}

/* Biblioteca theme: softer card surface */
:root[data-theme-mode="biblioteca"] .control-accesos-card {
    background: rgba(255, 255, 255, 0.08);
}

/* Top navbar: match the grid header (ink blue) in biblioteca mode */
:root[data-theme-mode="biblioteca"] .app-header {
    background-color: var(--biblio-ink) !important;
    --bs-navbar-color: rgba(255, 255, 255, 0.85);
    --bs-navbar-hover-color: #fff;
    --bs-navbar-active-color: #fff;
    --bs-navbar-brand-color: #fff;
    --bs-navbar-brand-hover-color: #fff;
    --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.3);
    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}

:root[data-theme-mode="biblioteca"] .app-header .nav-link,
:root[data-theme-mode="biblioteca"] .app-header .navbar-brand,
:root[data-theme-mode="biblioteca"] .app-header .btn-link {
    color: rgba(255, 255, 255, 0.9);
}

:root[data-theme-mode="biblioteca"] .app-header .nav-link:hover,
:root[data-theme-mode="biblioteca"] .app-header .btn-link:hover {
    color: #fff;
}

:root[data-theme-mode="biblioteca"] .app-header .dropdown-menu {
    --bs-dropdown-link-color: #333;
}

/* GridView: misma superficie suave y borde de tabla que el resto del backend. */
:root[data-theme-mode="biblioteca"] .grid-view>.card,
:root[data-theme-mode="biblioteca"] .kv-grid-container,
:root[data-theme-mode="biblioteca"] .kv-grid-container>.card,
:root[data-theme-mode="biblioteca"] .kv-grid-container>.panel {
    border-color: var(--bc-ui-table-border, var(--biblio-border)) !important;
}

:root[data-theme-mode="biblioteca"] .grid-view .panel-heading,
:root[data-theme-mode="biblioteca"] .grid-view .card-header,
:root[data-theme-mode="biblioteca"] .kv-grid-container .panel-heading,
:root[data-theme-mode="biblioteca"] .kv-grid-container .card-header {
    background-color: var(--bc-ui-soft, var(--biblio-paper-2)) !important;
    border-color: var(--bc-ui-table-border, var(--biblio-border)) !important;
    color: var(--bc-ui-text, var(--biblio-text)) !important;
}

/* GridView: cabeceras compactas con el mismo fondo suave del sistema común. */
:root[data-theme-mode="biblioteca"] .grid-view table>thead>tr>th,
:root[data-theme-mode="biblioteca"] .kv-grid-table>thead>tr>th,
:root[data-theme-mode="biblioteca"] .table>thead>tr>th {
    background-color: var(--bc-ui-soft, var(--biblio-paper-2)) !important;
    color: var(--bc-ui-text, var(--biblio-text)) !important;
    font-size: 0.76rem;
    font-weight: 800;
    letter-spacing: 0.025em;
    border-color: var(--bc-ui-table-border, var(--biblio-border)) !important;
    border-bottom: 2px solid var(--bc-ui-accent, var(--biblio-ink)) !important;
    vertical-align: middle;
    padding: 0.58rem 0.55rem;
    text-transform: uppercase;
}

:root[data-theme-mode="biblioteca"] .grid-view table>thead>tr>th a,
:root[data-theme-mode="biblioteca"] .kv-grid-table>thead>tr>th a,
:root[data-theme-mode="biblioteca"] .table>thead>tr>th a {
    color: var(--bc-ui-text, var(--biblio-text)) !important;
    text-decoration: none;
}

:root[data-theme-mode="biblioteca"] .grid-view table>thead>tr>th a:hover,
:root[data-theme-mode="biblioteca"] .kv-grid-table>thead>tr>th a:hover,
:root[data-theme-mode="biblioteca"] .table>thead>tr>th a:hover {
    color: var(--biblio-ink) !important;
    text-decoration: underline;
}

/* Segunda fila de thead (filtros) un pelín más clara para distinguirse */
:root[data-theme-mode="biblioteca"] .grid-view table>thead>tr.filters>td,
:root[data-theme-mode="biblioteca"] .grid-view table>thead>tr:nth-child(2)>td,
:root[data-theme-mode="biblioteca"] .kv-grid-table>thead>tr.filters>td {
    background-color: var(--bc-ui-soft, var(--biblio-paper-2)) !important;
    border-bottom: 1px solid var(--bc-ui-table-border, var(--biblio-border)) !important;
}

/* Celdas de cabecera con rowspan (p.ej. "Acciones"): centrado vertical para que
   el título quede a media altura de la celda fusionada y se vea uniforme con
   las columnas de la izquierda, sin bordes raros ni divisiones */
:root[data-theme-mode="biblioteca"] .grid-view table>thead>tr>th[rowspan],
:root[data-theme-mode="biblioteca"] .kv-grid-table>thead>tr>th[rowspan] {
    vertical-align: middle !important;
    background-color: var(--bc-ui-soft, var(--biblio-paper-2)) !important;
}

/* Barra de herramientas Kartik (export, fullscreen, filtros, sort, menú) en
   la misma superficie suave para dar uniformidad con las cabeceras. */
:root[data-theme-mode="biblioteca"] .kv-panel-before,
:root[data-theme-mode="biblioteca"] .kv-panel-after,
:root[data-theme-mode="biblioteca"] .grid-view .kv-panel-before,
:root[data-theme-mode="biblioteca"] .grid-view .kv-panel-after {
    background-color: var(--bc-ui-soft, var(--biblio-paper-2)) !important;
    border-top: 1px solid var(--bc-ui-table-border, var(--biblio-border)) !important;
    border-bottom: 1px solid var(--bc-ui-table-border, var(--biblio-border)) !important;
    padding: 0.55rem 0.75rem;
}

:root[data-theme-mode="biblioteca"] .kv-panel-before .summary,
:root[data-theme-mode="biblioteca"] .kv-panel-after .summary {
    color: #3d5a75;
}

/* Enlaces en color ink blue */
:root[data-theme-mode="biblioteca"] {
    --bs-link-color: var(--biblio-ink);
    --bs-link-hover-color: var(--biblio-ink-hover);
    --bs-link-color-rgb: 74, 107, 138;
    --bs-link-hover-color-rgb: 61, 90, 117;
}

:root[data-theme-mode="biblioteca"] a:not(.btn):not(.nav-link):not(.navbar-brand):not(.breadcrumb-item a):not(.dropdown-item) {
    color: var(--biblio-ink);
    text-decoration: none;
}

:root[data-theme-mode="biblioteca"] a:not(.btn):not(.nav-link):not(.navbar-brand):not(.dropdown-item):hover {
    color: var(--biblio-ink-hover);
    text-decoration: underline;
}

/* Badges follow the same palette in biblioteca mode */
:root[data-theme-mode="biblioteca"] .bg-primary {
    background-color: var(--biblio-ink) !important;
}

:root[data-theme-mode="biblioteca"] :is(.bg-success, .text-bg-success, .label-success) {
    background-color: var(--biblio-sage) !important;
    color: var(--biblio-on-sage) !important;
}

:root[data-theme-mode="biblioteca"] :is(.bg-warning, .text-bg-warning, .label-warning) {
    background-color: var(--biblio-parchment) !important;
    color: var(--biblio-on-warning) !important;
}

:root[data-theme-mode="biblioteca"] :is(.bg-danger, .text-bg-danger, .label-danger) {
    background-color: var(--biblio-terracotta) !important;
    color: var(--biblio-on-terracotta) !important;
}

:root[data-theme-mode="biblioteca"] :is(.bg-info, .text-bg-info, .label-info) {
    background-color: var(--biblio-teal) !important;
    color: var(--biblio-on-teal) !important;
}

/* ---------- Biblioteca design system: shared form/list components ---------- */
:root[data-theme-mode="biblioteca"] {
    --biblio-ink-soft: var(--biblio-paper-2);
    --biblio-teal-soft: #e6f0f1;
    --biblio-teal-softer: #f3f8f8;
    --biblio-sage-soft: #edf5ea;
    --biblio-kraft-soft: #f4efe3;
    --biblio-terracotta-soft: #f8ece9;
    --biblio-border: var(--biblio-border-warm);
    --biblio-border-strong: #cdbf9f;
    --biblio-surface: var(--biblio-paper);
    --biblio-surface-muted: var(--biblio-paper-2);
    --biblio-soft: var(--biblio-paper-2);
    --biblio-text: #1f2933;
    --biblio-muted: #5e6b78;
    --biblio-shadow-sm: 0 1px 4px rgba(70, 50, 25, 0.06);
    --biblio-shadow-md: 0 8px 24px rgba(70, 50, 25, 0.08);
}

.bc-form,
.libro-form-wrapper,
.biblioteca-form-wrapper,
.configuracion-form-wrapper {
    --bc-accent: var(--biblio-ink, #4a6b8a);
    --bc-accent-hover: var(--biblio-ink-hover, #3d5a75);
    --bc-accent-soft: var(--biblio-ink-soft, #edf3f7);
    --bc-section-bg: var(--bs-body-bg, #fff);
    --bc-section-border: var(--bs-border-color, #dee2e6);
    --bc-actionbar-bg: rgba(255, 255, 255, 0.96);
    --bc-actionbar-border: var(--bs-border-color, #dee2e6);
    color: var(--bs-body-color);
}

:root[data-theme-mode="biblioteca"] .bc-form,
:root[data-theme-mode="biblioteca"] .libro-form-wrapper,
:root[data-theme-mode="biblioteca"] .biblioteca-form-wrapper,
:root[data-theme-mode="biblioteca"] .configuracion-form-wrapper {
    --bc-accent: var(--biblio-ink);
    --bc-accent-hover: var(--biblio-ink-hover);
    --bc-accent-soft: var(--biblio-ink-soft);
    --bc-section-bg: var(--biblio-surface);
    --bc-section-border: var(--biblio-border);
    --bc-actionbar-bg: rgba(255, 255, 255, 0.96);
    --bc-actionbar-border: #e4e9ec;
}

.bc-actionbar,
.libro-form-wrapper .barra-acciones,
.biblioteca-form-wrapper .barra-acciones,
.configuracion-form-wrapper .barra-acciones {
    position: sticky;
    top: 0;
    z-index: 10;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    min-height: 48px;
    padding: 0.45rem 0;
    margin-bottom: 1rem;
    background: var(--bc-actionbar-bg);
    border-bottom: 1px solid var(--bc-actionbar-border);
    backdrop-filter: blur(6px);
}

.bc-actionbar>div:last-child {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    justify-content: flex-end;
}

.bc-section,
.bc-form .seccion-principal,
.libro-form-wrapper .seccion-principal,
.biblioteca-form-wrapper .seccion-principal,
.configuracion-form-wrapper .seccion-principal {
    border: 1px solid var(--bc-section-border) !important;
    border-left-width: 1px !important;
    border-radius: var(--bc-ui-radius, 8px) !important;
    background: var(--bc-section-bg) !important;
    box-shadow: var(--biblio-shadow-md, 0 8px 22px rgba(36, 49, 61, 0.06));
    margin-bottom: 0.9rem;
}

.bc-section>.card-header,
.bc-form .seccion-principal>.card-header,
.libro-form-wrapper .seccion-principal>.card-header,
.biblioteca-form-wrapper .seccion-principal>.card-header,
.configuracion-form-wrapper .seccion-principal>.card-header {
    min-height: 42px;
    padding: 0.55rem 0.85rem !important;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    background: var(--bc-ui-soft, var(--biblio-surface-muted, #f6f7f8)) !important;
    border-bottom: 1px solid var(--bc-ui-border, var(--bc-section-border)) !important;
    border-radius: calc(var(--bc-ui-radius, 8px) - 1px) calc(var(--bc-ui-radius, 8px) - 1px) 0 0 !important;
    color: var(--bc-ui-text, var(--biblio-text, #24313d)) !important;
    font-size: 0.95rem;
    font-weight: 700;
    letter-spacing: 0;
}

:is(.bc-section, .bc-form .seccion-principal, .libro-form-wrapper .seccion-principal, .biblioteca-form-wrapper .seccion-principal, .configuracion-form-wrapper .seccion-principal)>.card-header>i:first-of-type,
:is(.bc-section, .bc-form .seccion-principal, .libro-form-wrapper .seccion-principal, .biblioteca-form-wrapper .seccion-principal, .configuracion-form-wrapper .seccion-principal)>.card-header>:is(.card-title, h1, h2, h3, h4, h5, h6)>i:first-child {
    color: var(--bc-accent, var(--bc-ui-accent, var(--biblio-ink, #4a6b8a))) !important;
}

/* Iconos que identifican una tabla o sección. El selector se limita a la
   cabecera y al primer icono del título para no alterar acciones, estados ni
   mensajes contextuales que conservan su color semántico. */
:root[data-theme-mode] :is(.app-main .app-content, .modal) :is(.grid-view, .kv-grid-container, .bc-standard-grid) :is(.panel-title, .card-title, .kv-panel-title, .panel-heading-title)>i:first-child {
    color: var(--bc-ui-accent, var(--biblio-ink, #4a6b8a)) !important;
}

:root[data-theme-mode] .app-main .app-content .nav.bc-section-tabs .nav-link>i:first-child {
    color: var(--bc-ui-accent, var(--biblio-ink, #4a6b8a));
}

:root[data-theme-mode] .app-main .app-content .bc-list-toolbar__primary :is(h1, h2, h3, h4, h5, h6)>i:first-child {
    color: var(--bc-ui-accent, var(--biblio-ink, #4a6b8a));
}

.bc-section>.card-header small,
.bc-section>.card-header .bc-section-meta,
.bc-form .seccion-principal>.card-header small,
.libro-form-wrapper .seccion-principal>.card-header small,
.biblioteca-form-wrapper .seccion-principal>.card-header small,
.configuracion-form-wrapper .seccion-principal>.card-header small {
    color: var(--bc-ui-muted, var(--biblio-muted, #5f6f7a)) !important;
}

.bc-section>.card-header a:not(.btn),
.bc-form .seccion-principal>.card-header a:not(.btn),
.libro-form-wrapper .seccion-principal>.card-header a:not(.btn),
.biblioteca-form-wrapper .seccion-principal>.card-header a:not(.btn),
.configuracion-form-wrapper .seccion-principal>.card-header a:not(.btn) {
    color: var(--bc-ui-accent-hover, var(--biblio-ink-hover, #3d5a75)) !important;
    text-decoration: none;
}

.bc-section>.card-header a:not(.btn):hover,
.bc-form .seccion-principal>.card-header a:not(.btn):hover,
.libro-form-wrapper .seccion-principal>.card-header a:not(.btn):hover,
.biblioteca-form-wrapper .seccion-principal>.card-header a:not(.btn):hover,
.configuracion-form-wrapper .seccion-principal>.card-header a:not(.btn):hover {
    color: var(--bc-ui-accent, var(--biblio-ink, #4a6b8a)) !important;
    text-decoration: underline;
}

.bc-step,
.bc-section>.card-header .badge-paso,
.bc-form .seccion-principal>.card-header .badge-paso,
.libro-form-wrapper .seccion-principal>.card-header .badge-paso,
.biblioteca-form-wrapper .seccion-principal>.card-header .badge-paso,
.configuracion-form-wrapper .seccion-principal>.card-header .badge-paso {
    width: 24px;
    height: 24px;
    flex: 0 0 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--bc-accent-soft);
    color: var(--bc-accent-hover);
    font-size: 0.78rem;
    font-weight: 800;
}

.bc-section>.card-body,
.bc-form .seccion-principal>.card-body,
.libro-form-wrapper .seccion-principal>.card-body,
.biblioteca-form-wrapper .seccion-principal>.card-body,
.configuracion-form-wrapper .seccion-principal>.card-body {
    padding: 0.9rem 1rem 0.75rem;
}

.bc-section.is-danger,
.libro-form-wrapper .seccion-principal.seccion-estado {
    --bc-accent: var(--biblio-terracotta, #dc3545);
    --bc-accent-hover: var(--bc-ui-state-danger-text);
    --bc-accent-soft: var(--biblio-terracotta-soft, #f8d7da);
    border-left: 4px solid var(--bc-accent) !important;
}

.bc-section.is-muted,
.libro-form-wrapper .seccion-principal.seccion-portada {
    --bc-accent: var(--biblio-kraft, #6c757d);
    --bc-accent-hover: var(--bc-ui-state-muted-text);
    --bc-accent-soft: var(--biblio-kraft-soft, #f1f3f5);
}

.bc-section.is-success,
.libro-form-wrapper .seccion-principal.seccion-resumen {
    --bc-accent: var(--biblio-sage, #198754);
    --bc-accent-hover: var(--bc-ui-state-success-text);
    --bc-accent-soft: var(--biblio-sage-soft, #d1e7dd);
}

.bc-note,
.bc-form .alert-info,
.libro-form-wrapper .alert-info,
.biblioteca-form-wrapper .alert-info,
.configuracion-form-wrapper .alert-info {
    color: var(--bc-ui-state-info-text, #285d65);
    background: var(--bc-ui-state-info-bg, #e6f0f1);
    border: 1px solid var(--bc-ui-state-info-border, #b5cdd0);
    border-radius: var(--biblio-radius, 8px);
}

:root[data-theme-mode="biblioteca"] .bc-note,
:root[data-theme-mode="biblioteca"] .bc-form .alert-info,
:root[data-theme-mode="biblioteca"] .libro-form-wrapper .alert-info,
:root[data-theme-mode="biblioteca"] .biblioteca-form-wrapper .alert-info,
:root[data-theme-mode="biblioteca"] .configuracion-form-wrapper .alert-info {
    color: #245861;
    background: var(--biblio-teal-soft);
    border-color: #bfdadd;
}

.bc-help-panel {
    border: 1px solid var(--bc-section-border);
    border-radius: 8px;
    background: var(--biblio-surface-muted, #f8fafb);
    padding: 0.85rem;
    font-size: 0.9rem;
}

.bc-form .form-control,
.bc-form .form-select,
.libro-form-wrapper .form-control,
.libro-form-wrapper .form-select,
.biblioteca-form-wrapper .form-control,
.biblioteca-form-wrapper .form-select,
.configuracion-form-wrapper .form-control,
.configuracion-form-wrapper .form-select {
    border-color: #cfd8df;
    border-radius: 6px;
}

.bc-form .form-control:focus,
.bc-form .form-select:focus,
.libro-form-wrapper .form-control:focus,
.libro-form-wrapper .form-select:focus,
.biblioteca-form-wrapper .form-control:focus,
.biblioteca-form-wrapper .form-select:focus,
.configuracion-form-wrapper .form-control:focus,
.configuracion-form-wrapper .form-select:focus {
    border-color: var(--bc-accent);
    box-shadow: var(--biblio-focus-ring, 0 0 0 0.16rem rgba(74, 107, 138, 0.2));
}

.bc-form .select2-container .select2-selection,
:root[data-theme-mode="biblioteca"] .grid-view .select2-container .select2-selection,
:root[data-theme-mode="biblioteca"] .kv-grid-table .select2-container .select2-selection {
    min-height: 36px;
    border-color: #cfd8df !important;
    border-radius: 6px !important;
}

/* Select2: el CSS del widget trae fondo blanco fijo; se repinta con el
   mismo fondo papel que usan el resto de inputs (var(--bs-body-bg)). */
:root[data-theme-mode="biblioteca"] .select2-container .select2-selection {
    background-color: var(--bs-body-bg) !important;
}

:root[data-theme-mode="biblioteca"] .select2-container .select2-search--inline .select2-search__field {
    background-color: transparent;
}

.select2-container--open,
.select2-dropdown,
.daterangepicker,
.datepicker-dropdown {
    z-index: 2055 !important;
}

.bc-list-card,
.bc-list-card>.card-body,
.bc-list-card .kv-panel-before,
.bc-list-card .kv-panel-after {
    overflow: visible;
}

.bc-list-card .dropdown-menu,
:root[data-theme-mode="biblioteca"] .grid-view .dropdown-menu,
:root[data-theme-mode="biblioteca"] .kv-grid-table .dropdown-menu {
    z-index: 2050 !important;
}

.bc-form .select2-container--krajee-bs5 .select2-selection--multiple .select2-selection__choice,
.bc-form .select2-container--bootstrap5 .select2-selection--multiple .select2-selection__choice,
.bc-form .select2-container--default .select2-selection--multiple .select2-selection__choice {
    border-color: var(--bc-section-border);
    background: var(--bc-accent-soft);
    color: var(--bc-accent-hover);
    border-radius: 999px;
}

.bc-form .select2-container--krajee-bs5 .select2-selection__clear,
.bc-form .select2-container--bootstrap5 .select2-selection__clear,
.bc-form .select2-container--default .select2-selection__clear,
:root[data-theme-mode="biblioteca"] .select2-container--krajee-bs5 .select2-selection__clear,
:root[data-theme-mode="biblioteca"] .select2-container--bootstrap5 .select2-selection__clear,
:root[data-theme-mode="biblioteca"] .select2-container--default .select2-selection__clear,
.bc-form .select2-container--krajee-bs5 .select2-selection__choice__remove,
.bc-form .select2-container--bootstrap5 .select2-selection__choice__remove,
.bc-form .select2-container--default .select2-selection__choice__remove,
:root[data-theme-mode="biblioteca"] .select2-container--krajee-bs5 .select2-selection__choice__remove,
:root[data-theme-mode="biblioteca"] .select2-container--bootstrap5 .select2-selection__choice__remove,
:root[data-theme-mode="biblioteca"] .select2-container--default .select2-selection__choice__remove {
    color: #111827 !important;
    cursor: pointer;
    font-size: 16px;
    font-weight: 600;
}

.bc-form .select2-container--krajee-bs5 .select2-selection__clear:hover,
.bc-form .select2-container--bootstrap5 .select2-selection__clear:hover,
.bc-form .select2-container--default .select2-selection__clear:hover,
:root[data-theme-mode="biblioteca"] .select2-container--krajee-bs5 .select2-selection__clear:hover,
:root[data-theme-mode="biblioteca"] .select2-container--bootstrap5 .select2-selection__clear:hover,
:root[data-theme-mode="biblioteca"] .select2-container--default .select2-selection__clear:hover,
.bc-form .select2-container--krajee-bs5 .select2-selection__choice__remove:hover,
.bc-form .select2-container--bootstrap5 .select2-selection__choice__remove:hover,
.bc-form .select2-container--default .select2-selection__choice__remove:hover,
:root[data-theme-mode="biblioteca"] .select2-container--krajee-bs5 .select2-selection__choice__remove:hover,
:root[data-theme-mode="biblioteca"] .select2-container--bootstrap5 .select2-selection__choice__remove:hover,
:root[data-theme-mode="biblioteca"] .select2-container--default .select2-selection__choice__remove:hover {
    color: #020617 !important;
}

.bc-form .select2-container--krajee-bs5 .select2-selection__arrow,
.bc-form .select2-container--bootstrap5 .select2-selection__arrow,
.bc-form .select2-container--default .select2-selection__arrow,
:root[data-theme-mode="biblioteca"] .select2-container--krajee-bs5 .select2-selection__arrow,
:root[data-theme-mode="biblioteca"] .select2-container--bootstrap5 .select2-selection__arrow,
:root[data-theme-mode="biblioteca"] .select2-container--default .select2-selection__arrow {
    cursor: pointer;
}

.bc-form .select2-container--krajee-bs5 .select2-selection__arrow b,
.bc-form .select2-container--bootstrap5 .select2-selection__arrow b,
.bc-form .select2-container--default .select2-selection__arrow b,
:root[data-theme-mode="biblioteca"] .select2-container--krajee-bs5 .select2-selection__arrow b,
:root[data-theme-mode="biblioteca"] .select2-container--bootstrap5 .select2-selection__arrow b,
:root[data-theme-mode="biblioteca"] .select2-container--default .select2-selection__arrow b {
    border-top-color: #2f3842 !important;
    cursor: pointer;
}

.bc-form .select2-container--krajee-bs5 .select2-selection__arrow:hover b,
.bc-form .select2-container--bootstrap5 .select2-selection__arrow:hover b,
.bc-form .select2-container--default .select2-selection__arrow:hover b,
:root[data-theme-mode="biblioteca"] .select2-container--krajee-bs5 .select2-selection__arrow:hover b,
:root[data-theme-mode="biblioteca"] .select2-container--bootstrap5 .select2-selection__arrow:hover b,
:root[data-theme-mode="biblioteca"] .select2-container--default .select2-selection__arrow:hover b {
    border-top-color: #111827 !important;
}

.bc-form .select2-container--krajee-bs5 .select2-selection--single,
.bc-form .select2-container--bootstrap5 .select2-selection--single,
.bc-form .select2-container--default .select2-selection--single,
:root[data-theme-mode="biblioteca"] .select2-container--krajee-bs5 .select2-selection--single,
:root[data-theme-mode="biblioteca"] .select2-container--bootstrap5 .select2-selection--single,
:root[data-theme-mode="biblioteca"] .select2-container--default .select2-selection--single {
    position: relative;
}

.bc-form .select2-container--krajee-bs5 .select2-selection--single .select2-selection__rendered,
.bc-form .select2-container--bootstrap5 .select2-selection--single .select2-selection__rendered,
.bc-form .select2-container--default .select2-selection--single .select2-selection__rendered,
:root[data-theme-mode="biblioteca"] .select2-container--krajee-bs5 .select2-selection--single .select2-selection__rendered,
:root[data-theme-mode="biblioteca"] .select2-container--bootstrap5 .select2-selection--single .select2-selection__rendered,
:root[data-theme-mode="biblioteca"] .select2-container--default .select2-selection--single .select2-selection__rendered {
    padding-right: 48px !important;
}

.bc-form .select2-container--krajee-bs5 .select2-selection--single .select2-selection__clear,
.bc-form .select2-container--bootstrap5 .select2-selection--single .select2-selection__clear,
.bc-form .select2-container--default .select2-selection--single .select2-selection__clear,
:root[data-theme-mode="biblioteca"] .select2-container--krajee-bs5 .select2-selection--single .select2-selection__clear,
:root[data-theme-mode="biblioteca"] .select2-container--bootstrap5 .select2-selection--single .select2-selection__clear,
:root[data-theme-mode="biblioteca"] .select2-container--default .select2-selection--single .select2-selection__clear {
    position: absolute;
    top: 50%;
    right: 27px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    margin: 0;
    line-height: 1;
    transform: translateY(-50%);
}

.bc-form .select2-container--krajee-bs5 .select2-selection--single .select2-selection__arrow,
.bc-form .select2-container--bootstrap5 .select2-selection--single .select2-selection__arrow,
.bc-form .select2-container--default .select2-selection--single .select2-selection__arrow,
:root[data-theme-mode="biblioteca"] .select2-container--krajee-bs5 .select2-selection--single .select2-selection__arrow,
:root[data-theme-mode="biblioteca"] .select2-container--bootstrap5 .select2-selection--single .select2-selection__arrow,
:root[data-theme-mode="biblioteca"] .select2-container--default .select2-selection--single .select2-selection__arrow {
    top: 0;
    right: 7px;
    width: 18px;
    height: 100%;
}

.bc-form .select2-container--krajee-bs5 .select2-selection--multiple,
.bc-form .select2-container--bootstrap5 .select2-selection--multiple,
.bc-form .select2-container--default .select2-selection--multiple,
:root[data-theme-mode="biblioteca"] .select2-container--krajee-bs5 .select2-selection--multiple,
:root[data-theme-mode="biblioteca"] .select2-container--bootstrap5 .select2-selection--multiple,
:root[data-theme-mode="biblioteca"] .select2-container--default .select2-selection--multiple {
    position: relative;
    padding-right: 30px;
}

.bc-form .select2-container--krajee-bs5 .select2-selection--multiple .select2-selection__rendered,
.bc-form .select2-container--bootstrap5 .select2-selection--multiple .select2-selection__rendered,
.bc-form .select2-container--default .select2-selection--multiple .select2-selection__rendered,
:root[data-theme-mode="biblioteca"] .select2-container--krajee-bs5 .select2-selection--multiple .select2-selection__rendered,
:root[data-theme-mode="biblioteca"] .select2-container--bootstrap5 .select2-selection--multiple .select2-selection__rendered,
:root[data-theme-mode="biblioteca"] .select2-container--default .select2-selection--multiple .select2-selection__rendered {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px;
}

.bc-form .select2-container--krajee-bs5 .select2-selection--multiple .select2-selection__choice,
.bc-form .select2-container--bootstrap5 .select2-selection--multiple .select2-selection__choice,
.bc-form .select2-container--default .select2-selection--multiple .select2-selection__choice,
:root[data-theme-mode="biblioteca"] .select2-container--krajee-bs5 .select2-selection--multiple .select2-selection__choice,
:root[data-theme-mode="biblioteca"] .select2-container--bootstrap5 .select2-selection--multiple .select2-selection__choice,
:root[data-theme-mode="biblioteca"] .select2-container--default .select2-selection--multiple .select2-selection__choice {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    line-height: 1.2;
}

.bc-form .select2-container--krajee-bs5 .select2-selection--multiple .select2-selection__choice__remove,
.bc-form .select2-container--bootstrap5 .select2-selection--multiple .select2-selection__choice__remove,
.bc-form .select2-container--default .select2-selection--multiple .select2-selection__choice__remove,
:root[data-theme-mode="biblioteca"] .select2-container--krajee-bs5 .select2-selection--multiple .select2-selection__choice__remove,
:root[data-theme-mode="biblioteca"] .select2-container--bootstrap5 .select2-selection--multiple .select2-selection__choice__remove,
:root[data-theme-mode="biblioteca"] .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
    position: static;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    margin: 0;
    line-height: 1;
    transform: none;
}

.bc-form .select2-container--krajee-bs5 .select2-selection--multiple .select2-selection__clear,
.bc-form .select2-container--bootstrap5 .select2-selection--multiple .select2-selection__clear,
.bc-form .select2-container--default .select2-selection--multiple .select2-selection__clear,
:root[data-theme-mode="biblioteca"] .select2-container--krajee-bs5 .select2-selection--multiple .select2-selection__clear,
:root[data-theme-mode="biblioteca"] .select2-container--bootstrap5 .select2-selection--multiple .select2-selection__clear,
:root[data-theme-mode="biblioteca"] .select2-container--default .select2-selection--multiple .select2-selection__clear {
    position: absolute;
    top: 50%;
    right: 9px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    margin: 0;
    line-height: 1;
    transform: translateY(-50%);
}

.bc-form .kv-date-picker,
.bc-form .kv-date-remove,
.bc-form .input-group-text {
    border-color: #cfd8df;
}

.bc-form .note-editor.note-frame {
    overflow: hidden;
    border: 1px solid var(--bc-section-border);
    border-radius: 8px;
    box-shadow: none;
}

.bc-form .note-editor.note-frame .note-toolbar,
.bc-form .note-editor.note-frame .note-statusbar {
    border-color: var(--bc-section-border);
    background: var(--biblio-surface-muted, #f8fafb);
}

.bc-form .note-editor.note-frame .note-editing-area .note-editable {
    background: var(--bc-section-bg);
    color: var(--bs-body-color);
}

.bc-form .accordion,
.libro-form-wrapper .accordion,
.biblioteca-form-wrapper .accordion,
.configuracion-form-wrapper .accordion {
    --bs-accordion-border-color: var(--bc-section-border);
    --bs-accordion-border-radius: 8px;
    --bs-accordion-inner-border-radius: 8px;
}

.bc-form .accordion-button,
.libro-form-wrapper .accordion-button,
.biblioteca-form-wrapper .accordion-button,
.configuracion-form-wrapper .accordion-button {
    min-height: 52px;
    font-weight: 700;
    color: var(--biblio-text, var(--bs-body-color));
}

.bc-form .accordion-button:not(.collapsed),
.libro-form-wrapper .accordion-button:not(.collapsed),
.biblioteca-form-wrapper .accordion-button:not(.collapsed),
.configuracion-form-wrapper .accordion-button:not(.collapsed) {
    color: var(--bc-accent-hover);
    background: var(--bc-accent-soft);
    box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bc-section-border);
}

.bc-form .accordion-button i.section-icon,
.bc-form .accordion-button>i:first-child,
.libro-form-wrapper .accordion-button>i:first-child,
.biblioteca-form-wrapper .accordion-button i.section-icon,
.biblioteca-form-wrapper .accordion-button>i:first-child,
.configuracion-form-wrapper .accordion-button i.section-icon,
.configuracion-form-wrapper .accordion-button>i:first-child {
    width: 22px;
    color: var(--bc-accent);
    text-align: center;
}

.bc-upload-preview,
.bc-form .upload-mini .preview,
.biblioteca-form-wrapper .upload-mini .preview,
.libro-form-wrapper #portada-libro {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 120px;
    padding: 0.75rem;
    border: 1px dashed #cbd8de;
    border-radius: 8px;
    background: var(--biblio-surface-muted, #f8fafb);
}

.bc-form .upload-mini,
.biblioteca-form-wrapper .upload-mini {
    height: 100%;
    padding: 0.75rem;
    border: 1px solid var(--bc-section-border);
    border-radius: 8px;
    background: var(--bc-section-bg);
}

.bc-form .upload-mini .preview img,
.biblioteca-form-wrapper .upload-mini .preview img {
    display: block;
    max-width: 100%;
    height: auto;
}

.bc-form .upload-mini .preview .empty,
.biblioteca-form-wrapper .upload-mini .preview .empty {
    color: #8e9aa6;
    font-size: 0.85rem;
    padding: 1rem;
}

.bc-form .upload-mini .upload-hint,
.biblioteca-form-wrapper .upload-mini .upload-hint {
    margin-top: 0.35rem;
    color: var(--biblio-muted, #6c757d);
    font-size: 0.8rem;
}

/* Library settings: compact, stable identity preview and clearer field groups. */
.biblioteca-form-wrapper .bc-library-basics-layout {
    display: grid;
    grid-template-columns: minmax(300px, 310px) minmax(0, 1fr);
    gap: 0.85rem;
    align-items: start;
}

.biblioteca-form-wrapper .bc-library-details,
.biblioteca-form-wrapper .bc-library-logo-section {
    min-width: 0;
}

.biblioteca-form-wrapper .bc-library-details {
    grid-column: 2;
}

.biblioteca-form-wrapper .bc-library-logo-section {
    grid-column: 1;
    grid-row: 1;
}

.biblioteca-form-wrapper .bc-library-logo-section .bc-image-editor--integrated {
    padding-right: 0.25rem;
    padding-left: 0.25rem;
}

.biblioteca-form-wrapper .bc-library-contact-grid {
    display: grid;
    grid-template-columns: repeat(14, minmax(0, 1fr));
    gap: 0.75rem;
    align-items: end;
}

.biblioteca-form-wrapper .bc-library-contact-field {
    min-width: 0;
}

.biblioteca-form-wrapper .bc-library-contact-field--name {
    grid-column: span 3;
}

.biblioteca-form-wrapper .bc-library-contact-field--short {
    grid-column: span 2;
}

.biblioteca-form-wrapper .bc-library-contact-field--email {
    grid-column: span 7;
}

.biblioteca-form-wrapper .bc-library-contact-field--postal {
    grid-column: span 2;
}

.biblioteca-form-wrapper .bc-library-contact-field--address {
    grid-column: span 8;
}

.biblioteca-form-wrapper .bc-library-contact-field--locality {
    grid-column: span 6;
}

.biblioteca-form-wrapper .bc-library-contact-field .form-group {
    margin-bottom: 0;
}

.biblioteca-form-wrapper #library-card-editor.bc-image-editor--integrated {
    width: 100%;
    max-width: 320px;
    margin-right: auto;
    margin-left: auto;
    padding: 0.65rem;
}

.biblioteca-form-wrapper .bc-library-subsection-heading {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    min-height: 30px;
    margin-bottom: 0.75rem;
}

.biblioteca-form-wrapper .bc-library-subsection-heading h3 {
    margin: 0;
    color: var(--bs-body-color);
    font-size: 0.9rem;
    font-weight: 700;
    line-height: 1.2;
}

.biblioteca-form-wrapper .bc-library-subsection-icon {
    display: inline-flex;
    flex: 0 0 30px;
    width: 30px;
    height: 30px;
    align-items: center;
    justify-content: center;
    border-radius: 7px;
    background: var(--bc-accent-soft);
    color: var(--bc-accent-hover);
    font-size: 0.8rem;
}

.biblioteca-form-wrapper .bc-library-fields-divider {
    margin-top: 1rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--bc-section-border);
}

.biblioteca-form-wrapper .bc-library-fields-divider .bc-library-subsection-heading {
    margin-bottom: 0;
}

.biblioteca-form-wrapper .bc-library-option-field {
    display: flex;
}

.biblioteca-form-wrapper .bc-library-options-grid {
    align-items: start;
}

.biblioteca-form-wrapper .bc-library-option-field .form-group {
    display: flex;
    flex-direction: column;
    width: 100%;
    margin-bottom: 0;
}

.biblioteca-form-wrapper .bc-library-option-field .control-label,
.biblioteca-form-wrapper .bc-library-option-field .form-label {
    margin-bottom: 0.45rem;
    line-height: 1.35;
    white-space: normal;
}

.biblioteca-form-wrapper .bc-library-option-field .form-control,
.biblioteca-form-wrapper .bc-library-option-field .form-select {
    min-height: 38px;
    margin-top: 0;
}

.biblioteca-form-wrapper .bc-library-option-field .hint-block,
.biblioteca-form-wrapper .bc-library-option-field .form-text {
    display: block;
    margin-top: 0.4rem;
    color: var(--biblio-muted, var(--bs-secondary-color));
    font-size: 0.78rem;
    line-height: 1.4;
}

.biblioteca-form-wrapper .bc-library-logo-section .bc-image-editor--integrated .bc-image-editor__preview,
.biblioteca-form-wrapper .bc-library-logo-section .bc-image-editor--integrated .bc-image-editor__controls {
    padding: 0;
    border: 0;
    background: transparent;
}

.biblioteca-form-wrapper .bc-library-logo-section .bc-image-editor--integrated .bc-image-editor__controls {
    align-items: stretch;
    text-align: center;
}

.biblioteca-form-wrapper .bc-library-logo-section .bc-image-editor--integrated .bc-image-editor__select-button {
    justify-content: center;
}

.biblioteca-form-wrapper .bc-library-logo-section .bc-image-editor--integrated .bc-image-editor__help {
    text-align: center;
}

.biblioteca-form-wrapper .bc-library-form-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding-top: 1rem;
    border-top: 1px solid var(--bc-section-border);
}

@media (max-width: 991.98px) {
    .biblioteca-form-wrapper .bc-library-basics-layout {
        grid-template-columns: minmax(0, 1fr);
        gap: 1rem;
    }

    .biblioteca-form-wrapper .bc-library-details,
    .biblioteca-form-wrapper .bc-library-logo-section {
        grid-column: 1;
    }

    .biblioteca-form-wrapper .bc-library-logo-section {
        grid-row: 1;
        max-width: 310px;
    }

    .biblioteca-form-wrapper .bc-library-details {
        grid-row: 2;
    }
}

@media (max-width: 767.98px) {
    .biblioteca-form-wrapper .bc-library-contact-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .biblioteca-form-wrapper .bc-library-contact-field--name,
    .biblioteca-form-wrapper .bc-library-contact-field--short,
    .biblioteca-form-wrapper .bc-library-contact-field--email,
    .biblioteca-form-wrapper .bc-library-contact-field--postal,
    .biblioteca-form-wrapper .bc-library-contact-field--address,
    .biblioteca-form-wrapper .bc-library-contact-field--locality {
        grid-column: auto;
    }
}

@media (max-width: 575.98px) {
    .biblioteca-form-wrapper .bc-library-logo-section {
        width: 100%;
    }

    .biblioteca-form-wrapper .bc-library-contact-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .biblioteca-form-wrapper .bc-library-contact-field--name,
    .biblioteca-form-wrapper .bc-library-contact-field--short,
    .biblioteca-form-wrapper .bc-library-contact-field--email,
    .biblioteca-form-wrapper .bc-library-contact-field--postal,
    .biblioteca-form-wrapper .bc-library-contact-field--address,
    .biblioteca-form-wrapper .bc-library-contact-field--locality {
        grid-column: 1;
    }
}

.bc-form .subsection-title,
.configuracion-form-wrapper .subsection-title {
    margin: 0.75rem 0 0.25rem;
    color: var(--bc-accent-hover);
    font-size: 1rem;
    font-weight: 700;
}

/* User create/update forms */
.usuario-create-wrapper {
    --usuario-create-accent: var(--biblio-ink, #4a6b8a);
    --usuario-create-accent-hover: var(--biblio-ink-hover, #3d5a75);
    --usuario-create-alt: var(--biblio-ink, #4a6b8a);
    --usuario-create-alt-hover: var(--biblio-ink-hover, #3d5a75);
    --usuario-create-soft: var(--biblio-surface-muted, #f6f7f8);
    --usuario-create-border: var(--biblio-border, #dfe4e8);
    --usuario-create-text: var(--biblio-text, #24313d);
    --usuario-create-muted: var(--biblio-muted, #5f6f7a);
    max-width: 1180px;
    margin: 0 auto;
}

.usuario-create-wrapper .row {
    --bs-gutter-x: 0.85rem;
    --bs-gutter-y: 0;
}

.usuario-create-wrapper .mb-3 {
    margin-bottom: 0.55rem !important;
}

.usuario-create-wrapper .usuario-create-section {
    border: 1px solid var(--usuario-create-border) !important;
    border-radius: 8px;
    background: var(--bs-body-bg);
    box-shadow: 0 8px 22px rgba(36, 49, 61, 0.06);
    margin-bottom: 0.9rem;
    overflow: hidden;
}

.usuario-create-wrapper .usuario-create-section .card-header {
    min-height: 42px;
    padding: 0.55rem 0.85rem;
    background: var(--usuario-create-soft);
    border-bottom: 1px solid var(--usuario-create-border);
    color: var(--usuario-create-text);
}

.usuario-create-wrapper .usuario-create-section .card-title {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    margin: 0;
    color: var(--usuario-create-text);
    font-size: 0.95rem;
    font-weight: 700;
    letter-spacing: 0;
}

.usuario-create-wrapper .usuario-create-step {
    width: 24px;
    height: 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--biblio-ink-soft, #edf3f7);
    color: var(--usuario-create-accent-hover);
    font-size: 0.78rem;
    font-weight: 800;
}

.usuario-create-wrapper .usuario-create-section-profile .usuario-create-step {
    background: var(--biblio-ink-soft, #edf3f7);
    color: var(--usuario-create-accent-hover);
}

.usuario-create-wrapper .usuario-create-section .card-body {
    padding: 0.75rem 0.85rem 0.6rem;
}

.usuario-create-wrapper label,
.usuario-create-wrapper .form-label {
    color: var(--usuario-create-text);
    margin-bottom: 0.25rem;
    font-size: 0.86rem;
    font-weight: 600;
}

.usuario-create-wrapper .form-control,
.usuario-create-wrapper .form-select,
.usuario-create-wrapper select {
    border-color: var(--usuario-create-border);
    border-radius: 6px;
    min-height: 34px;
    padding-top: 0.28rem;
    padding-bottom: 0.28rem;
    font-size: 0.88rem;
}

.usuario-create-wrapper .form-control:focus,
.usuario-create-wrapper .form-select:focus,
.usuario-create-wrapper select:focus {
    border-color: var(--usuario-create-accent);
    box-shadow: var(--biblio-focus-ring, 0 0 0 0.16rem rgba(74, 107, 138, 0.2));
}

.usuario-create-wrapper .select2-container .select2-selection {
    min-height: 34px;
    border-color: var(--usuario-create-border) !important;
    border-radius: 6px !important;
}

.usuario-create-wrapper .input-group-btn {
    display: inline-flex;
}

.usuario-create-wrapper .usuario-create-helper-btn {
    --bs-btn-color: var(--usuario-create-accent-hover);
    --bs-btn-bg: var(--biblio-ink-soft, var(--usuario-create-soft));
    --bs-btn-border-color: var(--usuario-create-border);
    --bs-btn-hover-color: var(--biblio-on-accent, #fff);
    --bs-btn-hover-bg: var(--usuario-create-accent);
    --bs-btn-hover-border-color: var(--usuario-create-accent);
    --bs-btn-active-color: var(--biblio-on-accent, #fff);
    --bs-btn-active-bg: var(--usuario-create-accent-hover);
    --bs-btn-active-border-color: var(--usuario-create-accent-hover);
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
    padding-right: 0.55rem;
    padding-left: 0.55rem;
    font-size: 0.82rem;
    white-space: nowrap;
}

.usuario-create-wrapper .usuario-create-subtitle {
    margin: 0.35rem 0 0.45rem;
    color: var(--usuario-create-alt-hover);
    font-size: 1rem;
    font-weight: 700;
}

.usuario-create-actions {
    display: flex;
    justify-content: flex-start;
    padding: 0.35rem 0 0;
}

.usuario-create-wrapper .usuario-create-submit {
    --bs-btn-color: var(--biblio-on-accent, #fff);
    --bs-btn-bg: var(--usuario-create-accent);
    --bs-btn-border-color: var(--usuario-create-accent);
    --bs-btn-hover-color: var(--biblio-on-accent, #fff);
    --bs-btn-hover-bg: var(--usuario-create-accent-hover);
    --bs-btn-hover-border-color: var(--usuario-create-accent-hover);
    --bs-btn-active-color: var(--biblio-on-accent, #fff);
    --bs-btn-active-bg: var(--usuario-create-accent-hover);
    --bs-btn-active-border-color: var(--usuario-create-accent-hover);
    min-width: 128px;
    padding-top: 0.38rem;
    padding-bottom: 0.38rem;
}

/* Statistics landing */
.estadisticas-panel {
    --stats-accent: var(--biblio-ink, #4a6b8a);
    --stats-accent-hover: var(--biblio-ink-hover, #3d5a75);
    --stats-soft: var(--biblio-surface-muted, #f6f7f8);
    --stats-border: var(--biblio-border, #dfe4e8);
    --stats-text: var(--biblio-text, #24313d);
    --stats-muted: var(--biblio-muted, #5f6f7a);
    border: 1px solid var(--stats-border);
    border-radius: 8px;
    background: var(--bs-body-bg);
    box-shadow: 0 8px 22px rgba(36, 49, 61, 0.05);
}

.estadisticas-panel>.card-body {
    padding: 0.85rem;
}

.estadisticas-panel .tab-content {
    background: transparent;
    border-color: var(--stats-border);
}

.estadisticas-panel .nav-tabs {
    gap: 0.25rem;
    border-bottom-color: var(--stats-border);
}

.estadisticas-panel .nav-tabs .nav-link {
    margin-bottom: -1px;
    border-radius: 6px 6px 0 0;
    color: #52616d;
    font-size: 0.88rem;
    font-weight: 600;
}

.estadisticas-panel .nav-tabs .nav-link:hover {
    border-color: #e2e7eb #e2e7eb var(--stats-border);
    background: #f7f8f9;
    color: #2f3f4b;
}

.estadisticas-panel .nav-tabs .nav-link.active {
    color: var(--stats-text);
    background: var(--stats-soft);
    border-color: var(--stats-border) var(--stats-border) var(--stats-soft);
}

.estadisticas-panel .card-primary {
    border: 1px solid var(--stats-border) !important;
    border-radius: 8px;
    background: var(--bs-body-bg);
    box-shadow: 0 8px 22px rgba(36, 49, 61, 0.04);
    overflow: hidden;
}

.estadisticas-panel .card-primary>.card-header,
.estadisticas-panel .card-primary>.card-header.with-border {
    min-height: 42px;
    padding: 0.55rem 0.85rem;
    background: var(--stats-soft) !important;
    border-bottom: 1px solid var(--stats-border) !important;
    color: var(--stats-text) !important;
}

.estadisticas-panel .card-primary>.card-header .card-title {
    margin: 0;
    color: #52616d;
    font-size: 0.95rem;
    font-weight: 700;
    letter-spacing: 0;
}

.estadisticas-panel .card-body {
    color: var(--stats-text);
}

.estadisticas-panel h4 {
    color: var(--stats-muted);
    font-size: 0.95rem;
    font-weight: 600;
}

.estadisticas-panel p,
.estadisticas-panel label {
    color: var(--stats-muted);
}

.estadisticas-panel input,
.estadisticas-panel select {
    border-color: var(--stats-border);
    border-radius: 6px;
    min-height: 34px;
    padding: 0.28rem 0.45rem;
    font-size: 0.88rem;
}

.estadisticas-panel input:focus,
.estadisticas-panel select:focus {
    border-color: var(--stats-accent);
    box-shadow: var(--biblio-focus-ring, 0 0 0 0.16rem rgba(74, 107, 138, 0.2));
    outline: 0;
}

.estadisticas-panel .btn-primary {
    --bs-btn-color: var(--biblio-on-accent, #fff);
    --bs-btn-bg: var(--stats-accent);
    --bs-btn-border-color: var(--stats-accent);
    --bs-btn-hover-color: var(--biblio-on-accent, #fff);
    --bs-btn-hover-bg: var(--stats-accent-hover);
    --bs-btn-hover-border-color: var(--stats-accent-hover);
    --bs-btn-active-color: var(--biblio-on-accent, #fff);
    --bs-btn-active-bg: var(--stats-accent-hover);
    --bs-btn-active-border-color: var(--stats-accent-hover);
}

.usuario-update-tabs {
    --usuario-create-soft: var(--biblio-surface-muted, #f6f7f8);
    --usuario-create-border: var(--biblio-border, #dfe4e8);
    margin-bottom: 0.9rem;
    padding: 0.35rem 0.45rem 0;
    border: 1px solid var(--usuario-create-border);
    border-radius: 8px;
    background: var(--bs-body-bg);
    box-shadow: 0 8px 22px rgba(36, 49, 61, 0.05);
}

.usuario-update-wrapper {
    max-width: none;
    width: 100%;
}

.usuario-update-tabs .nav-tabs {
    gap: 0.25rem;
    border-bottom-color: var(--usuario-create-border);
}

.usuario-update-tabs .nav-tabs .nav-link {
    margin-bottom: -1px;
    border-radius: 6px 6px 0 0;
    color: #52616d;
    font-size: 0.88rem;
    font-weight: 600;
}

.usuario-update-tabs .nav-tabs .nav-link:hover {
    border-color: #e2e7eb #e2e7eb var(--usuario-create-border);
    background: #f7f8f9;
    color: #2f3f4b;
}

.usuario-update-tabs .nav-tabs .nav-link.active {
    color: #24313d;
    background: var(--usuario-create-soft);
    border-color: var(--usuario-create-border) var(--usuario-create-border) var(--usuario-create-soft);
}

.usuario-avatar-section {
    margin-top: 0.9rem;
}

.usuario-avatar-section .card-body {
    padding: 0.9rem;
}

.usuario-avatar-section .img-thumbnail {
    border-color: var(--usuario-create-border);
    border-radius: 8px;
}

.usuario-avatar-section hr {
    margin: 0.75rem 0;
    border-color: var(--usuario-create-border);
    opacity: 1;
}

.usuario-avatar-section .btn-primary {
    --bs-btn-bg: var(--usuario-create-accent);
    --bs-btn-border-color: var(--usuario-create-accent);
    --bs-btn-hover-bg: var(--usuario-create-accent-hover);
    --bs-btn-hover-border-color: var(--usuario-create-accent-hover);
    --bs-btn-active-bg: var(--usuario-create-accent-hover);
    --bs-btn-active-border-color: var(--usuario-create-accent-hover);
}

.usuario-carnet-preview .card-body {
    padding: 0.85rem;
}

.usuario-carnet-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.65rem;
    margin-bottom: 0.75rem;
}

.usuario-carnet-description {
    margin: 0;
    color: var(--usuario-create-muted, #5f6f7a);
    font-size: 0.8rem;
}

.usuario-carnet-toolbar .btn-primary {
    --bs-btn-bg: var(--usuario-create-accent);
    --bs-btn-border-color: var(--usuario-create-accent);
    --bs-btn-hover-bg: var(--usuario-create-accent-hover);
    --bs-btn-hover-border-color: var(--usuario-create-accent-hover);
    --bs-btn-active-bg: var(--usuario-create-accent-hover);
    --bs-btn-active-border-color: var(--usuario-create-accent-hover);
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    white-space: nowrap;
}

.usuario-carnet-frame {
    display: block;
    width: 100%;
    min-height: 560px;
    border: 1px solid var(--usuario-create-border, #dfe4e8);
    border-radius: 8px;
    background: #f8fafc;
}

.usuario-create-wrapper.usuario-historial-wrapper {
    --historial-accent: var(--usuario-create-accent);
    --historial-accent-hover: var(--users-accent-hover);
    --historial-border: var(--usuario-create-border);
    --historial-muted: var(--usuario-create-muted);
    --historial-soft: var(--usuario-create-soft);
    --historial-text: var(--usuario-create-text);
    width: 100%;
    max-width: none;
    margin: 0 auto;
    color: var(--historial-text);
    font-family: inherit;
}

.historial-summary,
.historial-section {
    border: 1px solid var(--historial-border) !important;
    border-radius: 8px;
    background: var(--bs-body-bg);
    box-shadow: 0 8px 22px rgba(36, 49, 61, 0.06);
}

.historial-summary {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.9rem;
    padding: 1rem;
}

.historial-summary h2 {
    margin: 0 0 0.35rem;
    color: var(--historial-text);
    font-size: 1.15rem;
    font-weight: 700;
}

.historial-user-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    color: var(--historial-muted);
    font-size: 0.88rem;
}

.historial-user-meta span {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.historial-user-meta i {
    color: var(--historial-accent-hover);
}

.historial-stats {
    display: grid;
    grid-template-columns: repeat(4, minmax(86px, 1fr));
    gap: 0.5rem;
}

.historial-stat {
    min-width: 86px;
    padding: 0.55rem 0.7rem;
    border: 1px solid var(--historial-border);
    border-radius: 8px;
    background: var(--historial-soft);
}

.historial-stat span {
    display: block;
    color: var(--historial-accent-hover);
    font-size: 1.2rem;
    font-weight: 800;
    line-height: 1.1;
}

.historial-stat small {
    color: var(--historial-muted);
    font-size: 0.76rem;
    font-weight: 700;
    text-transform: uppercase;
}

.historial-section {
    margin-bottom: 0.9rem;
    overflow: hidden;
}

.historial-columns {
    display: grid;
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr) minmax(0, 0.9fr);
    gap: 0.9rem;
    align-items: start;
}

.historial-columns .historial-section {
    margin-bottom: 0;
}

.historial-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    min-height: 42px;
    padding: 0.55rem 0.85rem;
    border-bottom: 1px solid var(--historial-border);
    background: var(--historial-soft);
}

.historial-section-header h3 {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    margin: 0;
    color: var(--historial-text);
    font-size: 0.95rem;
    font-weight: 700;
    letter-spacing: 0;
}

.historial-section-header h3 i {
    width: 18px;
    color: var(--historial-accent-hover);
    text-align: center;
}

.historial-timeline {
    display: grid;
    gap: 0.65rem;
    padding: 0.85rem;
}

.historial-item {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.65rem;
    align-items: start;
    padding: 0.75rem;
    border: 1px solid var(--historial-border);
    border-radius: 8px;
    background: var(--bs-body-bg);
}

.historial-item-title {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
    gap: 0.55rem;
    margin-bottom: 0.55rem;
}

.historial-book-link {
    min-width: 0;
    color: var(--historial-text);
    font-weight: 700;
    line-height: 1.25;
    overflow-wrap: anywhere;
    text-decoration: none;
}

.historial-book-link:hover {
    color: var(--historial-accent-hover);
    text-decoration: underline;
}

.historial-item-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.55rem;
}

.historial-loan-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.historial-item-grid small {
    display: block;
    color: var(--historial-muted);
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
}

.historial-item-grid strong,
.historial-item-grid .bc-date-value {
    color: var(--historial-text);
    font-size: 0.88rem;
}

.historial-item-grid .bc-date-value {
    font-weight: 400;
}

.historial-status {
    display: flex;
    justify-content: flex-end;
}

.historial-loan-summary {
    margin-top: 0.6rem;
    padding: 0.55rem 0.65rem;
    border-radius: 8px;
    background: var(--historial-soft);
    color: var(--historial-muted);
    font-size: 0.84rem;
    font-weight: 700;
}

.historial-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 24px;
    padding: 0.25rem 0.55rem;
    border-radius: 999px;
    font-size: 0.76rem;
    font-weight: 800;
    white-space: nowrap;
}

.historial-pill.is-success {
    color: #386b40;
    background: #e7f3e8;
}

.historial-pill.is-warning {
    color: #6f5730;
    background: #f4ead6;
}

.historial-pill.is-late {
    color: #8a4f12;
    background: #fde7c8;
}

.historial-pill.is-danger {
    color: #8a3f35;
    background: #f8e3df;
}

.historial-pill.is-neutral {
    color: #58636d;
    background: #edf0f2;
}

.historial-review,
.historial-comment {
    margin-top: 0.6rem;
    padding: 0.55rem 0.65rem;
    border-radius: 8px;
    background: var(--historial-soft);
    color: var(--historial-text);
    font-size: 0.86rem;
}

.historial-stars {
    color: #d5a526;
    margin-right: 0.35rem;
    white-space: nowrap;
}

.historial-empty {
    padding: 1rem;
    color: var(--historial-muted);
    font-size: 0.9rem;
}

@media (max-width: 1199.98px) {
    .historial-columns {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 767.98px) {

    .historial-stats,
    .historial-item-grid {
        grid-template-columns: 1fr;
    }
}

.libro-menu-tabs {
    margin-bottom: 0.75rem;
}

.libro-menu-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    margin: 0.75rem 0 1rem;
}

.libro-menu-actions .btn {
    margin-left: 0 !important;
}

@media (max-width: 575.98px) {
    .usuario-create-wrapper .input-group {
        align-items: stretch;
    }

    .usuario-create-wrapper .usuario-create-helper-btn {
        max-width: 9rem;
        white-space: normal;
        line-height: 1.15;
    }

    .usuario-create-actions {
        justify-content: stretch;
    }

    .usuario-create-wrapper .usuario-create-submit {
        width: 100%;
    }
}

/* ISBN import block uses the same component language as the rest of forms. */
.seccion-importar {
    --bc-accent: var(--biblio-ink, #4a6b8a);
    --bc-accent-hover: var(--biblio-ink-hover, #3d5a75);
    --bc-section-border: var(--biblio-border, #dee2e6);
    border: 1px solid var(--bc-section-border) !important;
    border-left: 4px solid var(--bc-accent) !important;
    border-radius: 8px !important;
    background: var(--biblio-ink-soft, #edf3f7) !important;
    box-shadow: var(--biblio-shadow-sm, 0 1px 4px rgba(0, 0, 0, 0.05)) !important;
}

.seccion-importar .paso-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 38px;
    width: 38px;
    height: 38px;
    margin-right: 10px;
    border-radius: 50%;
    background: var(--bc-accent) !important;
    color: #fff;
    font-size: 1.1rem;
    font-weight: 800;
}

.seccion-importar .text-primary {
    color: var(--bc-accent-hover) !important;
}

.seccion-importar .isbn-input {
    padding: 0.65rem 0.9rem;
    font-size: 1.05rem;
    font-weight: 600;
    letter-spacing: 0;
}

.seccion-importar .btn-lg-accion {
    padding: 0.65rem 1rem;
    font-weight: 600;
}

.seccion-importar .fuentes-toggle {
    color: var(--bc-accent-hover) !important;
    line-height: 1.2;
    text-align: left;
    border: 0;
}

.seccion-importar .fuentes-toggle:focus-visible {
    box-shadow: var(--bc-ui-focus-ring);
}

.seccion-importar .fuentes-toggle-icon {
    transition: transform 0.15s ease-in-out;
}

.seccion-importar .fuentes-toggle[aria-expanded="true"] .fuentes-toggle-icon {
    transform: rotate(180deg);
}

.seccion-importar .fuentes-grid {
    width: 100%;
}

.seccion-importar .fuente-card {
    display: flex;
    gap: 0.55rem;
    align-items: flex-start;
    padding: 0.7rem 0.75rem;
    border: 1px solid var(--biblio-border, #d7e1e6);
    border-radius: 8px;
    background: #fff;
    cursor: pointer;
}

.seccion-importar .fuente-card.is-disabled {
    color: var(--biblio-muted, #6c757d);
    background: var(--biblio-soft, #f8f9fa);
    cursor: not-allowed;
}

.seccion-importar .fuente-card .form-check-input {
    flex: 0 0 auto;
    margin: 0.15rem 0 0;
}

.seccion-importar .fuente-card-body {
    min-width: 0;
}

.seccion-importar .fuente-title,
.seccion-importar .fuente-description {
    display: block;
}

.seccion-importar .fuente-title {
    font-weight: 700;
    line-height: 1.2;
}

.seccion-importar .fuente-description {
    margin-top: 0.25rem;
    color: var(--biblio-muted, #555);
    font-size: 0.82rem;
    line-height: 1.3;
}

/* Global table/list refinements for the Biblioteca theme. */
:root[data-theme-mode="biblioteca"] .grid-view .table>tbody>tr>td,
:root[data-theme-mode="biblioteca"] .kv-grid-table>tbody>tr>td {
    vertical-align: middle;
    border-color: var(--bc-ui-table-border, var(--biblio-border));
}

:root[data-theme-mode="biblioteca"] .grid-view .table>tbody>tr:hover>td,
:root[data-theme-mode="biblioteca"] .kv-grid-table>tbody>tr:hover>td {
    background-color: var(--bc-ui-table-hover, var(--biblio-paper));
}

:root[data-theme-mode="biblioteca"] .grid-view .form-control,
:root[data-theme-mode="biblioteca"] .grid-view .form-select,
:root[data-theme-mode="biblioteca"] .kv-grid-table .form-control,
:root[data-theme-mode="biblioteca"] .kv-grid-table .form-select {
    min-height: 36px;
    border-color: #cfd8df;
    border-radius: 6px;
}

.bc-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    margin-bottom: 0.65rem;
}

.bc-toolbar .btn {
    margin-left: 0 !important;
}

.bc-toolbar-note {
    flex-basis: 100%;
    margin-top: 0.1rem;
    color: var(--biblio-muted, #6c757d);
    font-size: 0.82rem;
}

/* Shared compact date-range filter for loan grids. */
.prestamo-daterange-filter {
    display: grid;
    grid-template-columns: 1rem minmax(0, 1fr) 1.5rem;
    align-items: center;
    gap: 0.3rem;
    width: 100%;
    min-width: 180px;
    max-width: 100%;
    min-height: 36px;
    padding: 0 0.35rem;
    border: 1px solid #cfd8df;
    border-radius: 6px;
    background: #fff;
}

.prestamo-daterange-filter:focus-within {
    border-color: var(--biblio-ink, #0d6efd);
    box-shadow: 0 0 0 0.15rem rgba(74, 107, 138, 0.18);
}

.prestamo-daterange-filter input.form-control {
    width: 100%;
    min-width: 0;
    min-height: 34px;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0;
    background: transparent;
    box-shadow: none !important;
    cursor: pointer;
    font-size: 0.8125rem;
}

.prestamo-daterange-filter .daterange-icon {
    color: var(--biblio-muted, #5e6b78);
    font-size: 0.75rem;
    line-height: 1;
    pointer-events: none;
}

.prestamo-daterange-filter .daterange-clear {
    display: none;
    align-items: center;
    justify-content: center;
    width: 1.4rem;
    height: 1.4rem;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: var(--biblio-muted, #5e6b78);
    cursor: pointer;
    font-size: 0.72rem;
    line-height: 1;
}

.prestamo-daterange-filter.has-value .daterange-clear {
    display: inline-flex;
}

.prestamo-daterange-filter .daterange-clear:hover,
.prestamo-daterange-filter .daterange-clear:focus-visible {
    background: var(--biblio-terracotta-soft, #f8ece9);
    color: var(--bc-ui-state-danger-text, #8b352c);
    outline: none;
}

.prestamo-date-column {
    width: 195px;
    min-width: 195px;
}

div.bc-row-actions {
    display: grid;
    gap: 0.35rem;
    min-width: 86px;
}

td.bc-row-actions>a,
td.bc-row-actions>span {
    display: block;
    margin-bottom: 0.35rem;
}

td.bc-row-actions>a:last-child,
td.bc-row-actions>span:last-child {
    margin-bottom: 0;
}

div.bc-row-actions .btn,
td.bc-row-actions .btn,
.bc-table-action {
    width: 100%;
    margin: 0 !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.28rem;
    line-height: 1.2;
    white-space: normal;
}

/* Shared row actions for the compact tables under Configuración. */
.bc-config-actions-header,
.bc-config-actions-cell {
    min-width: 190px;
}

.bc-config-actions {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-start;
    gap: 5px;
    max-width: 320px;
}

.bc-config-actions .bc-config-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    min-height: 32px;
    margin: 0 !important;
    padding: 5px 9px;
    border-radius: 7px;
    font-size: 0.8125rem;
    font-weight: 600;
    line-height: 1.1;
    white-space: nowrap;
}

.bc-config-actions-single-line-cell {
    width: 230px;
    min-width: 230px;
}

.bc-config-actions--single-line {
    flex-wrap: nowrap;
    max-width: none;
    white-space: nowrap;
}

.bc-config-actions--single-line .bc-config-action {
    padding-right: 7px;
    padding-left: 7px;
}

.bc-config-actions .bc-config-action--icon {
    width: 30px;
    min-width: 30px;
    padding-right: 5px;
    padding-left: 5px;
}

.bc-config-actions-header.bc-config-actions-wide,
.bc-config-actions-cell.bc-config-actions-wide {
    width: 300px;
    min-width: 300px;
}

.bc-config-actions-header.bc-config-actions-extra-wide,
.bc-config-actions-cell.bc-config-actions-extra-wide {
    width: 330px;
    min-width: 330px;
}

.bc-config-actions-header.bc-config-actions-fit,
.bc-config-actions-cell.bc-config-actions-fit {
    width: 1%;
}

.bc-config-col-id {
    width: 68px;
    min-width: 64px;
    max-width: 72px;
}

.bc-config-col-code {
    width: 88px;
    min-width: 80px;
    max-width: 96px;
}

.bc-config-col-level {
    width: 76px;
    min-width: 70px;
    max-width: 82px;
    text-align: center;
}

.bc-config-col-type {
    width: 120px;
    min-width: 108px;
    max-width: 128px;
}

.bc-config-col-name-house {
    width: 16%;
}

.bc-config-actions .bc-config-action i {
    margin: 0;
    line-height: 1;
}

.bc-icon-actions {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 0.4rem;
}

.bc-icon-action {
    color: var(--biblio-ink, #0d6efd);
    cursor: pointer;
    line-height: 1;
}

.bc-icon-action:hover {
    color: var(--biblio-ink-hover, #0a58ca);
}

:root[data-theme-mode="biblioteca"] .btn-personalizado.bc-icon-action {
    color: var(--biblio-ink);
}

:root[data-theme-mode="biblioteca"] .btn-personalizado.bc-icon-action:hover {
    color: var(--biblio-ink-hover);
}

.bc-status {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.22rem 0.55rem;
    border: 1px solid transparent;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 700;
    line-height: 1.15;
}

/* Colores semánticos compartidos por reservas, préstamos y catálogo. */
.bc-status-success {
    color: var(--bc-ui-state-success-text, #285b35);
    background: var(--bc-ui-state-success-bg, #edf5ea);
    border-color: var(--bc-ui-state-success-border, #b8cdb4);
}

.bc-status-warning {
    color: var(--bc-ui-state-warning-text, #715015);
    background: var(--bc-ui-state-warning-bg, #f4efe3);
    border-color: var(--bc-ui-state-warning-border, #d8c59b);
}

.bc-status-danger {
    color: var(--bc-ui-state-danger-text, #8b352c);
    background: var(--bc-ui-state-danger-bg, #f8ece9);
    border-color: var(--bc-ui-state-danger-border, #ddbbb3);
}

.bc-status-info {
    color: var(--bc-ui-state-info-text, #285d65);
    background: var(--bc-ui-state-info-bg, #e6f0f1);
    border-color: var(--bc-ui-state-info-border, #b5cdd0);
}

.bc-status-muted {
    color: var(--bc-ui-state-muted-text, #52616d);
    background: var(--bc-ui-state-muted-bg, #eef2f4);
    border-color: var(--bc-ui-state-muted-border, #d6dee3);
}

.bc-tag-list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
}

.bc-tag,
:root[data-theme-mode="biblioteca"] .label.label-default,
:root[data-theme-mode="biblioteca"] .badge.badge-secondary {
    display: inline-flex;
    align-items: center;
    min-height: 22px;
    padding: 0.16rem 0.48rem;
    border: 1px solid #d6dee3;
    border-radius: 999px;
    background: #eef3f4;
    color: #365765;
    font-size: 0.74rem;
    font-weight: 600;
    line-height: 1.1;
}

.bc-list-card,
.libro-index>.card,
.prestamo-index>.card {
    border: 1px solid #dfe6ea;
    border-radius: 8px;
    box-shadow: var(--biblio-shadow-sm, 0 1px 4px rgba(0, 0, 0, 0.05));
}

@media (max-width: 575.98px) {
    .bc-actionbar {
        align-items: flex-start;
    }

    .bc-actionbar>div:last-child {
        width: 100%;
        justify-content: flex-start;
    }

    .bc-section>.card-header small,
    .bc-section>.card-header .bc-section-meta,
    .bc-form .seccion-principal>.card-header small,
    .libro-form-wrapper .seccion-principal>.card-header small,
    .biblioteca-form-wrapper .seccion-principal>.card-header small,
    .configuracion-form-wrapper .seccion-principal>.card-header small {
        flex-basis: 100%;
        margin-left: 0 !important;
    }
}

/* =====================================================================
   Biblioteca: chrome global homogéneo
   Lleva el mismo lenguaje de los formularios bc-* al resto de la
   aplicación: títulos de página, sidebar, migas de pan, paginación,
   pestañas, dropdowns, modales, alertas, formularios sueltos y footer.
   Todo scoped a data-theme-mode="biblioteca" para no tocar claro/oscuro.
   ===================================================================== */

/* ---------- Título de página: misma tipografía sans que las fichas ---------- */
:root[data-theme-mode="biblioteca"] .app-content-header h3 {
    font-family: inherit;
    font-weight: 700;
    color: var(--biblio-text);
    letter-spacing: 0;
}

:root[data-theme-mode="biblioteca"] .modal-title {
    font-family: inherit;
    color: var(--biblio-text);
}

:root[data-theme-mode="biblioteca"] ::selection {
    background: rgba(214, 181, 119, 0.45);
}

/* ---------- Sidebar: panel tinta profunda con acento parchment ---------- */
:root[data-theme-mode="biblioteca"] .app-sidebar {
    background-color: #2e3f51 !important;
    box-shadow: inset -1px 0 0 rgba(0, 0, 0, 0.2);
}

:root[data-theme-mode="biblioteca"] .app-sidebar .sidebar-brand {
    border-bottom: 1px solid rgba(245, 239, 228, 0.1);
}

:root[data-theme-mode="biblioteca"] .app-sidebar .brand-text,
:root[data-theme-mode="biblioteca"] .app-sidebar .logo-xs {
    font-family: var(--biblio-font-display);
    color: var(--biblio-cream);
}

:root[data-theme-mode="biblioteca"] .app-sidebar .sidebar-wrapper {
    scrollbar-width: thin;
    scrollbar-color: rgba(245, 239, 228, 0.25) transparent;
}

:root[data-theme-mode="biblioteca"] .app-sidebar .sidebar-menu>.nav-item>.nav-link,
:root[data-theme-mode="biblioteca"] .app-sidebar .sidebar-menu .nav-treeview .nav-link {
    margin: 1px 8px;
    border-radius: var(--biblio-radius-sm);
    color: rgba(245, 239, 228, 0.85);
}

:root[data-theme-mode="biblioteca"] .app-sidebar .sidebar-menu .nav-link:hover,
:root[data-theme-mode="biblioteca"] .app-sidebar .sidebar-menu .nav-link:focus-visible {
    background-color: rgba(255, 255, 255, 0.07);
    color: #fff;
}

:root[data-theme-mode="biblioteca"] .app-sidebar .sidebar-menu .nav-link.active,
:root[data-theme-mode="biblioteca"] .app-sidebar .sidebar-menu .nav-item.active>.nav-link {
    background-color: rgba(214, 181, 119, 0.18);
    color: #f3dca6;
    font-weight: 600;
    box-shadow: inset 3px 0 0 var(--biblio-parchment);
}

:root[data-theme-mode="biblioteca"] .app-sidebar .sidebar-menu .nav-item.menu-open:has(>.nav-treeview)>.nav-link,
:root[data-theme-mode="biblioteca"] .app-sidebar .sidebar-menu .nav-item.active:has(>.nav-treeview)>.nav-link {
    background-color: rgba(255, 255, 255, 0.055);
    color: #fff;
    box-shadow: none;
}

:root[data-theme-mode="biblioteca"] .app-sidebar .sidebar-menu .nav-treeview {
    margin: 0 8px;
    border-radius: var(--biblio-radius-sm);
    background: rgba(0, 0, 0, 0.14);
}

:root[data-theme-mode="biblioteca"] .app-sidebar .sidebar-menu .nav-treeview .nav-link {
    margin: 1px 4px;
}

:root[data-theme-mode="biblioteca"] .app-sidebar .nav-header {
    color: rgba(245, 239, 228, 0.55);
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.6px;
}

/* ---------- Migas de pan ---------- */
:root[data-theme-mode="biblioteca"] .breadcrumb {
    --bs-breadcrumb-divider: "›";
    --bs-breadcrumb-divider-color: #9aa8b3;
    --bs-breadcrumb-item-active-color: var(--biblio-muted);
}

:root[data-theme-mode="biblioteca"] .breadcrumb a {
    color: var(--biblio-ink);
    text-decoration: none;
}

:root[data-theme-mode="biblioteca"] .breadcrumb a:hover {
    color: var(--biblio-ink-hover);
    text-decoration: underline;
}

/* ---------- Cards: borde cálido, radio 8 y sombra discreta ---------- */
:root[data-theme-mode="biblioteca"] .card {
    --bs-card-border-color: var(--biblio-border-warm);
    --bs-card-border-radius: var(--biblio-radius);
    --bs-card-inner-border-radius: calc(var(--biblio-radius) - 1px);
    --bs-card-cap-bg: var(--biblio-paper-2);
}

/* ---------- Paginación ---------- */
:root[data-theme-mode="biblioteca"] .pagination {
    --bs-pagination-color: var(--biblio-ink);
    --bs-pagination-border-color: var(--biblio-border);
    --bs-pagination-hover-color: var(--biblio-ink-hover);
    --bs-pagination-hover-bg: var(--biblio-ink-soft);
    --bs-pagination-hover-border-color: var(--biblio-border-strong);
    --bs-pagination-focus-color: var(--biblio-ink-hover);
    --bs-pagination-focus-bg: var(--biblio-ink-soft);
    --bs-pagination-focus-box-shadow: var(--biblio-focus-ring);
    --bs-pagination-active-color: #fff;
    --bs-pagination-active-bg: var(--biblio-ink);
    --bs-pagination-active-border-color: var(--biblio-ink);
}

/* ---------- Pestañas y pills genéricas ---------- */
:root[data-theme-mode="biblioteca"] .nav-tabs {
    --bs-nav-tabs-border-color: var(--biblio-border-warm);
    --bs-nav-tabs-link-active-color: #33465a;
    --bs-nav-tabs-link-active-bg: var(--bs-body-bg);
    --bs-nav-tabs-link-active-border-color: var(--biblio-border-warm) var(--biblio-border-warm) var(--bs-body-bg);
    --bs-nav-link-color: var(--biblio-ink);
    --bs-nav-link-hover-color: var(--biblio-ink-hover);
}

:root[data-theme-mode="biblioteca"] .nav-pills {
    --bs-nav-pills-link-active-bg: var(--biblio-ink);
    --bs-nav-link-color: var(--biblio-ink);
    --bs-nav-link-hover-color: var(--biblio-ink-hover);
}

/* ---------- Dropdowns ---------- */
:root[data-theme-mode="biblioteca"] .dropdown-menu {
    --bs-dropdown-border-color: var(--biblio-border-warm);
    --bs-dropdown-border-radius: var(--biblio-radius);
    --bs-dropdown-link-hover-bg: var(--biblio-ink-soft);
    --bs-dropdown-link-active-bg: var(--biblio-ink);
    box-shadow: var(--biblio-shadow-md);
}

/* ---------- Modales ---------- */
:root[data-theme-mode="biblioteca"] .modal-content {
    border: 1px solid var(--biblio-border-warm);
    border-radius: var(--biblio-radius-lg);
    box-shadow: var(--biblio-shadow-md);
}

:root[data-theme-mode="biblioteca"] .modal-header {
    background: var(--biblio-paper-2);
    border-bottom-color: var(--biblio-border-warm);
}

:root[data-theme-mode="biblioteca"] .modal-footer {
    border-top-color: var(--biblio-border-warm);
}

/* ---------- Alertas con la paleta del tema (regla 5 de la auditoría) ---------- */
:root[data-theme-mode="biblioteca"] .alert-success {
    --bs-alert-color: var(--bc-ui-state-success-text);
    --bs-alert-bg: var(--bc-ui-state-success-bg);
    --bs-alert-border-color: var(--bc-ui-state-success-border);
    --bs-alert-link-color: var(--bc-ui-state-success-text);
}

:root[data-theme-mode="biblioteca"] .alert-danger {
    --bs-alert-color: var(--bc-ui-state-danger-text);
    --bs-alert-bg: var(--bc-ui-state-danger-bg);
    --bs-alert-border-color: var(--bc-ui-state-danger-border);
    --bs-alert-link-color: var(--bc-ui-state-danger-text);
}

:root[data-theme-mode="biblioteca"] .alert-warning {
    --bs-alert-color: var(--bc-ui-state-warning-text);
    --bs-alert-bg: var(--bc-ui-state-warning-bg);
    --bs-alert-border-color: var(--bc-ui-state-warning-border);
    --bs-alert-link-color: var(--bc-ui-state-warning-text);
}

:root[data-theme-mode="biblioteca"] .alert-info {
    --bs-alert-color: var(--bc-ui-state-info-text);
    --bs-alert-bg: var(--bc-ui-state-info-bg);
    --bs-alert-border-color: var(--bc-ui-state-info-border);
    --bs-alert-link-color: var(--bc-ui-state-info-text);
}

/* ---------- Formularios fuera de .bc-form: mismo borde, radio y foco ---------- */
:root[data-theme-mode="biblioteca"] .form-control,
:root[data-theme-mode="biblioteca"] .form-select {
    border-color: #cfd8df;
    border-radius: var(--biblio-radius-sm);
}

:root[data-theme-mode="biblioteca"] .form-control:focus,
:root[data-theme-mode="biblioteca"] .form-select:focus {
    border-color: var(--biblio-ink);
    box-shadow: var(--biblio-focus-ring);
}

:root[data-theme-mode="biblioteca"] .form-check-input:checked {
    background-color: var(--biblio-ink);
    border-color: var(--biblio-ink);
}

:root[data-theme-mode="biblioteca"] .form-check-input:focus {
    border-color: var(--biblio-ink);
    box-shadow: var(--biblio-focus-ring);
}

/* ---------- Tablas: zebra cálida ---------- */
:root[data-theme-mode="biblioteca"] .table {
    --bs-table-striped-bg: rgba(214, 181, 119, 0.07);
}

/* ---------- Utilidades de texto contextuales en paleta biblioteca ---------- */
:root[data-theme-mode="biblioteca"] .text-primary {
    color: var(--biblio-ink) !important;
}

:root[data-theme-mode="biblioteca"] .text-success {
    color: var(--bc-ui-state-success-text, #285b35) !important;
}

:root[data-theme-mode="biblioteca"] .text-danger {
    color: var(--bc-ui-state-danger-text, #8b352c) !important;
}

:root[data-theme-mode="biblioteca"] .text-info {
    color: var(--bc-ui-state-info-text, #285d65) !important;
}

:root[data-theme-mode="biblioteca"] .text-warning {
    color: var(--bc-ui-state-warning-text, #715015) !important;
}

/* ---------- Badges: píldora homogénea ---------- */
:root[data-theme-mode="biblioteca"] .badge {
    border-radius: 999px;
    font-weight: 600;
    letter-spacing: 0.2px;
}

/* ---------- Barra de progreso por defecto ---------- */
:root[data-theme-mode="biblioteca"] .progress {
    --bs-progress-bar-bg: var(--biblio-ink);
}

/* ---------- Footer ---------- */
:root[data-theme-mode="biblioteca"] .app-footer {
    border-top: 1px solid var(--biblio-border-warm);
    color: var(--biblio-muted);
}

/* =====================================================================
   Compatibilidad con clases legacy (Bootstrap 3 / AdminLTE 2)
   Muchas vistas antiguas usan btn-xs, btn-block, label-* o
   btn-personalizado, que no existen en Bootstrap 5. Estos shims las
   mapean al sistema de diseño para que se vean correctas en todos los
   temas mientras se migran las vistas. Los tres temas definen los tokens
   --biblio-*; los fallbacks solo cubren contextos sin tema (p.ej. impresión).
   ===================================================================== */
.btn-xs {
    --bs-btn-padding-y: 0.15rem;
    --bs-btn-padding-x: 0.4rem;
    --bs-btn-font-size: 0.74rem;
    --bs-btn-border-radius: 0.3rem;
}

.btn-block {
    display: block;
    width: 100%;
}

.label {
    display: inline-block;
    padding: 0.22em 0.6em;
    font-size: 75%;
    font-weight: 600;
    line-height: 1.2;
    color: #fff;
    text-align: center;
    white-space: nowrap;
    vertical-align: baseline;
    border-radius: 999px;
}

.label-default {
    background-color: var(--biblio-kraft, #6c757d);
}

.label-primary {
    background-color: var(--biblio-ink, #0d6efd);
}

.label-success {
    background-color: var(--biblio-sage, #198754);
}

.label-info {
    background-color: var(--biblio-teal, #0dcaf0);
}

.label-warning {
    background-color: var(--biblio-parchment, #ffc107);
    color: #4a3a1a;
}

.label-danger {
    background-color: var(--biblio-terracotta, #dc3545);
}

/* Botón-icono usado en grids antiguos (sustituye al azul AdminLTE) */
.btn-personalizado {
    color: var(--biblio-ink, #3c8dbc);
}

.btn-personalizado:hover {
    color: var(--biblio-ink-hover, #2d6a99);
}

/* Cards AdminLTE "card-primary": cabecera suave del sistema común. */
:root[data-theme-mode="biblioteca"] .card-primary:not(.card-outline)>.card-header {
    background-color: var(--bc-ui-soft, var(--biblio-paper-2));
    border-color: var(--bc-ui-table-border, var(--biblio-border));
    color: var(--bc-ui-text, var(--biblio-text));
}

:root[data-theme-mode="biblioteca"] .card-primary:not(.card-outline)>.card-header .card-title {
    color: var(--bc-ui-text, var(--biblio-text));
}

/* =====================================================================
   Listados de catálogo: filtros rápidos, KPIs y barra de escaneo
   Componentes compartidos por las vistas de libros activas.
   ===================================================================== */
.bc-quick-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin: 0.25rem 0 0.75rem;
}

.bc-quick-filter {
    --qf-color: var(--biblio-ink-hover, #3d5a75);
    --qf-bg: var(--biblio-surface-muted, #f8fafb);
    --qf-border: var(--biblio-border, #d8dfe2);
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    min-height: 30px;
    padding: 0.25rem 0.7rem;
    border: 1px solid var(--qf-border);
    border-radius: 999px;
    background: var(--qf-bg);
    color: var(--qf-color) !important;
    font-size: 0.82rem;
    font-weight: 600;
    line-height: 1.1;
    text-decoration: none !important;
}

.bc-quick-filter:hover {
    border-color: var(--qf-color);
}

.bc-quick-filter.is-active {
    background: var(--qf-color);
    border-color: var(--qf-color);
    color: #fff !important;
}

.bc-quick-filter.is-success {
    --qf-color: #1f6f3a;
    --qf-bg: #e8f6ee;
    --qf-border: #bfe5cc;
}

.bc-quick-filter.is-warning {
    --qf-color: #805b16;
    --qf-bg: #f8efd9;
    --qf-border: #ecd59f;
}

.bc-quick-filter.is-danger {
    --qf-color: #9a3f35;
    --qf-bg: var(--biblio-terracotta-soft, #f8ece9);
    --qf-border: #e7c7c0;
}

.bc-quick-filter.is-muted {
    --qf-color: #52616d;
    --qf-bg: #eef2f4;
    --qf-border: #d6dee3;
}

.bc-quick-filter-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 22px;
    padding: 0.05rem 0.4rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.75);
    color: inherit;
    font-size: 0.76rem;
    font-weight: 700;
}

.bc-quick-filter.is-active .bc-quick-filter-count {
    background: var(--biblio-paper, #faf7ef);
    color: var(--qf-color);
}

.bc-kpi-strip {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap: 0.6rem;
    margin-bottom: 0.9rem;
}

.bc-kpi-card {
    --kpi-accent: var(--biblio-ink, #4a6b8a);
    display: block;
    padding: 0.6rem 0.75rem;
    border: 1px solid var(--biblio-border, #d8dfe2);
    border-left: 4px solid var(--kpi-accent);
    border-radius: var(--biblio-radius, 8px);
    background: var(--biblio-surface, #fff);
    box-shadow: var(--biblio-shadow-sm, 0 1px 4px rgba(20, 45, 65, 0.06));
    color: inherit !important;
    text-decoration: none !important;
}

a.bc-kpi-card:hover {
    box-shadow: var(--biblio-shadow-md, 0 8px 24px rgba(20, 45, 65, 0.08));
}

.bc-kpi-card .bc-kpi-value {
    display: block;
    color: var(--kpi-accent);
    font-size: 1.35rem;
    font-weight: 800;
    line-height: 1.1;
}

.bc-kpi-card .bc-kpi-label {
    display: block;
    margin-top: 0.15rem;
    color: var(--biblio-muted, #5e6b78);
    font-size: 0.74rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.4px;
}

.bc-kpi-card.is-success {
    --kpi-accent: var(--bc-ui-state-success-text);
}

.bc-kpi-card.is-warning {
    --kpi-accent: var(--bc-ui-state-warning-text);
}

.bc-kpi-card.is-danger {
    --kpi-accent: var(--bc-ui-state-danger-text);
}

.bc-kpi-card.is-muted {
    --kpi-accent: var(--bc-ui-state-muted-text);
}

.bc-kpi-card.is-teal {
    --kpi-accent: var(--bc-ui-state-info-text);
}

.bc-scan-bar {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: stretch;
    margin-bottom: 0.75rem;
    padding: 0.6rem;
    border: 1px solid var(--biblio-border, #d8dfe2);
    border-radius: var(--biblio-radius, 8px);
    background: var(--biblio-surface-muted, #f8fafb);
}

.bc-scan-bar form {
    display: flex;
    flex: 1 1 260px;
    gap: 0.4rem;
}

.bc-scan-bar .form-control {
    min-height: 38px;
}

.bc-scan-bar .bc-scan-hint {
    flex-basis: 100%;
    margin: 0;
    color: var(--biblio-muted, #5e6b78);
    font-size: 0.78rem;
}
/* Las etiquetas sólidas antiguas conservan la misma legibilidad que los botones. */
:root[data-theme-mode="biblioteca"] :is(.bg-secondary, .text-bg-secondary, .label-default) {
    background-color: var(--biblio-kraft) !important;
    color: var(--biblio-on-kraft) !important;
}
:root[data-theme-mode="biblioteca"] :is(.label-info, .label-success, .label-danger, .label-warning) {
    /* Las clases anteriores definen por rol el texto accesible. */
    border: 1px solid transparent;
}
