/*
 * Tema OSCURO del backend.
 *
 * Mismos roles de color que el tema biblioteca (tinta primario, sage éxito,
 * ámbar aviso, rojo peligro, teal informativo, gris neutro) pero con la
 * paleta que se espera de un modo oscuro: superficies oscuras y acentos
 * aclarados para contraste. Define el MISMO set de tokens --biblio-* que
 * biblioteca, de modo que todos los componentes bc-* que consumen
 * var(--biblio-*, fallback) se adaptan solos. Los botones/badges sólidos
 * llevan texto oscuro (--biblio-on-accent) porque el acento es claro.
 * Todo scoped a :root[data-theme-mode="oscuro"].
 */

/* ---------- Tokens ---------- */
:root[data-theme-mode="oscuro"] {
    color-scheme: dark;
    /* Acentos aclarados para contraste sobre fondo oscuro; el hover es
       más claro aún porque también se usa como color de texto activo. */
    --biblio-ink: #7da3c8;
    --biblio-ink-hover: #9cbbd8;
    --biblio-sage: #8fb389;
    --biblio-sage-hover: #a8c8a1;
    --biblio-parchment: #d3b070;
    --biblio-parchment-hover: #e3c890;
    --biblio-terracotta: #d29285;
    --biblio-terracotta-hover: #d8a89d;
    --biblio-teal: #79adb2;
    --biblio-teal-hover: #95c2c6;
    --biblio-kraft: #ad9f83;
    --biblio-kraft-hover: #c0b49a;
    --biblio-cream: #2e343b;
    --biblio-sidebar-tree-line: rgba(227, 231, 235, 0.16);

    /* Escala de superficies oscuras */
    --biblio-paper: #1e2227;
    --biblio-paper-2: #252a30;
    --biblio-paper-3: #2c3239;
    --biblio-border-warm: #3a414a;

    --biblio-ink-soft: #263647;
    --biblio-teal-soft: #24383b;
    --biblio-teal-softer: #1f2e30;
    --biblio-sage-soft: #283626;
    --biblio-kraft-soft: #322e25;
    --biblio-terracotta-soft: #3b2b27;
    --biblio-border: #3a414a;
    --biblio-border-strong: #4a525c;
    /* Controles interactivos: >= 3:1 incluso sobre las superficies suaves. */
    --biblio-control-border: #7b8794;
    --biblio-surface: #262c33;
    --biblio-surface-muted: #21262c;
    --biblio-text: #e3e7eb;
    --biblio-muted: #9fabb6;
    --biblio-shadow-sm: 0 1px 4px rgba(0, 0, 0, 0.4);
    --biblio-shadow-md: 0 8px 24px rgba(0, 0, 0, 0.5);

    --biblio-radius-sm: 6px;
    --biblio-radius: 8px;
    --biblio-radius-lg: 12px;
    --biblio-focus-ring: 0 0 0 0.16rem rgba(125, 163, 200, 0.28);
    --biblio-focus-color: #9cbbd8;
    --biblio-focus-on-sidebar: #e3c890;

    /* Botones sólidos con acento claro: texto oscuro */
    --biblio-on-accent: #15202b;
    --biblio-on-sage: #15202b;
    --biblio-on-terracotta: #15202b;
    --biblio-on-teal: #15202b;
    --biblio-on-kraft: #15202b;
    --biblio-on-warning: #15202b;

    /* El CSS estructural comparte estos estados mediante --bc-ui-state-*. */
    --biblio-state-success-text: #b9d6b4;
    --biblio-state-success-bg: #283626;
    --biblio-state-success-border: #60795a;
    --biblio-state-warning-text: #e3c890;
    --biblio-state-warning-bg: #322e25;
    --biblio-state-warning-border: #847045;
    --biblio-state-danger-text: #edb8af;
    --biblio-state-danger-bg: #3b2b27;
    --biblio-state-danger-border: #9b655a;
    --biblio-state-info-text: #b1d5d9;
    --biblio-state-info-bg: #24383b;
    --biblio-state-info-border: #507b81;
    --biblio-state-muted-text: #c2ccd4;
    --biblio-state-muted-bg: #2c3239;
    --biblio-state-muted-border: #596570;

    /* Cabecera de paneles de listado (GridView): superficie suave */
    --biblio-panel-bg: var(--biblio-paper-2);
    --biblio-panel-fg: var(--biblio-text);

    /* Remapeo de superficies Bootstrap */
    --bs-body-bg: var(--biblio-paper);
    --bs-body-bg-rgb: 30, 34, 39;
    --bs-tertiary-bg: var(--biblio-paper-2);
    --bs-tertiary-bg-rgb: 37, 42, 48;
    --bs-secondary-bg: var(--biblio-paper-3);
    --bs-secondary-bg-rgb: 44, 50, 57;
    --bs-body-color: var(--biblio-text);
    --bs-body-color-rgb: 227, 231, 235;
    --bs-emphasis-color: var(--biblio-text);
    --bs-emphasis-color-rgb: 227, 231, 235;
    --bs-secondary-color: var(--biblio-muted);
    --bs-secondary-color-rgb: 159, 171, 182;
    --bs-tertiary-color: var(--biblio-muted);
    --bs-tertiary-color-rgb: 159, 171, 182;
    --bs-primary: var(--biblio-ink);
    --bs-primary-rgb: 125, 163, 200;
    --bs-success: var(--biblio-sage);
    --bs-success-rgb: 143, 179, 137;
    --bs-danger: var(--biblio-terracotta);
    --bs-danger-rgb: 210, 146, 133;
    --bs-warning: var(--biblio-parchment);
    --bs-warning-rgb: 211, 176, 112;
    --bs-info: var(--biblio-teal);
    --bs-info-rgb: 121, 173, 178;
    --bs-secondary: var(--biblio-kraft);
    --bs-secondary-rgb: 173, 159, 131;
    --bs-primary-text-emphasis: var(--biblio-ink-hover);
    --bs-primary-bg-subtle: var(--biblio-ink-soft);
    --bs-primary-border-subtle: var(--biblio-control-border);
    --bs-success-text-emphasis: var(--biblio-state-success-text);
    --bs-success-bg-subtle: var(--biblio-state-success-bg);
    --bs-success-border-subtle: var(--biblio-state-success-border);
    --bs-warning-text-emphasis: var(--biblio-state-warning-text);
    --bs-warning-bg-subtle: var(--biblio-state-warning-bg);
    --bs-warning-border-subtle: var(--biblio-state-warning-border);
    --bs-danger-text-emphasis: var(--biblio-state-danger-text);
    --bs-danger-bg-subtle: var(--biblio-state-danger-bg);
    --bs-danger-border-subtle: var(--biblio-state-danger-border);
    --bs-info-text-emphasis: var(--biblio-state-info-text);
    --bs-info-bg-subtle: var(--biblio-state-info-bg);
    --bs-info-border-subtle: var(--biblio-state-info-border);
    --bs-secondary-text-emphasis: var(--biblio-state-muted-text);
    --bs-secondary-bg-subtle: var(--biblio-state-muted-bg);
    --bs-secondary-border-subtle: var(--biblio-state-muted-border);
    --bs-form-valid-color: var(--biblio-state-success-text);
    --bs-form-valid-border-color: var(--biblio-state-success-text);
    --bs-form-invalid-color: var(--biblio-state-danger-text);
    --bs-form-invalid-border-color: var(--biblio-state-danger-text);
    --bs-border-color: var(--biblio-border);
    --bs-link-color: var(--biblio-ink);
    --bs-link-hover-color: var(--biblio-ink-hover);
    --bs-link-color-rgb: 125, 163, 200;
    --bs-link-hover-color-rgb: 156, 187, 216;
}

:root[data-theme-mode="oscuro"] ::selection {
    background: rgba(125, 163, 200, 0.35);
}

/* ---------- Botones contextuales ---------- */
:root[data-theme-mode="oscuro"] .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);
}

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

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

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

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

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

/* Variantes outline */
:root[data-theme-mode="oscuro"] .btn-outline-primary {
    --bs-btn-color: 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);
    --bs-btn-hover-border-color: var(--biblio-ink);
    --bs-btn-active-color: var(--biblio-on-accent);
    --bs-btn-active-bg: var(--biblio-ink);
    --bs-btn-active-border-color: var(--biblio-ink);
}

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

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

:root[data-theme-mode="oscuro"] .btn-outline-warning {
    --bs-btn-color: var(--biblio-parchment-hover);
    --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="oscuro"] .btn-outline-info {
    --bs-btn-color: var(--biblio-teal);
    --bs-btn-border-color: var(--biblio-teal);
    --bs-btn-hover-color: var(--biblio-on-accent);
    --bs-btn-hover-bg: var(--biblio-teal);
    --bs-btn-hover-border-color: var(--biblio-teal);
    --bs-btn-active-color: var(--biblio-on-accent);
    --bs-btn-active-bg: var(--biblio-teal);
    --bs-btn-active-border-color: var(--biblio-teal);
}

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

/* Botón "default" legacy (BS3): superficie neutra con texto tinta */
:root[data-theme-mode="oscuro"] .btn-default {
    --bs-btn-color: var(--biblio-ink);
    --bs-btn-bg: var(--biblio-surface);
    --bs-btn-border-color: var(--biblio-border-strong);
    --bs-btn-hover-color: var(--biblio-ink-hover);
    --bs-btn-hover-bg: var(--biblio-ink-soft);
    --bs-btn-hover-border-color: var(--biblio-border-strong);
    --bs-btn-active-color: var(--biblio-ink-hover);
    --bs-btn-active-bg: var(--biblio-ink-soft);
    --bs-btn-active-border-color: var(--biblio-border-strong);
}

/* ---------- Enlaces ---------- */
:root[data-theme-mode="oscuro"] 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="oscuro"] a:not(.btn):not(.nav-link):not(.navbar-brand):not(.dropdown-item):hover {
    color: var(--biblio-ink-hover);
    text-decoration: underline;
}

/* ---------- Navbar superior ---------- */
:root[data-theme-mode="oscuro"] .app-header {
    background-color: #23282e !important;
    --bs-navbar-color: rgba(227, 231, 235, 0.8);
    --bs-navbar-hover-color: #fff;
    --bs-navbar-active-color: #fff;
    --bs-navbar-brand-color: var(--biblio-text);
    --bs-navbar-brand-hover-color: #fff;
    border-bottom: 1px solid var(--biblio-border);
}

:root[data-theme-mode="oscuro"] .app-header .nav-link,
:root[data-theme-mode="oscuro"] .app-header .navbar-brand,
:root[data-theme-mode="oscuro"] .app-header .btn-link {
    color: rgba(227, 231, 235, 0.85);
}

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

/* ---------- Sidebar: más profundo que el cuerpo ---------- */
:root[data-theme-mode="oscuro"] .app-sidebar {
    background-color: #191d22 !important;
    box-shadow: inset -1px 0 0 rgba(0, 0, 0, 0.4);
}

:root[data-theme-mode="oscuro"] .app-sidebar .sidebar-brand {
    border-bottom: 1px solid rgba(227, 231, 235, 0.08);
}

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

:root[data-theme-mode="oscuro"] .app-sidebar .sidebar-wrapper {
    scrollbar-width: thin;
    scrollbar-color: var(--biblio-control-border) transparent;
}

:root[data-theme-mode="oscuro"] .app-sidebar .sidebar-menu>.nav-item>.nav-link,
:root[data-theme-mode="oscuro"] .app-sidebar .sidebar-menu .nav-treeview .nav-link {
    margin: 1px 8px;
    border-radius: var(--biblio-radius-sm);
    color: rgba(227, 231, 235, 0.8);
}

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

:root[data-theme-mode="oscuro"] .app-sidebar .sidebar-menu .nav-link.active,
:root[data-theme-mode="oscuro"] .app-sidebar .sidebar-menu .nav-item.active>.nav-link {
    background-color: var(--biblio-ink-soft);
    color: var(--biblio-ink-hover);
    font-weight: 600;
    box-shadow: inset 3px 0 0 var(--biblio-ink);
}

:root[data-theme-mode="oscuro"] .app-sidebar .sidebar-menu .nav-item.menu-open:has(>.nav-treeview)>.nav-link,
:root[data-theme-mode="oscuro"] .app-sidebar .sidebar-menu .nav-item.active:has(>.nav-treeview)>.nav-link {
    background-color: rgba(125, 163, 200, 0.08);
    color: var(--biblio-text);
    box-shadow: none;
}

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

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

:root[data-theme-mode="oscuro"] .app-sidebar .nav-header {
    color: var(--biblio-muted);
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.6px;
}

/* ---------- Footer ---------- */
:root[data-theme-mode="oscuro"] .app-footer {
    background-color: #22272d !important;
    border-top: 1px solid var(--biblio-border);
    color: var(--biblio-muted);
}

/* ---------- GridView: panel, cabeceras y barra de herramientas ---------- */
:root[data-theme-mode="oscuro"] .grid-view>.card,
:root[data-theme-mode="oscuro"] .kv-grid-container,
:root[data-theme-mode="oscuro"] .kv-grid-container>.card,
:root[data-theme-mode="oscuro"] .kv-grid-container>.panel {
    border-color: var(--bc-ui-table-border, var(--biblio-border)) !important;
}

:root[data-theme-mode="oscuro"] .grid-view .panel-heading,
:root[data-theme-mode="oscuro"] .grid-view .card-header,
:root[data-theme-mode="oscuro"] .kv-grid-container .panel-heading,
:root[data-theme-mode="oscuro"] .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;
}

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

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

:root[data-theme-mode="oscuro"] .grid-view table>thead>tr.filters>td,
:root[data-theme-mode="oscuro"] .grid-view table>thead>tr:nth-child(2)>td,
:root[data-theme-mode="oscuro"] .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;
}

:root[data-theme-mode="oscuro"] .grid-view table>thead>tr>th[rowspan],
:root[data-theme-mode="oscuro"] .kv-grid-table>thead>tr>th[rowspan] {
    vertical-align: middle !important;
    background-color: var(--bc-ui-soft, var(--biblio-paper-2)) !important;
}

:root[data-theme-mode="oscuro"] .kv-panel-before,
:root[data-theme-mode="oscuro"] .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="oscuro"] .kv-panel-before .summary,
:root[data-theme-mode="oscuro"] .kv-panel-after .summary {
    color: var(--biblio-ink-hover);
}

:root[data-theme-mode="oscuro"] .grid-view .table>tbody>tr>td,
:root[data-theme-mode="oscuro"] .kv-grid-table>tbody>tr>td {
    vertical-align: middle;
    border-color: var(--bc-ui-table-border, var(--biblio-border));
}

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

:root[data-theme-mode="oscuro"] .table {
    --bs-table-striped-bg: rgba(125, 163, 200, 0.05);
}

/* ---------- Cards: superficie elevada sobre el fondo ---------- */
:root[data-theme-mode="oscuro"] .card {
    --bs-card-bg: var(--biblio-surface);
    --bs-card-border-color: var(--biblio-border);
    --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);
}

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

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

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

/* ---------- Paginación ---------- */
:root[data-theme-mode="oscuro"] .pagination {
    --bs-pagination-color: var(--biblio-ink);
    --bs-pagination-bg: var(--biblio-surface);
    --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: var(--biblio-on-accent);
    --bs-pagination-active-bg: var(--biblio-ink);
    --bs-pagination-active-border-color: var(--biblio-ink);
    --bs-pagination-disabled-bg: var(--biblio-surface-muted);
    --bs-pagination-disabled-border-color: var(--biblio-border);
}

/* ---------- Pestañas y pills ---------- */
:root[data-theme-mode="oscuro"] .nav-tabs {
    --bs-nav-tabs-border-color: var(--biblio-border);
    --bs-nav-tabs-link-active-color: var(--biblio-text);
    --bs-nav-tabs-link-active-bg: var(--bs-body-bg);
    --bs-nav-tabs-link-active-border-color: var(--biblio-border) var(--biblio-border) var(--bs-body-bg);
    --bs-nav-link-color: var(--biblio-ink);
    --bs-nav-link-hover-color: var(--biblio-ink-hover);
}

:root[data-theme-mode="oscuro"] .nav-pills {
    --bs-nav-pills-link-active-color: var(--biblio-on-accent);
    --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 y modales ---------- */
:root[data-theme-mode="oscuro"] .dropdown-menu {
    --bs-dropdown-bg: var(--biblio-surface);
    --bs-dropdown-border-color: var(--biblio-border);
    --bs-dropdown-border-radius: var(--biblio-radius);
    --bs-dropdown-link-hover-bg: var(--biblio-ink-soft);
    --bs-dropdown-link-active-color: var(--biblio-on-accent);
    --bs-dropdown-link-active-bg: var(--biblio-ink);
    box-shadow: var(--biblio-shadow-md);
}

:root[data-theme-mode="oscuro"] .modal-content {
    --bs-modal-bg: var(--biblio-surface);
    border: 1px solid var(--biblio-border);
    border-radius: var(--biblio-radius-lg);
    box-shadow: var(--biblio-shadow-md);
}

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

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

/* ---------- Alertas ---------- */
:root[data-theme-mode="oscuro"] .alert-success {
    --bs-alert-color: var(--biblio-state-success-text);
    --bs-alert-bg: var(--biblio-state-success-bg);
    --bs-alert-border-color: var(--biblio-state-success-border);
    --bs-alert-link-color: var(--biblio-state-success-text);
}

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

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

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

/* ---------- Formularios: borde, radio y foco coherentes ---------- */
:root[data-theme-mode="oscuro"] .form-control,
:root[data-theme-mode="oscuro"] .form-select {
    border-color: var(--biblio-border-strong);
    border-radius: var(--biblio-radius-sm);
}

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

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

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

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

:root[data-theme-mode="oscuro"] .text-success {
    color: var(--biblio-sage) !important;
}

:root[data-theme-mode="oscuro"] .text-danger {
    color: var(--biblio-terracotta) !important;
}

:root[data-theme-mode="oscuro"] .text-info {
    color: var(--biblio-teal) !important;
}

:root[data-theme-mode="oscuro"] .text-warning {
    color: var(--biblio-parchment) !important;
}

:root[data-theme-mode="oscuro"] .bg-primary {
    background-color: var(--biblio-ink) !important;
}

:root[data-theme-mode="oscuro"] .bg-success {
    background-color: var(--biblio-sage) !important;
}

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

:root[data-theme-mode="oscuro"] .bg-danger {
    background-color: var(--biblio-terracotta) !important;
}

:root[data-theme-mode="oscuro"] .bg-info {
    background-color: var(--biblio-teal) !important;
}

/* Los acentos son claros: badges y labels sólidos con texto oscuro */
:root[data-theme-mode="oscuro"] .badge.bg-primary,
:root[data-theme-mode="oscuro"] .badge.bg-success,
:root[data-theme-mode="oscuro"] .badge.bg-warning,
:root[data-theme-mode="oscuro"] .badge.bg-danger,
:root[data-theme-mode="oscuro"] .badge.bg-info,
:root[data-theme-mode="oscuro"] .badge.bg-secondary,
:root[data-theme-mode="oscuro"] .label {
    color: #15202b;
}

:root[data-theme-mode="oscuro"] .badge {
    border-radius: 999px;
    font-weight: 600;
    letter-spacing: 0.2px;
}

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

/* ---------- Cards AdminLTE "card-primary" ---------- */
:root[data-theme-mode="oscuro"] .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="oscuro"] .card-primary:not(.card-outline)>.card-header .card-title {
    color: var(--bc-ui-text, var(--biblio-text));
}

/* =====================================================================
   Formularios y componentes bc-*: ajustes específicos del modo oscuro
   ===================================================================== */

:root[data-theme-mode="oscuro"] .bc-form,
:root[data-theme-mode="oscuro"] .libro-form-wrapper,
:root[data-theme-mode="oscuro"] .biblioteca-form-wrapper,
:root[data-theme-mode="oscuro"] .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(30, 34, 39, 0.96);
    --bc-actionbar-border: var(--biblio-border);
}

/* Secciones bc-*: cabecera neutra y tipografía compartida con Ficha. */
:root[data-theme-mode="oscuro"] .bc-section>.card-header,
:root[data-theme-mode="oscuro"] .bc-form .seccion-principal>.card-header,
:root[data-theme-mode="oscuro"] .libro-form-wrapper .seccion-principal>.card-header,
:root[data-theme-mode="oscuro"] .biblioteca-form-wrapper .seccion-principal>.card-header,
:root[data-theme-mode="oscuro"] .configuracion-form-wrapper .seccion-principal>.card-header {
    color: var(--biblio-text) !important;
}

:root[data-theme-mode="oscuro"] .bc-section>.card-header small,
:root[data-theme-mode="oscuro"] .bc-section>.card-header .bc-section-meta,
:root[data-theme-mode="oscuro"] .bc-form .seccion-principal>.card-header small,
:root[data-theme-mode="oscuro"] .libro-form-wrapper .seccion-principal>.card-header small,
:root[data-theme-mode="oscuro"] .biblioteca-form-wrapper .seccion-principal>.card-header small,
:root[data-theme-mode="oscuro"] .configuracion-form-wrapper .seccion-principal>.card-header small {
    color: var(--biblio-muted) !important;
}

:root[data-theme-mode="oscuro"] .bc-section>.card-header a:not(.btn),
:root[data-theme-mode="oscuro"] .bc-form .seccion-principal>.card-header a:not(.btn),
:root[data-theme-mode="oscuro"] .libro-form-wrapper .seccion-principal>.card-header a:not(.btn),
:root[data-theme-mode="oscuro"] .biblioteca-form-wrapper .seccion-principal>.card-header a:not(.btn),
:root[data-theme-mode="oscuro"] .configuracion-form-wrapper .seccion-principal>.card-header a:not(.btn) {
    color: var(--biblio-ink-hover) !important;
}

:root[data-theme-mode="oscuro"] .bc-section>.card-header a:not(.btn):hover,
:root[data-theme-mode="oscuro"] .bc-form .seccion-principal>.card-header a:not(.btn):hover,
:root[data-theme-mode="oscuro"] .libro-form-wrapper .seccion-principal>.card-header a:not(.btn):hover,
:root[data-theme-mode="oscuro"] .biblioteca-form-wrapper .seccion-principal>.card-header a:not(.btn):hover,
:root[data-theme-mode="oscuro"] .configuracion-form-wrapper .seccion-principal>.card-header a:not(.btn):hover {
    color: var(--biblio-ink) !important;
}

/* Notas informativas */
:root[data-theme-mode="oscuro"] .bc-note,
:root[data-theme-mode="oscuro"] .bc-form .alert-info,
:root[data-theme-mode="oscuro"] .libro-form-wrapper .alert-info,
:root[data-theme-mode="oscuro"] .biblioteca-form-wrapper .alert-info,
:root[data-theme-mode="oscuro"] .configuracion-form-wrapper .alert-info {
    color: #b1d8dd;
    background: var(--biblio-teal-soft);
    border-color: #3a565a;
}

/* Inputs y select2 dentro de formularios: bordes oscuros */
:root[data-theme-mode="oscuro"] .bc-form .form-control,
:root[data-theme-mode="oscuro"] .bc-form .form-select,
:root[data-theme-mode="oscuro"] .libro-form-wrapper .form-control,
:root[data-theme-mode="oscuro"] .libro-form-wrapper .form-select,
:root[data-theme-mode="oscuro"] .biblioteca-form-wrapper .form-control,
:root[data-theme-mode="oscuro"] .biblioteca-form-wrapper .form-select,
:root[data-theme-mode="oscuro"] .configuracion-form-wrapper .form-control,
:root[data-theme-mode="oscuro"] .configuracion-form-wrapper .form-select,
:root[data-theme-mode="oscuro"] .usuario-create-wrapper .form-control,
:root[data-theme-mode="oscuro"] .usuario-create-wrapper .form-select,
:root[data-theme-mode="oscuro"] .usuario-create-wrapper select,
:root[data-theme-mode="oscuro"] .estadisticas-panel input,
:root[data-theme-mode="oscuro"] .estadisticas-panel select,
:root[data-theme-mode="oscuro"] .bc-form .kv-date-picker,
:root[data-theme-mode="oscuro"] .bc-form .kv-date-remove,
:root[data-theme-mode="oscuro"] .bc-form .input-group-text {
    border-color: var(--biblio-border-strong);
}

/* Select2 (todas las instancias: formularios, filtros de grid, modales…).
   El CSS del widget trae fondo blanco fijo y no se entera del modo oscuro,
   así que se repinta igual que un form-control oscuro normal. */
:root[data-theme-mode="oscuro"] .select2-container .select2-selection {
    background-color: var(--bs-body-bg) !important;
    border-color: var(--biblio-border-strong) !important;
    color: var(--biblio-text) !important;
}

:root[data-theme-mode="oscuro"] .select2-container .select2-selection__rendered {
    color: var(--biblio-text) !important;
}

:root[data-theme-mode="oscuro"] .select2-container .select2-selection__placeholder {
    color: var(--biblio-muted) !important;
}

:root[data-theme-mode="oscuro"] .select2-container .select2-search--inline .select2-search__field {
    background-color: transparent;
    color: var(--biblio-text);
}

:root[data-theme-mode="oscuro"] .select2-container .select2-search--inline .select2-search__field::placeholder {
    color: var(--biblio-muted);
}

/* Chips de selección múltiple */
:root[data-theme-mode="oscuro"] .select2-container .select2-selection--multiple .select2-selection__choice {
    background-color: var(--biblio-paper-3) !important;
    border-color: var(--biblio-border-strong) !important;
    color: var(--biblio-text) !important;
}

/* Desplegable de opciones (se monta colgando de <body>) */
:root[data-theme-mode="oscuro"] .select2-dropdown {
    background-color: var(--biblio-surface) !important;
    border-color: var(--biblio-border-strong) !important;
    color: var(--biblio-text);
}

:root[data-theme-mode="oscuro"] .select2-dropdown .select2-search--dropdown .select2-search__field {
    background-color: var(--bs-body-bg);
    border: 1px solid var(--biblio-control-border);
    color: var(--biblio-text);
}

:root[data-theme-mode="oscuro"] .select2-dropdown .select2-results__option {
    color: var(--biblio-text);
}

/* Sin resultados y errores comparten la clase de mensaje del proveedor. */
:root[data-theme-mode="oscuro"] .select2-dropdown .select2-results__option.select2-results__message {
    background-color: var(--biblio-state-warning-bg) !important;
    color: var(--biblio-state-warning-text) !important;
    border-color: var(--biblio-state-warning-border);
}

/* La búsqueda y la carga adicional usan el mismo par informativo oscuro. */
:root[data-theme-mode="oscuro"] .select2-dropdown .select2-results__option.loading-results,
:root[data-theme-mode="oscuro"] .select2-dropdown .select2-results__option.select2-results__option--load-more {
    background-color: var(--biblio-state-info-bg) !important;
    color: var(--biblio-state-info-text) !important;
    border-color: var(--biblio-state-info-border);
}

:root[data-theme-mode="oscuro"] .select2-dropdown .select2-results__option--highlighted[aria-selected],
:root[data-theme-mode="oscuro"] .select2-dropdown .select2-results__option--highlighted[data-selected] {
    background-color: var(--biblio-ink-soft) !important;
    color: var(--biblio-ink-hover) !important;
}

:root[data-theme-mode="oscuro"] .select2-dropdown .select2-results__option[aria-selected="true"],
:root[data-theme-mode="oscuro"] .select2-dropdown .select2-results__option[data-selected="true"] {
    background-color: var(--biblio-paper-3) !important;
    color: var(--biblio-text) !important;
}

/* Iconos de limpiar/quitar y flecha */
:root[data-theme-mode="oscuro"] .select2-container--krajee-bs5 .select2-selection__clear,
:root[data-theme-mode="oscuro"] .select2-container--bootstrap5 .select2-selection__clear,
:root[data-theme-mode="oscuro"] .select2-container--default .select2-selection__clear,
:root[data-theme-mode="oscuro"] .select2-container--krajee-bs5 .select2-selection__choice__remove,
:root[data-theme-mode="oscuro"] .select2-container--bootstrap5 .select2-selection__choice__remove,
:root[data-theme-mode="oscuro"] .select2-container--default .select2-selection__choice__remove {
    color: #d3dae0 !important;
}

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

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

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

/* Zona de subida de archivos */
:root[data-theme-mode="oscuro"] .bc-upload-preview,
:root[data-theme-mode="oscuro"] .bc-form .upload-mini .preview,
:root[data-theme-mode="oscuro"] .biblioteca-form-wrapper .upload-mini .preview,
:root[data-theme-mode="oscuro"] .libro-form-wrapper #portada-libro {
    border-color: var(--biblio-border-strong);
}

/* Píldoras de estado */
:root[data-theme-mode="oscuro"] .bc-status-success {
    color: var(--biblio-state-success-text);
    background: var(--biblio-state-success-bg);
    border-color: var(--biblio-state-success-border);
}

:root[data-theme-mode="oscuro"] .bc-status-warning {
    color: var(--biblio-state-warning-text);
    background: var(--biblio-state-warning-bg);
    border-color: var(--biblio-state-warning-border);
}

:root[data-theme-mode="oscuro"] .bc-status-danger {
    color: var(--biblio-state-danger-text);
    background: var(--biblio-state-danger-bg);
    border-color: var(--biblio-state-danger-border);
}

:root[data-theme-mode="oscuro"] .bc-status-muted {
    color: var(--biblio-state-muted-text);
    background: var(--biblio-state-muted-bg);
    border-color: var(--biblio-state-muted-border);
}

/* Píldoras del historial */
:root[data-theme-mode="oscuro"] .historial-pill.is-success {
    color: #a8d3ae;
    background: #263a29;
}

:root[data-theme-mode="oscuro"] .historial-pill.is-warning {
    color: #dec48f;
    background: #3a3322;
}

:root[data-theme-mode="oscuro"] .historial-pill.is-late {
    color: #e0b277;
    background: #3d2f1d;
}

:root[data-theme-mode="oscuro"] .historial-pill.is-danger {
    color: #dfa49a;
    background: #402c28;
}

:root[data-theme-mode="oscuro"] .historial-pill.is-neutral {
    color: #b6c1ca;
    background: #2c333a;
}

/* Filtros rápidos del catálogo */
:root[data-theme-mode="oscuro"] .bc-quick-filter.is-success {
    --qf-color: #a8d3ae;
    --qf-bg: #243527;
    --qf-border: #34503a;
}

:root[data-theme-mode="oscuro"] .bc-quick-filter.is-warning {
    --qf-color: #dec48f;
    --qf-bg: #383021;
    --qf-border: #54482e;
}

:root[data-theme-mode="oscuro"] .bc-quick-filter.is-danger {
    --qf-color: #dfa49a;
    --qf-bg: var(--biblio-terracotta-soft);
    --qf-border: #573c36;
}

:root[data-theme-mode="oscuro"] .bc-quick-filter.is-muted {
    --qf-color: #b6c1ca;
    --qf-bg: #2a3138;
    --qf-border: #3e4750;
}

:root[data-theme-mode="oscuro"] .bc-quick-filter.is-active {
    color: #15202b !important;
}

:root[data-theme-mode="oscuro"] .bc-quick-filter-count {
    background: rgba(0, 0, 0, 0.35);
}

:root[data-theme-mode="oscuro"] .bc-quick-filter.is-active .bc-quick-filter-count {
    background: var(--biblio-paper);
    color: var(--biblio-text);
}

/* Tags y badges neutros */
:root[data-theme-mode="oscuro"] .bc-tag,
:root[data-theme-mode="oscuro"] .label.label-default,
:root[data-theme-mode="oscuro"] .badge.badge-secondary {
    border-color: #3e4750;
    background: #2a3138;
    color: #b9c6cf;
}

/* Tarjetas de listado */
:root[data-theme-mode="oscuro"] .bc-list-card,
:root[data-theme-mode="oscuro"] .libro-index>.card,
:root[data-theme-mode="oscuro"] .prestamo-index>.card {
    border-color: var(--biblio-border);
}

/* ---------- Importación por ISBN ---------- */
:root[data-theme-mode="oscuro"] .seccion-importar .paso-num {
    color: #15202b;
}

:root[data-theme-mode="oscuro"] .seccion-importar .bg-white,
:root[data-theme-mode="oscuro"] .seccion-importar .bc-help-panel,
:root[data-theme-mode="oscuro"] .seccion-importar .fuente-card {
    background-color: var(--biblio-surface) !important;
    border-color: var(--biblio-border) !important;
}

:root[data-theme-mode="oscuro"] .seccion-importar .fuente-card.is-disabled {
    background-color: var(--biblio-surface-muted) !important;
}

/* ---------- Formularios de usuario (alta/edición) ---------- */
:root[data-theme-mode="oscuro"] .usuario-create-wrapper {
    --usuario-create-accent: var(--biblio-ink);
    --usuario-create-accent-hover: var(--biblio-ink-hover);
    --usuario-create-alt: var(--biblio-ink);
    --usuario-create-alt-hover: var(--biblio-ink-hover);
    --usuario-create-soft: var(--biblio-paper-2);
    --usuario-create-border: var(--biblio-border);
    --usuario-create-text: var(--biblio-text);
    --usuario-create-muted: var(--biblio-muted);
}

:root[data-theme-mode="oscuro"] .usuario-create-wrapper .usuario-create-step,
:root[data-theme-mode="oscuro"] .usuario-create-wrapper .usuario-create-section-profile .usuario-create-step {
    background: var(--biblio-ink-soft);
    color: var(--biblio-ink-hover);
}

:root[data-theme-mode="oscuro"] .usuario-create-actions {
    border-top-color: transparent;
}

:root[data-theme-mode="oscuro"] .usuario-update-tabs {
    --usuario-create-soft: var(--biblio-paper-2);
    --usuario-create-border: var(--biblio-border);
}

:root[data-theme-mode="oscuro"] .usuario-update-tabs .nav-tabs .nav-link {
    color: #cbd3d8;
}

:root[data-theme-mode="oscuro"] .usuario-update-tabs .nav-tabs .nav-link:hover,
:root[data-theme-mode="oscuro"] .usuario-update-tabs .nav-tabs .nav-link.active {
    color: #eef2f4;
    background: var(--usuario-create-soft);
    border-color: var(--usuario-create-border);
}

/* Iframe del carnet */
:root[data-theme-mode="oscuro"] .usuario-carnet-frame {
    background: var(--biblio-surface-muted);
    border-color: var(--biblio-border);
}

/* ---------- Historial de usuario ---------- */
:root[data-theme-mode="oscuro"] .usuario-historial-wrapper {
    --historial-border: var(--biblio-border);
    --historial-muted: var(--biblio-muted);
    --historial-soft: var(--biblio-paper-2);
    --historial-text: var(--biblio-text);
}

/* ---------- Panel de estadísticas ---------- */
:root[data-theme-mode="oscuro"] .estadisticas-panel {
    --stats-accent: var(--biblio-ink);
    --stats-accent-hover: var(--biblio-ink-hover);
    --stats-soft: var(--biblio-paper-2);
    --stats-border: var(--biblio-border);
    --stats-text: var(--biblio-text);
    --stats-muted: var(--biblio-muted);
}

:root[data-theme-mode="oscuro"] .estadisticas-panel .nav-tabs .nav-link {
    color: #cbd3d8;
}

:root[data-theme-mode="oscuro"] .estadisticas-panel .nav-tabs .nav-link:hover,
:root[data-theme-mode="oscuro"] .estadisticas-panel .nav-tabs .nav-link.active {
    color: #eef2f4;
    background: var(--stats-soft);
    border-color: var(--stats-border);
}

:root[data-theme-mode="oscuro"] .estadisticas-panel .card-primary>.card-header .card-title {
    color: #d9dee2;
}

/* =====================================================================
   Compatibilidad global con vistas heredadas

   Varias pantallas anteriores a los temas usan clases de Bootstrap 3/4 o
   superficies auxiliares que no consumen las variables de Bootstrap 5.
   Esta capa evita fondos claros y texto oscuro sin alterar los colores
   semánticos de estados, botones, portadas, códigos QR o documentos para
   imprimir.
   ===================================================================== */

:root[data-theme-mode="oscuro"] body,
:root[data-theme-mode="oscuro"] .app-wrapper,
:root[data-theme-mode="oscuro"] .app-main,
:root[data-theme-mode="oscuro"] .app-content,
:root[data-theme-mode="oscuro"] .content-wrapper {
    background-color: var(--biblio-paper);
    color: var(--biblio-text);
}

:root[data-theme-mode="oscuro"] .panel,
:root[data-theme-mode="oscuro"] .well,
:root[data-theme-mode="oscuro"] .box,
:root[data-theme-mode="oscuro"] .jumbotron {
    background-color: var(--biblio-surface);
    border-color: var(--biblio-border);
    color: var(--biblio-text);
}

:root[data-theme-mode="oscuro"] .panel-heading,
:root[data-theme-mode="oscuro"] .panel-footer,
:root[data-theme-mode="oscuro"] .box-header,
:root[data-theme-mode="oscuro"] .box-footer {
    background-color: var(--biblio-paper-2);
    border-color: var(--biblio-border);
    color: var(--biblio-text);
}

:root[data-theme-mode="oscuro"] .table {
    --bs-table-color: var(--biblio-text);
    --bs-table-bg: var(--biblio-surface);
    --bs-table-border-color: var(--biblio-border);
    --bs-table-striped-color: var(--biblio-text);
    --bs-table-striped-bg: rgba(125, 163, 200, 0.055);
    --bs-table-active-color: var(--biblio-text);
    --bs-table-active-bg: var(--biblio-ink-soft);
    --bs-table-hover-color: var(--biblio-text);
    --bs-table-hover-bg: #2a3138;
    color: var(--biblio-text);
}

:root[data-theme-mode="oscuro"] .table>:not(caption)>*>* {
    border-color: var(--biblio-border);
}

:root[data-theme-mode="oscuro"] .table-light {
    --bs-table-color: var(--biblio-ink-hover);
    --bs-table-bg: var(--biblio-paper-3);
    --bs-table-border-color: var(--biblio-border);
    --bs-table-striped-bg: var(--biblio-paper-2);
    --bs-table-striped-color: var(--biblio-text);
    --bs-table-active-bg: var(--biblio-ink-soft);
    --bs-table-active-color: var(--biblio-text);
    --bs-table-hover-bg: #2a3138;
    --bs-table-hover-color: var(--biblio-text);
    color: var(--biblio-ink-hover);
}

:root[data-theme-mode="oscuro"] .grid-view .table>tbody>tr>td,
:root[data-theme-mode="oscuro"] .kv-grid-table>tbody>tr>td {
    color: var(--biblio-text);
}

:root[data-theme-mode="oscuro"] .bg-white,
:root[data-theme-mode="oscuro"] .bg-light {
    background-color: var(--biblio-surface) !important;
    color: var(--biblio-text) !important;
}

:root[data-theme-mode="oscuro"] .text-dark,
:root[data-theme-mode="oscuro"] .text-body {
    color: var(--biblio-text) !important;
}

:root[data-theme-mode="oscuro"] .text-muted,
:root[data-theme-mode="oscuro"] .text-secondary,
:root[data-theme-mode="oscuro"] .text-body-secondary,
:root[data-theme-mode="oscuro"] .help-block,
:root[data-theme-mode="oscuro"] .form-text {
    color: var(--biblio-muted) !important;
}

:root[data-theme-mode="oscuro"] hr {
    border-color: var(--biblio-border);
    opacity: 1;
}

:root[data-theme-mode="oscuro"] code,
:root[data-theme-mode="oscuro"] pre,
:root[data-theme-mode="oscuro"] .code {
    color: #d8b4d8;
    background-color: var(--biblio-paper-2);
}

:root[data-theme-mode="oscuro"] pre {
    border-color: var(--biblio-border);
}

:root[data-theme-mode="oscuro"] .form-control,
:root[data-theme-mode="oscuro"] .form-select,
:root[data-theme-mode="oscuro"] .custom-select,
:root[data-theme-mode="oscuro"] .custom-file-label,
:root[data-theme-mode="oscuro"] .input-group-text {
    background-color: var(--bs-body-bg);
    border-color: var(--biblio-border-strong);
    color: var(--biblio-text);
}

:root[data-theme-mode="oscuro"] .form-control::placeholder,
:root[data-theme-mode="oscuro"] .form-select::placeholder {
    color: var(--biblio-muted);
    opacity: 1;
}

:root[data-theme-mode="oscuro"] .form-control:disabled,
:root[data-theme-mode="oscuro"] .form-control[readonly],
:root[data-theme-mode="oscuro"] .form-select:disabled,
:root[data-theme-mode="oscuro"] fieldset:disabled .form-control,
:root[data-theme-mode="oscuro"] fieldset:disabled .form-select {
    background-color: var(--biblio-paper-2);
    color: var(--biblio-muted);
    opacity: 1;
}

:root[data-theme-mode="oscuro"] .prestamo-daterange-filter {
    background: var(--bs-body-bg);
    border-color: var(--biblio-border-strong);
    color: var(--biblio-text);
}

:root[data-theme-mode="oscuro"] .list-group {
    --bs-list-group-color: var(--biblio-text);
    --bs-list-group-bg: var(--biblio-surface);
    --bs-list-group-border-color: var(--biblio-border);
    --bs-list-group-action-color: var(--biblio-text);
    --bs-list-group-action-hover-color: var(--biblio-ink-hover);
    --bs-list-group-action-hover-bg: var(--biblio-ink-soft);
    --bs-list-group-active-color: var(--biblio-on-accent);
    --bs-list-group-active-bg: var(--biblio-ink);
    --bs-list-group-active-border-color: var(--biblio-ink);
}

:root[data-theme-mode="oscuro"] .accordion {
    --bs-accordion-color: var(--biblio-text);
    --bs-accordion-bg: var(--biblio-surface);
    --bs-accordion-border-color: var(--biblio-border);
    --bs-accordion-btn-color: var(--biblio-text);
    --bs-accordion-btn-bg: var(--biblio-paper-2);
    --bs-accordion-active-color: var(--biblio-ink-hover);
    --bs-accordion-active-bg: var(--biblio-ink-soft);
}

:root[data-theme-mode="oscuro"] .offcanvas,
:root[data-theme-mode="oscuro"] .popover {
    --bs-offcanvas-bg: var(--biblio-surface);
    --bs-offcanvas-color: var(--biblio-text);
    --bs-popover-bg: var(--biblio-surface);
    --bs-popover-border-color: var(--biblio-border);
    --bs-popover-header-bg: var(--biblio-paper-2);
    --bs-popover-header-color: var(--biblio-text);
    --bs-popover-body-color: var(--biblio-text);
}

:root[data-theme-mode="oscuro"] .file-preview,
:root[data-theme-mode="oscuro"] .file-drop-zone,
:root[data-theme-mode="oscuro"] .file-input .file-preview-frame,
:root[data-theme-mode="oscuro"] .kv-file-content {
    background-color: var(--biblio-surface);
    border-color: var(--biblio-border);
    color: var(--biblio-text);
}

:root[data-theme-mode="oscuro"] .daterangepicker,
:root[data-theme-mode="oscuro"] .datepicker,
:root[data-theme-mode="oscuro"] .bootstrap-datetimepicker-widget,
:root[data-theme-mode="oscuro"] .ui-widget-content {
    background-color: var(--biblio-surface);
    border-color: var(--biblio-border);
    color: var(--biblio-text);
}

:root[data-theme-mode="oscuro"] .daterangepicker td.off,
:root[data-theme-mode="oscuro"] .daterangepicker td.off.in-range,
:root[data-theme-mode="oscuro"] .daterangepicker td.off.start-date,
:root[data-theme-mode="oscuro"] .daterangepicker td.off.end-date,
:root[data-theme-mode="oscuro"] .datepicker table tr td.old,
:root[data-theme-mode="oscuro"] .datepicker table tr td.new {
    background-color: var(--biblio-paper-2);
    color: var(--biblio-muted);
}

/* Herramientas administrativas que conservan paneles propios. */
:root[data-theme-mode="oscuro"] .author-cleanup-dashboard .metric-card,
:root[data-theme-mode="oscuro"] .author-cleanup-dashboard .run-panel,
:root[data-theme-mode="oscuro"] .author-cleanup-dashboard .author-cleanup-live-panel,
:root[data-theme-mode="oscuro"] .author-cleanup-dashboard .author-cleanup-live-stat,
:root[data-theme-mode="oscuro"] .author-cleanup-dashboard .author-cleanup-live-item,
:root[data-theme-mode="oscuro"] .author-cleanup-report-modal,
:root[data-theme-mode="oscuro"] .author-cleanup-processing-card,
:root[data-theme-mode="oscuro"] .author-training-source,
:root[data-theme-mode="oscuro"] .author-training-candidate,
:root[data-theme-mode="oscuro"] .duplicate-authors-view .panel {
    background: var(--biblio-surface);
    border-color: var(--biblio-border);
    color: var(--biblio-text);
}

:root[data-theme-mode="oscuro"] .author-cleanup-dashboard .cleanup-step,
:root[data-theme-mode="oscuro"] .author-cleanup-dashboard .author-cleanup-live-stat-value,
:root[data-theme-mode="oscuro"] .author-cleanup-dashboard .author-cleanup-live-name,
:root[data-theme-mode="oscuro"] .author-cleanup-dashboard .author-cleanup-live-result,
:root[data-theme-mode="oscuro"] .author-cleanup-processing-estimate-value,
:root[data-theme-mode="oscuro"] .author-training-candidate-list {
    color: var(--biblio-text);
}

:root[data-theme-mode="oscuro"] .author-cleanup-report-header,
:root[data-theme-mode="oscuro"] .author-cleanup-processing-estimate,
:root[data-theme-mode="oscuro"] .author-training-context {
    background: var(--biblio-paper-2);
    border-color: var(--biblio-border);
    color: var(--biblio-text);
}

/* Pantallas de libro y préstamo que tienen componentes fuera de bc-form. */
:root[data-theme-mode="oscuro"] .bc-metadata-overlay-panel,
:root[data-theme-mode="oscuro"] .bc-metadata-source-row,
:root[data-theme-mode="oscuro"] .prestamo-hero,
:root[data-theme-mode="oscuro"] .loan-section,
:root[data-theme-mode="oscuro"] .book-edit2-header,
:root[data-theme-mode="oscuro"] .libro-update2 .seccion-importar,
:root[data-theme-mode="oscuro"] .libro-update2 #acordeonCamposAvanzados .accordion-item,
:root[data-theme-mode="oscuro"] .libro-update2 #acordeonCamposAvanzados .accordion-body {
    background: var(--biblio-surface) !important;
    border-color: var(--biblio-border) !important;
    color: var(--biblio-text);
}

/* =====================================================================
   Contraste de pantalla y componentes de terceros.
   Conserva la geometría compartida y las plantillas físicas de impresión.
   ===================================================================== */
@media screen {
    :root[data-theme-mode="oscuro"] .bc6-mini-badge--primary {
        color: var(--biblio-ink-hover);
    }

    :root[data-theme-mode="oscuro"] :is(.app-header, .app-sidebar, .app-footer) {
        color-scheme: dark;
        --bs-body-color: var(--biblio-text);
        --bs-emphasis-color: var(--biblio-text);
        --bs-secondary-color: var(--biblio-muted);
        --bs-tertiary-color: var(--biblio-muted);
    }

    :root[data-theme-mode="oscuro"] :is(.btn-primary, .btn-success, .btn-warning, .btn-danger, .btn-info, .btn-secondary) {
        color: var(--biblio-on-accent) !important;
    }

    :root[data-theme-mode="oscuro"] :is(.btn-primary, .btn-success, .btn-warning, .btn-danger, .btn-info, .btn-secondary) :is(.text-white, .text-light) {
        color: inherit !important;
    }

    :root[data-theme-mode="oscuro"] .bc-create-action {
        --bs-btn-color: var(--biblio-on-sage);
        --bs-btn-bg: var(--biblio-sage);
        --bs-btn-border-color: var(--biblio-sage);
        --bs-btn-hover-color: var(--biblio-on-sage);
        --bs-btn-hover-bg: var(--biblio-sage-hover);
        --bs-btn-hover-border-color: var(--biblio-sage-hover);
        --bs-btn-active-color: var(--biblio-on-sage);
        --bs-btn-active-bg: var(--biblio-sage-hover);
        --bs-btn-active-border-color: var(--biblio-sage-hover);
        color: var(--biblio-on-sage) !important;
    }

    :root[data-theme-mode="oscuro"] .btn:is(.btn-outline-primary, .btn-outline-success, .btn-outline-warning, .btn-outline-danger, .btn-outline-info, .btn-outline-secondary):is(:hover, :active, .active, .show),
    :root[data-theme-mode="oscuro"] .btn-check:checked + .btn:is(.btn-outline-primary, .btn-outline-success, .btn-outline-warning, .btn-outline-danger, .btn-outline-info, .btn-outline-secondary) {
        color: var(--biblio-on-accent) !important;
    }

    :root[data-theme-mode="oscuro"] :is(.btn-light, .btn-dark) {
        --bs-btn-color: var(--biblio-text);
        --bs-btn-bg: var(--biblio-paper-3);
        --bs-btn-border-color: var(--biblio-control-border);
        --bs-btn-hover-color: var(--biblio-text);
        --bs-btn-hover-bg: var(--biblio-ink-soft);
        --bs-btn-hover-border-color: var(--biblio-ink);
        --bs-btn-active-color: var(--biblio-text);
        --bs-btn-active-bg: var(--biblio-ink-soft);
        --bs-btn-active-border-color: var(--biblio-ink);
    }

    :root[data-theme-mode="oscuro"] :is(.bg-primary, .text-bg-primary, .label-primary) {
        background-color: var(--biblio-ink) !important;
        color: var(--biblio-on-accent) !important;
    }
    :root[data-theme-mode="oscuro"] :is(.bg-success, .text-bg-success, .label-success) {
        background-color: var(--biblio-sage) !important;
        color: var(--biblio-on-sage) !important;
    }
    :root[data-theme-mode="oscuro"] :is(.bg-warning, .text-bg-warning, .label-warning) {
        background-color: var(--biblio-parchment) !important;
        color: var(--biblio-on-warning) !important;
    }
    :root[data-theme-mode="oscuro"] :is(.bg-danger, .text-bg-danger, .label-danger) {
        background-color: var(--biblio-terracotta) !important;
        color: var(--biblio-on-terracotta) !important;
    }
    :root[data-theme-mode="oscuro"] :is(.bg-info, .text-bg-info, .label-info) {
        background-color: var(--biblio-teal) !important;
        color: var(--biblio-on-teal) !important;
    }
    :root[data-theme-mode="oscuro"] :is(.bg-secondary, .text-bg-secondary) {
        background-color: var(--biblio-kraft) !important;
        color: var(--biblio-on-kraft) !important;
    }

    /* Los estados con texto propio prevalecen sobre utilidades de badge antiguas. */
    :root[data-theme-mode="oscuro"] .bc-status-success {
        color: var(--biblio-state-success-text) !important;
        background-color: var(--biblio-state-success-bg) !important;
        border-color: var(--biblio-state-success-border);
    }
    :root[data-theme-mode="oscuro"] .bc-status-warning {
        color: var(--biblio-state-warning-text) !important;
        background-color: var(--biblio-state-warning-bg) !important;
        border-color: var(--biblio-state-warning-border);
    }
    :root[data-theme-mode="oscuro"] .bc-status-danger {
        color: var(--biblio-state-danger-text) !important;
        background-color: var(--biblio-state-danger-bg) !important;
        border-color: var(--biblio-state-danger-border);
    }
    :root[data-theme-mode="oscuro"] .bc-status-info {
        color: var(--biblio-state-info-text) !important;
        background-color: var(--biblio-state-info-bg) !important;
        border-color: var(--biblio-state-info-border);
    }
    :root[data-theme-mode="oscuro"] .bc-status-muted {
        color: var(--biblio-state-muted-text) !important;
        background-color: var(--biblio-state-muted-bg) !important;
        border-color: var(--biblio-state-muted-border);
    }

    :root[data-theme-mode="oscuro"] .progress {
        --bs-progress-bg: var(--biblio-paper-3);
        --bs-progress-bar-color: var(--biblio-on-accent);
    }
    :root[data-theme-mode="oscuro"] .progress-bar {
        color: var(--biblio-on-accent);
    }

    /* El borde distingue controles vacíos; los bordes decorativos siguen suaves. */
    :root[data-theme-mode="oscuro"] :is(.app-content, .modal) :is(.form-control, .form-select, .custom-select, .custom-file-label, .input-group-text),
    :root[data-theme-mode="oscuro"] .app-sidebar :is(.form-control, .form-select, .input-group-text),
    :root[data-theme-mode="oscuro"] .select2-container .select2-selection {
        border-color: var(--biblio-control-border);
    }
    :root[data-theme-mode="oscuro"] :is(.app-content, .modal) .select2-container .select2-selection {
        border-color: var(--biblio-control-border) !important;
    }
    :root[data-theme-mode="oscuro"] :is(.app-content, .modal) .has-error .select2-container .select2-selection {
        border-color: var(--biblio-state-danger-text) !important;
    }
    :root[data-theme-mode="oscuro"] :is(.app-content, .modal) .has-success .select2-container .select2-selection {
        border-color: var(--biblio-state-success-text) !important;
    }
    :root[data-theme-mode="oscuro"] :is(.app-content, .modal) .has-warning .select2-container .select2-selection {
        border-color: var(--biblio-state-warning-text) !important;
    }
    :root[data-theme-mode="oscuro"] :is(.app-content, .modal) :is(.form-control, .form-select):focus {
        border-color: var(--biblio-ink);
    }
    :root[data-theme-mode="oscuro"] :is(.custom-select, .select2-search__field)::placeholder {
        color: var(--biblio-muted);
        opacity: 1;
    }
    :root[data-theme-mode="oscuro"] .form-select {
        --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23e3e7eb' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
    }
    :root[data-theme-mode="oscuro"] .form-control::file-selector-button {
        background: var(--biblio-paper-3);
        color: var(--biblio-text);
        border-color: var(--biblio-control-border);
    }

    :root[data-theme-mode="oscuro"] .form-check-input {
        background-color: var(--biblio-paper);
        border-color: var(--biblio-control-border);
    }
    :root[data-theme-mode="oscuro"] .form-check-input:checked,
    :root[data-theme-mode="oscuro"] .form-check-input:indeterminate {
        background-color: var(--biblio-ink);
        border-color: var(--biblio-ink);
    }
    :root[data-theme-mode="oscuro"] .form-check-input:checked[type="checkbox"] {
        --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%2315202b' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
    }
    :root[data-theme-mode="oscuro"] .form-check-input:checked[type="radio"] {
        --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%2315202b'/%3e%3c/svg%3e");
    }
    :root[data-theme-mode="oscuro"] .form-check-input[type="checkbox"]:indeterminate {
        --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%2315202b' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M4 10h12'/%3e%3c/svg%3e");
    }
    :root[data-theme-mode="oscuro"] .form-switch .form-check-input {
        --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%239fabb6'/%3e%3c/svg%3e");
    }
    :root[data-theme-mode="oscuro"] .form-switch .form-check-input:checked {
        --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2315202b'/%3e%3c/svg%3e");
    }

    html:root[data-theme-mode="oscuro"] :is(a, button, input, select, textarea, [tabindex], [role="button"]):focus-visible,
    :root[data-theme-mode="oscuro"] :is(.select2-container--focus, .select2-container--open) .select2-selection {
        outline: 2px solid var(--biblio-focus-color);
        outline-offset: 3px;
        box-shadow: var(--biblio-focus-ring);
    }

    :root[data-theme-mode="oscuro"] input:-webkit-autofill,
    :root[data-theme-mode="oscuro"] textarea:-webkit-autofill,
    :root[data-theme-mode="oscuro"] select:-webkit-autofill {
        -webkit-text-fill-color: var(--biblio-text) !important;
        caret-color: var(--biblio-text);
        box-shadow: inset 0 0 0 1000px var(--biblio-paper) !important;
        border-color: var(--biblio-control-border);
    }
    :root[data-theme-mode="oscuro"] :is(input, textarea, select):autofill {
        color: var(--biblio-text);
        background-color: var(--biblio-paper);
        caret-color: var(--biblio-text);
    }

    :root[data-theme-mode="oscuro"] .dropdown-menu {
        --bs-dropdown-color: var(--biblio-text);
        --bs-dropdown-link-color: var(--biblio-text);
        --bs-dropdown-link-hover-color: var(--biblio-ink-hover);
        --bs-dropdown-header-color: var(--biblio-muted);
        --bs-dropdown-divider-bg: var(--biblio-border);
    }
    :root[data-theme-mode="oscuro"] .pagination {
        --bs-pagination-disabled-color: var(--biblio-muted);
    }
    :root[data-theme-mode="oscuro"] .popover {
        --bs-popover-body-color: var(--biblio-text);
        --bs-popover-header-color: var(--biblio-text);
    }
    :root[data-theme-mode="oscuro"] .tooltip {
        --bs-tooltip-color: var(--biblio-text);
        --bs-tooltip-bg: var(--biblio-paper);
        --bs-tooltip-opacity: 1;
    }
    :root[data-theme-mode="oscuro"] .btn-close {
        --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='%23e3e7eb' d='M2.15 2.15a.5.5 0 0 1 .7 0L8 7.29l5.15-5.14a.5.5 0 0 1 .7.7L8.71 8l5.14 5.15a.5.5 0 0 1-.7.7L8 8.71l-5.15 5.14a.5.5 0 0 1-.7-.7L7.29 8 2.15 2.85a.5.5 0 0 1 0-.7'/%3e%3c/svg%3e");
        --bs-btn-close-opacity: 1;
        --bs-btn-close-hover-opacity: 1;
        --bs-btn-close-focus-opacity: 1;
        --bs-btn-close-filter: none;
        color: var(--biblio-text);
    }

    :root[data-theme-mode="oscuro"] :is(.app-content, .modal) .invalid-tooltip {
        color: var(--biblio-state-danger-text) !important;
        background-color: var(--biblio-state-danger-bg);
    }
    :root[data-theme-mode="oscuro"] :is(.app-content, .modal) .valid-tooltip {
        color: var(--biblio-state-success-text) !important;
        background-color: var(--biblio-state-success-bg);
    }

    /* Calendarios ajenos a las variables de Bootstrap 5. */
    :root[data-theme-mode="oscuro"] .daterangepicker :is(.calendar-table, .drp-buttons),
    :root[data-theme-mode="oscuro"] .ui-widget-header {
        background-color: var(--biblio-surface);
        border-color: var(--biblio-border);
        color: var(--biblio-text);
    }
    :root[data-theme-mode="oscuro"] .daterangepicker :is(td.available:hover, th.available:hover, .ranges li:hover),
    :root[data-theme-mode="oscuro"] .datepicker table tr :is(td.day:hover, td.focused, th.prev:hover, th.next:hover),
    :root[data-theme-mode="oscuro"] .bootstrap-datetimepicker-widget table :is(td.day:hover, td.hour:hover, td.minute:hover, td.second:hover) {
        background-color: var(--biblio-ink-soft);
        color: var(--biblio-text);
    }
    :root[data-theme-mode="oscuro"] .daterangepicker td.in-range {
        background-color: var(--biblio-ink-soft);
        color: var(--biblio-text);
    }
    :root[data-theme-mode="oscuro"] .daterangepicker :is(td.active, td.active:hover, .ranges li.active),
    :root[data-theme-mode="oscuro"] .datepicker table tr :is(td.active, td.active:hover, td.active.highlighted, td.active.highlighted:hover),
    :root[data-theme-mode="oscuro"] .bootstrap-datetimepicker-widget table td.active {
        background-color: var(--biblio-ink);
        background-image: none;
        color: var(--biblio-on-accent);
        text-shadow: none;
    }
    :root[data-theme-mode="oscuro"] .daterangepicker .calendar-table :is(.next span, .prev span) {
        border-color: var(--biblio-text);
    }
}
