/* ============================================================================
   SISTEMA DE CONTROL — ACANTILADA E.I.R.L.
   Hoja de estilos ÚNICA del sistema  ·  assets/css/sistema.css
   ----------------------------------------------------------------------------
   Todas las páginas cargan SOLO este archivo (vía _comun/plantilla/header.php).
   No crear hojas de estilo por módulo con colores fijos: usar las variables
   --ia-* de abajo, así cada módulo cambia solo con el tema.

   TEMAS (atributo data-tema en <html>, lo cambia el botón de la barra superior)
     · verde   → tema actual: grafito oscuro con acento turquesa (por defecto)
     · oscuro  → noche: todo negro, acento azul acero
     · claro   → día: todo blanco, acento azul petróleo

   Índice
     §T  Tokens de los tres temas
     §B  Base global (tipografía, Bootstrap / SB Admin en todas las páginas)
     §1… Componentes del sistema (sidebar, topbar, modales, tablas, KPIs …)
     §Z  Selector de tema + utilidades nuevas
   ============================================================================ */


/* ============================================================
   §T — TOKENS DE TEMA
   ============================================================ */
:root,
:root[data-tema="verde"] {
    --ia-bg:          #0f1419;
    --ia-bg-rgb:      15 20 25;
    --ia-panel:       #1a212b;
    --ia-panel-rgb:   26 33 43;
    --ia-panel2:      #222b37;
    --ia-line:        #2a3441;
    --ia-text:        #e6edf3;
    --ia-muted:       #2dd4bf;
    --ia-accent:      #2dd4bf;
    --ia-accent-rgb:  45 212 191;
    --ia-accent-b:    #14b8a6;
    --ia-accent-d:    #06302b;      /* texto sobre fondo acento */
    --ia-accent-h:    #5eead4;      /* hover del acento */
    --ia-accent2:     #f59e0b;
    --ia-accent2-rgb: 245 158 11;
    --ia-accent2-bg:  #3d2900;
    --ia-danger:      #f70000;
    --ia-danger-rgb:  241 0 0;
    --ia-info:        #60a5fa;
    --ia-info-rgb:    96 165 250;
    --ia-success:     #34d399;
    --ia-success-rgb: 52 211 153;
    --ia-warn:        #f8fb24;
    --ia-warn-rgb:    248 251 36;
    --ia-chip:        #374151;
    --ia-overlay-rgb: 255 255 255;  /* realces sutiles sobre fondo */
    --ia-sidebar-top: #0a0e13;
    --ia-input-bg:    #222b37;
    --ia-shadow:      0 4px 12px rgba(0,0,0,.35);
    --ia-shadow-lg:   0 8px 24px rgba(0,0,0,.5);
    --ia-radius:      8px;
    --ia-radius-sm:   4px;
    --ia-font:        'IBM Plex Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
    color-scheme: dark;
}

/* NOCHE — todo negro */
:root[data-tema="oscuro"] {
    --ia-bg:          #000000;
    --ia-bg-rgb:      0 0 0;
    --ia-panel:       #0d0e10;
    --ia-panel-rgb:   13 14 16;
    --ia-panel2:      #17191c;
    --ia-line:        #2a2d32;
    --ia-text:        #ededed;
    --ia-muted:       #7cb8ff;
    --ia-accent:      #7cb8ff;
    --ia-accent-rgb:  124 184 255;
    --ia-accent-b:    #4f9cf5;
    --ia-accent-d:    #04192e;
    --ia-accent-h:    #a9d0ff;
    --ia-accent2:     #f5a524;
    --ia-accent2-rgb: 245 165 36;
    --ia-accent2-bg:  #2e2005;
    --ia-danger:      #f70000;
    --ia-danger-rgb:  241 0 0;
    --ia-info:        #7cb8ff;
    --ia-info-rgb:    124 184 255;
    --ia-success:     #4ade80;
    --ia-success-rgb: 74 222 128;
    --ia-warn:        #f8fb24;
    --ia-warn-rgb:    248 251 36;
    --ia-chip:        #2a2d32;
    --ia-overlay-rgb: 255 255 255;
    --ia-sidebar-top: #000000;
    --ia-input-bg:    #121316;
    --ia-shadow:      0 4px 12px rgba(0,0,0,.6);
    --ia-shadow-lg:   0 8px 24px rgba(0,0,0,.8);
    color-scheme: dark;
}

/* DÍA — todo blanco */
:root[data-tema="claro"] {
    --ia-bg:          #f3f5f7;
    --ia-bg-rgb:      243 245 247;
    --ia-panel:       #ffffff;
    --ia-panel-rgb:   255 255 255;
    --ia-panel2:      #f6f8fa;
    --ia-line:        #d8dee4;
    --ia-text:        #1b2631;
    --ia-muted:       #0b6e7f;
    --ia-accent:      #0b6e7f;
    --ia-accent-rgb:  11 110 127;
    --ia-accent-b:    #0e8a9e;
    --ia-accent-d:    #ffffff;
    --ia-accent-h:    #095866;
    --ia-accent2:     #b45309;
    --ia-accent2-rgb: 180 83 9;
    --ia-accent2-bg:  #fdf1dc;
    --ia-danger:      #f70000;
    --ia-danger-rgb:  241 0 0;
    --ia-info:        #1d5fc9;
    --ia-info-rgb:    29 95 201;
    --ia-success:     #13795b;
    --ia-success-rgb: 19 121 91;
    --ia-warn:        #f8fb24;
    --ia-warn-rgb:    248 251 36;
    --ia-chip:        #e6eaee;
    --ia-overlay-rgb: 15 23 42;
    --ia-sidebar-top: #ffffff;
    --ia-input-bg:    #ffffff;
    --ia-shadow:      0 1px 3px rgba(16,24,40,.08), 0 1px 2px rgba(16,24,40,.04);
    --ia-shadow-lg:   0 10px 24px rgba(16,24,40,.12);
    color-scheme: light;
}


/* ============================================================
   §B — BASE GLOBAL
   Se aplica a todas las páginas, estén o no dentro de .ia-tema
   ============================================================ */
html, body { background: var(--ia-bg); }
body, body#page-top {
    font-family: var(--ia-font);
    color: var(--ia-text);
    font-size: .925rem;
    -webkit-font-smoothing: antialiased;
}
body#page-top, #wrapper, #content-wrapper, #content { background: var(--ia-bg) !important; }
#content { min-height: 100vh; }

h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { color: var(--ia-text); font-weight: 600; letter-spacing: -.005em; }
a { color: var(--ia-accent); }
a:hover { color: var(--ia-accent-h); }
hr { border-top-color: var(--ia-line); }
::selection { background: rgb(var(--ia-accent-rgb) / .3); }

/* Números alineados en tablas y KPIs */
table, .table, .kpi, .stat, .num, input[type="number"] { font-variant-numeric: tabular-nums; }

/* Foco visible para teclado */
:focus-visible { outline: 2px solid var(--ia-accent); outline-offset: 2px; }

/* Utilidades de color de SB Admin / Bootstrap que asumían fondo blanco */
.text-gray-100, .text-gray-200, .text-gray-300 { color: var(--ia-muted) !important; }
.text-gray-400, .text-gray-500, .text-gray-600 { color: var(--ia-muted) !important; }
.text-gray-700, .text-gray-800, .text-gray-900, .text-dark { color: var(--ia-text) !important; }
.text-muted { color: var(--ia-muted) !important; }
.text-primary { color: var(--ia-accent) !important; }
.text-info { color: var(--ia-info) !important; }
.text-success { color: var(--ia-success) !important; }
.text-danger { color: var(--ia-danger) !important; }
.text-warning { color: var(--ia-warn) !important; }
.bg-white, .bg-light, .bg-gray-100, .bg-gray-200 { background-color: var(--ia-panel) !important; color: var(--ia-text); }
.bg-dark { background-color: var(--ia-panel) !important; }
.border, .border-top, .border-bottom, .border-left, .border-right { border-color: var(--ia-line) !important; }
.shadow, .shadow-sm { box-shadow: var(--ia-shadow) !important; }

/* Tarjetas */
.card {
    background: var(--ia-panel);
    border: 1px solid var(--ia-line);
    border-radius: var(--ia-radius);
    color: var(--ia-text);
    margin-bottom: 1.25rem;
    box-shadow: var(--ia-shadow);
}
.card-header {
    background: var(--ia-panel2);
    border-bottom: 1px solid var(--ia-line);
    color: var(--ia-text);
    font-weight: 600;
    padding: .8rem 1.1rem;
}
.card-header:first-child { border-radius: calc(var(--ia-radius) - 1px) calc(var(--ia-radius) - 1px) 0 0; }
.card-footer { background: var(--ia-panel2); border-top: 1px solid var(--ia-line); }
.card-body { color: var(--ia-text); }

/* Formularios */
.form-control, .custom-select, select.form-control, textarea.form-control {
    background-color: var(--ia-input-bg);
    color: var(--ia-text);
    border: 1px solid var(--ia-line);
    border-radius: 6px;
}
.form-control:focus, .custom-select:focus {
    background-color: var(--ia-input-bg);
    color: var(--ia-text);
    border-color: var(--ia-accent);
    box-shadow: 0 0 0 3px rgb(var(--ia-accent-rgb) / .18);
}
.form-control::placeholder { color: var(--ia-muted); opacity: .8; }
.form-control:disabled, .form-control[readonly] { background-color: var(--ia-panel2); color: var(--ia-muted); }
select option { background: var(--ia-panel); color: var(--ia-text); }
label, .col-form-label { color: var(--ia-text); font-weight: 500; }
.input-group-text { background: var(--ia-panel2); border-color: var(--ia-line); color: var(--ia-muted); }
.custom-control-label::before { background-color: var(--ia-input-bg); border-color: var(--ia-line); }
.custom-control-input:checked ~ .custom-control-label::before { background-color: var(--ia-accent); border-color: var(--ia-accent); }

/* Botones Bootstrap con los colores del tema */
.btn { border-radius: 6px; font-weight: 500; }
.btn-primary { background: var(--ia-accent); border-color: var(--ia-accent); color: var(--ia-accent-d); }
.btn-primary:hover, .btn-primary:focus { background: var(--ia-accent-h); border-color: var(--ia-accent-h); color: var(--ia-accent-d); }
.btn-outline-primary { color: var(--ia-accent); border-color: var(--ia-accent); }
.btn-outline-primary:hover { background: var(--ia-accent); color: var(--ia-accent-d); }
.btn-secondary, .btn-light { background: var(--ia-panel2); border-color: var(--ia-line); color: var(--ia-text); }
.btn-secondary:hover, .btn-light:hover { background: var(--ia-line); border-color: var(--ia-line); color: var(--ia-text); }
.btn-info { background: var(--ia-info); border-color: var(--ia-info); color: #fff; }
.btn-success { background: var(--ia-success); border-color: var(--ia-success); color: #fff; }
.btn-danger { background: var(--ia-danger); border-color: var(--ia-danger); color: #fff; }
.btn-warning { background: var(--ia-warn); border-color: var(--ia-warn); color: #1b1300; }
:root[data-tema="verde"] .btn-success, :root:not([data-tema]) .btn-success,
:root[data-tema="oscuro"] .btn-success { color: #04261a; }
:root[data-tema="verde"] .btn-info, :root:not([data-tema]) .btn-info,
:root[data-tema="oscuro"] .btn-info { color: #071a33; }

/* Tablas genéricas */
.table { color: var(--ia-text); }
.table th, .table td { border-color: var(--ia-line); vertical-align: middle; }
.table thead th { background: var(--ia-panel2); color: var(--ia-muted); border-bottom: 1px solid var(--ia-line); font-weight: 600; font-size: .8rem; }
.table-bordered, .table-bordered th, .table-bordered td { border-color: var(--ia-line); }
.table-striped tbody tr:nth-of-type(odd) { background-color: rgb(var(--ia-overlay-rgb) / .025); }
.table-hover tbody tr:hover { background-color: rgb(var(--ia-accent-rgb) / .07); color: var(--ia-text); }
.table-dark, .thead-dark th { background: var(--ia-panel2) !important; color: var(--ia-text) !important; border-color: var(--ia-line) !important; }
.table-light, .thead-light th { background: var(--ia-panel2) !important; color: var(--ia-muted) !important; }

/* Listas, menús, pestañas, paginación, alertas */
.list-group-item { background: var(--ia-panel); border-color: var(--ia-line); color: var(--ia-text); }
.dropdown-menu { background: var(--ia-panel); border: 1px solid var(--ia-line); color: var(--ia-text); box-shadow: var(--ia-shadow-lg); }
.dropdown-item { color: var(--ia-text); }
.dropdown-item:hover, .dropdown-item:focus { background: var(--ia-panel2); color: var(--ia-accent); }
.dropdown-header { color: var(--ia-muted); }
.dropdown-divider { border-top-color: var(--ia-line); }
.nav-tabs { border-bottom-color: var(--ia-line); }
.nav-tabs .nav-link { color: var(--ia-muted); }
.nav-tabs .nav-link:hover { border-color: var(--ia-line); color: var(--ia-text); }
.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link { background: var(--ia-panel); color: var(--ia-accent); border-color: var(--ia-line) var(--ia-line) var(--ia-panel); }
.nav-pills .nav-link.active { background: var(--ia-accent); color: var(--ia-accent-d); }
.page-link { background: var(--ia-panel); border-color: var(--ia-line); color: var(--ia-text); }
.page-link:hover { background: var(--ia-panel2); color: var(--ia-accent); border-color: var(--ia-line); }
.page-item.active .page-link { background: var(--ia-accent); border-color: var(--ia-accent); color: var(--ia-accent-d); }
.page-item.disabled .page-link { background: var(--ia-panel); border-color: var(--ia-line); color: var(--ia-muted); }
.alert { border-radius: var(--ia-radius); border-width: 1px; }
.alert-info    { background: rgb(var(--ia-info-rgb) / .1);    border-color: rgb(var(--ia-info-rgb) / .35);    color: var(--ia-text); }
.alert-success { background: rgb(var(--ia-success-rgb) / .1); border-color: rgb(var(--ia-success-rgb) / .35); color: var(--ia-text); }
.alert-warning { background: rgb(var(--ia-warn-rgb) / .12);   border-color: rgb(var(--ia-warn-rgb) / .4);     color: var(--ia-text); }
.alert-danger  { background: rgb(var(--ia-danger-rgb) / .1);  border-color: rgb(var(--ia-danger-rgb) / .35);  color: var(--ia-text); }
.badge-primary { background: var(--ia-accent); color: var(--ia-accent-d); }
.badge-secondary, .badge-light { background: var(--ia-chip); color: var(--ia-text); }
.progress { background: var(--ia-panel2); }
.progress-bar { background: var(--ia-accent); }
.close { color: var(--ia-text); text-shadow: none; }
.close:hover { color: var(--ia-danger); }
.tooltip-inner { background: var(--ia-text); color: var(--ia-bg); }
.popover { background: var(--ia-panel); border-color: var(--ia-line); }
.popover-body { color: var(--ia-text); }

/* Modales Bootstrap genéricos (todos, no solo .ia-modal) */
.modal-content { background: var(--ia-panel); color: var(--ia-text); border: 1px solid var(--ia-line); border-radius: var(--ia-radius); }
.modal-header { background: var(--ia-panel2); border-bottom: 1px solid var(--ia-line); color: var(--ia-text); }
.modal-footer { background: var(--ia-panel2); border-top: 1px solid var(--ia-line); }
.modal-title { color: var(--ia-text); }

/* DataTables fuera de .ia-tema */
.dataTables_wrapper, .dataTables_wrapper label, .dataTables_info { color: var(--ia-muted) !important; }
.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select {
    background: var(--ia-input-bg) !important; color: var(--ia-text) !important;
    border: 1px solid var(--ia-line) !important; border-radius: 6px;
}
table.dataTable tbody tr { background-color: transparent; }
table.dataTable.no-footer { border-bottom-color: var(--ia-line); }
.dataTables_wrapper .dataTables_paginate .paginate_button { color: var(--ia-text) !important; }

/* SweetAlert2 */
.swal2-popup, .swal2-modal { background: var(--ia-panel) !important; color: var(--ia-text) !important; border: 1px solid var(--ia-line); }
.swal2-title, .swal2-content, .swal2-html-container { color: var(--ia-text) !important; }
.swal2-input, .swal2-textarea, .swal2-select { background: var(--ia-input-bg) !important; color: var(--ia-text) !important; border-color: var(--ia-line) !important; }
.swal2-styled.swal2-confirm { background-color: var(--ia-accent) !important; color: var(--ia-accent-d) !important; }

/* Tema claro: la sombra de la topbar y el sidebar debe ser suave */
:root[data-tema="claro"] .navbar.topbar { box-shadow: 0 1px 0 var(--ia-line) !important; }
:root[data-tema="claro"] .sidebar.bg-dark,
:root[data-tema="claro"] .sidebar.sidebar-dark { background: #ffffff !important; }
:root[data-tema="claro"] .sidebar .sidebar-brand img { filter: none; }
:root[data-tema="claro"] .modal-backdrop.show { opacity: .35; }
:root[data-tema="claro"] footer.footer-tools .tool { filter: grayscale(1) brightness(.6); opacity: .35; }
:root[data-tema="claro"] .scroll-to-top i { color: #fff !important; }

/* Alias cortos usados por componentes antiguos (--bg, --line, --text…) */
:root {
    --bg: var(--ia-bg);         --panel: var(--ia-panel);   --panel2: var(--ia-panel2);
    --line: var(--ia-line);     --text: var(--ia-text);     --muted: var(--ia-muted);
    --accent: var(--ia-accent); --accent2: var(--ia-accent2);
    --danger: var(--ia-danger); --info: var(--ia-info);     --success: var(--ia-success); --warn: var(--ia-warn);
}

/* Tema claro: texto blanco sobre botones/insignias de color sólido
   (en los temas oscuros esos colores son pastel y llevan texto oscuro) */
:root[data-tema="claro"] .ia-tema .btn-ia.danger,
:root[data-tema="claro"] .ia-tema .btn-ia.warn,
:root[data-tema="claro"] .ia-modal .btn-danger,
:root[data-tema="claro"] #modalEliminar .btn-danger,
:root[data-tema="claro"] #backup-app .btn-ia.danger,
:root[data-tema="claro"] #backup-app .btn-ia.warn,
:root[data-tema="claro"] .ia-modal .modal-footer .btn-success,
:root[data-tema="claro"] .ia-tema .btn-aprobados,
:root[data-tema="claro"] .btn-success,
:root[data-tema="claro"] .btn-warning { color: #fff !important; }
:root[data-tema="claro"] .ia-tema .btn-ia.danger:hover,
:root[data-tema="claro"] .ia-modal .btn-danger:hover,
:root[data-tema="claro"] #modalEliminar .btn-danger:hover { background: #a61f1f !important; }
:root[data-tema="claro"] .ia-tema .btn-ia.warn:hover { background: #8a4f06 !important; }
/* SweetAlert v5 (swal()) usa .swal2-modal y otros nombres de clase */
.swal2-modal h2, .swal2-modal .swal2-content { color: var(--ia-text) !important; }
.swal2-modal .swal2-input, .swal2-modal .swal2-textarea, .swal2-modal select { background: var(--ia-input-bg) !important; color: var(--ia-text) !important; border-color: var(--ia-line) !important; }
.swal2-modal .swal2-confirm { background-color: var(--ia-accent) !important; color: var(--ia-accent-d) !important; }
.swal2-modal .swal2-cancel { background-color: var(--ia-panel2) !important; color: var(--ia-text) !important; border: 1px solid var(--ia-line) !important; }
.swal2-overlay, .swal2-container.swal2-shown { background-color: rgb(0 0 0 / .45) !important; }

/* ============================================================
   §C — COMPATIBILIDAD con estilos antiguos (ex css/styles.css)
   Se mantienen solo las reglas de diseño (sin colores fijos)
   ============================================================ */
.mb-4, .my-4 { margin-bottom: 1.5rem !important; }
.card { position: relative; display: flex; flex-direction: column; min-width: 0; word-wrap: break-word; background-clip: border-box; }
.card:not([class*="bg-"]) .card-header { color: var(--ia-accent); }
.datatable table.dataTable thead, .datatable table.dataTable tfoot,
table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting { color: var(--ia-accent); }
.btn .feather, .feather { margin-top: -1px !important; height: .875rem !important; width: .875rem !important; }
.btn-icon .feather { margin-top: 0 !important; }
.datatable .btn-datatable { height: 20px !important; width: 20px !important; font-size: .75rem; border-radius: .35rem !important; }
.btn-transparent-dark { background-color: transparent; border-color: transparent; color: var(--ia-muted) !important; line-height: 1; }
.btn-icon { padding: 0; justify-content: center; overflow: hidden; border-radius: 100%; flex-shrink: 0; }
.fade:not(.show) { opacity: 1 !important; }
.table th, .table td { padding: .65rem; }
.selecto { background: var(--ia-input-bg); color: var(--ia-text); margin: 0; width: 130px; font-size: 12px; border: 1px solid var(--ia-line); height: 20px; -webkit-appearance: none; -moz-appearance: none; appearance: none; }
.dataTables_length { float: left; }
.dataTables_info { float: left; }
.btn-group { float: right; margin-left: 5px; }
@media (max-width: 641px) {
    .dataTables_length, .dataTables_info { float: none; }
    .btn-group { float: none; margin-bottom: 5px; width: 100%; }
}

/* Íconos de acciones (bd/iconos.php) */
.sc-ic { margin-right: 5px; color: inherit; }
.sc-ic-puntos { font-size: 18px; margin-right: 0; }
.sc-ic-info    { color: var(--ia-info); }
.sc-ic-warn    { color: var(--ia-warn); }
.sc-ic-danger  { color: var(--ia-danger); }
.sc-ic-accent  { color: var(--ia-accent); }
.sc-ic-accent2 { color: var(--ia-accent2); }
.sc-ic-muted   { color: var(--ia-muted); }

/* Barra superior: filtros sin saltos de línea en pantallas medianas */
.navbar.topbar .sc-filtros { flex-wrap: nowrap; }
.navbar.topbar .sc-filtros .input-group { flex-wrap: nowrap; align-items: center; }
@media (max-width: 1399.98px) {
    .navbar.topbar .sc-filtros .input-group > span { display: none !important; }
    .navbar.topbar select.form-control-sm { min-width: 120px !important; }
}
/* ============================================================================
   TEMA IA — Acantilada E.I.R.L
   Hoja de estilos centralizada · Tema dark/turquesa
   ----------------------------------------------------------------------------
   Uso:
     1) Incluir en cualquier página añadiendo en el <head> (o tras el menu.php):
        <link rel="stylesheet" href="/sistema-control-2/css/tema-ia.css">

     2) Para módulos con interfaces propias (dashboards, formularios complejos,
        etc) envolver el contenido del módulo en un div con clase .ia-tema:
        <div class="ia-tema"> ... contenido ... </div>

   Estructura del archivo:
     §1  Variables CSS (colores, tipografía)
     §2  Reset / Body / wrapper general
     §3  Sidebar (SB Admin 2 override)
     §4  Topbar (SB Admin 2 override)
     §5  Modal de logout y modales genéricos
     §6  Footer con herramientas animadas
     §7  Scrollbar y scroll-to-top
     §8  Card-header genérico (compatibilidad legacy)
     §9  Wrapper de módulo .ia-tema (cajas, alertas, botones)
     §10 KPIs y tarjetas resumen
     §11 Gráficos (Chart.js, selector de tipo, contenedores)
     §12 Tablas (HTML simples + DataTables override)
     §13 Filtros, formularios, inputs
     §14 Badges, pills, días transcurridos
     §15 Barra de progreso y log
     §16 Marquee / carrusel de texto
     §17 Iframes y mapas embed
     §18 Responsive
   ============================================================================ */


/* ============================================================
   §1 — Variables
   ============================================================ */
/* (variables movidas a la sección TEMAS) */


/* ============================================================
   §2 — Body / wrapper general
   ============================================================ */
body#page-top { background: var(--ia-bg) !important; color: var(--ia-text); }
#wrapper { background: var(--ia-bg); }
#content-wrapper { background: var(--ia-bg) !important; }
#content { background: var(--ia-bg); min-height: 100vh; }


/* ============================================================
   §3 — Sidebar (override SB Admin 2)
   ============================================================ */
.sidebar.bg-dark, .sidebar.sidebar-dark {
    background: linear-gradient(180deg, var(--ia-sidebar-top) 0%, var(--ia-panel) 100%) !important;
    border-right: 1px solid var(--ia-line);
}
.sidebar .sidebar-brand {
    background: rgb(var(--ia-accent-rgb) / .05);
    border-bottom: 1px solid var(--ia-line);
    padding: 18px 10px;
}
.sidebar .sidebar-brand img { max-width: 70%; height: auto; }
.sidebar .sidebar-heading {
    color: var(--ia-accent) !important;
    font-size: .7rem;
    letter-spacing: .5px;
    text-transform: uppercase;
    padding: 12px 16px 6px;
}
.sidebar hr.sidebar-divider { border-color: var(--ia-line) !important; margin: 8px 12px; }

.sidebar .nav-item .nav-link {
    color: var(--ia-muted) !important;
    padding: 10px 16px;
    font-size: .88rem;
    border-left: 3px solid transparent;
    transition: background .15s, color .15s, border-color .15s;
}
.sidebar .nav-item .nav-link i {
    color: var(--ia-muted) !important;
    width: 20px; margin-right: 8px;
    font-size: .95rem; transition: color .15s;
}
.sidebar .nav-item .nav-link:hover {
    background: rgb(var(--ia-accent-rgb) / .07) !important;
    color: var(--ia-text) !important;
    border-left-color: var(--ia-accent);
}
.sidebar .nav-item .nav-link:hover i { color: var(--ia-accent) !important; }
.sidebar .nav-item.active .nav-link {
    background: rgb(var(--ia-accent-rgb) / .1) !important;
    color: var(--ia-accent) !important;
    border-left-color: var(--ia-accent);
    font-weight: 600;
}
.sidebar .nav-item.active .nav-link i { color: var(--ia-accent) !important; }

.sidebar .nav-item .collapse,
.sidebar .nav-item .collapsing {
    background: var(--ia-panel2) !important;
    margin: 0 8px 4px;
    border-radius: 6px;
    border: 1px solid var(--ia-line);
}
.sidebar .nav-item .collapse .collapse-inner,
.sidebar .nav-item .collapsing .collapse-inner {
    background: transparent !important;
    box-shadow: none !important;
}
.sidebar .nav-item .collapse .collapse-item,
.sidebar .nav-item .collapsing .collapse-item {
    color: var(--ia-muted) !important;
    background: transparent !important;
    padding: 7px 14px;
    font-size: .83rem;
    border-radius: 4px;
    margin: 2px 4px;
}
.sidebar .nav-item .collapse .collapse-item:hover,
.sidebar .nav-item .collapsing .collapse-item:hover {
    background: rgb(var(--ia-accent-rgb) / .08) !important;
    color: var(--ia-accent) !important;
}
.sidebar .nav-item .collapse .collapse-item.active {
    color: var(--ia-accent) !important;
    background: rgb(var(--ia-accent-rgb) / .12) !important;
    font-weight: 600;
}
.sidebar .collapse-header {
    color: var(--ia-accent) !important;
    font-size: .7rem;
    padding: 6px 14px 2px;
}

#sidebarToggle {
    background: var(--ia-panel2) !important;
    color: var(--ia-accent) !important;
    border: 1px solid var(--ia-line) !important;
}
#sidebarToggle:hover { background: var(--ia-accent) !important; color: var(--ia-accent-d) !important; }


/* ============================================================
   §4 — Topbar (override SB Admin 2)
   ============================================================ */
.navbar.topbar.bg-dark, .navbar.topbar {
    background: var(--ia-panel) !important;
    border-bottom: 1px solid var(--ia-line) !important;
    box-shadow: 0 2px 8px rgba(0,0,0,.3) !important;
}
.navbar.topbar #sidebarToggleTop { color: var(--ia-accent) !important; }
.navbar.topbar #sidebarToggleTop:hover { background: var(--ia-panel2) !important; }
.navbar.topbar #sidebarToggleTop i { color: var(--ia-accent) !important; }
.topbar-divider {
    border-right: 1px solid var(--ia-line) !important;
    margin: 0 8px;
    height: 2.5rem;
}

.navbar.topbar .text-gray-500,
.navbar.topbar .text-gray-600,
.navbar.topbar .text-gray-100 {
    color: var(--ia-muted) !important;
    font-size: .75rem !important;
    text-transform: uppercase;
    letter-spacing: .3px;
    font-weight: 600;
}
.navbar.topbar .text-white { color: var(--ia-text) !important; }

.navbar.topbar select.form-control,
.navbar.topbar select.form-control-sm {
    background-color: var(--ia-panel2) !important;
    color: var(--ia-text) !important;
    border: 1px solid var(--ia-line) !important;
    border-radius: 5px !important;
    font-size: .83rem !important;
    min-width: 140px;
    padding: 4px 8px !important;
    height: auto !important;
    transition: border-color .15s;
}
.navbar.topbar select.form-control:focus,
.navbar.topbar select.form-control-sm:focus {
    border-color: var(--ia-accent) !important;
    box-shadow: 0 0 0 2px rgb(var(--ia-accent-rgb) / .2) !important;
    outline: none;
}
.navbar.topbar select option {
    background: var(--ia-panel) !important;
    color: var(--ia-text) !important;
}

.navbar.topbar .badge-counter {
    background: var(--ia-danger) !important;
    color: #fff !important;
    font-size: .65rem !important;
    padding: 3px 6px !important;
    border-radius: 10px !important;
}
.navbar.topbar .fa-bell.text-danger { color: var(--ia-danger) !important; }
.navbar.topbar .fa-user-alt { color: var(--ia-accent) !important; }

.navbar.topbar .img-profile {
    width: 36px; height: 36px;
    border: 2px solid var(--ia-accent);
    box-shadow: 0 0 0 1px rgb(var(--ia-accent-rgb) / .2);
}
.navbar.topbar .dropdown-menu {
    background: var(--ia-panel) !important;
    border: 1px solid var(--ia-line) !important;
    border-radius: 8px !important;
    box-shadow: var(--ia-shadow-lg) !important;
    padding: 6px;
}
.navbar.topbar .dropdown-item {
    color: var(--ia-text) !important;
    border-radius: 4px;
    padding: 8px 12px !important;
    font-size: .85rem;
    transition: background .15s;
}
.navbar.topbar .dropdown-item:hover {
    background: var(--ia-panel2) !important;
    color: var(--ia-accent) !important;
}
.navbar.topbar .dropdown-item i.text-gray-400 { color: var(--ia-muted) !important; }
.navbar.topbar .dropdown-item:hover i { color: var(--ia-accent) !important; }
.navbar.topbar .dropdown-divider { border-top: 1px solid var(--ia-line) !important; }

#notification-latest {
    background: var(--ia-panel) !important;
    border: 1px solid var(--ia-line) !important;
    border-radius: 8px;
    color: var(--ia-text);
    padding: 6px;
    box-shadow: var(--ia-shadow-lg);
}
#notification-latest .dropdown-item,
#notification-latest a {
    color: var(--ia-text) !important;
    border-radius: 4px;
    padding: 8px 12px;
}
#notification-latest .dropdown-item:hover,
#notification-latest a:hover {
    background: var(--ia-panel2) !important;
    color: var(--ia-accent) !important;
}


/* ============================================================
   §5 — Modales (logout + genéricos)
   ============================================================ */

/* Backdrop: solo cambiamos el color base (negro puro). Bootstrap
   maneja la opacidad por sí solo con las clases .modal-backdrop
   (opacity 0) y .modal-backdrop.show (opacity 0.5) más la
   transición. Si forzamos opacity con !important, Bootstrap NO
   puede animar el cierre y el backdrop queda colgado, bloqueando
   la página tras cerrar/cancelar el modal. */
.modal-backdrop { background-color: #000; }

/* Doble selector (.ia-modal y .ia-modal.fade) para subir la
   especificidad por encima de inline-styles legacy que JS antiguo
   pudiera estar inyectando con .css(...). Combinado con !important
   garantiza que el modal NUNCA quede transparente o ilegible. */
#logoutModal .modal-content,
.ia-modal .modal-content,
.ia-modal.fade .modal-content {
    background: var(--ia-panel) !important;
    border: 1px solid var(--ia-line) !important;
    color: var(--ia-text) !important;
    border-radius: 8px;
    box-shadow: 0 20px 60px rgba(0,0,0,.7);
}
#logoutModal .modal-header,
.ia-modal .modal-header,
.ia-modal.fade .modal-header,
.ia-modal .modal-header[style] {
    background: var(--ia-panel2) !important;
    border-bottom: 1px solid var(--ia-line) !important;
    color: var(--ia-accent) !important;
}
#logoutModal .modal-header .modal-title,
.ia-modal .modal-header .modal-title {
    color: var(--ia-accent) !important;
    font-weight: 600;
    font-size: 1rem;
    display: flex; align-items: center; gap: 8px;
}
/* Variantes contextuales pintadas con clase (no con .css() inline) */
.ia-modal .modal-header.head-edit  { background: linear-gradient(90deg, var(--ia-info), #2563eb) !important; color: #fff !important; }
.ia-modal .modal-header.head-edit .modal-title { color: #fff !important; }
.ia-modal .modal-header.head-email { background: linear-gradient(90deg, var(--ia-info), #2563eb) !important; color: #fff !important; }
.ia-modal .modal-header.head-email .modal-title { color: #fff !important; }
.ia-modal .modal-header.head-ok    { background: linear-gradient(90deg, var(--ia-success), #059669) !important; color: #fff !important; }
.ia-modal .modal-header.head-ok .modal-title { color: #fff !important; }

#logoutModal .modal-header .close,
.ia-modal .modal-header .close {
    color: var(--ia-text) !important;
    opacity: .7; text-shadow: none;
}
#logoutModal .modal-header .close:hover,
.ia-modal .modal-header .close:hover { opacity: 1; color: var(--ia-danger) !important; }
.ia-modal .modal-header.head-edit  .close,
.ia-modal .modal-header.head-email .close,
.ia-modal .modal-header.head-ok    .close { color: #fff !important; }

#logoutModal .modal-body,
.ia-modal .modal-body {
    background: var(--ia-panel) !important;
    color: var(--ia-text) !important;
    padding: 22px 20px;
    font-size: .95rem;
}
#logoutModal .modal-body p,
.ia-modal .modal-body p { color: var(--ia-text) !important; }
.ia-modal .modal-body .text-muted { color: var(--ia-muted) !important; }
.ia-modal .modal-body .text-danger { color: var(--ia-danger) !important; }
.ia-modal .modal-body strong { color: var(--ia-accent); }
#logoutModal .modal-footer,
.ia-modal .modal-footer {
    background: var(--ia-panel2) !important;
    border-top: 1px solid var(--ia-line) !important;
}
#logoutModal .btn-secondary,
.ia-modal .btn-secondary {
    background: var(--ia-panel) !important;
    color: var(--ia-muted) !important;
    border: 1px solid var(--ia-line) !important;
}
#logoutModal .btn-secondary:hover,
.ia-modal .btn-secondary:hover {
    background: var(--ia-line) !important;
    color: var(--ia-text) !important;
}
#logoutModal .btn-primary,
.ia-modal .btn-success {
    background: var(--ia-accent) !important;
    color: var(--ia-accent-d) !important;
    border: none !important;
    font-weight: 600;
}
#logoutModal .btn-primary:hover,
.ia-modal .btn-success:hover { background: var(--ia-accent-h) !important; color: var(--ia-accent-d) !important; }
.ia-modal .btn-danger {
    background: var(--ia-danger) !important;
    color: #4a0a0a !important;
    border: none !important;
    font-weight: 600;
}
.ia-modal .btn-danger:hover { background: #fca5a5 !important; }


/* ============================================================
   §6 — Footer con herramientas animadas
   ============================================================ */
footer.footer-tools {
    background: linear-gradient(180deg, var(--ia-panel) 0%, var(--ia-sidebar-top) 100%) !important;
    border-top: 1px solid var(--ia-line);
    padding: 14px 0 10px;
    margin-top: 30px;
}
footer.footer-tools .tools-container {
    filter: drop-shadow(0 0 1px rgb(var(--ia-accent-rgb) / .3));
    opacity: .55;
}
footer.footer-tools .tool {
    filter: brightness(.85) sepia(.4) hue-rotate(125deg) saturate(2.5);
    opacity: .7;
    transition: opacity .3s;
}
footer.footer-tools:hover .tool { opacity: .95; }
footer.footer-tools .footer-text {
    color: var(--ia-muted) !important;
    font-size: .78rem;
    text-align: center;
    margin-top: 10px;
    letter-spacing: .5px;
}
footer.footer-tools .footer-text #year { color: var(--ia-accent); font-weight: 600; }


/* ============================================================
   §7 — Scrollbar + scroll-to-top
   ============================================================ */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--ia-bg); }
::-webkit-scrollbar-thumb {
    background: var(--ia-line);
    border-radius: 5px;
    border: 2px solid var(--ia-bg);
}
::-webkit-scrollbar-thumb:hover { background: var(--ia-accent); }

.scroll-to-top {
    background: var(--ia-accent) !important;
    color: var(--ia-accent-d) !important;
    box-shadow: 0 4px 14px rgb(var(--ia-accent-rgb) / .4) !important;
    border: none !important;
}
.scroll-to-top:hover { background: var(--ia-accent-h) !important; transform: translateY(-2px); }
.scroll-to-top i { color: var(--ia-accent-d) !important; }


/* ============================================================
   §8 — Card-header genérico (compatibilidad legacy)
   Para páginas que aún usan <div class="card-header"> sin
   wrapper propio. No interfiere con .bg-primary, .bg-info, etc.
   ============================================================ */
body#page-top > #wrapper .card-header:not(.box-head):not(.bg-primary):not(.bg-info):not(.bg-success):not(.bg-danger):not(.bg-warning) {
    background: var(--ia-panel2);
    color: var(--ia-accent);
    border-bottom: 1px solid var(--ia-line);
    font-weight: 600;
}


/* ============================================================
   §9 — Wrapper de módulo .ia-tema
   Cajas, alertas, botones, tipografía, headings
   ============================================================ */
.ia-tema {
    font-family: var(--ia-font);
    background: var(--ia-bg);
    color: var(--ia-text);
    padding: 24px;
    border-radius: var(--ia-radius);
    margin: 14px 0;
    line-height: 1.55;
}
.ia-tema * { box-sizing: border-box; }

.ia-tema h1 {
    color: var(--ia-accent);
    font-size: 1.3rem;
    margin-bottom: 6px;
    display: flex; align-items: center; gap: 10px;
}
.ia-tema h2 {
    color: var(--ia-accent);
    font-size: 1rem;
    margin-top: 18px;
    margin-bottom: 10px;
    display: flex; justify-content: space-between; align-items: center;
    flex-wrap: wrap; gap: 8px;
}
.ia-tema h2 .icono {
    width: 28px; height: 28px;
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--ia-panel2); border: 1px solid var(--ia-line);
    border-radius: 6px; font-size: .85rem;
}
.ia-tema .sub { color: var(--ia-muted); font-size: .9rem; margin-bottom: 18px; }

/* Caja base */
.ia-tema .box {
    background: var(--ia-panel);
    border: 1px solid var(--ia-line);
    border-radius: var(--ia-radius);
    padding: 0;
    margin: 14px 0;
    overflow: hidden;
}
.ia-tema .box.simple { padding: 16px; }
.ia-tema .box-head {
    background: var(--ia-panel2);
    border-bottom: 1px solid var(--ia-line);
    padding: 14px 18px;
    display: flex; justify-content: space-between; align-items: center;
    flex-wrap: wrap; gap: 8px;
}
.ia-tema .box-head h4 {
    color: var(--ia-accent);
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    display: flex; align-items: center; gap: 8px;
}
.ia-tema .box-head .icono {
    width: 32px; height: 32px;
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--ia-panel);
    border: 1px solid var(--ia-line);
    border-radius: 6px;
    color: var(--ia-accent);
}
.ia-tema .box-body { padding: 18px; }
.ia-tema .box-body p { color: var(--ia-muted); font-size: .9rem; margin-bottom: 12px; }

/* Alertas */
.ia-tema .alerta {
    padding: 12px 16px; border-radius: 6px;
    margin-bottom: 14px; font-size: .88rem;
    display: flex; align-items: flex-start; gap: 10px;
}
.ia-tema .alerta.info {
    background: rgb(var(--ia-info-rgb) / .08);
    border: 1px solid var(--ia-info);
    border-left: 4px solid var(--ia-info);
}
.ia-tema .alerta.ok {
    background: rgb(var(--ia-accent-rgb) / .08);
    border: 1px solid var(--ia-accent);
    border-left: 4px solid var(--ia-accent);
}
.ia-tema .alerta.danger {
    background: rgb(var(--ia-danger-rgb) / .08);
    border: 1px solid var(--ia-danger);
    border-left: 4px solid var(--ia-danger);
}
.ia-tema .alerta.warn {
    background: rgb(var(--ia-warn-rgb) / .08);
    border: 1px solid var(--ia-warn);
    border-left: 4px solid var(--ia-warn);
}
.ia-tema .alerta i { font-size: 1.1rem; margin-top: 2px; }
.ia-tema .alerta strong { color: var(--ia-accent); }
.ia-tema .alerta.danger strong { color: var(--ia-danger); }
.ia-tema .alerta h5 {
    margin: 0 0 6px 0; font-size: 1rem; color: var(--ia-accent);
    display: flex; align-items: center; gap: 8px;
}
.ia-tema .alerta.danger h5 { color: var(--ia-danger); }
.ia-tema .alerta p { margin: 0; color: var(--ia-text); font-size: .88rem; }

/* Botones */
.ia-tema .btn-ia {
    display: inline-flex; align-items: center; gap: 8px;
    background: var(--ia-accent);
    color: var(--ia-accent-d);
    padding: 9px 18px;
    border-radius: 6px;
    border: none; cursor: pointer;
    font-weight: 600; font-size: .9rem;
    text-decoration: none;
    transition: background .15s, transform .15s;
}
.ia-tema .btn-ia:hover { background: var(--ia-accent-h); color: var(--ia-accent-d); transform: translateY(-1px); text-decoration: none; }
.ia-tema .btn-ia.sec {
    background: var(--ia-panel2);
    color: var(--ia-accent);
    border: 1px solid var(--ia-accent);
}
.ia-tema .btn-ia.sec:hover { background: var(--ia-line); color: var(--ia-accent); }
.ia-tema .btn-ia.danger { background: var(--ia-danger); color: #4a0a0a; }
.ia-tema .btn-ia.danger:hover { background: #fca5a5; color: #4a0a0a; }
.ia-tema .btn-ia.warn { background: var(--ia-warn); color: #4a3208; }
.ia-tema .btn-ia.warn:hover { background: #fcd34d; }
.ia-tema .btn-ia.lg { padding: 12px 24px; font-size: .95rem; }
.ia-tema .btn-ia.sm { padding: 5px 10px; font-size: .78rem; }

.ia-tema .estado-centro { text-align: center; padding: 10px 0; }


/* ============================================================
   §10 — KPIs y tarjetas resumen
   ============================================================ */
.ia-tema .stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 12px;
}
.ia-tema .stat {
    background: var(--ia-panel2);
    padding: 14px 16px;
    border-radius: 6px;
    border-left: 3px solid var(--ia-accent);
    cursor: pointer;
    transition: transform .15s, border-color .15s;
    text-decoration: none;
    color: inherit;
    display: block;
}
.ia-tema .stat:hover {
    transform: translateY(-2px);
    border-left-color: var(--ia-accent2);
    text-decoration: none;
    color: inherit;
}
.ia-tema .stat.danger  { border-left-color: var(--ia-danger);  }
.ia-tema .stat.success { border-left-color: var(--ia-success); }
.ia-tema .stat.info    { border-left-color: var(--ia-info);    }
.ia-tema .stat.warn    { border-left-color: var(--ia-warn);    }
.ia-tema .stat .label {
    color: var(--ia-muted); font-size: .72rem;
    text-transform: uppercase; letter-spacing: .3px;
    margin-bottom: 4px;
    display: flex; align-items: center; gap: 6px;
}
.ia-tema .stat .valor {
    font-size: 1.7rem; font-weight: 600; color: var(--ia-text);
    font-variant-numeric: tabular-nums;
}
.ia-tema .stat .ir {
    color: var(--ia-muted); font-size: .7rem; margin-top: 2px;
}
.ia-tema .stat:hover .ir { color: var(--ia-accent); }

/* Tarjeta de info compacta (Empresa, Representante, etc.) */
.ia-tema .grid-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 14px;
    margin-top: 14px;
}
.ia-tema .card-custom {
    background: var(--ia-panel2);
    border: 1px solid var(--ia-line);
    border-left: 3px solid var(--ia-accent);
    border-radius: 6px;
    padding: 18px;
    transition: transform .15s, border-left-color .15s;
}
.ia-tema .card-custom:hover { transform: translateY(-2px); border-left-color: var(--ia-accent2); }
.ia-tema .card-custom.rep  { border-left-color: var(--ia-info); }
.ia-tema .card-custom.prev { border-left-color: var(--ia-warn); }

.ia-tema .card-title {
    color: var(--ia-accent);
    font-size: .95rem; font-weight: 600;
    margin-bottom: 14px;
    display: flex; align-items: center; gap: 8px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--ia-line);
}
.ia-tema .card-custom.rep .card-title  { color: var(--ia-info); }
.ia-tema .card-custom.prev .card-title { color: var(--ia-warn); }
.ia-tema .card-header-icon {
    font-size: 1.1rem;
    width: 32px; height: 32px;
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--ia-panel);
    border-radius: 6px;
    border: 1px solid var(--ia-line);
}
.ia-tema .label {
    font-size: .72rem;
    color: var(--ia-muted);
    text-transform: uppercase;
    letter-spacing: .3px;
    margin-bottom: 2px;
}
.ia-tema .value {
    font-weight: 500;
    color: var(--ia-text);
    margin-bottom: 10px;
    font-size: .92rem;
}
.ia-tema .value:last-child { margin-bottom: 0; }


/* ============================================================
   §11 — Gráficos (Chart.js, selector de tipo)
   ============================================================ */
.ia-tema .grid-graficos {
    display: grid;
    grid-template-columns: 1fr;
    gap: 14px;
    margin-top: 14px;
}
@media (min-width: 1100px) {
    .ia-tema .grid-graficos { grid-template-columns: 1fr 1fr; }
    .ia-tema .grafico-card.ancho { grid-column: span 2; }
}

.ia-tema .grafico-card {
    background: var(--ia-panel);
    border: 1px solid var(--ia-line);
    border-radius: var(--ia-radius);
    padding: 14px;
}
.ia-tema .grafico-card .tit {
    color: var(--ia-accent);
    font-size: .95rem; font-weight: 600;
    margin-bottom: 8px;
    display: flex; justify-content: space-between; align-items: center;
    flex-wrap: wrap; gap: 8px;
}

.ia-tema .selector-tipo { display: flex; gap: 4px; }
.ia-tema .tipo-btn {
    background: var(--ia-panel2);
    border: 1px solid var(--ia-line);
    color: var(--ia-muted);
    padding: 4px 10px;
    border-radius: 4px;
    cursor: pointer;
    font-size: .72rem;
    transition: all .15s;
}
.ia-tema .tipo-btn:hover { color: var(--ia-accent); border-color: var(--ia-accent); }
.ia-tema .tipo-btn.activo {
    background: var(--ia-accent);
    color: var(--ia-accent-d);
    border-color: var(--ia-accent);
    font-weight: 600;
}

.ia-tema .grafico-canvas-wrap {
    position: relative;
    height: 360px;
    background: var(--ia-panel2);
    border-radius: 6px;
    padding: 10px;
}
.ia-tema .acciones-grafico {
    margin-top: 10px;
    display: flex; gap: 6px; flex-wrap: wrap;
}
.ia-tema .btn-exportar {
    background: var(--ia-panel2);
    border: 1px solid var(--ia-line);
    color: var(--ia-muted);
    padding: 5px 10px;
    border-radius: 5px;
    cursor: pointer;
    font-size: .74rem;
    transition: all .15s;
}
.ia-tema .btn-exportar:hover {
    background: var(--ia-accent);
    color: var(--ia-accent-d);
    border-color: var(--ia-accent);
}


/* ============================================================
   §12 — Tablas (HTML simples + DataTables override)
   ============================================================ */
/* Tablas HTML simples dentro de .ia-tema */
.ia-tema table:not(.dataTable) {
    width: 100%;
    border-collapse: collapse;
    margin-top: 8px;
    font-size: .85rem;
}
.ia-tema th, .ia-tema td {
    text-align: left;
    padding: 7px 10px;
    border-bottom: 1px solid var(--ia-line);
}
.ia-tema th {
    color: var(--ia-accent);
    font-size: .72rem;
    text-transform: uppercase;
    background: var(--ia-panel2);
    letter-spacing: .3px;
}
.ia-tema td.num {
    text-align: right;
    font-variant-numeric: tabular-nums;
}
/* Hover en tablas HTML simples: realce ligero sin tapar color de fila */
.ia-tema tbody tr:hover { box-shadow: inset 0 0 0 9999px rgb(var(--ia-accent-rgb) / .06); }

.ia-tema .tabla-head {
    display: flex; justify-content: space-between; align-items: center;
    flex-wrap: wrap; gap: 8px;
    margin-bottom: 6px;
}
.ia-tema .tabla-search {
    background: var(--ia-panel2);
    color: var(--ia-text);
    border: 1px solid var(--ia-line);
    padding: 5px 10px;
    border-radius: 4px;
    font-size: .82rem;
    min-width: 200px;
}
.ia-tema .tabla-search:focus { outline: none; border-color: var(--ia-accent); }
.ia-tema .tabla-wrap {
    max-height: 420px;
    overflow: auto;
    border: 1px solid var(--ia-line);
    border-radius: 4px;
}
.ia-tema .tabla-wrap table { margin-top: 0; }
.ia-tema .tabla-wrap thead th { position: sticky; top: 0; z-index: 1; }

/* DataTables tematizado */
.ia-tema table.dataTable {
    width: 100% !important;
    color: var(--ia-text);
    border-collapse: collapse !important;
}
.ia-tema table.dataTable thead th {
    color: var(--ia-accent);
    background: var(--ia-panel2);
    border-bottom: 1px solid var(--ia-line) !important;
    border-top: none !important;
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .3px;
    padding: 10px 12px;
    font-weight: 600;
}
/* ------------------------------------------------------------
   ESTILO BASE: fondo OSCURO con texto blanco (default del tema).
   Las celdas son transparentes y el <tr> define el fondo (panel
   oscuro). Esto es lo natural para un sistema dark.
   
   Para módulos que NECESITAN fondo claro (porque pintan filas
   con colores de estado, como Órdenes), agregar la clase
   `.dt-light-bg` a la tabla:
        <table class="table dt-light-bg">
   ------------------------------------------------------------ */
.ia-tema table.dataTable tbody td {
    background: transparent;
    border-bottom: 1px solid var(--ia-line) !important;
    border-top: none !important;
    padding: 9px 12px;
    color: var(--ia-text);
    font-size: .88rem;
}
.ia-tema table.dataTable tbody td a { color: var(--ia-accent); text-decoration: none; }
.ia-tema table.dataTable tbody td a:hover { color: var(--ia-accent-h); text-decoration: underline; }

/* Fila base oscura — fondo del panel */
.ia-tema table.dataTable tbody tr {
    background: var(--ia-panel);
}
/* Hover: realce turquesa sutil */
.ia-tema table.dataTable tbody tr:hover {
    box-shadow: inset 0 0 0 9999px rgb(var(--ia-accent-rgb) / .08),
                inset 3px 0 0 var(--ia-accent);
}
/* Striping opt-in: agregar clase `.dt-zebra` */
.ia-tema table.dataTable.dt-zebra tbody tr.odd {
    background: var(--ia-panel2);
}

/* ------------------------------------------------------------
   VARIANTE: fondo CLARO con texto negro.
   Activar agregando `dt-light-bg` a la tabla. Pensado para módulos
   que muestran filas coloreadas (peligro/ok/atrasado/etc.) donde
   el texto negro lee mejor sobre colores pasteles.
   ------------------------------------------------------------ */
.ia-tema table.dataTable.dt-light-bg tbody td {
    color: #1a1a1a;
    font-weight: 500;
}
.ia-tema table.dataTable.dt-light-bg tbody td a { color: #0c4a6e; text-decoration: underline; }
.ia-tema table.dataTable.dt-light-bg tbody td a:hover { color: #0369a1; }

.ia-tema table.dataTable.dt-light-bg tbody tr {
    background: #f3f4f6;
}
.ia-tema table.dataTable.dt-light-bg tbody tr:hover {
    box-shadow: inset 0 0 0 9999px rgba(0,0,0,.05),
                inset 3px 0 0 var(--ia-accent);
}
.ia-tema table.dataTable.dt-light-bg.dt-zebra tbody tr.odd {
    background: #e5e7eb;
}

.ia-tema .dataTables_wrapper .dataTables_length,
.ia-tema .dataTables_wrapper .dataTables_filter,
.ia-tema .dataTables_wrapper .dataTables_info,
.ia-tema .dataTables_wrapper .dataTables_paginate {
    color: var(--ia-muted);
    font-size: .85rem;
    padding: 8px 0;
}
.ia-tema .dataTables_wrapper .dataTables_length select,
.ia-tema .dataTables_wrapper .dataTables_filter input {
    background: var(--ia-panel2);
    color: var(--ia-text);
    border: 1px solid var(--ia-line);
    border-radius: 4px;
    padding: 4px 8px;
    font-size: .85rem;
}
.ia-tema .dataTables_wrapper .dataTables_filter input:focus,
.ia-tema .dataTables_wrapper .dataTables_length select:focus {
    outline: none; border-color: var(--ia-accent);
}
.ia-tema .dataTables_wrapper .dataTables_paginate .paginate_button {
    color: var(--ia-muted) !important;
    background: var(--ia-panel2) !important;
    border: 1px solid var(--ia-line) !important;
    border-radius: 4px !important;
    margin: 0 2px;
    padding: 4px 10px !important;
}
.ia-tema .dataTables_wrapper .dataTables_paginate .paginate_button:hover {
    background: var(--ia-line) !important;
    color: var(--ia-accent) !important;
    border-color: var(--ia-accent) !important;
}
.ia-tema .dataTables_wrapper .dataTables_paginate .paginate_button.current,
.ia-tema .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
    background: var(--ia-accent) !important;
    color: var(--ia-accent-d) !important;
    border-color: var(--ia-accent) !important;
    font-weight: 600;
}
.ia-tema .dataTables_wrapper .dataTables_paginate .paginate_button.disabled,
.ia-tema .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover {
    color: var(--ia-muted) !important;
    opacity: .5;
    background: var(--ia-panel) !important;
}

/* Botones de acción dentro de tablas */
.ia-tema .btn-tabla {
    display: inline-flex; align-items: center; justify-content: center;
    width: 30px; height: 30px;
    border: none; border-radius: 5px;
    cursor: pointer;
    margin: 0 2px;
    transition: transform .15s;
    text-decoration: none;
    font-size: .85rem;
}
.ia-tema .btn-tabla:hover { transform: translateY(-1px); text-decoration: none; }
.ia-tema .btn-tabla.descargar {
    background: var(--ia-accent); color: var(--ia-accent-d);
}
.ia-tema .btn-tabla.descargar:hover { background: var(--ia-accent-h); color: var(--ia-accent-d); }
.ia-tema .btn-tabla.eliminar {
    background: rgb(var(--ia-danger-rgb) / .15);
    color: var(--ia-danger);
    border: 1px solid var(--ia-danger);
}
.ia-tema .btn-tabla.eliminar:hover { background: var(--ia-danger); color: #fff; }


/* ============================================================
   §13 — Filtros, formularios, inputs
   ============================================================ */
.ia-tema .filtros {
    display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end;
    background: var(--ia-panel2);
    padding: 12px;
    border-radius: 6px;
    border: 1px solid var(--ia-line);
    margin-bottom: 12px;
}
.ia-tema .filtros .fld {
    display: flex; flex-direction: column; gap: 4px;
}
.ia-tema .filtros label {
    color: var(--ia-muted);
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .3px;
}
.ia-tema .filtros input,
.ia-tema .filtros select {
    background: var(--ia-panel);
    color: var(--ia-text);
    border: 1px solid var(--ia-line);
    padding: 6px 10px;
    border-radius: 4px;
    font-size: .85rem;
    min-width: 160px;
}
.ia-tema .filtros input:focus,
.ia-tema .filtros select:focus {
    outline: none; border-color: var(--ia-accent);
}


/* ============================================================
   §14 — Badges, pills, días transcurridos, tags
   ============================================================ */
.ia-tema .dias {
    display: inline-block;
    min-width: 36px;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: .72rem;
    font-weight: 600;
    text-align: center;
}
.ia-tema .dias.ok     { background: rgb(var(--ia-success-rgb) / .15);  color: var(--ia-success); }
.ia-tema .dias.warn   { background: rgb(var(--ia-warn-rgb) / .15);  color: var(--ia-warn);    }
.ia-tema .dias.danger { background: rgb(var(--ia-danger-rgb) / .15); color: var(--ia-danger);  }

.ia-tema .count-pill {
    background: var(--ia-panel2);
    color: var(--ia-accent);
    padding: 2px 10px;
    border-radius: 10px;
    font-size: .75rem;
    font-weight: 600;
}

.ia-tema .badge-tamano {
    display: inline-block;
    padding: 3px 10px;
    font-size: .78rem;
    font-weight: 600;
    color: var(--ia-accent);
    background: var(--ia-panel2);
    border: 1px solid var(--ia-accent);
    border-radius: 10px;
    min-width: 70px;
    text-align: center;
    font-variant-numeric: tabular-nums;
}

.ia-tema .tag-pendiente {
    display: inline-flex; align-items: center; gap: 5px;
    background: var(--ia-accent2-bg);
    color: var(--ia-accent2);
    padding: 3px 9px;
    border-radius: 10px;
    font-size: .72rem;
    text-decoration: none;
    font-weight: 500;
}
.ia-tema .tag-pendiente:hover { background: var(--ia-accent2); color: var(--ia-accent-d); text-decoration: none; }
.ia-tema .tag-pendiente svg { width: 12px; height: 12px; }


/* ============================================================
   §15 — Barra de progreso y log de detalle
   ============================================================ */
.ia-tema .progreso {
    background: var(--ia-panel2);
    border: 1px solid var(--ia-line);
    border-radius: 6px;
    height: 32px;
    overflow: hidden;
    margin-bottom: 14px;
}
.ia-tema .progreso-barra {
    background: linear-gradient(90deg, var(--ia-accent), var(--ia-success));
    height: 100%;
    color: var(--ia-accent-d);
    font-weight: 600;
    font-size: .85rem;
    display: flex; align-items: center; justify-content: center;
    transition: width .3s;
    background-size: 30px 30px;
    background-image: linear-gradient(90deg, var(--ia-accent), var(--ia-success)),
                      linear-gradient(45deg, rgb(var(--ia-overlay-rgb) / .15) 25%, transparent 25%, transparent 50%, rgb(var(--ia-overlay-rgb) / .15) 50%, rgb(var(--ia-overlay-rgb) / .15) 75%, transparent 75%);
    animation: ia-stripes 1s linear infinite;
}
@keyframes ia-stripes { from { background-position: 0 0; } to { background-position: 30px 0; } }

.ia-tema .stats-progreso {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 10px;
    margin-bottom: 12px;
}
.ia-tema .stat-mini {
    background: var(--ia-panel2);
    border-left: 3px solid var(--ia-accent);
    border-radius: 6px;
    padding: 10px 14px;
    text-align: center;
}
.ia-tema .stat-mini .lbl {
    color: var(--ia-muted);
    font-size: .68rem;
    text-transform: uppercase;
    letter-spacing: .3px;
    margin-bottom: 4px;
}
.ia-tema .stat-mini .val {
    color: var(--ia-text);
    font-size: 1.15rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

.ia-tema .log-box {
    max-height: 200px;
    overflow-y: auto;
    background: var(--ia-sidebar-top);
    border: 1px solid var(--ia-line);
    border-radius: 4px;
    padding: 10px;
    font-family: 'Courier New', monospace;
    font-size: 12px;
    color: var(--ia-text);
    line-height: 1.5;
}
.ia-tema .log-box div {
    padding: 2px 0;
    border-bottom: 1px dashed rgb(var(--ia-accent-rgb) / .08);
}
.ia-tema .log-box div:last-child { border-bottom: none; }


/* ============================================================
   §16 — Marquee / carrusel de texto
   ============================================================ */
.ia-tema .marquee-container {
    overflow: hidden;
    white-space: nowrap;
    background: var(--ia-panel2);
    color: var(--ia-accent);
    padding: 12px 0;
    border-radius: 6px;
    border: 1px solid var(--ia-line);
    border-left: 3px solid var(--ia-accent);
    font-weight: 500;
    font-size: .9rem;
    letter-spacing: .3px;
}
.ia-tema .marquee {
    display: inline-block;
    padding-left: 100%;
    animation: ia-scroll 35s linear infinite;
}
.ia-tema .marquee:hover { animation-play-state: paused; }
@keyframes ia-scroll {
    0%   { transform: translate(0,0); }
    100% { transform: translate(-100%,0); }
}


/* ============================================================
   §17 — Iframes y mapas embed (info-strips, mapa-card, etc.)
   ============================================================ */
.ia-tema .info-strip {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 10px;
    margin: 14px 0;
}
.ia-tema .info-item {
    background: var(--ia-panel2);
    border-left: 3px solid var(--ia-accent);
    padding: 10px 14px;
    border-radius: 6px;
    font-size: .82rem;
}
.ia-tema .info-item .lbl {
    color: var(--ia-muted);
    font-size: .68rem;
    text-transform: uppercase;
    letter-spacing: .3px;
    margin-bottom: 3px;
}
.ia-tema .info-item .val { color: var(--ia-text); font-weight: 500; }

.ia-tema .grid-meteo {
    display: grid;
    grid-template-columns: 1fr;
    gap: 14px;
    margin-top: 14px;
}
@media (min-width: 1100px) {
    .ia-tema .grid-meteo { grid-template-columns: 1fr 1fr; }
}
.ia-tema .mapa-card {
    background: var(--ia-panel);
    border: 1px solid var(--ia-line);
    border-radius: var(--ia-radius);
    padding: 14px;
}
.ia-tema .mapa-card .tit {
    color: var(--ia-accent);
    font-size: .95rem;
    font-weight: 600;
    margin-bottom: 10px;
    display: flex; justify-content: space-between; align-items: center;
    flex-wrap: wrap; gap: 8px;
}
.ia-tema .mapa-card .tit .izq { display: flex; align-items: center; gap: 8px; }
.ia-tema .mapa-card .tit .badge-fuente {
    background: var(--ia-panel2);
    color: var(--ia-muted);
    border: 1px solid var(--ia-line);
    padding: 3px 9px;
    border-radius: 10px;
    font-size: .72rem;
    font-weight: 500;
}
.ia-tema .mapa-card .tit .badge-fuente.windy    { color: var(--ia-info); border-color: var(--ia-info); }
.ia-tema .mapa-card .tit .badge-fuente.meteored { color: var(--ia-accent2); border-color: var(--ia-accent2); }

.ia-tema .mapa-frame {
    position: relative;
    background: var(--ia-panel2);
    border: 1px solid var(--ia-line);
    border-radius: 6px;
    overflow: hidden;
    padding: 0;
    color-scheme: dark;
}
.ia-tema .mapa-frame iframe,
.ia-tema .mapa-frame > div {
    display: block;
    width: 100% !important;
    border: 0;
    background: transparent;
}
.ia-tema .mapa-frame iframe { min-height: 460px; }

.ia-tema .mapa-pie {
    margin-top: 10px;
    display: flex; justify-content: space-between; align-items: center;
    flex-wrap: wrap; gap: 8px;
    color: var(--ia-muted);
    font-size: .78rem;
}
.ia-tema .mapa-pie .coords {
    background: var(--ia-panel2);
    border: 1px solid var(--ia-line);
    padding: 3px 9px;
    border-radius: 4px;
    font-variant-numeric: tabular-nums;
}
.ia-tema .mapa-pie a {
    color: var(--ia-accent);
    text-decoration: none;
    padding: 4px 10px;
    background: var(--ia-panel2);
    border: 1px solid var(--ia-accent);
    border-radius: 4px;
    transition: all .15s;
    font-size: .76rem;
}
.ia-tema .mapa-pie a:hover { background: var(--ia-accent); color: var(--ia-accent-d); }

.ia-tema .calendar-box {
    background: var(--ia-panel);
    border: 1px solid var(--ia-line);
    border-radius: var(--ia-radius);
    padding: 18px;
}
.ia-tema .calendar-head {
    display: flex; justify-content: space-between; align-items: center;
    margin-bottom: 14px; padding-bottom: 10px;
    border-bottom: 1px solid var(--ia-line);
}
.ia-tema .calendar-head h6 {
    margin: 0; color: var(--ia-accent);
    font-size: 1rem; font-weight: 600;
    display: flex; align-items: center; gap: 8px;
}
.ia-tema .calendar-head a {
    color: var(--ia-accent);
    font-size: .82rem;
    text-decoration: none;
    padding: 5px 12px;
    background: var(--ia-panel2);
    border: 1px solid var(--ia-accent);
    border-radius: 4px;
    transition: all .15s;
}
.ia-tema .calendar-head a:hover { background: var(--ia-accent); color: var(--ia-accent-d); }


/* ============================================================
   §18 — Responsive
   ============================================================ */
@media (max-width: 768px) {
    .navbar.topbar select.form-control,
    .navbar.topbar select.form-control-sm {
        min-width: 100px;
        font-size: .78rem !important;
    }
    .navbar.topbar .topbar-divider { display: none !important; }

    .ia-tema { padding: 14px; }
    .ia-tema .filtros { flex-direction: column; align-items: stretch; }
    .ia-tema .filtros .fld { width: 100%; }
    .ia-tema .filtros input,
    .ia-tema .filtros select { width: 100%; min-width: 0; }
    .ia-tema .grafico-canvas-wrap { height: 280px; }
}

  /* ============================================================
     Estilo unificado dark/turquesa — consistente con módulo IA
     ============================================================ */
  #backup-app {
    --bg:var(--ia-bg); --panel:var(--ia-panel); --panel2:var(--ia-panel2); --line:var(--ia-line);
    --text:var(--ia-text); --muted:var(--ia-muted); --accent:var(--ia-accent); --accent2:var(--ia-accent2);
    --danger:var(--ia-danger); --info:var(--ia-info); --success:var(--ia-success); --warn:var(--ia-warn);
    font-family: system-ui, -apple-system, sans-serif;
    background: var(--bg); color: var(--text);
    padding: 24px; border-radius: 8px; margin: 14px 0;
    line-height: 1.55;
  }
  #backup-app * { box-sizing: border-box; }

  #backup-app h1 { color: var(--accent); font-size: 1.3rem; margin-bottom: 6px;
                   display:flex; align-items:center; gap:10px; }
  #backup-app h2 { color: var(--accent); font-size: 1rem; margin-top: 18px; margin-bottom: 10px;
                   display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:8px; }
  #backup-app .sub { color: var(--muted); font-size: .9rem; margin-bottom: 18px; }

  /* Caja base (sustituye .card de Bootstrap) */
  #backup-app .box { background: var(--panel); border: 1px solid var(--line);
                     border-radius: 8px; padding: 0; margin: 14px 0; overflow: hidden; }
  #backup-app .box-head {
    background: var(--panel2);
    border-bottom: 1px solid var(--line);
    padding: 14px 18px;
    display: flex; justify-content: space-between; align-items: center;
    flex-wrap: wrap; gap: 8px;
  }
  #backup-app .box-head h4 {
    color: var(--accent); margin: 0; font-size: 1rem; font-weight: 600;
    display: flex; align-items: center; gap: 8px;
  }
  #backup-app .box-head .icono {
    width: 32px; height: 32px; display: inline-flex; align-items: center;
    justify-content: center; background: var(--panel);
    border: 1px solid var(--line); border-radius: 6px; color: var(--accent);
  }
  #backup-app .box-body { padding: 18px; }
  #backup-app .box-body p { color: var(--muted); font-size: .9rem; margin-bottom: 12px; }

  /* Alertas */
  #backup-app .alerta {
    padding: 12px 16px; border-radius: 6px;
    margin-bottom: 14px; font-size: .88rem;
    display: flex; align-items: flex-start; gap: 10px;
  }
  #backup-app .alerta.info {
    background: rgb(var(--ia-info-rgb) / .08);
    border: 1px solid var(--info);
    border-left: 4px solid var(--info);
    color: var(--text);
  }
  #backup-app .alerta.ok {
    background: rgb(var(--ia-accent-rgb) / .08);
    border: 1px solid var(--accent);
    border-left: 4px solid var(--accent);
    color: var(--text);
  }
  #backup-app .alerta.danger {
    background: rgb(var(--ia-danger-rgb) / .08);
    border: 1px solid var(--danger);
    border-left: 4px solid var(--danger);
    color: var(--text);
  }
  #backup-app .alerta i { font-size: 1.1rem; margin-top: 2px; }
  #backup-app .alerta strong { color: var(--accent); }
  #backup-app .alerta.danger strong { color: var(--danger); }
  #backup-app .alerta.ok strong { color: var(--accent); }
  #backup-app .alerta h5 {
    margin: 0 0 6px 0; font-size: 1rem; color: var(--accent);
    display: flex; align-items: center; gap: 8px;
  }
  #backup-app .alerta.danger h5 { color: var(--danger); }
  #backup-app .alerta p { margin: 0; color: var(--text); font-size: .88rem; }

  /* Botones */
  #backup-app .btn-ia {
    display: inline-flex; align-items: center; gap: 8px;
    background: var(--accent); color: var(--ia-accent-d);
    padding: 9px 18px; border-radius: 6px;
    border: none; cursor: pointer;
    font-weight: 600; font-size: .9rem;
    text-decoration: none;
    transition: background .15s, transform .15s;
  }
  #backup-app .btn-ia:hover { background: var(--ia-accent-h); color: var(--ia-accent-d); transform: translateY(-1px); text-decoration:none; }
  #backup-app .btn-ia.sec {
    background: var(--panel2); color: var(--accent);
    border: 1px solid var(--accent);
  }
  #backup-app .btn-ia.sec:hover { background: var(--line); color: var(--accent); }
  #backup-app .btn-ia.danger { background: var(--danger); color: #4a0a0a; }
  #backup-app .btn-ia.danger:hover { background: #fca5a5; color: #4a0a0a; }
  #backup-app .btn-ia.warn { background: var(--warn); color: #4a3208; }
  #backup-app .btn-ia.warn:hover { background: #fcd34d; }
  #backup-app .btn-ia.lg { padding: 12px 24px; font-size: .95rem; }
  #backup-app .btn-ia.sm { padding: 5px 10px; font-size: .78rem; }

  /* Barra de progreso (override Bootstrap) */
  #backup-app .progreso {
    background: var(--panel2);
    border: 1px solid var(--line);
    border-radius: 6px;
    height: 32px;
    overflow: hidden;
    margin-bottom: 14px;
  }
  #backup-app .progreso-barra {
    background: linear-gradient(90deg, var(--accent), #10b981);
    height: 100%;
    color: var(--ia-accent-d);
    font-weight: 600;
    font-size: .85rem;
    display: flex; align-items: center; justify-content: center;
    transition: width .3s;
    background-size: 30px 30px;
    background-image: linear-gradient(90deg, var(--accent), #10b981),
                      linear-gradient(45deg, rgb(var(--ia-overlay-rgb) / .15) 25%, transparent 25%, transparent 50%, rgb(var(--ia-overlay-rgb) / .15) 50%, rgb(var(--ia-overlay-rgb) / .15) 75%, transparent 75%);
    animation: stripes 1s linear infinite;
  }
  @keyframes stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }

  /* Estadísticas de progreso (Tablas, Filas, etc) */
  #backup-app .stats-progreso {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 10px;
    margin-bottom: 12px;
  }
  #backup-app .stat-mini {
    background: var(--panel2);
    border-left: 3px solid var(--accent);
    border-radius: 6px;
    padding: 10px 14px;
    text-align: center;
  }
  #backup-app .stat-mini .lbl {
    color: var(--muted); font-size: .68rem;
    text-transform: uppercase; letter-spacing: .3px; margin-bottom: 4px;
  }
  #backup-app .stat-mini .val {
    color: var(--text); font-size: 1.15rem; font-weight: 600;
    font-variant-numeric: tabular-nums;
  }

  /* Log de detalle */
  #backup-app .log-box {
    max-height: 200px; overflow-y: auto;
    background: var(--ia-sidebar-top); border: 1px solid var(--line);
    border-radius: 4px; padding: 10px;
    font-family: 'Courier New', monospace; font-size: 12px;
    color: var(--text);
    line-height: 1.5;
  }
  #backup-app .log-box div { padding: 2px 0; border-bottom: 1px dashed rgb(var(--ia-accent-rgb) / .08); }
  #backup-app .log-box div:last-child { border-bottom: none; }

  /* Estados */
  #backup-app .estado-centro { text-align: center; padding: 10px 0; }
  #backup-app #paso-actual { color: var(--accent); font-size: 1rem; margin-bottom: 14px; }

  /* Tabla DataTables tematizada */
  #backup-app table.dataTable {
    width: 100% !important;
    color: var(--text);
    border-collapse: collapse !important;
  }
  #backup-app table.dataTable thead th {
    color: var(--accent);
    background: var(--panel2);
    border-bottom: 1px solid var(--line) !important;
    border-top: none !important;
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .3px;
    padding: 10px 12px;
    font-weight: 600;
  }
  #backup-app table.dataTable tbody td {
    background: var(--panel) !important;
    border-bottom: 1px solid var(--line) !important;
    border-top: none !important;
    padding: 9px 12px;
    color: var(--text);
    font-size: .88rem;
  }
  #backup-app table.dataTable tbody tr:hover td {
    background: var(--panel2) !important;
  }
  #backup-app table.dataTable.table-striped tbody tr.odd td {
    background: rgba(34,43,55,.5) !important;
  }
  #backup-app .dataTables_wrapper .dataTables_length,
  #backup-app .dataTables_wrapper .dataTables_filter,
  #backup-app .dataTables_wrapper .dataTables_info,
  #backup-app .dataTables_wrapper .dataTables_paginate {
    color: var(--muted);
    font-size: .85rem;
    padding: 8px 0;
  }
  #backup-app .dataTables_wrapper .dataTables_length select,
  #backup-app .dataTables_wrapper .dataTables_filter input {
    background: var(--panel2);
    color: var(--text);
    border: 1px solid var(--line);
    border-radius: 4px;
    padding: 4px 8px;
    font-size: .85rem;
  }
  #backup-app .dataTables_wrapper .dataTables_filter input:focus,
  #backup-app .dataTables_wrapper .dataTables_length select:focus {
    outline: none;
    border-color: var(--accent);
  }
  #backup-app .dataTables_wrapper .dataTables_paginate .paginate_button {
    color: var(--muted) !important;
    background: var(--panel2) !important;
    border: 1px solid var(--line) !important;
    border-radius: 4px !important;
    margin: 0 2px;
    padding: 4px 10px !important;
  }
  #backup-app .dataTables_wrapper .dataTables_paginate .paginate_button:hover {
    background: var(--line) !important;
    color: var(--accent) !important;
    border-color: var(--accent) !important;
  }
  #backup-app .dataTables_wrapper .dataTables_paginate .paginate_button.current,
  #backup-app .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
    background: var(--accent) !important;
    color: var(--ia-accent-d) !important;
    border-color: var(--accent) !important;
    font-weight: 600;
  }
  #backup-app .dataTables_wrapper .dataTables_paginate .paginate_button.disabled,
  #backup-app .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover {
    color: var(--muted) !important;
    opacity: .5;
    background: var(--panel) !important;
  }

  /* Badge de tamaño */
  #backup-app .badge-tamano {
    display: inline-block;
    padding: 3px 10px;
    font-size: .78rem;
    font-weight: 600;
    color: var(--accent);
    background: var(--panel2);
    border: 1px solid var(--accent);
    border-radius: 10px;
    min-width: 70px;
    text-align: center;
    font-variant-numeric: tabular-nums;
  }

  /* Iconos dentro de la tabla y celdas */
  #backup-app table.dataTable .text-info { color: var(--info) !important; }
  #backup-app table.dataTable small { color: var(--muted); font-size: .85rem; }

  /* Botones de acción dentro de la tabla */
  #backup-app .btn-tabla {
    display: inline-flex; align-items: center; justify-content: center;
    width: 30px; height: 30px;
    border: none; border-radius: 5px;
    cursor: pointer;
    margin: 0 2px;
    transition: transform .15s;
    text-decoration: none;
    font-size: .85rem;
  }
  #backup-app .btn-tabla:hover { transform: translateY(-1px); text-decoration: none; }
  #backup-app .btn-tabla.descargar {
    background: var(--accent); color: var(--ia-accent-d);
  }
  #backup-app .btn-tabla.descargar:hover { background: var(--ia-accent-h); color: var(--ia-accent-d); }
  #backup-app .btn-tabla.eliminar {
    background: rgb(var(--ia-danger-rgb) / .15); color: var(--danger);
    border: 1px solid var(--danger);
  }
  #backup-app .btn-tabla.eliminar:hover { background: var(--danger); color: #fff; }

  /* Modales (override Bootstrap) */
  /* (regla de .modal-backdrop eliminada — interfería con la transición
     de cierre de Bootstrap y dejaba el backdrop colgado) */
  #modalConfirmarRespaldo .modal-content,
  #modalEliminar .modal-content {
    background: var(--panel, var(--ia-panel));
    color: var(--text, var(--ia-text));
    border: 1px solid var(--line, var(--ia-line));
    border-radius: 8px;
  }
  #modalConfirmarRespaldo .modal-header,
  #modalEliminar .modal-header {
    background: var(--panel2, var(--ia-panel2)) !important;
    color: var(--accent, var(--ia-accent)) !important;
    border-bottom: 1px solid var(--line, var(--ia-line));
  }
  #modalEliminar .modal-header { color: var(--danger, var(--ia-danger)) !important; }
  #modalConfirmarRespaldo .modal-header .close,
  #modalEliminar .modal-header .close {
    color: var(--text, var(--ia-text)); opacity: .7; text-shadow: none;
  }
  #modalConfirmarRespaldo .modal-header .close:hover,
  #modalEliminar .modal-header .close:hover { opacity: 1; }
  #modalConfirmarRespaldo .modal-title,
  #modalEliminar .modal-title { font-size: 1rem; font-weight: 600; display: flex; align-items: center; gap: 8px; }
  #modalConfirmarRespaldo .modal-body,
  #modalEliminar .modal-body {
    background: var(--panel, var(--ia-panel));
    color: var(--text, var(--ia-text));
    padding: 18px;
  }
  #modalConfirmarRespaldo .modal-body p,
  #modalEliminar .modal-body p { color: var(--text, var(--ia-text)); }
  #modalConfirmarRespaldo .modal-body .text-muted,
  #modalEliminar .modal-body .text-muted { color: var(--muted, var(--ia-muted)) !important; }
  #modalEliminar .modal-body .text-danger { color: var(--danger, var(--ia-danger)) !important; }
  #modalConfirmarRespaldo .modal-body strong,
  #modalEliminar .modal-body strong { color: var(--accent, var(--ia-accent)); }
  #modalConfirmarRespaldo .modal-footer,
  #modalEliminar .modal-footer {
    background: var(--panel2, var(--ia-panel2));
    border-top: 1px solid var(--line, var(--ia-line));
  }

  /* Modales: rewriting Bootstrap btn classes */
  #modalConfirmarRespaldo .btn-secondary,
  #modalEliminar .btn-secondary {
    background: var(--panel, var(--ia-panel)) !important;
    color: var(--muted, var(--ia-muted)) !important;
    border: 1px solid var(--line, var(--ia-line)) !important;
  }
  #modalConfirmarRespaldo .btn-secondary:hover,
  #modalEliminar .btn-secondary:hover { background: var(--line, var(--ia-line)) !important; color: var(--text, var(--ia-text)) !important; }
  #modalConfirmarRespaldo .btn-success {
    background: var(--accent, var(--ia-accent)) !important;
    color: var(--ia-accent-d) !important;
    border: none !important;
    font-weight: 600;
  }
  #modalConfirmarRespaldo .btn-success:hover { background: var(--ia-accent-h) !important; }
  #modalEliminar .btn-danger {
    background: var(--danger, var(--ia-danger)) !important;
    color: #4a0a0a !important;
    border: none !important;
    font-weight: 600;
  }
  #modalEliminar .btn-danger:hover { background: #fca5a5 !important; }




  #dash-app {
    --bg:var(--ia-bg); --panel:var(--ia-panel); --panel2:var(--ia-panel2); --line:var(--ia-line);
    --text:var(--ia-text); --muted:var(--ia-muted); --accent:var(--ia-accent); --accent2:var(--ia-accent2);
    --danger:var(--ia-danger); --info:var(--ia-info); --success:var(--ia-success); --warn:var(--ia-warn);
    font-family: system-ui,-apple-system,sans-serif;
    background: var(--bg); color: var(--text);
    padding: 24px; border-radius: 8px; margin: 14px 0;
    line-height: 1.55;
  }
  #dash-app * { box-sizing: border-box; }
  #dash-app h1 { color: var(--accent); font-size: 1.3rem; margin-bottom: 6px; }
  #dash-app h2 { color: var(--accent); font-size: 1rem; margin-top: 18px; margin-bottom: 10px;
                 display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:8px; }
  #dash-app .sub { color: var(--muted); font-size: .9rem; margin-bottom: 18px; }
  #dash-app .box { background: var(--panel); border: 1px solid var(--line);
                   border-radius: 8px; padding: 16px; margin: 14px 0; }

  /* KPIs */
  #dash-app .stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:12px; }
  #dash-app .stat { background:var(--panel2); padding:14px 16px; border-radius:6px;
                    border-left:3px solid var(--accent); cursor:pointer;
                    transition:transform .15s, border-color .15s; text-decoration:none; color:inherit; display:block; }
  #dash-app .stat:hover { transform:translateY(-2px); border-left-color:var(--accent2); text-decoration:none; color:inherit; }
  #dash-app .stat.danger  { border-left-color:var(--danger);  }
  #dash-app .stat.success { border-left-color:var(--success); }
  #dash-app .stat.info    { border-left-color:var(--info);    }
  #dash-app .stat.warn    { border-left-color:var(--warn);    }
  #dash-app .stat .label { color:var(--muted); font-size:.72rem; text-transform:uppercase;
                           letter-spacing:.3px; margin-bottom:4px; display:flex; align-items:center; gap:6px; }
  #dash-app .stat .valor { font-size:1.7rem; font-weight:600; color:var(--text); }
  #dash-app .stat .ir    { color:var(--muted); font-size:.7rem; margin-top:2px; }
  #dash-app .stat:hover .ir { color:var(--accent); }

  /* Grid de gráficos */
  #dash-app .grid-graficos { display:grid; grid-template-columns:1fr; gap:14px; margin-top:14px; }
  @media (min-width:1100px) {
    #dash-app .grid-graficos { grid-template-columns:1fr 1fr; }
    #dash-app .grafico-card.ancho { grid-column:span 2; }
  }

  #dash-app .grafico-card { background:var(--panel); border:1px solid var(--line);
                            border-radius:8px; padding:14px; }
  #dash-app .grafico-card .tit { color:var(--accent); font-size:.95rem; font-weight:600;
                                 margin-bottom:8px; display:flex; justify-content:space-between;
                                 align-items:center; flex-wrap:wrap; gap:8px; }
  #dash-app .selector-tipo { display:flex; gap:4px; }
  #dash-app .tipo-btn { background:var(--panel2); border:1px solid var(--line);
                        color:var(--muted); padding:4px 10px; border-radius:4px;
                        cursor:pointer; font-size:.72rem; transition:all .15s; }
  #dash-app .tipo-btn:hover { color:var(--accent); border-color:var(--accent); }
  #dash-app .tipo-btn.activo { background:var(--accent); color:var(--ia-accent-d); border-color:var(--accent);
                               font-weight:600; }

  #dash-app .grafico-canvas-wrap { position:relative; height:360px; background:var(--panel2);
                                   border-radius:6px; padding:10px; }
  #dash-app .acciones-grafico { margin-top:10px; display:flex; gap:6px; flex-wrap:wrap; }

  /* Filtros */
  #dash-app .filtros { display:flex; gap:10px; flex-wrap:wrap; align-items:flex-end;
                       background:var(--panel2); padding:12px; border-radius:6px;
                       border:1px solid var(--line); margin-bottom:12px; }
  #dash-app .filtros .fld { display:flex; flex-direction:column; gap:4px; }
  #dash-app .filtros label { color:var(--muted); font-size:.72rem; text-transform:uppercase;
                             letter-spacing:.3px; }
  #dash-app .filtros input, #dash-app .filtros select {
                          background:var(--panel); color:var(--text); border:1px solid var(--line);
                          padding:6px 10px; border-radius:4px; font-size:.85rem; min-width:160px; }
  #dash-app .filtros input:focus, #dash-app .filtros select:focus {
                          outline:none; border-color:var(--accent); }

  /* Tablas */
  #dash-app table { width:100%; border-collapse:collapse; margin-top:8px; font-size:.85rem; }
  #dash-app th, #dash-app td { text-align:left; padding:7px 10px; border-bottom:1px solid var(--line); }
  #dash-app th { color:var(--accent); font-size:.72rem; text-transform:uppercase;
                 background:var(--panel2); letter-spacing:.3px; }
  #dash-app td.num { text-align:right; font-variant-numeric:tabular-nums; }
  #dash-app tbody tr:hover { background:var(--panel2); }
  #dash-app .barra-mini { background:var(--line); height:10px; border-radius:5px; overflow:hidden;
                          display:inline-block; vertical-align:middle; }
  #dash-app .barra-mini-rell { background:linear-gradient(90deg,var(--accent),#10b981); height:100%; }

  /* Botones */
  #dash-app .btn { display:inline-block; background:var(--accent); color:var(--ia-accent-d);
                   padding:8px 16px; border-radius:6px; text-decoration:none;
                   font-weight:600; font-size:.85rem; border:none; cursor:pointer; }
  #dash-app .btn:hover { background:var(--ia-accent-h); }
  #dash-app .btn.sec { background:var(--panel2); color:var(--accent);
                       border:1px solid var(--accent); }
  #dash-app .btn.sec:hover { background:var(--line); }
  #dash-app .btn-exportar { background:var(--panel2); border:1px solid var(--line);
                            color:var(--muted); padding:5px 10px; border-radius:5px;
                            cursor:pointer; font-size:.74rem; transition:all .15s; }
  #dash-app .btn-exportar:hover { background:var(--accent); color:var(--ia-accent-d);
                                  border-color:var(--accent); }

  /* Badge días transcurridos */
  #dash-app .dias { display:inline-block; min-width:36px; padding:2px 8px; border-radius:10px;
                    font-size:.72rem; font-weight:600; text-align:center; }
  #dash-app .dias.ok    { background:rgb(var(--ia-success-rgb) / .15); color:var(--success); }
  #dash-app .dias.warn  { background:rgb(var(--ia-warn-rgb) / .15); color:var(--warn); }
  #dash-app .dias.danger{ background:rgb(var(--ia-danger-rgb) / .15); color:var(--danger); }

  /* Botón "Pendiente" en tabla equipos */
  #dash-app .tag-pendiente { display:inline-flex; align-items:center; gap:5px;
                             background:var(--ia-accent2-bg); color:var(--accent2);
                             padding:3px 9px; border-radius:10px; font-size:.72rem;
                             text-decoration:none; font-weight:500; }
  #dash-app .tag-pendiente:hover { background:var(--accent2); color:var(--ia-accent-d); text-decoration:none; }
  #dash-app .tag-pendiente svg { width:12px; height:12px; }

  /* Buscador dentro de tabla */
  #dash-app .tabla-head { display:flex; justify-content:space-between; align-items:center;
                          flex-wrap:wrap; gap:8px; margin-bottom:6px; }
  #dash-app .tabla-search { background:var(--panel2); color:var(--text);
                            border:1px solid var(--line); padding:5px 10px;
                            border-radius:4px; font-size:.82rem; min-width:200px; }
  #dash-app .tabla-search:focus { outline:none; border-color:var(--accent); }
  #dash-app .tabla-wrap { max-height:420px; overflow:auto; border:1px solid var(--line); border-radius:4px; }
  #dash-app .tabla-wrap table { margin-top:0; }
  #dash-app .tabla-wrap thead th { position:sticky; top:0; z-index:1; }
  #dash-app .count-pill { background:var(--panel2); color:var(--accent); padding:2px 10px;
                          border-radius:10px; font-size:.75rem; font-weight:600; }



  /* ============================================================
     Estilo unificado dark/turquesa — consistente con módulo IA
     ============================================================ */
  #inicio-app {
    --bg:var(--ia-bg); --panel:var(--ia-panel); --panel2:var(--ia-panel2); --line:var(--ia-line);
    --text:var(--ia-text); --muted:var(--ia-muted); --accent:var(--ia-accent); --accent2:var(--ia-accent2);
    --danger:var(--ia-danger); --info:var(--ia-info); --success:var(--ia-success); --warn:var(--ia-warn);
    font-family: 'Heebo', system-ui, -apple-system, sans-serif;
    background: var(--bg); color: var(--text);
    padding: 24px; border-radius: 8px; margin: 14px 0;
    line-height: 1.55;
  }
  #inicio-app * { box-sizing: border-box; }

  #inicio-app h1 { color: var(--accent); font-size: 1.3rem; margin-bottom: 6px; }
  #inicio-app h2 { color: var(--accent); font-size: 1rem; margin-top: 18px; margin-bottom: 10px;
                   display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:8px; }
  #inicio-app .sub { color: var(--muted); font-size: .9rem; margin-bottom: 18px; }

  /* Caja base */
  #inicio-app .box { background: var(--panel); border: 1px solid var(--line);
                     border-radius: 8px; padding: 16px; margin: 14px 0; }

  /* ===== MARQUEE (banderín de indicadores económicos) ===== */
  #inicio-app .marquee-container {
    overflow: hidden;
    white-space: nowrap;
    background: var(--panel2);
    color: var(--accent);
    padding: 12px 0;
    border-radius: 6px;
    border: 1px solid var(--line);
    border-left: 3px solid var(--accent);
    font-weight: 500;
    font-size: .9rem;
    letter-spacing: .3px;
  }
  #inicio-app .marquee {
    display: inline-block;
    padding-left: 100%;
    animation: scroll 35s linear infinite;
  }
  #inicio-app .marquee:hover { animation-play-state: paused; }
  @keyframes scroll {
    0%   { transform: translate(0,0); }
    100% { transform: translate(-100%,0); }
  }

  /* ===== TARJETAS (Empresa / Representante / Prevencionista) ===== */
  #inicio-app .grid-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 14px;
    margin-top: 14px;
  }
  #inicio-app .card-custom {
    background: var(--panel2);
    border: 1px solid var(--line);
    border-left: 3px solid var(--accent);
    border-radius: 6px;
    padding: 18px;
    transition: transform .15s, border-left-color .15s;
  }
  #inicio-app .card-custom:hover { transform: translateY(-2px); border-left-color: var(--accent2); }
  #inicio-app .card-custom.rep   { border-left-color: var(--info); }
  #inicio-app .card-custom.prev  { border-left-color: var(--warn); }

  #inicio-app .card-title {
    color: var(--accent);
    font-size: .95rem;
    font-weight: 600;
    margin-bottom: 14px;
    display: flex;
    align-items: center;
    gap: 8px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--line);
  }
  #inicio-app .card-custom.rep .card-title  { color: var(--info); }
  #inicio-app .card-custom.prev .card-title { color: var(--warn); }
  #inicio-app .card-header-icon {
    font-size: 1.1rem;
    width: 32px; height: 32px;
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--panel);
    border-radius: 6px;
    border: 1px solid var(--line);
  }

  #inicio-app .label {
    font-size: .72rem;
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: .3px;
    margin-bottom: 2px;
  }
  #inicio-app .value {
    font-weight: 500;
    color: var(--text);
    margin-bottom: 10px;
    font-size: .92rem;
  }
  #inicio-app .value:last-child { margin-bottom: 0; }

  /* ===== CALENDARIO ===== */
  #inicio-app .calendar-box {
    background: var(--panel);
    border: 1px solid var(--line);
    border-radius: 8px;
    padding: 18px;
  }
  #inicio-app .calendar-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 14px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--line);
  }
  #inicio-app .calendar-head h6 {
    margin: 0; color: var(--accent); font-size: 1rem; font-weight: 600;
    display: flex; align-items: center; gap: 8px;
  }
  #inicio-app .calendar-head a {
    color: var(--accent);
    font-size: .82rem;
    text-decoration: none;
    padding: 5px 12px;
    background: var(--panel2);
    border: 1px solid var(--accent);
    border-radius: 4px;
    transition: all .15s;
  }
  #inicio-app .calendar-head a:hover { background: var(--accent); color: var(--ia-accent-d); }

  /* Compatibilidad con el widget #calender (si carga su propio CSS,
     forzamos colores oscuros sobre los elementos internos) */
  #inicio-app #calender { color: var(--text); min-height: 280px; }
  #inicio-app #calender table { width: 100%; color: var(--text); }
  #inicio-app #calender th { color: var(--accent); }
  #inicio-app #calender a { color: var(--accent); }

  #mainContent { padding-top: 140px; }


  /* ============================================================
     Estilo unificado dark/turquesa — consistente con módulo IA
     ============================================================ */
  #meteo-app {
    --bg:var(--ia-bg); --panel:var(--ia-panel); --panel2:var(--ia-panel2); --line:var(--ia-line);
    --text:var(--ia-text); --muted:var(--ia-muted); --accent:var(--ia-accent); --accent2:var(--ia-accent2);
    --info:var(--ia-info);
    font-family: system-ui, -apple-system, sans-serif;
    background: var(--bg); color: var(--text);
    padding: 24px; border-radius: 8px; margin: 14px 0;
    line-height: 1.55;
  }
  #meteo-app * { box-sizing: border-box; }

  #meteo-app h1 { color: var(--accent); font-size: 1.3rem; margin-bottom: 6px;
                  display: flex; align-items: center; gap: 10px; }
  #meteo-app h2 { color: var(--accent); font-size: 1rem; margin-top: 18px; margin-bottom: 10px;
                  display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:8px; }
  #meteo-app h2 .icono { width:28px; height:28px; display:inline-flex; align-items:center;
                         justify-content:center; background:var(--panel2); border:1px solid var(--line);
                         border-radius:6px; font-size:.85rem; }
  #meteo-app .sub { color: var(--muted); font-size: .9rem; margin-bottom: 18px; }

  /* Caja base */
  #meteo-app .box { background: var(--panel); border: 1px solid var(--line);
                    border-radius: 8px; padding: 16px; margin: 14px 0; }

  /* Grid de mapas */
  #meteo-app .grid-meteo {
    display: grid;
    grid-template-columns: 1fr;
    gap: 14px;
    margin-top: 14px;
  }
  @media (min-width: 1100px) {
    #meteo-app .grid-meteo { grid-template-columns: 1fr 1fr; }
  }

  /* Tarjeta de cada mapa */
  #meteo-app .mapa-card {
    background: var(--panel);
    border: 1px solid var(--line);
    border-radius: 8px;
    padding: 14px;
  }
  #meteo-app .mapa-card .tit {
    color: var(--accent);
    font-size: .95rem;
    font-weight: 600;
    margin-bottom: 10px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
  }
  #meteo-app .mapa-card .tit .izq { display:flex; align-items:center; gap:8px; }
  #meteo-app .mapa-card .tit .badge-fuente {
    background: var(--panel2);
    color: var(--muted);
    border: 1px solid var(--line);
    padding: 3px 9px;
    border-radius: 10px;
    font-size: .72rem;
    font-weight: 500;
  }
  #meteo-app .mapa-card .tit .badge-fuente.windy { color: var(--info); border-color: var(--info); }
  #meteo-app .mapa-card .tit .badge-fuente.meteored { color: var(--accent2); border-color: var(--accent2); }

  /* Wrapper del iframe con fondo de panel oscuro */
  #meteo-app .mapa-frame {
    position: relative;
    background: var(--panel2);
    border: 1px solid var(--line);
    border-radius: 6px;
    overflow: hidden;
    padding: 0;
    color-scheme: dark;
  }
  #meteo-app .mapa-frame iframe,
  #meteo-app .mapa-frame > div {
    display: block;
    width: 100% !important;
    border: 0;
    background: transparent;
  }
  #meteo-app .mapa-frame iframe { min-height: 460px; }

  /* Nota al pie de cada mapa */
  #meteo-app .mapa-pie {
    margin-top: 10px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    color: var(--muted);
    font-size: .78rem;
  }
  #meteo-app .mapa-pie .coords {
    background: var(--panel2);
    border: 1px solid var(--line);
    padding: 3px 9px;
    border-radius: 4px;
    font-variant-numeric: tabular-nums;
  }
  #meteo-app .mapa-pie a {
    color: var(--accent);
    text-decoration: none;
    padding: 4px 10px;
    background: var(--panel2);
    border: 1px solid var(--accent);
    border-radius: 4px;
    transition: all .15s;
    font-size: .76rem;
  }
  #meteo-app .mapa-pie a:hover { background: var(--accent); color: var(--ia-accent-d); }

  /* Info-box arriba */
  #meteo-app .info-strip {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 10px;
    margin: 14px 0;
  }
  #meteo-app .info-item {
    background: var(--panel2);
    border-left: 3px solid var(--accent);
    padding: 10px 14px;
    border-radius: 6px;
    font-size: .82rem;
  }
  #meteo-app .info-item .lbl {
    color: var(--muted);
    font-size: .68rem;
    text-transform: uppercase;
    letter-spacing: .3px;
    margin-bottom: 3px;
  }
  #meteo-app .info-item .val { color: var(--text); font-weight: 500; }



  /* Bootstrap modal: textos largos con scroll y wrap */
  #viewRow .list-group-item { word-break: break-word; white-space: pre-wrap; }



  #clf-app {
    --bg:var(--ia-bg); --panel:var(--ia-panel); --panel2:var(--ia-panel2); --line:var(--ia-line);
    --text:var(--ia-text); --muted:var(--ia-muted); --accent:var(--ia-accent); --accent2:var(--ia-accent2);
    --danger:var(--ia-danger);
    font-family: system-ui,-apple-system,sans-serif;
    background: var(--bg); color: var(--text);
    padding: 24px; border-radius: 8px; margin: 14px 0;
    line-height: 1.55;
  }
  #clf-app * { box-sizing: border-box; }
  #clf-app h1 { color: var(--accent); font-size: 1.3rem; margin-bottom: 6px; }
  #clf-app h2 { color: var(--accent); font-size: 1rem; margin-top: 18px; margin-bottom: 10px;
                display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:8px; }
  #clf-app .sub { color: var(--muted); font-size: .9rem; margin-bottom: 18px; }
  #clf-app .box { background: var(--panel); border: 1px solid var(--line);
                  border-radius: 8px; padding: 16px; margin: 14px 0; }
  #clf-app .stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:12px; }
  #clf-app .stat { background:var(--panel2); padding:12px 14px; border-radius:6px;
                   border-left:3px solid var(--accent); }
  #clf-app .stat .label { color:var(--muted); font-size:.72rem; text-transform:uppercase;
                          letter-spacing:.3px; margin-bottom:4px; }
  #clf-app .stat .valor { font-size:1.4rem; font-weight:600; color:var(--text); }
  #clf-app .ok-msg { background:rgb(var(--ia-accent-rgb) / .08); border:1px solid var(--accent);
                     border-left:4px solid var(--accent); padding:12px 16px; border-radius:6px;
                     margin-bottom:14px; }
  #clf-app .err-msg { background:rgb(var(--ia-danger-rgb) / .08); border:1px solid var(--danger);
                      border-left:4px solid var(--danger); padding:12px 16px; border-radius:6px;
                      margin-bottom:14px; }

  #clf-app .grid-graficos { display:grid; grid-template-columns:1fr; gap:14px; margin-top:14px; }
  @media (min-width:1100px) {
    #clf-app .grid-graficos { grid-template-columns:1fr 1fr; }
    #clf-app .grafico-card.ancho { grid-column:span 2; }
  }

  #clf-app .grafico-card { background:var(--panel); border:1px solid var(--line);
                           border-radius:8px; padding:14px; }
  #clf-app .grafico-card .tit { color:var(--accent); font-size:.95rem; font-weight:600;
                                margin-bottom:8px; display:flex; justify-content:space-between;
                                align-items:center; flex-wrap:wrap; gap:8px; }
  #clf-app .selector-tipo { display:flex; gap:4px; }
  #clf-app .tipo-btn { background:var(--panel2); border:1px solid var(--line);
                       color:var(--muted); padding:4px 10px; border-radius:4px;
                       cursor:pointer; font-size:.72rem; transition:all .15s; }
  #clf-app .tipo-btn:hover { color:var(--accent); border-color:var(--accent); }
  #clf-app .tipo-btn.activo { background:var(--accent); color:var(--ia-accent-d); border-color:var(--accent);
                              font-weight:600; }

  #clf-app .grafico-canvas-wrap { position:relative; height:340px; background:var(--panel2);
                                  border-radius:6px; padding:10px; }
  #clf-app .acciones-grafico { margin-top:10px; display:flex; gap:6px; flex-wrap:wrap; }

  #clf-app table { width:100%; border-collapse:collapse; margin-top:8px; font-size:.85rem; }
  #clf-app th, #clf-app td { text-align:left; padding:7px 10px; border-bottom:1px solid var(--line); }
  #clf-app th { color:var(--accent); font-size:.72rem; text-transform:uppercase;
                background:var(--panel2); letter-spacing:.3px; }
  #clf-app td.num { text-align:right; font-variant-numeric:tabular-nums; }
  #clf-app .barra-mini { background:var(--line); height:12px; border-radius:6px; overflow:hidden;
                         display:inline-block; vertical-align:middle; }
  #clf-app .barra-mini-rell { background:linear-gradient(90deg,var(--accent),#10b981); height:100%; }

  #clf-app .barra-acciones { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:18px; }
  #clf-app .btn { display:inline-block; background:var(--accent); color:var(--ia-accent-d);
                  padding:10px 18px; border-radius:6px; text-decoration:none;
                  font-weight:600; font-size:.88rem; border:none; cursor:pointer; }
  #clf-app .btn:hover { background:var(--ia-accent-h); }
  #clf-app .btn.sec { background:var(--panel2); color:var(--accent);
                      border:1px solid var(--accent); }
  #clf-app .btn.sec:hover { background:var(--line); }
  #clf-app .btn-exportar { background:var(--panel2); border:1px solid var(--line);
                           color:var(--muted); padding:5px 10px; border-radius:5px;
                           cursor:pointer; font-size:.74rem; transition:all .15s; }
  #clf-app .btn-exportar:hover { background:var(--accent); color:var(--ia-accent-d);
                                 border-color:var(--accent); }

  /* Muestras de verificacion */
  #clf-app .muestras { display:flex; flex-direction:column; gap:10px; margin-top:10px; }
  #clf-app .muestra { background:var(--panel2); padding:12px 14px; border-radius:6px;
                      border-left:3px solid var(--accent); font-size:.85rem; }
  #clf-app .muestra-head { display:flex; justify-content:space-between; align-items:center;
                           margin-bottom:8px; flex-wrap:wrap; gap:6px; }
  #clf-app .muestra-id { color:var(--accent); font-weight:600; font-size:.92rem; }
  #clf-app .muestra-sis-bd { color:var(--muted); font-size:.78rem; font-style:italic; }
  #clf-app .muestra-tags { display:flex; flex-wrap:wrap; gap:4px; margin-bottom:8px; }
  #clf-app .tag { padding:2px 9px; border-radius:10px; font-size:.72rem;
                  display:inline-block; font-weight:500; }
  #clf-app .tag-sis { background:var(--ia-accent2-bg); color:var(--accent2); }
  #clf-app .tag-comp { background:#0d3b35; color:var(--accent); }
  #clf-app .tag-acc { background:#312e81; color:#a5b4fc; }
  #clf-app .tag-vacio { background:transparent; color:var(--muted); font-style:italic;
                        border:1px dashed var(--line); }
  #clf-app .muestra-texto { color:var(--muted); font-size:.78rem; line-height:1.5;
                            background:var(--panel); padding:8px 10px; border-radius:4px;
                            border:1px solid var(--line); }
  #clf-app .muestra-texto b { color:var(--text); }



  #clt-app {
    --bg:var(--ia-bg); --panel:var(--ia-panel); --panel2:var(--ia-panel2); --line:var(--ia-line);
    --text:var(--ia-text); --muted:var(--ia-muted); --accent:var(--ia-accent); --accent2:var(--ia-accent2);
    --danger:var(--ia-danger);
    font-family: system-ui,-apple-system,sans-serif;
    background: var(--bg); color: var(--text);
    padding: 24px; border-radius: 8px; margin: 14px 0; line-height: 1.55;
  }
  #clt-app * { box-sizing: border-box; }
  #clt-app h1 { color: var(--accent); font-size: 1.3rem; margin-bottom: 6px; }
  #clt-app .sub { color: var(--muted); font-size: .9rem; margin-bottom: 18px; }
  #clt-app .box { background: var(--panel); border: 1px solid var(--line);
                  border-radius: 8px; padding: 16px; margin: 14px 0; }
  #clt-app .stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:12px; }
  #clt-app .stat { background:var(--panel2); padding:12px 14px; border-radius:6px;
                   border-left:3px solid var(--accent); }
  #clt-app .stat .label { color:var(--muted); font-size:.72rem; text-transform:uppercase;
                          letter-spacing:.3px; margin-bottom:4px; }
  #clt-app .stat .valor { font-size:1.4rem; font-weight:600; color:var(--text); }
  #clt-app .barra-progreso { background:var(--line); height:18px; border-radius:9px;
                             overflow:hidden; margin-top:8px; }
  #clt-app .barra-rell { background:linear-gradient(90deg,var(--accent),#10b981);
                         height:100%; text-align:center; color:var(--ia-accent-d);
                         font-weight:700; font-size:.8rem; line-height:18px; }

  #clt-app .ok-msg { background:rgb(var(--ia-accent-rgb) / .08); border:1px solid var(--accent);
                     border-left:4px solid var(--accent); padding:12px 16px; border-radius:6px;
                     margin-bottom:14px; }
  #clt-app .err-msg { background:rgb(var(--ia-danger-rgb) / .08); border:1px solid var(--danger);
                      border-left:4px solid var(--danger); padding:12px 16px; border-radius:6px;
                      margin-bottom:14px; }
  #clt-app .warn-msg { background:rgb(var(--ia-accent2-rgb) / .08); border:1px solid var(--accent2);
                       border-left:4px solid var(--accent2); padding:12px 16px;
                       border-radius:6px; margin-bottom:14px; }

  #clt-app .grid-graficos { display:grid; grid-template-columns:1fr; gap:14px; margin-top:14px; }
  @media (min-width:1100px) {
    #clt-app .grid-graficos { grid-template-columns:1fr 1fr; }
    #clt-app .grafico-card.ancho { grid-column:span 2; }
  }
  #clt-app .grafico-card { background:var(--panel); border:1px solid var(--line);
                           border-radius:8px; padding:14px; }
  #clt-app .grafico-card .tit { color:var(--accent); font-size:.95rem; font-weight:600;
                                margin-bottom:8px; display:flex; justify-content:space-between;
                                align-items:center; flex-wrap:wrap; gap:8px; }
  #clt-app .selector-tipo { display:flex; gap:4px; }
  #clt-app .tipo-btn { background:var(--panel2); border:1px solid var(--line);
                       color:var(--muted); padding:4px 10px; border-radius:4px;
                       cursor:pointer; font-size:.72rem; }
  #clt-app .tipo-btn:hover { color:var(--accent); border-color:var(--accent); }
  #clt-app .tipo-btn.activo { background:var(--accent); color:var(--ia-accent-d);
                              border-color:var(--accent); font-weight:600; }
  #clt-app .grafico-canvas-wrap { position:relative; height:340px; background:var(--panel2);
                                  border-radius:6px; padding:10px; }
  #clt-app .acciones-grafico { margin-top:10px; display:flex; gap:6px; flex-wrap:wrap; }

  #clt-app table { width:100%; border-collapse:collapse; margin-top:8px; font-size:.85rem; }
  #clt-app th, #clt-app td { text-align:left; padding:7px 10px; border-bottom:1px solid var(--line); }
  #clt-app th { color:var(--accent); font-size:.72rem; text-transform:uppercase;
                background:var(--panel2); }
  #clt-app td.num { text-align:right; font-variant-numeric:tabular-nums; }
  #clt-app .barra-mini { background:var(--line); height:12px; border-radius:6px;
                         overflow:hidden; display:inline-block; vertical-align:middle; }
  #clt-app .barra-mini-rell { background:linear-gradient(90deg,var(--accent),#10b981); height:100%; }

  #clt-app .barra-acciones { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:18px; }
  #clt-app .btn { display:inline-block; background:var(--accent); color:var(--ia-accent-d);
                  padding:10px 18px; border-radius:6px; text-decoration:none;
                  font-weight:600; font-size:.88rem; border:none; cursor:pointer; }
  #clt-app .btn:hover { background:var(--ia-accent-h); }
  #clt-app .btn.sec { background:var(--panel2); color:var(--accent);
                      border:1px solid var(--accent); }
  #clt-app .btn:disabled { opacity:.5; cursor:not-allowed; }
  #clt-app .btn-exportar { background:var(--panel2); border:1px solid var(--line);
                           color:var(--muted); padding:5px 10px; border-radius:5px;
                           cursor:pointer; font-size:.74rem; }
  #clt-app .btn-exportar:hover { background:var(--accent); color:var(--ia-accent-d);
                                 border-color:var(--accent); }


/* ============================================================
   §19 — Componentes complementarios
   Wizard multi-step, list-group, formularios densos, badges
   ============================================================ */

/* ----- Wizard de pasos (modal de Órdenes de Trabajo) ----- */
.ia-modal .progress {
    background: var(--ia-panel2) !important;
    border-radius: 0;
    height: 26px;
    border-bottom: 1px solid var(--ia-line);
}
.ia-modal .progress .progress-bar,
.ia-modal #wizardProgress {
    background: linear-gradient(90deg, var(--ia-accent), var(--ia-success)) !important;
    color: var(--ia-accent-d) !important;
    font-weight: 700 !important;
    font-size: .82rem !important;
    text-shadow: none !important;
    transition: width .4s ease;
}

.ia-modal .step { padding: 6px 0; }
.ia-modal .step.d-none { display: none !important; }

/* ----- Formularios densos dentro de modales (Bootstrap form-control) ----- */
.ia-modal .modal-body label,
.ia-modal .form-group label {
    color: var(--ia-muted);
    font-size: .76rem;
    text-transform: uppercase;
    letter-spacing: .3px;
    margin-bottom: 4px;
    font-weight: 600;
}
.ia-modal .modal-body .form-control,
.ia-modal .modal-body .form-control-sm,
.ia-modal .modal-body input[type="text"],
.ia-modal .modal-body input[type="number"],
.ia-modal .modal-body input[type="date"],
.ia-modal .modal-body input[type="email"],
.ia-modal .modal-body select,
.ia-modal .modal-body textarea {
    background: var(--ia-panel2) !important;
    color: var(--ia-text) !important;
    border: 1px solid var(--ia-line) !important;
    border-radius: 5px !important;
    font-size: .87rem !important;
    transition: border-color .15s, box-shadow .15s;
}
.ia-modal .modal-body .form-control:focus,
.ia-modal .modal-body input:focus,
.ia-modal .modal-body select:focus,
.ia-modal .modal-body textarea:focus {
    background: var(--ia-panel2) !important;
    color: var(--ia-text) !important;
    border-color: var(--ia-accent) !important;
    box-shadow: 0 0 0 2px rgb(var(--ia-accent-rgb) / .18) !important;
    outline: none !important;
}
.ia-modal .modal-body select option {
    background: var(--ia-panel) !important;
    color: var(--ia-text) !important;
}
.ia-modal .modal-body .form-control.is-invalid,
.ia-modal .modal-body input.is-invalid,
.ia-modal .modal-body select.is-invalid {
    border-color: var(--ia-danger) !important;
    box-shadow: 0 0 0 2px rgb(var(--ia-danger-rgb) / .2) !important;
}
.ia-modal .modal-body input[type="date"]::-webkit-calendar-picker-indicator {
    filter: invert(.7) sepia(.5) hue-rotate(125deg) saturate(2);
    cursor: pointer;
}

/* ----- Botones de pie de modal (Bootstrap) ----- */
.ia-modal .modal-footer .btn { border-radius: 5px; font-size: .86rem; padding: 6px 14px; }
.ia-modal .modal-footer .btn-primary {
    background: var(--ia-accent) !important;
    color: var(--ia-accent-d) !important;
    border: none !important;
    font-weight: 600;
}
.ia-modal .modal-footer .btn-primary:hover { background: var(--ia-accent-h) !important; }
.ia-modal .modal-footer .btn-success {
    background: var(--ia-success) !important;
    color: #04261a !important;
    border: none !important;
    font-weight: 600;
}
.ia-modal .modal-footer .btn-success:hover { background: #6ee7b7 !important; }
.ia-modal .modal-footer .btn-warning {
    background: var(--ia-warn) !important;
    color: #4a3208 !important;
    border: none !important;
    font-weight: 600;
}

/* Botón pequeño dentro del modal (Corregir, Pendientes, etc.) */
.ia-modal .modal-body .btn-primary,
.ia-modal .modal-body .btn-success {
    background: var(--ia-accent);
    color: var(--ia-accent-d);
    border: none;
    border-radius: 5px;
    font-weight: 600;
    font-size: .82rem;
}
.ia-modal .modal-body .btn-primary:hover,
.ia-modal .modal-body .btn-success:hover {
    background: var(--ia-accent-h);
    color: var(--ia-accent-d);
}
.ia-modal .modal-body .btn-secondary {
    background: var(--ia-panel) !important;
    color: var(--ia-muted) !important;
    border: 1px solid var(--ia-line) !important;
}

/* ----- Alerts internos del wizard (alert-warning, alert-success, etc.) ----- */
.ia-modal .alert {
    border-radius: 5px;
    font-size: .85rem;
    padding: 10px 14px;
    border: 1px solid var(--ia-line);
}
.ia-modal .alert-warning {
    background: rgb(var(--ia-warn-rgb) / .1) !important;
    color: var(--ia-warn) !important;
    border-color: var(--ia-warn) !important;
    border-left: 4px solid var(--ia-warn);
}
.ia-modal .alert-success {
    background: rgb(var(--ia-success-rgb) / .1) !important;
    color: var(--ia-success) !important;
    border-color: var(--ia-success) !important;
    border-left: 4px solid var(--ia-success);
}
.ia-modal .alert-danger {
    background: rgb(var(--ia-danger-rgb) / .1) !important;
    color: var(--ia-danger) !important;
    border-color: var(--ia-danger) !important;
    border-left: 4px solid var(--ia-danger);
}

/* ----- Modal viewRow: list-group de detalles ----- */
.ia-modal .list-group { border-radius: 0; border: none; }
.ia-modal .list-group-item {
    background: var(--ia-panel) !important;
    border-color: var(--ia-line) !important;
    color: var(--ia-text) !important;
    padding: 9px 14px;
    font-size: .87rem;
}
.ia-modal .list-group-item b { color: var(--ia-accent); margin-right: 6px; }
.ia-modal .modal-footer.bg-light {
    background: var(--ia-panel2) !important;
    border-top: 1px solid var(--ia-line) !important;
}
.ia-modal .modal-content.border-primary { border-color: var(--ia-accent) !important; }

/* ----- Botones contador (Iniciados / Pendientes / Aprobados) ----- */
.ia-tema .btn-iniciados,
.ia-tema .btn-pendientes,
.ia-tema .btn-aprobados {
    border: none;
    color: #fff;
    border-radius: 14px;
    font-weight: 600;
    font-size: .78rem;
    padding: 5px 12px !important;
}
.ia-tema .btn-iniciados  { background: linear-gradient(90deg, var(--ia-info),    #2563eb); }
.ia-tema .btn-pendientes { background: linear-gradient(90deg, var(--ia-danger),  #dc2626); }
.ia-tema .btn-aprobados  { background: linear-gradient(90deg, var(--ia-success), #059669); color: #04261a; }
.ia-tema .btn-iniciados:hover,
.ia-tema .btn-pendientes:hover,
.ia-tema .btn-aprobados:hover { opacity: .9; transform: translateY(-1px); }

/* Badges pill Bootstrap dentro del módulo (Pendientes, Cierre, etc.) */
.ia-tema .badge.badge-pill,
.ia-tema .badge.badge-danger,
.ia-tema .badge.badge-success,
.ia-tema .badge.badge-warning,
.ia-tema .badge.badge-info,
.ia-tema .badge.badge-dark {
    font-size: .72rem;
    padding: 4px 10px;
    border-radius: 12px;
    font-weight: 600;
    margin: 0 2px;
    color: #fff;
}
.ia-tema .badge.badge-danger  { background: var(--ia-danger)  !important; }
.ia-tema .badge.badge-success { background: var(--ia-success) !important; color: #04261a !important; }
.ia-tema .badge.badge-warning { background: var(--ia-warn)    !important; color: #4a3208 !important; }
.ia-tema .badge.badge-info    { background: var(--ia-info)    !important; }
.ia-tema .badge.badge-dark    { background: var(--ia-chip)           !important; }

/* Card y card-header dentro de .ia-tema (legacy Bootstrap) */
.ia-tema .card { background: var(--ia-panel); border: 1px solid var(--ia-line); border-radius: var(--ia-radius); }
.ia-tema .card-header {
    background: var(--ia-panel2);
    color: var(--ia-accent);
    border-bottom: 1px solid var(--ia-line);
    font-weight: 600;
    padding: 12px 16px;
}
.ia-tema .card-header .btn-success {
    background: var(--ia-success) !important;
    color: #04261a !important;
    border: none !important;
}
.ia-tema .card-body { background: var(--ia-panel); padding: 14px; }

/* tfoot de DataTables (también lo tematizamos) */
.ia-tema table.dataTable tfoot th {
    color: var(--ia-accent);
    background: var(--ia-panel2);
    border-top: 1px solid var(--ia-line) !important;
    border-bottom: none !important;
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .3px;
}

/* Modales: ancho extra (modal-1000, modal-800) */
.ia-modal .modal-dialog.modal-1000 { max-width: 1000px; }
.ia-modal .modal-dialog.modal-800  { max-width: 800px;  }
@media (max-width: 1100px) {
    .ia-modal .modal-dialog.modal-1000 { max-width: 95%; margin: 1rem auto; }
}

/* Botón close (X) del modal — siempre visible sobre fondo oscuro */
.ia-modal .modal-header .close,
.ia-modal .modal-header .close span {
    color: var(--ia-text) !important;
    text-shadow: none !important;
    opacity: .7;
    font-size: 1.5rem;
    font-weight: 300;
}
.ia-modal .modal-header .close:hover { opacity: 1; color: var(--ia-danger) !important; }

/* reCAPTCHA dentro de modal — fondo neutro alrededor */
.ia-modal .g-recaptcha {
    display: inline-block;
    padding: 8px;
    background: var(--ia-panel2);
    border-radius: 6px;
}

/* Tooltips — íconos info dentro de labels */
.ia-tema .text-info { color: var(--ia-info) !important; }


/* ============================================================
   §20 — Respetar colores de fila personalizados en DataTables
   ----------------------------------------------------------------
   En módulos como Órdenes de Trabajo, las filas se pintan según
   su estado lógico (Pendiente, Aprobado, Atrasado, etc.) usando
   clases Bootstrap (table-danger/success/warning/dark/info) o
   atributos style inline en <tr>.

   Las celdas tienen fondo TRANSPARENTE (§12) y texto NEGRO, por
   lo que el color del <tr> se ve y el texto siempre contrasta.
   Aquí definimos versiones de las clases .table-xxx con colores
   suaves pero saturados, pensadas para verse bien con texto negro.
   ============================================================ */

.ia-tema table tr.table-danger,
.ia-tema table tr.table-danger > td,
.ia-tema table tr.table-danger > th {
    background-color: #fecaca !important;   /* rojo claro */
    color: #1a1a1a !important;
}
.ia-tema table tr.table-success,
.ia-tema table tr.table-success > td,
.ia-tema table tr.table-success > th {
    background-color: #bbf7d0 !important;   /* verde claro */
    color: #1a1a1a !important;
}
.ia-tema table tr.table-warning,
.ia-tema table tr.table-warning > td,
.ia-tema table tr.table-warning > th {
    background-color: #fde68a !important;   /* amarillo claro */
    color: #1a1a1a !important;
}
.ia-tema table tr.table-info,
.ia-tema table tr.table-info > td,
.ia-tema table tr.table-info > th {
    background-color: #bfdbfe !important;   /* azul claro */
    color: #1a1a1a !important;
}
.ia-tema table tr.table-dark,
.ia-tema table tr.table-dark > td,
.ia-tema table tr.table-dark > th {
    background-color: #9ca3af !important;   /* gris medio */
    color: #1a1a1a !important;
}
.ia-tema table tr.table-primary,
.ia-tema table tr.table-primary > td,
.ia-tema table tr.table-primary > th {
    background-color: #99f6e4 !important;   /* turquesa claro */
    color: #1a1a1a !important;
}
.ia-tema table tr.table-secondary,
.ia-tema table tr.table-secondary > td,
.ia-tema table tr.table-secondary > th {
    background-color: #e5e7eb !important;   /* gris claro */
    color: #1a1a1a !important;
}

/* Cuando JS o PHP pinta el <tr> con style="background-color:..."
   ese inline-style ya gana por especificidad — no necesitamos hacer
   nada. Las celdas internas son transparentes y el texto negro lee
   bien sobre la mayoría de fondos claros. */

/* Hover sobre filas coloreadas: solo realzamos con un borde lateral
   turquesa y un overlay oscuro muy sutil (para que el color de fila
   no se pierda). */
.ia-tema table.dataTable tbody tr.table-danger:hover,
.ia-tema table.dataTable tbody tr.table-success:hover,
.ia-tema table.dataTable tbody tr.table-warning:hover,
.ia-tema table.dataTable tbody tr.table-info:hover,
.ia-tema table.dataTable tbody tr.table-dark:hover,
.ia-tema table.dataTable tbody tr.table-primary:hover,
.ia-tema table.dataTable tbody tr.table-secondary:hover {
    box-shadow: inset 0 0 0 9999px rgba(0,0,0,.06),
                inset 3px 0 0 var(--ia-accent);
}


/* ============================================================
   §21 — Botones de exportar/imprimir (DataTables Buttons)
   ----------------------------------------------------------------
   Estilo unificado para los botones de la barra superior:
   - Botón Exportar (collection con CSV/Excel/PDF)
   - Botón Imprimir
   - Menú desplegable de la colección
   ============================================================ */

/* Contenedor de los botones */
.ia-tema .dt-buttons {
    display: inline-flex;
    gap: 8px;
    margin-bottom: 10px;
    flex-wrap: wrap;
}

/* Botón base (cubre .btn-success y todos los demás dentro de .dt-buttons) */
.ia-tema .dt-buttons .btn,
.ia-tema .dt-buttons .dt-button {
    background: linear-gradient(135deg, var(--ia-accent), var(--ia-accent-b)) !important;
    color: var(--ia-accent-d) !important;
    border: none !important;
    border-radius: 6px !important;
    padding: 7px 14px !important;
    font-size: .82rem !important;
    font-weight: 600 !important;
    box-shadow: 0 2px 6px rgb(var(--ia-accent-rgb) / .25);
    transition: transform .15s, box-shadow .15s, background .15s;
    display: inline-flex !important;
    align-items: center;
    gap: 6px;
    text-decoration: none;
    cursor: pointer;
    line-height: 1;
}
.ia-tema .dt-buttons .btn:hover,
.ia-tema .dt-buttons .dt-button:hover {
    background: linear-gradient(135deg, var(--ia-accent-h), var(--ia-accent)) !important;
    color: var(--ia-accent-d) !important;
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgb(var(--ia-accent-rgb) / .4);
}
.ia-tema .dt-buttons .btn:active,
.ia-tema .dt-buttons .dt-button:active { transform: translateY(0); }
.ia-tema .dt-buttons .btn i,
.ia-tema .dt-buttons .dt-button i { font-size: .9rem; }

/* Botón Imprimir — variante azul info, para distinguirlo */
.ia-tema .dt-buttons .buttons-print {
    background: linear-gradient(135deg, var(--ia-info), #2563eb) !important;
    color: #fff !important;
    box-shadow: 0 2px 6px rgb(var(--ia-info-rgb) / .3);
}
.ia-tema .dt-buttons .buttons-print:hover {
    background: linear-gradient(135deg, #93c5fd, var(--ia-info)) !important;
    color: #fff !important;
    box-shadow: 0 4px 12px rgb(var(--ia-info-rgb) / .45);
}
.ia-tema .dt-buttons .buttons-print i { color: #fff !important; }

/* Botón de colección "Exportar" cuando está abierto */
.ia-tema .dt-buttons .buttons-collection.dt-button-active {
    background: linear-gradient(135deg, var(--ia-accent-b), #0f766e) !important;
}

/* Menú desplegable de la colección (CSV / Excel / PDF) */
div.dt-button-collection,
.ia-tema div.dt-button-collection {
    background: var(--ia-panel) !important;
    border: 1px solid var(--ia-line) !important;
    border-radius: 8px !important;
    box-shadow: 0 10px 30px rgba(0,0,0,.55) !important;
    padding: 6px !important;
    z-index: 2050 !important;
}
div.dt-button-collection .dt-button,
.ia-tema div.dt-button-collection .dt-button {
    background: transparent !important;
    color: var(--ia-text) !important;
    border: none !important;
    border-radius: 4px !important;
    padding: 8px 14px !important;
    font-size: .85rem !important;
    font-weight: 500 !important;
    text-align: left !important;
    width: 100% !important;
    display: flex !important;
    align-items: center;
    gap: 8px;
    box-shadow: none !important;
    margin: 1px 0 !important;
    transform: none !important;
    transition: background .12s, color .12s;
}
div.dt-button-collection .dt-button:hover,
.ia-tema div.dt-button-collection .dt-button:hover {
    background: var(--ia-panel2) !important;
    color: var(--ia-accent) !important;
    transform: none !important;
    box-shadow: none !important;
}

/* Iconos coloreados por tipo de exportación */
div.dt-button-collection .dt-button.buttons-csv::before     { content: "📄"; }
div.dt-button-collection .dt-button.buttons-excel::before   { content: "📊"; }
div.dt-button-collection .dt-button.buttons-pdf::before     { content: "📕"; }
div.dt-button-collection .dt-button.buttons-copy::before    { content: "📋"; }
div.dt-button-collection .dt-button::before {
    font-size: 1rem;
    margin-right: 4px;
}

/* Backdrop de la colección — más oscuro */
.dt-button-background {
    background: rgba(0,0,0,.4) !important;
}

/* Botón "Imprimir" overlay (cuando DataTables abre vista de impresión) */
body.dt-print-view {
    background: #fff !important;
    color: #000 !important;
}
body.dt-print-view table,
body.dt-print-view td,
body.dt-print-view th { color: #000 !important; background: #fff !important; }


/* ============================================================
   §22 — Menú de acciones en celda (3 puntos + dropdown)
   ----------------------------------------------------------------
   La última columna del DataTable de Órdenes contiene dos botones:
     1) Un botón de 3 puntos verticales que despliega un menú con
        opciones: Ver detalles, Editar, Equipos, Insumos, Imágenes,
        Imprimir, Eliminar.
     2) Un botón de carta (email) que indica si la orden ya fue
        notificada o no.

   Estas reglas estilizan ambos botones y el dropdown menu para que
   se vean elegantes sobre el fondo claro de las filas y mantienen
   las clases originales del HTML (no hay que tocar el PHP).
   ============================================================ */

/* === Botón base: 3 puntos verticales y botón de email ===
   DEFAULT (fondo oscuro): icono claro, hover turquesa.
   Sobre tabla .dt-light-bg se ajusta a colores más oscuros más abajo. */
.ia-tema .btn-datatable,
.ia-tema .btn-transparent-dark {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    padding: 0 !important;
    border: 1px solid transparent;
    border-radius: 6px;
    background: transparent !important;
    color: var(--ia-text) !important;
    cursor: pointer;
    transition: background .15s, color .15s, border-color .15s, transform .12s;
    vertical-align: middle;
    line-height: 1;
}
.ia-tema .btn-datatable:hover,
.ia-tema .btn-transparent-dark:hover {
    background: rgb(var(--ia-accent-rgb) / .18) !important;
    color: var(--ia-accent) !important;
    border-color: var(--ia-accent);
    transform: translateY(-1px);
}
.ia-tema .btn-datatable:focus,
.ia-tema .btn-transparent-dark:focus {
    outline: none;
    box-shadow: 0 0 0 3px rgb(var(--ia-accent-rgb) / .25);
}
.ia-tema .btn-datatable svg,
.ia-tema .btn-transparent-dark svg {
    width: 18px;
    height: 18px;
    stroke-width: 2;
    display: block;
}

/* Sobre tabla con fondo claro, usar tonos más oscuros para contraste */
.ia-tema table.dataTable.dt-light-bg .btn-datatable,
.ia-tema table.dataTable.dt-light-bg .btn-transparent-dark {
    color: var(--ia-chip) !important;
}
.ia-tema table.dataTable.dt-light-bg .btn-datatable:hover,
.ia-tema table.dataTable.dt-light-bg .btn-transparent-dark:hover {
    color: #064e3b !important;
}

/* Botón de email cuando ya hubo envíos (icono con número al lado).
   El PHP genera <button class="email">[svg]N</button> donde N es la
   cantidad de envíos. Tenemos que dejar que el botón crezca para
   mostrar el número junto al icono. */
.ia-tema .btn-transparent-dark.email {
    width: auto !important;
    min-width: 36px;
    height: 32px;
    padding: 0 8px !important;
    gap: 5px;
    font-size: .82rem;
    font-weight: 700;
    color: var(--ia-info) !important;
    /* Asegura que el número (text node suelto) se vea bien al lado del SVG */
    line-height: 1;
    letter-spacing: .2px;
}
.ia-tema .btn-transparent-dark.email svg {
    flex-shrink: 0;
    width: 18px;
    height: 18px;
}
.ia-tema .btn-transparent-dark.email:hover {
    background: rgb(var(--ia-info-rgb) / .18) !important;
    color: #1e40af !important;
    border-color: var(--ia-info);
}
/* Badge contador inscrito en el icono (cuando hay envíos) — más visible */
.ia-tema .btn-transparent-dark.email:not(:empty) {
    background: rgb(var(--ia-info-rgb) / .10) !important;
    border-color: rgb(var(--ia-info-rgb) / .3);
}

/* === Dropdown menu que despliega el botón de 3 puntos === */
.ia-tema .dropdown-menu {
    background: var(--ia-panel) !important;
    border: 1px solid var(--ia-line) !important;
    border-radius: 8px !important;
    box-shadow: 0 12px 32px rgba(0,0,0,.55) !important;
    padding: 6px !important;
    min-width: 210px;
    font-size: .85rem;
    z-index: 1060;
}

/* Items del menú */
.ia-tema .dropdown-menu .dropdown-item {
    display: flex !important;
    align-items: center;
    gap: 10px;
    padding: 8px 12px !important;
    color: var(--ia-text) !important;
    background: transparent !important;
    border-radius: 5px;
    text-decoration: none !important;
    font-size: .85rem;
    font-weight: 500;
    margin: 1px 0;
    transition: background .12s, color .12s, padding .12s;
    white-space: nowrap;
    line-height: 1.3;
}
.ia-tema .dropdown-menu .dropdown-item:hover,
.ia-tema .dropdown-menu .dropdown-item:focus {
    background: var(--ia-panel2) !important;
    color: var(--ia-accent) !important;
    padding-left: 14px !important;
}
.ia-tema .dropdown-menu .dropdown-item:active {
    background: rgb(var(--ia-accent-rgb) / .18) !important;
    color: var(--ia-accent) !important;
}

/* Iconos SVG dentro de cada item — tamaño fijo y color heredado */
.ia-tema .dropdown-menu .dropdown-item svg,
.ia-tema .dropdown-menu .dropdown-item .feather {
    width: 16px !important;
    height: 16px !important;
    stroke-width: 2;
    color: var(--ia-muted);
    flex-shrink: 0;
    transition: color .12s, transform .12s;
}
.ia-tema .dropdown-menu .dropdown-item:hover svg,
.ia-tema .dropdown-menu .dropdown-item:hover .feather {
    color: var(--ia-accent);
    transform: scale(1.1);
}

/* Items con colores semánticos según su propósito */
.ia-tema .dropdown-menu .dropdown-item.view svg,
.ia-tema .dropdown-menu .dropdown-item.view1 svg,
.ia-tema .dropdown-menu .dropdown-item.view2 svg,
.ia-tema .dropdown-menu .dropdown-item.view3 svg,
.ia-tema .dropdown-menu .dropdown-item.view4 svg { color: var(--ia-info); }
.ia-tema .dropdown-menu .dropdown-item.update svg  { color: var(--ia-warn); }
.ia-tema .dropdown-menu .dropdown-item.btnBorrar   { color: var(--ia-danger) !important; }
.ia-tema .dropdown-menu .dropdown-item.btnBorrar svg { color: var(--ia-danger); }
.ia-tema .dropdown-menu .dropdown-item.btnBorrar:hover {
    background: rgb(var(--ia-danger-rgb) / .12) !important;
    color: #fca5a5 !important;
}
.ia-tema .dropdown-menu .dropdown-item.btnBorrar:hover svg { color: #fca5a5; }

/* Separador opcional antes de Eliminar (decora visualmente) */
.ia-tema .dropdown-menu .dropdown-item.btnBorrar {
    margin-top: 4px;
    border-top: 1px solid var(--ia-line);
    padding-top: 10px !important;
}

/* Flecha del dropdown (si Bootstrap la pinta) — la ocultamos para
   un look más limpio */
.ia-tema .btn-datatable::after { display: none !important; }

/* Cuando el dropdown está abierto, el botón se queda turquesa */
.ia-tema .btn-datatable[aria-expanded="true"],
.ia-tema .btn-datatable.show {
    background: var(--ia-accent) !important;
    color: var(--ia-accent-d) !important;
    border-color: var(--ia-accent) !important;
}

/* === Cuando hay varios botones en la celda (3 puntos + email),
   alinearlos limpiamente === */
.ia-tema table.dataTable tbody td:last-child {
    white-space: nowrap;
    text-align: center;
}
.ia-tema table.dataTable tbody td .btn-datatable,
.ia-tema table.dataTable tbody td .btn-transparent-dark {
    margin-right: 2px;
}
.ia-tema table.dataTable tbody td .btn-datatable + .dropdown-menu {
    /* el menú no afecta al layout de la celda */
    position: absolute;
}


/* ============================================================
   FIN — tema-ia.css
   ============================================================ */


/* ============================================================
   Afinamiento gráficos dashboard (#dash-app)
   Movido desde el <style> embebido de home/index.php.
   Sobrescribe la altura base (360px) por 320/380px afinada.
   ============================================================ */
#dash-app .grafico-canvas-wrap {
    position: relative;
    height: 320px;
    width: 100%;
    padding: 6px 2px;
}
#dash-app .grafico-card.ancho .grafico-canvas-wrap {
    height: 380px;
}
#dash-app .grafico-card {
    transition: border-color .2s, box-shadow .2s;
}
#dash-app .grafico-card:hover {
    box-shadow: 0 4px 18px rgba(0,0,0,0.25);
}
@media (max-width: 700px) {
    #dash-app .grafico-canvas-wrap,
    #dash-app .grafico-card.ancho .grafico-canvas-wrap { height: 280px; }
}


/* ============================================================
   Módulo IA Acantilada (#ia-app) + panel historial
   Movido desde el <style> embebido de ia_acantilada/index.php.
   Es la versión vigente (con botón historial y scroll infinito).
   ============================================================ */
  #ia-app {
    --bg:var(--ia-bg); --panel:var(--ia-panel); --panel2:var(--ia-panel2); --line:var(--ia-line);
    --text:var(--ia-text); --muted:var(--ia-muted); --accent:var(--ia-accent); --accent2:var(--ia-accent2);
    --danger:var(--ia-danger);
  }
  #ia-app * { box-sizing: border-box; }
  #ia-app {
    font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
    background: var(--bg); color: var(--text);
    padding: 24px; border-radius: 8px; margin: 14px 0;
  }
  #ia-app h1 { font-size: 1.3rem; margin-bottom: 4px; color: var(--text); }
  #ia-app .sub { color: var(--muted); font-size: .9rem; margin-bottom: 18px; }

  #ia-app .barra { display: flex; gap: 8px; margin-bottom: 22px; }
  #ia-app #pregunta {
    flex: 1; padding: 12px 14px; background: var(--panel);
    border: 1px solid var(--line); border-radius: 8px;
    color: var(--text); font-size: .95rem;
  }
  #ia-app #pregunta:focus { outline: none; border-color: var(--accent); }
  #ia-app button.principal {
    padding: 9px 16px; background: var(--accent); color: var(--ia-accent-d);
    border: none; border-radius: 8px; font-weight: 600; cursor: pointer;
    white-space: nowrap; font-size: .85rem;
  }
  #ia-app button.principal:hover { background: var(--ia-accent-h); }
  #ia-app button:disabled { opacity: .5; cursor: not-allowed; }

  #ia-app .resp {
    background: var(--panel); border: 1px solid var(--line);
    border-radius: 10px; padding: 18px; margin-bottom: 14px;
  }
  #ia-app .resp .q {
    color: var(--accent); font-size: .82rem; margin-bottom: 10px;
    text-transform: uppercase; letter-spacing: .5px;
  }
  #ia-app .resp .txt { line-height: 1.55; margin-bottom: 8px; }

  /* SUB-BLOQUES (respuestas multi) */
  #ia-app .sub-bloque.solo { margin-top: 0; }
  #ia-app .sub-bloque {
    margin-top: 22px; padding-top: 16px;
    border-top: 1px dashed var(--line);
  }
  #ia-app .sub-bloque:first-of-type { margin-top: 0; padding-top: 0; border-top: none; }
  #ia-app .sub-titulo {
    color: var(--accent2); font-size: .92rem; font-weight: 600;
    margin-bottom: 8px; display: flex; align-items: center; gap: 6px;
  }
  #ia-app .sub-titulo::before {
    content: ''; display: inline-block; width: 14px; height: 14px;
    background: var(--accent2); border-radius: 3px; opacity: .6;
  }

  /* BLOQUE ASESOR: análisis y sugerencias al final */
  #ia-app .asesor {
    margin-top: 22px; padding: 14px 16px;
    background: rgb(var(--ia-accent2-rgb) / .06);
    border: 1px solid rgb(var(--ia-accent2-rgb) / .25);
    border-left: 3px solid var(--accent2);
    border-radius: 6px;
    display: flex; gap: 12px; align-items: flex-start;
  }
  #ia-app .asesor-icono {
    font-size: 1.2rem; line-height: 1.3;
    flex-shrink: 0;
  }
  #ia-app .asesor-texto {
    color: var(--text); font-size: .88rem; line-height: 1.55;
    flex: 1;
  }

  /* ==========================================================
     DataTables CUSTOM DARK
     ========================================================== */
  #ia-app .dataTables_wrapper {
    color: var(--text); font-size: .82rem;
    padding: 12px 0;
  }
  #ia-app .dataTables_wrapper .dataTables_length,
  #ia-app .dataTables_wrapper .dataTables_filter,
  #ia-app .dataTables_wrapper .dataTables_info,
  #ia-app .dataTables_wrapper .dataTables_paginate {
    color: var(--muted);
  }
  #ia-app .dataTables_wrapper .dataTables_length select,
  #ia-app .dataTables_wrapper .dataTables_filter input {
    background: var(--panel2); color: var(--text);
    border: 1px solid var(--line); border-radius: 4px;
    padding: 4px 8px; font-family: inherit; font-size: .82rem;
  }
  #ia-app .dataTables_wrapper .dataTables_filter input:focus,
  #ia-app .dataTables_wrapper .dataTables_length select:focus {
    outline: none; border-color: var(--accent);
  }
  #ia-app .dataTables_wrapper .dataTables_filter input {
    width: 220px;
  }
  #ia-app .dataTables_wrapper .dataTables_paginate .paginate_button {
    color: var(--text) !important;
    background: var(--panel2) !important;
    border: 1px solid var(--line) !important;
    border-radius: 4px !important;
    padding: 4px 11px !important;
    margin: 0 2px !important;
    cursor: pointer;
  }
  #ia-app .dataTables_wrapper .dataTables_paginate .paginate_button:hover {
    background: var(--accent) !important;
    color: var(--ia-accent-d) !important;
    border-color: var(--accent) !important;
  }
  #ia-app .dataTables_wrapper .dataTables_paginate .paginate_button.current,
  #ia-app .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
    background: var(--accent) !important;
    color: var(--ia-accent-d) !important;
    border-color: var(--accent) !important;
    font-weight: 600;
  }
  #ia-app .dataTables_wrapper .dataTables_paginate .paginate_button.disabled,
  #ia-app .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover {
    background: var(--panel) !important;
    color: var(--muted) !important;
    opacity: 0.4;
    cursor: not-allowed;
  }
  /* Indicadores de sort en cabeceras */
  #ia-app table.dataTable thead th {
    background: var(--panel2);
    color: var(--accent);
    border-bottom: 1px solid var(--line);
    cursor: pointer;
    position: relative;
  }
  #ia-app table.dataTable thead th.sorting:after,
  #ia-app table.dataTable thead th.sorting_asc:after,
  #ia-app table.dataTable thead th.sorting_desc:after {
    opacity: 0.6;
  }
  #ia-app table.dataTable tbody tr.odd {
    background: rgb(var(--ia-accent-rgb) / .02);
  }
  #ia-app table.dataTable.row-border > tbody > tr > td,
  #ia-app table.dataTable.display > tbody > tr > td {
    border-top: 1px solid var(--line);
  }
  #ia-app table.dataTable tbody tr:hover {
    background: rgb(var(--ia-accent-rgb) / .08) !important;
  }

  /* ==========================================================
     INFORME TECNICO
     ========================================================== */
  #ia-app .informe-wrap {
    margin-top: 12px; padding: 18px 20px;
    background: var(--panel2); border-radius: 8px;
    border: 1px solid var(--line);
  }
  #ia-app .informe-head {
    border-bottom: 2px solid var(--accent);
    padding-bottom: 12px; margin-bottom: 16px;
  }
  #ia-app .informe-titulo {
    color: var(--accent); font-size: 1.1rem; font-weight: 600;
  }
  #ia-app .informe-sub {
    color: var(--muted); font-size: .85rem; margin-top: 4px;
  }
  #ia-app .informe-meta {
    color: var(--accent2); font-size: .76rem; font-style: italic;
    margin-top: 4px;
  }
  #ia-app .informe-seccion {
    margin-bottom: 18px;
  }
  #ia-app .informe-seccion h3 {
    color: var(--accent); font-size: .95rem; margin: 0 0 8px 0;
    padding-bottom: 4px; border-bottom: 1px solid var(--line);
  }
  #ia-app .informe-seccion p {
    color: var(--text); font-size: .88rem; line-height: 1.65;
    text-align: justify; margin: 0; white-space: pre-line;
  }
  #ia-app .informe-acciones {
    margin-top: 22px; padding-top: 16px;
    border-top: 1px solid var(--line);
    display: flex; gap: 10px; align-items: center; flex-wrap: wrap;
  }
  #ia-app .btn-descargar, #ia-app .btn-regenerar {
    background: var(--accent); color: var(--ia-accent-d); border: none;
    padding: 8px 16px; border-radius: 5px; cursor: pointer;
    font-weight: 600; font-size: .85rem; font-family: inherit;
  }
  #ia-app .btn-descargar:hover, #ia-app .btn-regenerar:hover {
    background: var(--ia-accent-h);
  }
  #ia-app .btn-regenerar {
    background: var(--panel); color: var(--accent);
    border: 1px solid var(--accent);
  }
  #ia-app .btn-regenerar:hover {
    background: var(--accent); color: var(--ia-accent-d);
  }
  #ia-app .btn-regenerar:disabled {
    opacity: .5; cursor: not-allowed;
  }
  #ia-app .dropdown-export { position: relative; display: inline-block; }
  #ia-app .dropdown-menu {
    display: none; position: absolute; top: 100%; left: 0;
    background: var(--panel); border: 1px solid var(--line);
    border-radius: 6px; min-width: 180px; z-index: 100;
    margin-top: 4px; box-shadow: 0 4px 12px rgba(0,0,0,0.3);
  }
  #ia-app .dropdown-export:hover .dropdown-menu,
  #ia-app .dropdown-export:focus-within .dropdown-menu {
    display: block;
  }
  #ia-app .dropdown-menu a {
    display: block; padding: 9px 14px; color: var(--text);
    text-decoration: none; font-size: .85rem;
    border-bottom: 1px solid var(--line);
  }
  #ia-app .dropdown-menu a:last-child { border-bottom: none; }
  #ia-app .dropdown-menu a:hover {
    background: var(--panel2); color: var(--accent);
  }

  /* ==========================================================
     SELECTOR DE TIPO DE GRAFICO
     ========================================================== */
  #ia-app .grafico-controles {
    display: flex; gap: 4px; margin-bottom: 10px;
    flex-wrap: wrap; align-items: center;
  }
  #ia-app .grafico-controles .etiqueta {
    color: var(--muted); font-size: .72rem;
    text-transform: uppercase; letter-spacing: .3px;
    margin-right: 6px;
  }
  #ia-app .tipo-btn {
    background: var(--panel2); border: 1px solid var(--line);
    color: var(--muted); padding: 4px 10px; border-radius: 4px;
    cursor: pointer; font-size: .72rem; font-family: inherit;
  }
  #ia-app .tipo-btn:hover {
    color: var(--accent); border-color: var(--accent);
  }
  #ia-app .tipo-btn.activo {
    background: var(--accent); color: var(--ia-accent-d);
    border-color: var(--accent); font-weight: 600;
  }

  #ia-app .acciones { display: flex; gap: 8px; margin-top: 14px; flex-wrap: wrap; }
  #ia-app .btn-exportar {
    background: var(--panel2); border: 1px solid var(--line);
    color: var(--muted); padding: 6px 12px; border-radius: 5px;
    cursor: pointer; font-size: .8rem; transition: all .15s;
    font-weight: 500;
  }
  #ia-app .btn-exportar:hover {
    background: var(--accent); color: var(--ia-accent-d); border-color: var(--accent);
  }
  #ia-app .btn-exportar svg { width: 14px; height: 14px; vertical-align: -2px; margin-right: 4px; }

  #ia-app .tabla-wrap {
    margin-top: 14px; overflow-x: auto;
    border: 1px solid var(--line); border-radius: 6px;
  }
  #ia-app table.ia-tabla { width: 100%; border-collapse: collapse; font-size: .8rem; min-width: 100%; }
  #ia-app table.ia-tabla th, #ia-app table.ia-tabla td {
    text-align: left; padding: 8px 11px;
    border-bottom: 1px solid var(--line);
    white-space: nowrap; max-width: 220px;
    overflow: hidden; text-overflow: ellipsis;
  }
  #ia-app table.ia-tabla th {
    color: var(--accent); font-weight: 600; background: var(--panel2);
    position: sticky; top: 0;
    font-size: .72rem; text-transform: uppercase; letter-spacing: .3px;
  }
  #ia-app table.ia-tabla tr:hover td { background: rgb(var(--ia-accent-rgb) / .04); }
  #ia-app table.ia-tabla td.num { text-align: right; font-variant-numeric: tabular-nums; }
  #ia-app .fila-orden { cursor: pointer; }
  #ia-app .fila-orden:hover td { background: rgb(var(--ia-accent-rgb) / .10); }
  #ia-app .tabla-wrap td:hover {
    white-space: normal; word-break: break-word;
    background: var(--panel2) !important;
    position: relative; z-index: 1;
  }

  #ia-app .paginacion {
    display: flex; align-items: center; justify-content: center;
    gap: 6px; margin-top: 14px; flex-wrap: wrap; font-size: .82rem;
  }
  #ia-app .pag-btn {
    background: var(--panel2); border: 1px solid var(--line);
    color: var(--text); padding: 6px 11px; border-radius: 5px;
    cursor: pointer; font-size: .82rem; min-width: 36px;
  }
  #ia-app .pag-btn:hover:not(:disabled) { border-color: var(--accent); color: var(--accent); }
  #ia-app .pag-btn:disabled { opacity: .4; cursor: not-allowed; }
  #ia-app .pag-btn.activa {
    background: var(--accent); color: var(--ia-accent-d); border-color: var(--accent);
    font-weight: 600;
  }
  #ia-app .pag-info { color: var(--muted); margin: 0 8px; }

  #ia-app .tarjetas { display: grid; gap: 10px; margin-top: 14px;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
  #ia-app .tarjeta {
    background: var(--panel2); border: 1px solid var(--line);
    border-radius: 8px; padding: 12px 14px; font-size: .85rem;
    cursor: pointer; transition: border-color .15s, transform .1s;
  }
  #ia-app .tarjeta:hover { border-color: var(--accent); transform: translateY(-1px); }
  #ia-app .tarjeta .codigo { color: var(--accent); font-weight: 600; margin-bottom: 6px;
                             font-size: .92rem; }
  #ia-app .tarjeta .campo { display: flex; gap: 6px; margin-top: 3px; }
  #ia-app .tarjeta .campo b { color: var(--muted); font-weight: 500; min-width: 70px; }
  #ia-app .tarjeta .campo span { color: var(--text); }
  #ia-app .ver-mas { margin-top: 8px; font-size: .72rem;
                     color: var(--accent); text-align: right; opacity: .8; }

  #ia-app .grafico-wrap {
    margin-top: 14px; padding: 12px; background: var(--panel2);
    border: 1px solid var(--line); border-radius: 8px;
  }
  #ia-app canvas { max-height: 360px; }

  #ia-app .controles { margin-top: 10px; display: flex; gap: 6px; font-size: .78rem; }
  #ia-app .ctrl-btn {
    background: var(--panel2); border: 1px solid var(--line);
    color: var(--muted); padding: 4px 10px; border-radius: 4px;
    cursor: pointer; font-size: .78rem;
  }
  #ia-app .ctrl-btn.activo { color: var(--accent); border-color: var(--accent); }
  #ia-app .meta { color: var(--muted); font-size: .78rem; margin-top: 8px; }

  #ia-app .aviso {
    margin-top: 8px; padding: 14px 16px;
    background: rgb(var(--ia-accent2-rgb) / .08);
    border: 1px solid var(--accent2); border-left: 4px solid var(--accent2);
    border-radius: 6px;
  }
  #ia-app .aviso .titulo { color: var(--accent2); font-weight: 600; margin-bottom: 4px;
                           font-size: .9rem; }
  #ia-app .aviso .detalle { color: var(--text); font-size: .87rem; line-height: 1.5; }
  #ia-app .error-rojo {
    margin-top: 8px; padding: 14px 16px;
    background: rgb(var(--ia-danger-rgb) / .08);
    border: 1px solid var(--danger); border-left: 4px solid var(--danger);
    border-radius: 6px;
  }
  #ia-app .error-rojo .titulo { color: var(--danger); font-weight: 600;
                                margin-bottom: 4px; font-size: .9rem; }
  #ia-app .error-rojo .detalle { color: var(--text); font-size: .87rem; line-height: 1.5; }
  #ia-app .cargando { color: var(--muted); font-style: italic; }

  /* Bootstrap modal: textos largos con scroll y wrap */
  #viewRow .list-group-item { word-break: break-word; white-space: pre-wrap; }

  /* ==========================================================
     PANEL LATERAL DE HISTORIAL
     ========================================================== */
  #ia-app .btn-historial {
    background: var(--panel2); color: var(--accent);
    border: 1px solid var(--accent); padding: 9px 14px;
    border-radius: 8px; cursor: pointer; font-weight: 600;
    font-size: .85rem; font-family: inherit; white-space: nowrap;
  }
  #ia-app .btn-historial:hover {
    background: var(--accent); color: var(--ia-accent-d);
  }
  /* Buscador dentro del panel */
  #historial-panel .hist-buscador {
    width: 100%; padding: 8px 12px; margin-bottom: 12px;
    background: var(--panel2); border: 1px solid var(--line);
    border-radius: 6px; color: var(--text); font-size: .85rem;
    font-family: inherit;
  }
  #historial-panel .hist-buscador:focus {
    outline: none; border-color: var(--accent);
  }
  #historial-panel .hist-fin-lote {
    text-align: center; padding: 12px; color: var(--muted);
    font-size: .78rem; font-style: italic;
  }
  #historial-panel .hist-fin-lote.final {
    color: var(--accent); border-top: 1px solid var(--line);
    margin-top: 6px;
  }

  /* Overlay oscuro detras del panel */
  #historial-overlay {
    display: none; position: fixed; top: 0; left: 0;
    width: 100vw; height: 100vh; background: rgba(0,0,0,0.5);
    z-index: 1040;
  }
  #historial-overlay.activo { display: block; }

  /* Panel deslizable lado derecho */
  #historial-panel {
    position: fixed; top: 0; right: -480px; width: 460px; height: 100vh;
    background: var(--panel); border-left: 1px solid var(--line);
    z-index: 1050; transition: right 0.3s ease;
    padding: 20px; overflow-y: auto;
    box-shadow: -4px 0 15px rgba(0,0,0,0.3);
  }
  #historial-panel.activo { right: 0; }

  #historial-panel .historial-head {
    display: flex; justify-content: space-between; align-items: center;
    border-bottom: 1px solid var(--line); padding-bottom: 12px;
    margin-bottom: 8px;
  }
  #historial-panel h3 {
    color: var(--accent); font-size: 1.1rem; margin: 0;
  }
  #historial-panel .historial-cerrar {
    background: transparent; border: none; color: var(--muted);
    font-size: 1.3rem; cursor: pointer; padding: 4px 10px;
    border-radius: 4px;
  }
  #historial-panel .historial-cerrar:hover {
    background: var(--panel2); color: var(--text);
  }
  #historial-panel .historial-sub {
    color: var(--muted); font-size: .82rem; margin-bottom: 14px;
  }

  #historial-panel .hist-item {
    padding: 10px 12px; background: var(--panel2);
    border: 1px solid var(--line); border-radius: 6px;
    margin-bottom: 8px; cursor: pointer; transition: all 0.15s;
  }
  #historial-panel .hist-item:hover {
    border-color: var(--accent); background: rgb(var(--ia-accent-rgb) / .06);
  }
  #historial-panel .hist-pregunta {
    color: var(--text); font-size: .87rem; line-height: 1.4;
    margin-bottom: 5px; word-break: break-word;
  }
  #historial-panel .hist-meta {
    display: flex; justify-content: space-between; align-items: center;
    color: var(--muted); font-size: .72rem;
  }
  #historial-panel .hist-tipo {
    background: var(--panel); color: var(--accent);
    padding: 1px 7px; border-radius: 8px; font-weight: 600;
    font-size: .68rem;
  }
  #historial-panel .hist-tipo.informe {
    background: rgb(var(--ia-accent2-rgb) / .15); color: var(--accent2);
  }
  #historial-panel .hist-vacio {
    color: var(--muted); text-align: center; padding: 30px 0;
    font-style: italic;
  }
  #historial-panel .hist-cargando {
    color: var(--muted); text-align: center; padding: 20px 0;
  }


/* ============================================================
   Módulo Manuales (#man-app / .man-modal)
   TODO prefijado para NO afectar otros módulos del sitio.
   ============================================================ */

/* Cards solo dentro de ia-tema */
.ia-tema .card {
    background: var(--panel);
    border: 1px solid var(--line);
    color: var(--text);
    box-shadow: var(--ia-shadow);
}
.ia-tema .card-header {
    background: var(--panel2);
    border-bottom: 1px solid var(--line);
    color: var(--accent);
    font-weight: 600;
    padding: 14px 18px;
}
.ia-tema .card-body { background: var(--panel); color: var(--text); }

/* Form controls dentro de ia-tema */
.ia-tema label { color: var(--text); font-weight: 500; font-size: .88rem; }
.ia-tema .form-control {
    background: var(--bg);
    border: 1px solid var(--line);
    color: var(--text);
    border-radius: 6px;
}
.ia-tema .form-control:focus {
    background: var(--bg);
    border-color: var(--accent);
    color: var(--text);
    box-shadow: 0 0 0 .15rem rgb(var(--ia-accent-rgb) / .18);
}
.ia-tema .form-control[readonly] {
    background: var(--panel2);
    color: var(--muted);
}
.ia-tema .form-control-file { color: var(--text); }
.ia-tema .form-text.text-muted { color: var(--muted); }
.ia-tema textarea.form-control { min-height: 140px; line-height: 1.5; }

/* ============================================================
   MODALES del módulo manuales
   Bootstrap saca el modal del DOM y lo pone en body, fuera de
   .ia-tema. Por eso usamos una clase identificadora propia.
   ============================================================ */
.modal.modal-manual .modal-content {
    background: var(--ia-panel);
    color: var(--ia-text);
    border: 1px solid var(--ia-line);
    border-radius: 10px;
}
.modal.modal-manual .modal-header {
    background: var(--ia-panel2);
    border-bottom: 1px solid var(--ia-line);
    border-radius: 10px 10px 0 0;
}
.modal.modal-manual .modal-title { color: var(--ia-accent); font-weight: 600; }
.modal.modal-manual .modal-header .close {
    color: var(--ia-muted);
    text-shadow: none;
    opacity: 1;
}
.modal.modal-manual .modal-header .close:hover { color: var(--ia-text); }
.modal.modal-manual .modal-body { background: var(--ia-panel); color: var(--ia-text); }
.modal.modal-manual .modal-body label { color: var(--ia-text); font-weight: 500; }
.modal.modal-manual .modal-body .form-control {
    background: var(--ia-bg);
    border: 1px solid var(--ia-line);
    color: var(--ia-text);
}
.modal.modal-manual .modal-body .form-control:focus {
    background: var(--ia-bg);
    border-color: var(--ia-accent);
    color: var(--ia-text);
    box-shadow: 0 0 0 .15rem rgb(var(--ia-accent-rgb) / .18);
}
.modal.modal-manual .modal-body textarea.form-control { min-height: 160px; }
.modal.modal-manual .modal-footer {
    background: var(--ia-panel2);
    border-top: 1px solid var(--ia-line);
    border-radius: 0 0 10px 10px;
}
.modal.modal-manual .modal-footer .btn-primary {
    background: var(--ia-accent);
    border-color: var(--ia-accent);
    color: var(--ia-accent-d);
    font-weight: 600;
}
.modal.modal-manual .modal-footer .btn-primary:hover {
    background: var(--ia-accent-h);
    border-color: var(--ia-accent-h);
}
.modal.modal-manual .modal-footer .btn-secondary {
    background: var(--ia-panel2);
    border-color: var(--ia-line);
    color: var(--ia-text);
}

/* ============================================================
   DataTables look profesional SOLO dentro de ia-tema
   ============================================================ */
.ia-tema .dataTables_wrapper { color: var(--text); }
.ia-tema .dataTables_wrapper .dataTables_length,
.ia-tema .dataTables_wrapper .dataTables_filter,
.ia-tema .dataTables_wrapper .dataTables_info,
.ia-tema .dataTables_wrapper .dataTables_processing {
    color: var(--muted); font-size: .85rem;
}
.ia-tema .dataTables_wrapper .dataTables_length select,
.ia-tema .dataTables_wrapper .dataTables_filter input {
    background: var(--bg);
    border: 1px solid var(--ia-line);
    color: var(--text);
    border-radius: 4px;
    padding: 4px 8px;
}

.ia-tema .dataTables_wrapper .dataTables_filter input:focus,
.ia-tema .dataTables_wrapper .dataTables_length select:focus {
    border-color: var(--accent); outline: none;
}

.ia-tema table.dataTable {
    background: var(--panel);
    color: var(--text);
    border-collapse: separate;
    border-spacing: 0;
}
.ia-tema table.dataTable thead th {
    background: var(--panel2);
    color: var(--accent);
    border-bottom: 2px solid var(--accent);
    font-weight: 600;
    font-size: .85rem;
    padding: 10px 12px;
}
.ia-tema table.dataTable tbody tr {
    background: var(--panel);
    color: var(--text);
}
.ia-tema table.dataTable tbody tr:hover {
    background: var(--panel2);
}
.ia-tema table.dataTable tbody td {
    border-top: 1px solid var(--line);
    padding: 10px 12px;
    color: var(--text);
    vertical-align: middle;
}
.ia-tema table.dataTable.table-striped tbody tr:nth-child(odd) {
    background: rgb(var(--ia-overlay-rgb) / 0.015);
}
.ia-tema table.dataTable tfoot th {
    background: var(--panel2);
    color: var(--muted);
    border-top: 2px solid var(--line);
}

/* Paginación dentro de ia-tema */
.ia-tema .dataTables_paginate .paginate_button {
    color: var(--text) !important;
    background: transparent !important;
    border: 1px solid var(--line) !important;
    border-radius: 4px;
    margin: 0 2px;
}
.ia-tema .dataTables_paginate .paginate_button:hover {
    background: var(--accent) !important;
    color: var(--ia-accent-d) !important;
    border-color: var(--accent) !important;
}
.ia-tema .dataTables_paginate .paginate_button.current,
.ia-tema .dataTables_paginate .paginate_button.current:hover {
    background: var(--accent) !important;
    color: var(--ia-accent-d) !important;
    border-color: var(--accent) !important;
}
.ia-tema .dataTables_paginate .paginate_button.disabled,
.ia-tema .dataTables_paginate .paginate_button.disabled:hover {
    color: var(--muted) !important;
    opacity: .5;
}

/* ============================================================
   SOLUCIÓN: Fondo oscuro para selectores y limpieza de buscador
   ============================================================ */

/* Forza el fondo oscuro y borde en el selector de mostrar registros */
.ia-tema .dataTables_wrapper .dataTables_length select {
    background-color: var(--bg, #000) !important;
    color: var(--text, #fff) !important;
    border: 1px solid var(--ia-line) !important;
}

/* Evita que las opciones internas (dropdown) salgan con fondo blanco */
.ia-tema .dataTables_wrapper .dataTables_length select option {
    background-color: var(--ia-panel2) !important;
    color: var(--ia-text) !important;
}

/* Oculta SOLO el texto "Buscar:" del label, sin afectar al input hijo.
   No usamos font-size:0 ni color:transparent porque eso afecta al input
   y al placeholder. Solo movemos el texto fuera de la vista. */
.ia-tema .dataTables_wrapper .dataTables_filter > label {
    color: transparent !important;
    font-size: 0 !important;
}
/* El input dentro del label SI debe tener su propio tamaño */
.ia-tema .dataTables_wrapper .dataTables_filter > label > input {
    font-size: .85rem !important;
}

/* Restaura el input de búsqueda con su borde, fondo y texto correctos */
.ia-tema .dataTables_wrapper .dataTables_filter input {
    background: var(--ia-panel) !important;
    color: var(--ia-text) !important;
    font-size: .85rem !important;
    display: inline-block !important;
    border: 1px solid var(--ia-line) !important;
    padding: 4px 8px !important;
    -webkit-text-fill-color: var(--ia-text) !important;
    caret-color: var(--ia-text) !important;
}
.ia-tema .dataTables_wrapper .dataTables_filter input:focus {
    background: var(--ia-panel) !important;
    color: var(--ia-text) !important;
    -webkit-text-fill-color: var(--ia-text) !important;
    border-color: var(--ia-accent) !important;
    outline: none !important;
}

/* Marcador interno "Buscar..." — placeholder cross-browser */
.ia-tema .dataTables_wrapper .dataTables_filter input::placeholder {
    color: var(--ia-text) !important;
    opacity: 0.85 !important;
    font-weight: 500 !important;
    font-size: .85rem !important;
}
.ia-tema .dataTables_wrapper .dataTables_filter input::-webkit-input-placeholder {
    color: var(--ia-text) !important;
    opacity: 0.85 !important;
    font-weight: 500 !important;
    font-size: .85rem !important;
}
.ia-tema .dataTables_wrapper .dataTables_filter input::-moz-placeholder {
    color: var(--ia-text) !important;
    opacity: 0.85 !important;
    font-weight: 500 !important;
    font-size: .85rem !important;
}
.ia-tema .dataTables_wrapper .dataTables_filter input:-ms-input-placeholder {
    color: var(--ia-text) !important;
    opacity: 0.85 !important;
    font-weight: 500 !important;
    font-size: .85rem !important;
}


/* Dropdown dentro de ia-tema */
.ia-tema .dropdown-menu {
    background: var(--panel2);
    border: 1px solid var(--line);
    box-shadow: var(--ia-shadow);
}
.ia-tema .dropdown-item {
    color: var(--text);
    padding: 8px 14px;
    font-size: .85rem;
}
.ia-tema .dropdown-item:hover,
.ia-tema .dropdown-item:focus {
    background: var(--panel);
    color: var(--accent);
}
.ia-tema .btn-datatable {
    background: transparent;
    color: var(--muted);
    border: none;
    padding: 4px 8px;
}
.ia-tema .btn-datatable:hover { color: var(--accent); }

/* Botones del módulo manuales */
.ia-tema .btn-success {
    background: var(--accent);
    border-color: var(--accent);
    color: var(--ia-accent-d);
    font-weight: 600;
}
.ia-tema .btn-success:hover {
    background: var(--ia-accent-h);
    border-color: var(--ia-accent-h);
    color: var(--ia-accent-d);
}
.ia-tema .btn-info {
    background: var(--info);
    border-color: var(--info);
    color: #0a1929;
    font-weight: 600;
}
.ia-tema .btn-info:hover {
    background: #93c5fd;
    border-color: #93c5fd;
}

/* DataTables Buttons (exportar) dentro de ia-tema */
.ia-tema .dt-buttons .btn { font-size: .8rem; padding: 4px 10px; }
.ia-tema .dt-button-collection {
    background: var(--panel2);
    border: 1px solid var(--line);
}
.ia-tema .dt-button-collection .dt-button {
    color: var(--text);
    background: transparent;
}
.ia-tema .dt-button-collection .dt-button:hover {
    background: var(--panel);
    color: var(--accent);
}

/* Contenedor principal de las pestañas */
.ia-tema .nav-tabs {
    border: 1px solid var(--ia-line);
    background-color: var(--ia-panel2); /* Fondo ligeramente más claro que el negro puro */
    padding: 4px;
    border-radius: 8px;
    margin-bottom: 15px;
    display: flex;
}

/* Estilo para cada pestaña (en reposo) */
.ia-tema .nav-tabs .nav-link {
    background: transparent;
    border: 1px solid transparent; /* Espacio reservado para el borde */
    color: var(--ia-muted);
    padding: 8px 16px;
    font-weight: 600;
    font-size: .88rem;
    border-radius: 6px;
    margin-right: 4px;
    transition: all 0.2s ease;
}

/* Al pasar el cursor por encima */
.ia-tema .nav-tabs .nav-link:hover { 
    color: var(--ia-text);
    background-color: rgb(var(--ia-overlay-rgb) / .06);
}

/* Pestaña Activa (Seleccionada) */
.ia-tema .nav-tabs .nav-link.active {
    color: var(--ia-accent);
    background-color: var(--ia-panel);
    border: 1px solid var(--ia-line);
}

/* Iconos */
.ia-tema .nav-tabs .nav-link i { 
    margin-right: 6px; 
}


/* Container del módulo */
.ia-tema .container_B { padding: 8px; }
.ia-tema h5 { color: var(--accent); margin-bottom: 8px; }
.ia-tema hr { border-color: var(--line); }
.ia-tema small { color: var(--muted); }

/* ============================================================
   Alertas Bootstrap (alert-danger, alert-success, alert-warning)
   dentro de .ia-tema (fuera de modales)
   ============================================================ */
.ia-tema .alert {
    border-radius: 6px;
    padding: 12px 16px;
    margin-bottom: 14px;
    font-size: .88rem;
    border: 1px solid var(--ia-line);
}
.ia-tema .alert-danger {
    background: rgb(var(--ia-danger-rgb) / .10) !important;
    color: var(--ia-danger) !important;
    border-color: var(--ia-danger) !important;
    border-left: 4px solid var(--ia-danger) !important;
}
.ia-tema .alert-danger strong { color: var(--ia-danger); }
.ia-tema .alert-success {
    background: rgb(var(--ia-success-rgb) / .10) !important;
    color: var(--ia-success) !important;
    border-color: var(--ia-success) !important;
    border-left: 4px solid var(--ia-success) !important;
}
.ia-tema .alert-success strong { color: var(--ia-success); }
.ia-tema .alert-warning {
    background: rgb(var(--ia-warn-rgb) / .10) !important;
    color: var(--ia-warn) !important;
    border-color: var(--ia-warn) !important;
    border-left: 4px solid var(--ia-warn) !important;
}
.ia-tema .alert-info {
    background: rgb(var(--ia-info-rgb) / .10) !important;
    color: var(--ia-info) !important;
    border-color: var(--ia-info) !important;
    border-left: 4px solid var(--ia-info) !important;
}

/* reCAPTCHA dentro del .ia-tema - fondo neutro alrededor */
.ia-tema .g-recaptcha {
    display: inline-block;
    padding: 6px;
    background: var(--ia-panel2);
    border-radius: 6px;
    border: 1px solid var(--ia-line);
}

/* Input-group dentro de ia-tema */
.ia-tema .input-group .form-control {
    background: var(--ia-bg);
    border: 1px solid var(--ia-line);
    color: var(--ia-text);
}
.ia-tema .input-group .form-control:focus {
    background: var(--ia-bg);
    border-color: var(--ia-accent);
    color: var(--ia-text);
    box-shadow: 0 0 0 .15rem rgb(var(--ia-accent-rgb) / .18);
}

/* Checkbox "Todos" en thead - mejor contraste */
.ia-tema #chk_all,
.ia-tema .chkbox {
    cursor: pointer;
    transform: scale(1.1);
    accent-color: var(--ia-accent);
    margin-right: 5px;
}

/* ============================================================
   Espacio inferior del DataTable wrapper
   Resuelve: la paginacion queda pegada al borde del card
   ============================================================ */
.ia-tema .dataTables_wrapper {
    padding-bottom: 12px;
}
.ia-tema .dataTables_wrapper .row:last-child {
    margin-top: 12px;
    padding-bottom: 8px;
}
.ia-tema .dataTables_wrapper .dataTables_info {
    margin-top: 8px;
    padding-top: 4px;
}
.ia-tema .dataTables_wrapper .dataTables_paginate {
    margin-top: 8px;
    padding-top: 4px;
    padding-bottom: 4px;
}
/* Aire entre tfoot y los controles de abajo */
.ia-tema table.dataTable tfoot {
    border-bottom: 1px solid var(--ia-line);
}
.ia-tema .card-body {
    padding-bottom: 16px;
}

/* ============================================================
   Margen inferior del wrapper ia-tema antes del footer del sitio
   Evita que la paginación quede sobre el footer
   ============================================================ */
.ia-tema {
    margin-bottom: 40px;
}
.ia-tema .card {
    margin-bottom: 30px;
}

/* ============================================================
   BARRA DE PROGRESO PROFESIONAL (para procesamiento masivo)
   Usado en: rebajar órdenes pendientes, otros procesos batch
   ============================================================ */
.ia-progreso-overlay {
    position: fixed;
    inset: 0;
    background: rgb(var(--ia-bg-rgb) / 0.92);
    z-index: 10000;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    visibility: hidden;
    transition: opacity .25s ease, visibility .25s ease;
}
.ia-progreso-overlay.activo {
    opacity: 1;
    visibility: visible;
}

.ia-progreso-card {
    background: var(--ia-panel, var(--ia-panel));
    border: 1px solid var(--ia-line, #3a3c40);
    border-radius: 12px;
    padding: 32px 38px;
    width: 95%;
    max-width: 540px;
    box-shadow: 0 30px 60px rgba(0, 0, 0, 0.6),
                0 0 0 1px rgb(var(--ia-accent-rgb) / 0.12);
    color: var(--ia-text, var(--ia-text));
}

.ia-progreso-titulo {
    font-size: 1.1rem;
    font-weight: 700;
    margin: 0 0 6px;
    color: var(--ia-text, var(--ia-text));
    letter-spacing: .3px;
}
.ia-progreso-subtitulo {
    font-size: .85rem;
    color: var(--ia-muted, var(--ia-muted));
    margin-bottom: 22px;
}

.ia-progreso-bar-wrap {
    width: 100%;
    height: 14px;
    background: rgb(var(--ia-overlay-rgb) / 0.05);
    border-radius: 8px;
    overflow: hidden;
    position: relative;
    border: 1px solid rgb(var(--ia-overlay-rgb) / 0.08);
}
.ia-progreso-bar {
    height: 100%;
    width: 0%;
    background: linear-gradient(90deg, var(--ia-accent, var(--ia-accent)), var(--ia-accent-b));
    border-radius: 8px;
    transition: width .35s cubic-bezier(.4, .0, .2, 1);
    position: relative;
    overflow: hidden;
}
/* Efecto shimmer dentro de la barra */
.ia-progreso-bar::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg,
        transparent 0%,
        rgb(var(--ia-overlay-rgb) / 0.2) 50%,
        transparent 100%);
    animation: ia-shimmer 1.6s linear infinite;
}
@keyframes ia-shimmer {
    0%   { transform: translateX(-100%); }
    100% { transform: translateX(100%); }
}

.ia-progreso-info {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 14px;
    font-size: .9rem;
}
.ia-progreso-porcentaje {
    font-weight: 700;
    color: var(--ia-accent, var(--ia-accent));
    font-size: 1.05rem;
}
.ia-progreso-conteo {
    color: var(--ia-muted, var(--ia-muted));
    font-size: .85rem;
}

.ia-progreso-actual {
    margin-top: 18px;
    padding: 10px 14px;
    background: rgb(var(--ia-accent-rgb) / 0.08);
    border-left: 3px solid var(--ia-accent, var(--ia-accent));
    border-radius: 4px;
    font-size: .85rem;
    color: var(--ia-text, var(--ia-text));
    min-height: 38px;
    display: flex;
    align-items: center;
}
.ia-progreso-actual .actual-label {
    color: var(--ia-muted, var(--ia-muted));
    margin-right: 8px;
}
.ia-progreso-actual .actual-valor {
    font-weight: 600;
    color: var(--ia-accent-h, var(--ia-accent-h));
}

/* Resumen final exitoso */
.ia-progreso-resumen {
    display: none;
    margin-top: 22px;
    padding: 18px;
    background: rgb(var(--ia-success-rgb) / 0.08);
    border: 1px solid rgb(var(--ia-success-rgb) / 0.25);
    border-radius: 8px;
    text-align: center;
}
.ia-progreso-resumen.error {
    background: rgb(var(--ia-danger-rgb) / 0.08);
    border-color: rgb(var(--ia-danger-rgb) / 0.25);
}
.ia-progreso-resumen-titulo {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--ia-success);
    margin-bottom: 8px;
}
.ia-progreso-resumen.error .ia-progreso-resumen-titulo { color: var(--ia-danger); }
.ia-progreso-resumen-stats {
    display: flex;
    justify-content: space-around;
    margin-top: 14px;
    gap: 10px;
}
.ia-progreso-stat {
    flex: 1;
    padding: 10px;
    background: rgb(var(--ia-overlay-rgb) / 0.03);
    border-radius: 6px;
    border: 1px solid rgb(var(--ia-overlay-rgb) / 0.06);
}
.ia-progreso-stat-num {
    font-size: 1.6rem;
    font-weight: 700;
    color: var(--ia-accent, var(--ia-accent));
    line-height: 1;
}
.ia-progreso-stat.warn .ia-progreso-stat-num { color: var(--ia-warn); }
.ia-progreso-stat.danger .ia-progreso-stat-num { color: var(--ia-danger); }
.ia-progreso-stat-label {
    font-size: .72rem;
    color: var(--ia-muted, var(--ia-muted));
    margin-top: 4px;
    text-transform: uppercase;
    letter-spacing: .5px;
}

.ia-progreso-cerrar {
    margin-top: 20px;
    width: 100%;
    padding: 12px;
    background: linear-gradient(135deg, var(--ia-accent, var(--ia-accent)), var(--ia-accent-b));
    color: var(--ia-accent-d);
    border: none;
    border-radius: 8px;
    font-weight: 700;
    font-size: .95rem;
    letter-spacing: .5px;
    cursor: pointer;
    transition: transform .15s, box-shadow .2s;
}
.ia-progreso-cerrar:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgb(var(--ia-accent-rgb) / .35);
}

/* ============================================================
   TOOLTIP PROFESIONAL al hover de filas DataTable
   ============================================================ */
.ia-tooltip-fila {
    position: fixed;
    z-index: 9999;
    background: var(--ia-panel, var(--ia-panel));
    border: 1px solid var(--ia-accent, var(--ia-accent));
    border-radius: 8px;
    padding: 14px 16px;
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.6);
    color: var(--ia-text, var(--ia-text));
    font-size: .82rem;
    max-width: 380px;
    min-width: 300px;
    pointer-events: none;
    opacity: 0;
    transform: translateY(-4px);
    transition: opacity .15s, transform .15s;
}
.ia-tooltip-fila.visible {
    opacity: 1;
    transform: translateY(0);
}
.ia-tooltip-fila .tt-titulo {
    font-weight: 700;
    font-size: .95rem;
    color: var(--ia-accent, var(--ia-accent));
    padding-bottom: 8px;
    border-bottom: 1px solid rgb(var(--ia-overlay-rgb) / 0.08);
    margin-bottom: 10px;
}
.ia-tooltip-fila .tt-row {
    display: flex;
    margin-bottom: 4px;
    line-height: 1.4;
}
.ia-tooltip-fila .tt-label {
    color: var(--ia-muted, var(--ia-muted));
    min-width: 95px;
    font-weight: 500;
}
.ia-tooltip-fila .tt-valor {
    flex: 1;
    color: var(--ia-text, var(--ia-text));
}
.ia-tooltip-fila .tt-bloque {
    margin-top: 10px;
    padding-top: 8px;
    border-top: 1px solid rgb(var(--ia-overlay-rgb) / 0.06);
}
.ia-tooltip-fila .tt-bloque-titulo {
    color: var(--ia-accent-h, var(--ia-accent-h));
    font-weight: 600;
    font-size: .75rem;
    text-transform: uppercase;
    letter-spacing: .5px;
    margin-bottom: 4px;
}
.ia-tooltip-fila .tt-bloque-texto {
    color: var(--ia-text, var(--ia-text));
    font-size: .82rem;
    line-height: 1.4;
}

/* Indicador hover - SOLO en las 3 primeras columnas (info de orden) */
.ia-tema .dataTables_wrapper table.dataTable tbody tr {
    transition: background .12s;
}
.ia-tema .dataTables_wrapper table.dataTable tbody td:nth-child(-n+3) {
    cursor: help;
}
.ia-tema .dataTables_wrapper table.dataTable tbody td:nth-child(-n+3):hover {
    background: rgb(var(--ia-accent-rgb) / 0.06);
}

/* ============================================================
   §L — PÁGINA DE INGRESO (index.php)
   ============================================================ */
body.sc-login {
    min-height: 100vh;
    margin: 0;
    background: var(--ia-bg);
    color: var(--ia-text);
    font-family: var(--ia-font);
    display: flex;
    flex-direction: column;
}
.sc-login-tema { position: absolute; top: 16px; right: 16px; }
.sc-login-wrap {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 72px 16px 24px;
}
.sc-login-card {
    width: 100%;
    max-width: 400px;
    background: var(--ia-panel);
    border: 1px solid var(--ia-line);
    border-top: 3px solid var(--ia-accent);
    border-radius: 10px;
    padding: 36px 32px 28px;
    box-shadow: var(--ia-shadow-lg);
}
.sc-login-logo { display: flex; justify-content: center; margin-bottom: 18px; }
.sc-login-logo img { max-width: 120px; height: auto; }
:root[data-tema="claro"] .sc-login-logo img { filter: drop-shadow(0 0 0 transparent); }
.sc-login-fallback {
    width: 64px; height: 64px; border-radius: 50%;
    align-items: center; justify-content: center;
    background: var(--ia-accent); color: var(--ia-accent-d);
    font-size: 1.8rem; font-weight: 700;
}
.sc-login-card h1 { font-size: 1.35rem; text-align: center; margin: 0 0 4px; }
.sc-login-sub { text-align: center; color: var(--ia-muted); font-size: .88rem; margin: 0 0 24px; }
.sc-login-card label { display: block; font-size: .82rem; color: var(--ia-muted); margin: 0 0 6px; font-weight: 500; }
.sc-login-card .form-control { height: 44px; margin-bottom: 14px; font-size: .95rem; }
.sc-login-pass { position: relative; }
.sc-login-pass .form-control { padding-right: 44px; }
.sc-ver-pass {
    position: absolute; right: 4px; top: 4px;
    width: 36px; height: 36px; border: 0; background: transparent;
    color: var(--ia-muted); border-radius: 6px; cursor: pointer;
}
.sc-ver-pass:hover { color: var(--ia-accent); }
.sc-login-msg { min-height: 1.3em; margin: 0 0 10px; color: var(--ia-danger); font-size: .85rem; }
.sc-login-card .btn-primary { height: 44px; font-weight: 600; }
.sc-login-olvido { display: block; text-align: center; margin-top: 16px; font-size: .85rem; color: var(--ia-muted); }
.sc-login-olvido:hover { color: var(--ia-accent); text-decoration: none; }
.sc-login-pie { text-align: center; color: var(--ia-muted); font-size: .78rem; padding: 18px; }
@media (max-width: 480px) { .sc-login-card { padding: 28px 20px 22px; } }

/* ============================================================
   §40 — BODEGA v2 (Movimiento Bodega, Traspasos, Kardex, Informes,
   Recepción, Insumos de OT). Selectores acotados por .mod-<carpeta>.
   ============================================================ */


/* Alias de variables que usan reglas antiguas de .ia-tema (.form-control, .card…):
   sin esto los campos quedan sin borde en el tema claro. */
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-categorias, .mod-bodegas, .mod-marcas, .mod-proveedores, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-catalogo, .mod-equipos_productos, .mod-consumos_servicio) .ia-tema {
    --bg: var(--ia-input-bg); --panel: var(--ia-panel); --panel2: var(--ia-panel2); --line: var(--ia-line);
    --text: var(--ia-text); --muted: var(--ia-muted); --accent: var(--ia-accent);
}
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .ia-tema textarea.form-control { min-height: 80px; }

/* ---------- Cabecera de página ---------- */
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-cabecera {
    display: flex; justify-content: space-between; align-items: flex-start;
    flex-wrap: wrap; gap: 12px; margin-bottom: 6px;
}
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-cabecera .sub { margin-bottom: 4px; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-acciones {
    display: flex; flex-wrap: wrap; gap: 8px;
}
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-pie-form {
    display: flex; justify-content: flex-end; gap: 10px; margin: 6px 0 20px;
}
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .ia-tema label {
    color: var(--ia-muted); font-size: .8rem; font-weight: 600; margin-bottom: 4px;
}
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .dataTables_wrapper .dt-buttons { float: none; display: inline-flex; gap: 4px; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .dataTables_wrapper .dt-buttons .btn { border-radius: 4px; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .dataTables_wrapper .dataTables_filter { float: none; text-align: left; }

/* ---------- Etiquetas de tipo de movimiento ---------- */
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tag {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 2px 8px; border-radius: 10px; font-size: .74rem; font-weight: 600; white-space: nowrap;
    background: rgb(var(--ia-info-rgb) / .14); color: var(--ia-info);
}
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tag-e { background: rgb(var(--ia-success-rgb) / .15); color: var(--ia-success); }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tag-s { background: rgb(var(--ia-danger-rgb) / .14); color: var(--ia-danger); }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tag-a { background: rgb(var(--ia-warn-rgb) / .16); color: var(--ia-warn); }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tag-t { background: rgb(var(--ia-info-rgb) / .14); color: var(--ia-info); }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tag-n { background: rgb(var(--ia-overlay-rgb) / .08); color: var(--ia-muted); }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-pos { color: var(--ia-success); font-weight: 600; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-neg { color: var(--ia-danger); font-weight: 600; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-motivo {
    display: inline-block; max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom;
}

/* ---------- Ficha (detalle de documento / traspaso) ---------- */
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-ficha {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 4px 16px;
    background: var(--ia-panel2); border: 1px solid var(--ia-line); border-radius: 6px;
    padding: 12px 14px; margin-bottom: 12px;
}
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-ficha .value { margin-bottom: 4px; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .ia-modal .modal-body.ia-tema { padding: 16px; border-radius: 0; background: var(--ia-panel); }

/* ---------- Editor de líneas (buscador + tabla) ---------- */
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-buscador { position: relative; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-resultados {
    position: absolute; left: 0; right: 0; top: 100%; z-index: 30;
    max-height: 340px; overflow-y: auto; margin-top: 4px;
    border: 1px solid var(--ia-line); border-radius: 6px; box-shadow: var(--ia-shadow-lg);
    background: var(--ia-panel);
}
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-item {
    display: flex; align-items: center; gap: 10px; padding: 7px 10px; cursor: pointer;
    background: var(--ia-panel); color: var(--ia-text); border-color: var(--ia-line);
}
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-item:hover,
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-item:focus { background: rgb(var(--ia-accent-rgb) / .10); outline: none; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-item.bod-ya { opacity: .7; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-item img,
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-lineas td.bod-col-foto img {
    width: 38px; height: 38px; object-fit: cover; border-radius: 5px; border: 1px solid var(--ia-line); background: var(--ia-panel2);
}
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-sinfoto {
    width: 38px; height: 38px; flex: 0 0 38px; display: inline-flex; align-items: center; justify-content: center;
    border-radius: 5px; background: var(--ia-panel2); color: var(--ia-muted); border: 1px solid var(--ia-line);
}
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-item-txt { flex: 1; min-width: 0; display: flex; flex-direction: column; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-item-txt b { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-item-txt small { color: var(--ia-muted); }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-item-stock { font-size: .8rem; font-weight: 600; color: var(--ia-success); white-space: nowrap; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-item-stock.bod-cero { color: var(--ia-muted); }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-sin { color: var(--ia-muted); }

:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tabla td { vertical-align: middle; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tabla .bod-col-foto { width: 50px; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tabla .bod-col-stock { width: 110px; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tabla .bod-col-cant { width: 130px; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tabla .bod-col-costo { width: 130px; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tabla .bod-col-obs { min-width: 160px; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tabla .bod-col-quitar { width: 40px; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tabla .bod-despues { color: var(--ia-muted); font-size: .72rem; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tabla tr.bod-error td { background: rgb(var(--ia-danger-rgb) / .08); }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tabla tr.bod-error .bod-cant { border-color: var(--ia-danger); }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tabla tr.bod-error .bod-despues { color: var(--ia-danger); font-weight: 600; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tabla tr.bod-flash td { background: rgb(var(--ia-accent-rgb) / .14); transition: background .8s; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-vacio {
    text-align: center; color: var(--ia-muted); padding: 22px 10px;
    border: 1px dashed var(--ia-line); border-radius: 6px; margin-top: 8px;
}

/* ---------- Pestañas de módulo ---------- */
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tabs { margin: 10px 0 0; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tabs .nav-link { font-weight: 600; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .bod-tabs .badge { margin-left: 4px; }

/* ---------- Estados de traspaso ---------- */
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .tr-estado { display: inline-block; padding: 2px 9px; border-radius: 10px; font-size: .74rem; font-weight: 600; white-space: nowrap; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .tr-estado-0 { background: rgb(var(--ia-warn-rgb) / .16); color: var(--ia-warn); }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .tr-estado-1 { background: rgb(var(--ia-success-rgb) / .15); color: var(--ia-success); }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .tr-estado-2 { background: rgb(var(--ia-overlay-rgb) / .08); color: var(--ia-muted); text-decoration: line-through; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .tr-estado-3 { background: rgb(var(--ia-danger-rgb) / .14); color: var(--ia-danger); }
.mod-traspaso .tr-qr { text-align: center; }
.mod-traspaso .tr-qr img { width: 220px; height: 220px; border-radius: 6px; background: #fff; padding: 8px; }
.mod-traspaso .tr-qr .codigo { font-size: 1.4rem; font-weight: 700; letter-spacing: 2px; color: var(--ia-accent); margin-top: 6px; }

/* ---------- Recepción de traspaso ---------- */
.mod-traspaso .rec-tabla .rec-cant { max-width: 110px; }
.mod-traspaso .rec-tabla tr.rec-dif td { background: rgb(var(--ia-warn-rgb) / .10); }
.mod-traspaso .rec-resumen { font-weight: 600; }

/* ---------- Kardex / informes ---------- */
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .stats { margin-bottom: 12px; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .stat { cursor: default; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .stat .valor { font-size: 1.45rem; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .filtros select,
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .filtros input { min-width: 140px; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .filtros .fld-ancho select,
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .filtros .fld-ancho input { min-width: 260px; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .inf-lista .list-group-item { cursor: pointer; display: flex; gap: 10px; align-items: flex-start; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .inf-lista .list-group-item.active {
    background: rgb(var(--ia-accent-rgb) / .14); border-color: var(--ia-accent); color: var(--ia-text);
}
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .inf-lista .list-group-item i { color: var(--ia-accent); margin-top: 3px; width: 18px; text-align: center; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .inf-lista small { display: block; color: var(--ia-muted); }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) tr.inf-critico td { background: rgb(var(--ia-danger-rgb) / .07); }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) tfoot th { background: var(--ia-panel2); color: var(--ia-text); }

/* ---------- Comprobante imprimible (hoja blanca: colores fijos permitidos) ---------- */
html:has(> body.bod-impresion) { background: #e9ecef; }
body.bod-impresion { min-height: 100vh; padding: 1px 0; background: #e9ecef; color: #111; font-family: Arial, Helvetica, sans-serif; font-size: 12px; margin: 0; }
body.bod-impresion .hoja { background: #fff; color: #111; max-width: 820px; margin: 20px auto; padding: 28px 32px; box-shadow: 0 2px 10px rgba(0,0,0,.15); }
body.bod-impresion .barra { text-align: right; margin-bottom: 10px; }
body.bod-impresion .barra button { padding: 6px 14px; margin-left: 6px; cursor: pointer; border: 1px solid #999; background: #f4f4f4; color: #111; border-radius: 4px; }
body.bod-impresion header { display: flex; align-items: center; gap: 16px; border-bottom: 2px solid #111; padding-bottom: 10px; margin-bottom: 12px; }
body.bod-impresion header .logo { height: 54px; }
body.bod-impresion header .emp { flex: 1; line-height: 1.4; }
body.bod-impresion header .folio { text-align: right; border: 1px solid #111; padding: 6px 12px; }
body.bod-impresion header .folio .tipo { font-size: 11px; font-weight: 700; }
body.bod-impresion header .folio .num { font-size: 18px; font-weight: 700; }
body.bod-impresion header .folio .barra { display: block; margin: 4px 0 0 auto; }
body.bod-impresion header .folio .anulado { color: #b00020; font-weight: 700; font-size: 14px; }
body.bod-impresion table { width: 100%; border-collapse: collapse; margin-bottom: 12px; }
body.bod-impresion table.datos th { text-align: left; width: 16%; background: #f1f1f1; }
body.bod-impresion table th, body.bod-impresion table td { border: 1px solid #bbb; padding: 5px 7px; vertical-align: top; color: #111; }
body.bod-impresion table.lineas thead th { background: #222; color: #fff; }
body.bod-impresion .der { text-align: right; }
body.bod-impresion .nota { color: #b00020; }
body.bod-impresion .qr { float: right; width: 110px; height: 110px; margin-left: 12px; }
body.bod-impresion .firmas { display: flex; gap: 60px; margin-top: 60px; }
body.bod-impresion .firmas div { flex: 1; border-top: 1px solid #111; text-align: center; padding-top: 4px; }
body.bod-impresion .pie { color: #666; font-size: 10px; margin-top: 18px; }
@media print {
    body.bod-impresion { background: #fff; }
    body.bod-impresion .hoja { box-shadow: none; margin: 0; max-width: none; padding: 0; }
    body.bod-impresion .no-imprimir { display: none; }
}

/* ---------- Insumos de OT / recepción OT ---------- */
.mod-catalogo_ot .ot-qr { width: 220px; height: 220px; border-radius: 6px; background: #fff; padding: 8px; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .rec-tabla .rec-cant { max-width: 110px; }
:is(.mod-c_bodegas, .mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega, .mod-recepcion, .mod-catalogo_ot, .mod-consumos_bodega, .mod-consumos_servicio) .rec-tabla tr.rec-dif td { background: rgb(var(--ia-warn-rgb) / .10); }
.mod-catalogo_ot .bod-tabla .bod-col-extra { width: 130px; }

/* Pestañas: la regla común .ia-tema .nav-tabs usa colores fijos oscuros; aquí van con el tema */
:is(.mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega) .ia-tema .nav-tabs.bod-tabs { border: 1px solid var(--ia-line); background: var(--ia-panel2); }
:is(.mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega) .ia-tema .nav-tabs.bod-tabs .nav-link { color: var(--ia-muted); }
:is(.mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega) .ia-tema .nav-tabs.bod-tabs .nav-link:hover { color: var(--ia-text); background: rgb(var(--ia-accent-rgb) / .08); }
:is(.mod-traspaso, .mod-kardex_bodegas, .mod-informes_bodega) .ia-tema .nav-tabs.bod-tabs .nav-link.active { color: var(--ia-accent-d); background: var(--ia-accent); border-color: var(--ia-accent); }

/* ============================================================
   Módulo .mod-catalogo (convertido desde el CSS antiguo del módulo)
   ============================================================ */
/* =========================================================
   CATALOGO PRODUCTOS - TEMA OSCURO CORPORATIVO
   Sistema Control
========================================================= */

.mod-catalogo{

    --fondo:var(--ia-bg);

    --fondo-card:var(--ia-panel);

    --fondo-card-2:var(--ia-panel2);

    --fondo-input:var(--ia-input-bg);

    --fondo-tabla:var(--ia-panel);

    --fondo-tabla-hover:var(--ia-panel2);

    --borde:var(--ia-line);

    --borde-claro:var(--ia-line);

    --texto:var(--ia-text);

    --texto-secundario:var(--ia-muted);

    --texto-muted:var(--ia-muted);

    --azul:var(--ia-accent);

    --azul-hover:var(--ia-accent-h);

    --turquesa:var(--ia-accent);

    --turquesa-hover:var(--ia-accent);

    --verde:var(--ia-accent);

    --rojo:var(--ia-danger);

    --amarillo:var(--ia-warn);

}


/* =========================================================
   BODY
========================================================= */

.mod-catalogo{

    background:var(--fondo) !important;

    color:var(--texto) !important;

    font-family:
        "Segoe UI",
        Arial,
        Helvetica,
        sans-serif;

    font-size:14px;

}


/* =========================================================
   CONTENEDOR
========================================================= */

.mod-catalogo .container_B{

    min-height:100vh;

    background:var(--fondo);

}


/* =========================================================
   CARD
========================================================= */

.mod-catalogo .card{

    background:var(--fondo-card) !important;

    border:1px solid var(--borde) !important;

    border-radius:10px;

    overflow:hidden;

    box-shadow:
        0 4px 15px rgba(0,0,0,.35);

}


/* =========================================================
   CARD HEADER
========================================================= */

.mod-catalogo .card-header{

    background:var(--fondo-card-2) !important;

    color:var(--texto) !important;

    border-bottom:1px solid var(--borde) !important;

    padding:12px 18px;

}


/* =========================================================
   TITULOS
========================================================= */

.mod-catalogo .card-header h4,
.mod-catalogo .card-header h5{

    color:var(--ia-text) !important;

    font-weight:600;

}


.mod-catalogo .card-header small{

    color:var(--ia-muted) !important;

}


/* =========================================================
   ICONOS
========================================================= */

.mod-catalogo .card-header i{

    color:var(--turquesa);

    margin-right:5px;

}


/* =========================================================
   HEADER PRIMARY
========================================================= */

.mod-catalogo .card-header.bg-primary{

    background:var(--ia-info) !important;

    color:#ffffff !important;

    border-bottom:1px solid var(--ia-info) !important;

}


.mod-catalogo .card-header.bg-primary i{

    color:var(--ia-text);

}


/* ==========================================
   FILTROS COMPACTOS
========================================== */

.mod-catalogo .filtros{
    padding:12px 15px !important;
}

.mod-catalogo .filtros .row{
    margin-bottom:6px;
}

.mod-catalogo .filtros label{
    font-size:11px;
    margin-bottom:3px;
    font-weight:600;
    color:var(--ia-muted);
}

.mod-catalogo .filtros .form-control{
    height:34px;
    font-size:12px;
    padding:4px 8px;
}

.mod-catalogo .filtros .btn{
    height:34px;
    font-size:12px;
}

/* buscador */
.mod-catalogo .buscador i{
    top:9px;
    left:10px;
    font-size:12px;
}

.mod-catalogo .buscador input{
    padding-left:28px;
}

/* =========================================================
   LABELS
========================================================= */

.mod-catalogo label{

    color:var(--ia-muted) !important;

    font-size:13px;

    font-weight:600;

}


/* =========================================================
   INPUTS
========================================================= */

.mod-catalogo .form-control{

    background:var(--ia-bg) !important;

    color:var(--ia-text) !important;

    border:1px solid var(--ia-line) !important;

    border-radius:6px;

}


.mod-catalogo .form-control::placeholder{

    color:var(--ia-muted) !important;

    opacity:1;

}


.mod-catalogo .form-control:focus{

    background:var(--ia-bg) !important;

    color:var(--ia-text) !important;

    border-color:var(--turquesa) !important;

    box-shadow:
        0 0 0 .15rem rgb(var(--ia-accent-rgb) / .18) !important;

}


/* =========================================================
   SELECT
========================================================= */

.mod-catalogo select.form-control{

    background-color:var(--ia-bg) !important;

    color:var(--ia-text) !important;

    border-color:var(--ia-line) !important;

}


.mod-catalogo select.form-control option{

    background:var(--ia-panel) !important;

    color:var(--ia-text) !important;

}


/* =========================================================
   BUSCADOR
========================================================= */

.mod-catalogo .buscador{

    display:flex;

    align-items:center;

    width:100%;

    height:40px;

    position:relative;

    background:var(--ia-bg);

    border:1px solid var(--ia-accent);

    border-radius:7px;

    overflow:hidden;

    transition:.2s ease;

}


/* =========================================================
   ICONO BUSCADOR
========================================================= */

.mod-catalogo .buscador-icono{

    width:42px;

    min-width:42px;

    height:40px;

    display:flex;

    align-items:center;

    justify-content:center;

    background:var(--ia-bg);

    color:var(--ia-accent);

    font-size:13px;

}


/* =========================================================
   ICONO
========================================================= */

.mod-catalogo .buscador-icono i{

    position:static !important;

    top:auto !important;

    left:auto !important;

    margin:0 !important;

    color:var(--ia-accent);

    font-size:13px;

}


/* =========================================================
   INPUT
========================================================= */

.mod-catalogo .buscador input{

    flex:1;

    width:100%;

    height:38px;

    padding:6px 12px 6px 0 !important;

    background:transparent !important;

    border:none !important;

    border-radius:0 !important;

    color:var(--ia-text) !important;

    outline:none !important;

    box-shadow:none !important;

}


/* =========================================================
   PLACEHOLDER
========================================================= */

.mod-catalogo .buscador input::placeholder{

    color:var(--ia-muted) !important;

    opacity:1;

}


/* =========================================================
   FOCUS
========================================================= */

.mod-catalogo .buscador:focus-within{

    border-color:var(--ia-accent);

    box-shadow:
        0 0 0 .15rem rgb(var(--ia-accent-rgb) / .18);

}


/* =========================================================
   BUSCADOR EN MOVIL
========================================================= */

@media(max-width:768px){

    .mod-catalogo .buscador{

        height:38px;

    }

    .mod-catalogo .buscador-icono{

        width:38px;

        min-width:38px;

        height:38px;

    }

    .mod-catalogo .buscador input{

        height:36px;

        font-size:12px;

    }

}


/* =========================================================
   TABLA
========================================================= */

.mod-catalogo .table{

    color:var(--ia-text) !important;

    background:var(--ia-panel) !important;

    font-size:13px;

}


.mod-catalogo #tablaProductos{

    width:100% !important;

    min-width:1150px;

}


/* =========================================================
   THEAD
========================================================= */

.mod-catalogo .table thead th{

    background:var(--ia-bg) !important;

    color:var(--turquesa) !important;

    border-color:var(--ia-line) !important;

    font-size:11px;

    font-weight:600;

    text-transform:uppercase;

    vertical-align:middle;

    white-space:nowrap;

}


/* =========================================================
   CELDAS
========================================================= */

.mod-catalogo .table tbody td{

    background:var(--ia-panel) !important;

    color:var(--ia-text) !important;

    border-color:var(--ia-line) !important;

    vertical-align:middle;

}


/* =========================================================
   FILAS
========================================================= */

.mod-catalogo .table tbody tr{

    background:var(--ia-panel) !important;

    color:var(--ia-text) !important;

}


.mod-catalogo .table-striped tbody tr:nth-of-type(even) td{

    background:var(--ia-panel) !important;

}


.mod-catalogo .table-striped tbody tr:nth-of-type(odd) td{

    background:var(--ia-panel) !important;

}


/* =========================================================
   HOVER
========================================================= */

.mod-catalogo .table-hover tbody tr:hover td{

    background:var(--ia-panel) !important;

    color:var(--ia-text) !important;

}


/* =========================================================
   PRODUCTO
========================================================= */

.mod-catalogo #tablaProductos td strong{

    color:var(--ia-text) !important;

    font-weight:600;

}


.mod-catalogo #tablaProductos small{

    color:var(--ia-muted) !important;

}


/* =========================================================
   FOTO
========================================================= */

/* =========================================================
   FOTO PRODUCTO - ADAPTADA AL RECUADRO
========================================================= */

.mod-catalogo .fotoProducto,
.mod-catalogo .sinFoto{

    width:55px;
    height:55px;

    border-radius:8px;

    overflow:hidden;

}


/* =========================================================
   IMAGEN
========================================================= */

.mod-catalogo .fotoProducto{

    display:block;

    width:55px;
    height:55px;

    object-fit:cover;

    object-position:center;

    border:1px solid var(--ia-line);

    background:var(--ia-bg);

}


/* =========================================================
   SIN FOTO
========================================================= */

.mod-catalogo .sinFoto{

    background:var(--ia-panel);

    border:1px solid var(--ia-line);

    display:flex;

    align-items:center;

    justify-content:center;

    color:var(--ia-muted);

}


.mod-catalogo .sinFoto i{

    color:var(--ia-muted);

    font-size:20px;

}


.mod-catalogo .sinFoto{

    background:var(--ia-panel);

    border:1px solid var(--ia-line);

    display:flex;

    align-items:center;

    justify-content:center;

    color:var(--ia-muted);

}


.mod-catalogo .sinFoto i{

    color:var(--ia-muted);

}


/* =========================================================
   BADGES
========================================================= */

.mod-catalogo .badge{

    border-radius:15px;

    padding:5px 9px;

    font-size:11px;

    font-weight:600;

}


/* =========================================================
   BADGE INSUMO
========================================================= */

.mod-catalogo .badge-success{

    background:var(--ia-accent) !important;

    color:var(--ia-accent-d) !important;

}


/* =========================================================
   BADGE REPUESTO
========================================================= */

.mod-catalogo .badge-primary{

    background:var(--ia-info) !important;

    color:#ffffff !important;

}


/* =========================================================
   BADGE DANGER
========================================================= */

.mod-catalogo .badge-danger{

    background:var(--ia-danger) !important;

    color:#ffffff !important;

}


/* =========================================================
   ETIQUETAS PLANTILLAS Y EQUIPOS
   MISMO ESTILO CORPORATIVO
========================================================= */

.mod-catalogo .plantilla-badge,
.mod-catalogo .equipo-badge{

    display:inline-block;

    background:rgb(var(--ia-accent-rgb) / .14);

    color:var(--turquesa);

    border:1px solid rgb(var(--ia-accent-rgb) / .45);

    padding:4px 7px;

    margin:2px;

    border-radius:5px;

    font-size:10px;

    font-weight:600;

    white-space:nowrap;

}


/* =========================================================
   ICONOS
========================================================= */

.mod-catalogo .plantilla-badge i,
.mod-catalogo .equipo-badge i{

    color:var(--turquesa);

    margin-right:4px;

}


/* =========================================================
   HOVER
========================================================= */

.mod-catalogo .plantilla-badge:hover,
.mod-catalogo .equipo-badge:hover{

    background:rgb(var(--ia-accent-rgb) / .14);

    border-color:var(--turquesa);

    color:var(--ia-text);

}


/* =========================================================
   EQUIPO
========================================================= */

.mod-catalogo .equipo-badge{

    margin-bottom:3px;

}


/* =========================================================
   STOCK
========================================================= */

.mod-catalogo .stock{

    font-weight:700;

    color:var(--turquesa) !important;

    font-size:14px;

}


.mod-catalogo .stock-bajo{

    color:var(--amarillo) !important;

}


.mod-catalogo .stock-agotado{

    color:var(--ia-danger) !important;

}


/* =========================================================
   BOTONES
========================================================= */

.mod-catalogo .btn{

    border-radius:7px;

    font-weight:500;

}


/* =========================================================
   PRIMARY
========================================================= */

.mod-catalogo .btn-primary{

    background:var(--azul) !important;

    border-color:var(--azul) !important;

    color:var(--ia-accent-d) !important;

}


.mod-catalogo .btn-primary:hover{

    background:var(--azul-hover) !important;

    border-color:var(--azul-hover) !important;

}


/* =========================================================
   SUCCESS
========================================================= */

.mod-catalogo .btn-success{

    background:var(--turquesa) !important;

    border-color:var(--turquesa) !important;

    color:var(--ia-accent-d) !important;

}


.mod-catalogo .btn-success:hover{

    background:var(--turquesa-hover) !important;

    border-color:var(--turquesa-hover) !important;

    color:var(--ia-accent-d) !important;

}


/* =========================================================
   INFO
========================================================= */

.mod-catalogo .btn-info{

    background:var(--ia-accent) !important;

    border-color:var(--ia-accent) !important;

    color:#ffffff !important;

}


.mod-catalogo .btn-info:hover{

    background:var(--ia-accent) !important;

    border-color:var(--ia-accent) !important;

}


/* =========================================================
   DANGER
========================================================= */

.mod-catalogo .btn-danger{

    background:var(--ia-danger) !important;

    border-color:var(--ia-danger) !important;

    color:#ffffff !important;

}


/* =========================================================
   OUTLINE SECONDARY
========================================================= */

.mod-catalogo .btn-outline-secondary{

    background:transparent !important;

    color:var(--ia-muted) !important;

    border-color:var(--ia-line) !important;

}


.mod-catalogo .btn-outline-secondary:hover{

    background:var(--ia-muted) !important;

    color:var(--ia-text) !important;

}


/* =========================================================
   LIMPIAR
========================================================= */

.mod-catalogo #btnLimpiar{

    background:var(--ia-panel) !important;

    color:var(--ia-muted) !important;

    border:1px solid var(--ia-line) !important;

}


.mod-catalogo #btnLimpiar:hover{

    background:var(--ia-panel2) !important;

    color:var(--ia-text) !important;

}


/* =========================================================
   BOTONES TABLA
========================================================= */

.mod-catalogo #tablaProductos .btn{

    font-size:11px;

    padding:4px 8px;

}


/* =========================================================
   LOADING
========================================================= */

.mod-catalogo .loadingProductos{

    display:none;

    align-items:center;

    gap:8px;

    color:var(--texto-muted);

    font-size:12px;

}


.mod-catalogo .loadingProductos i{

    color:var(--turquesa);

}


/* =========================================================
   TABLE RESPONSIVE
========================================================= */

.mod-catalogo .table-responsive{

    max-height:650px;

    overflow:auto;

}


/* =========================================================
   SCROLL
========================================================= */

.mod-catalogo .table-responsive::-webkit-scrollbar{

    width:8px;

    height:8px;

}


.mod-catalogo .table-responsive::-webkit-scrollbar-track{

    background:var(--ia-bg);

}


.mod-catalogo .table-responsive::-webkit-scrollbar-thumb{

    background:var(--ia-line);

    border-radius:10px;

}


.mod-catalogo .table-responsive::-webkit-scrollbar-thumb:hover{

    background:var(--ia-muted);

}


/* =========================================================
   DATATABLES
========================================================= */

.mod-catalogo .dataTables_wrapper{

    color:var(--ia-muted) !important;

}


.mod-catalogo .dataTables_wrapper .dataTables_length,
.mod-catalogo .dataTables_wrapper .dataTables_info{

    color:var(--ia-muted) !important;

}


.mod-catalogo .dataTables_wrapper .dataTables_length select{

    background:var(--ia-bg) !important;

    color:var(--ia-text) !important;

    border:1px solid var(--ia-line) !important;

}


.mod-catalogo .dataTables_wrapper .dataTables_paginate .paginate_button{

    color:var(--ia-muted) !important;

}


.mod-catalogo .dataTables_wrapper .dataTables_paginate .paginate_button.current{

    background:var(--ia-info) !important;

    border-color:var(--ia-info) !important;

    color:#ffffff !important;

}


.mod-catalogo .dataTables_wrapper .dataTables_paginate .paginate_button:hover{

    background:var(--ia-panel) !important;

    border-color:var(--ia-line) !important;

    color:var(--ia-text) !important;

}


/* =========================================================
   TEXTOS MUTED
========================================================= */

.mod-catalogo .text-muted{

    color:var(--ia-muted) !important;

}


.mod-catalogo .small,
.mod-catalogo small{

    color:var(--ia-muted);

}


/* =========================================================
   MODAL
========================================================= */

.mod-catalogo .modal-content{

    background:var(--ia-panel) !important;

    color:var(--ia-text) !important;

    border:1px solid var(--ia-line) !important;

}


.mod-catalogo .modal-header{

    border-bottom:1px solid var(--ia-line) !important;

}


.mod-catalogo .modal-footer{

    border-top:1px solid var(--ia-line) !important;

}


.mod-catalogo .modal-header.bg-primary{

    background:var(--ia-info) !important;

}


.mod-catalogo .modal-header .close{

    color:var(--ia-text) !important;

    opacity:.9;

}


/* =========================================================
   MODAL LABELS
========================================================= */

.mod-catalogo .modal-content label{

    color:var(--ia-muted) !important;

}


/* =========================================================
   MODAL SELECT MULTIPLE
========================================================= */

.mod-catalogo #plantillas{

    min-height:130px;

}


.mod-catalogo #plantillas option{

    background:var(--ia-panel) !important;

    color:var(--ia-text) !important;

    padding:5px;

}


.mod-catalogo #plantillas option:checked{

    background:var(--ia-info) !important;

    color:#ffffff !important;

}


/* =========================================================
   CUSTOM SWITCH
========================================================= */

.mod-catalogo .custom-control-label{

    color:var(--ia-muted) !important;

}


/* =========================================================
   DISABLED
========================================================= */

.mod-catalogo .form-control:disabled,
.mod-catalogo .form-control[readonly]{

    background:var(--ia-bg) !important;

    color:var(--ia-muted) !important;

    border-color:var(--ia-line) !important;

    opacity:1;

}


/* =========================================================
   SELECCION TEXTO
========================================================= */

.mod-catalogo ::selection{

    background:var(--ia-accent);

    color:var(--ia-accent-d);

}


/* =========================================================
   RESPONSIVE
========================================================= */

@media(max-width:992px){

    .mod-catalogo .card-header h4,
    .mod-catalogo .card-header h5{

        font-size:16px;

    }


    .mod-catalogo .table{

        font-size:12px;

    }

}


/* =========================================================
   TABLET
========================================================= */

@media(max-width:768px){

    .mod-catalogo .card-header{

        padding:10px 12px;

    }


    .mod-catalogo #buscar{

        height:38px;

    }


    .mod-catalogo #tablaProductos{

        min-width:1150px;

    }

}


/* =========================================================
   MOVIL
========================================================= */

@media(max-width:576px){

    .mod-catalogo .card-header h4{

        font-size:14px;

    }


    .mod-catalogo .card-header{

        padding:10px;

    }


    .mod-catalogo .table{

        font-size:11px;

    }


    .mod-catalogo .badge{

        font-size:10px;

    }


    .mod-catalogo #btnNuevoProducto{

        font-size:11px;

        padding:5px 8px;

    }


    .mod-catalogo #btnLimpiar{

        width:100%;

    }

}
/* =========================================================
   SWITCH TABLA / CATALOGO
========================================================= */

.mod-catalogo .vista-switch{

    display:flex;

    align-items:center;

    gap:8px;

    background:var(--ia-bg);

    border:1px solid var(--ia-line);

    padding:5px 10px;

    border-radius:8px;

}


.mod-catalogo .vista-label{

    color:var(--ia-muted) !important;

    font-size:11px;

    font-weight:600;

    white-space:nowrap;

}


.mod-catalogo .vista-label i{

    color:var(--turquesa);

    margin:0 3px;

}


/* =========================================================
   SWITCH
========================================================= */

.mod-catalogo .switch{

    position:relative;

    display:inline-block;

    width:42px;

    height:22px;

    margin:0;

}


.mod-catalogo .switch input{

    opacity:0;

    width:0;

    height:0;

}


.mod-catalogo .slider{

    position:absolute;

    cursor:pointer;

    top:0;

    left:0;

    right:0;

    bottom:0;

    background:var(--ia-line);

    border-radius:20px;

    transition:.25s;

}


.mod-catalogo .slider:before{

    position:absolute;

    content:"";

    height:16px;

    width:16px;

    left:3px;

    top:3px;

    background:var(--ia-panel);

    border-radius:50%;

    transition:.25s;

}


.mod-catalogo .switch input:checked + .slider{

    background:var(--turquesa);

}


.mod-catalogo .switch input:checked + .slider:before{

    transform:translateX(20px);

}


/* =========================================================
   CATALOGO
========================================================= */

.mod-catalogo #catalogoProductos{

    padding-top:10px !important;

}


.mod-catalogo #gridProductos{

    margin-left:-8px;

    margin-right:-8px;

}


.mod-catalogo #gridProductos > div{

    padding-left:8px;

    padding-right:8px;

}


/* =========================================================
   TARJETA PRODUCTO
========================================================= */

.mod-catalogo .producto-card{

    height:100%;

    background:var(--ia-panel);

    border:1px solid var(--ia-line);

    border-radius:12px;

    overflow:hidden;

    transition:

        transform .2s ease,

        border-color .2s ease,

        box-shadow .2s ease;

}


.mod-catalogo .producto-card:hover{

    transform:translateY(-3px);

    border-color:var(--ia-accent);

    box-shadow:
        0 8px 22px rgba(0,0,0,.35);

}


/* =========================================================
   FOTO
========================================================= */

.mod-catalogo .producto-card-foto{

    height:190px;

    background:var(--ia-bg);

    border-bottom:1px solid var(--ia-line);

    display:flex;

    align-items:center;

    justify-content:center;

    overflow:hidden;

}


.mod-catalogo .catalogo-foto{

    width:100%;

    height:190px;

    object-fit:contain;

    padding:12px;

}


.mod-catalogo .catalogo-sin-foto{

    width:100%;

    height:190px;

    display:flex;

    align-items:center;

    justify-content:center;

    color:var(--ia-muted);

    font-size:45px;

    background:var(--ia-bg);

}


/* =========================================================
   CUERPO TARJETA
========================================================= */

.mod-catalogo .producto-card-body{

    padding:14px;

}


/* =========================================================
   TITULO
========================================================= */

.mod-catalogo .producto-card-titulo{

    color:var(--ia-text);

    font-size:16px;

    font-weight:700;

    line-height:1.3;

    margin-bottom:6px;

}


/* =========================================================
   MODELO
========================================================= */

.mod-catalogo .producto-card-modelo{

    color:var(--ia-muted);

    font-size:12px;

    margin-bottom:4px;

}


.mod-catalogo .producto-card-modelo i{

    color:var(--turquesa);

    margin-right:5px;

}


/* =========================================================
   SERIE
========================================================= */

.mod-catalogo .producto-card-serie{

    color:var(--ia-muted);

    font-size:11px;

    margin-bottom:10px;

}


.mod-catalogo .producto-card-serie i{

    color:var(--ia-info);

    margin-right:5px;

}


/* =========================================================
   TIPO
========================================================= */

.mod-catalogo .producto-card-tipo{

    margin-bottom:12px;

}


/* =========================================================
   INFORMACION
========================================================= */

.mod-catalogo .producto-card-info{

    border-top:1px solid var(--ia-line);

    border-bottom:1px solid var(--ia-line);

    padding:10px 0;

}


.mod-catalogo .producto-info-item{

    display:flex;

    justify-content:space-between;

    align-items:center;

    gap:10px;

    padding:4px 0;

}


.mod-catalogo .producto-info-item span{

    color:var(--ia-muted);

    font-size:11px;

}


.mod-catalogo .producto-info-item span i{

    color:var(--turquesa);

    width:16px;

}


.mod-catalogo .producto-info-item strong{

    color:var(--ia-text);

    font-size:11px;

    text-align:right;

    font-weight:500;

}


/* =========================================================
   PLANTILLAS
========================================================= */

.mod-catalogo .producto-card-plantillas{

    padding:10px 0 5px;

}


.mod-catalogo .producto-card-label{

    color:var(--ia-muted);

    font-size:11px;

    font-weight:600;

    margin-bottom:5px;

}


.mod-catalogo .producto-card-label i{

    color:var(--turquesa);

    margin-right:5px;

}


/* =========================================================
   FOOTER
========================================================= */

.mod-catalogo .producto-card-footer{

    display:flex;

    justify-content:space-between;

    align-items:center;

    border-top:1px solid var(--ia-line);

    margin-top:8px;

    padding-top:10px;

}


.mod-catalogo .producto-card-footer small{

    display:block;

    color:var(--ia-muted) !important;

    font-size:10px;

    margin-bottom:2px;

}


.mod-catalogo .producto-card-footer .stock{

    font-size:16px;

}


/* =========================================================
   ACCIONES
========================================================= */

.mod-catalogo .catalogo-acciones{

    display:flex;

    gap:6px;

    margin-top:12px;

}


.mod-catalogo .catalogo-acciones .btn{

    flex:1;

    font-size:11px;

    padding:6px 8px;

}


.mod-catalogo .btn-catalogo-ver{

    background:var(--ia-accent) !important;

    border-color:var(--ia-accent) !important;

    color:#ffffff !important;

    border-radius:6px;

}


.mod-catalogo .btn-catalogo-ver:hover{

    background:var(--ia-accent) !important;

    border-color:var(--ia-accent) !important;

}


.mod-catalogo .btn-catalogo-editar{

    background:var(--ia-info) !important;

    border-color:var(--ia-info) !important;

    color:#ffffff !important;

    border-radius:6px;

}


.mod-catalogo .btn-catalogo-editar:hover{

    background:var(--ia-info) !important;

    border-color:var(--ia-info) !important;

}


/* =========================================================
   CATALOGO VACIO
========================================================= */

.mod-catalogo .catalogo-vacio{

    text-align:center;

    padding:60px 20px;

    color:var(--ia-muted);

}


.mod-catalogo .catalogo-vacio i{

    font-size:55px;

    color:var(--ia-muted);

    margin-bottom:15px;

}


.mod-catalogo .catalogo-vacio h5{

    color:var(--ia-muted);

}


.mod-catalogo .catalogo-vacio p{

    color:var(--ia-muted);

}


/* =========================================================
   RESPONSIVE CATALOGO
========================================================= */

@media(max-width:768px){

    .mod-catalogo .vista-switch{

        margin-bottom:8px;

    }


    .mod-catalogo .producto-card-foto,
    .mod-catalogo .catalogo-foto,
    .mod-catalogo .catalogo-sin-foto{

        height:160px;

    }

}


@media(max-width:576px){

    .mod-catalogo .card-header .d-flex{

        align-items:flex-start !important;

    }


    .mod-catalogo .vista-switch{

        width:100%;

        justify-content:center;

        margin-right:0 !important;

        margin-bottom:8px !important;

    }


    .mod-catalogo #btnNuevoProducto{

        width:100%;

    }

}

/* =========================================================
   MODAL DETALLE - DISTRIBUCIÓN IMAGEN / INFORMACIÓN
========================================================= */

.mod-catalogo #modalDetalleProducto .modal-body{

    padding:25px;

}


/* CONTENEDOR DE LA IMAGEN */

.mod-catalogo #modalDetalleProducto .col-md-4{

    display:flex;

    align-items:flex-start;

    justify-content:center;

    padding:15px;

}


/* IMAGEN DEL PRODUCTO EN EL MODAL */

.mod-catalogo #modalDetalleProducto .col-md-4 img{

    display:block;

    width:100%;

    max-width:300px;

    height:300px;

    object-fit:contain;

    object-position:center;

    border-radius:10px;

    border:1px solid var(--ia-line);

    background:var(--ia-bg);

}


/* INFORMACIÓN */

.mod-catalogo #modalDetalleProducto .col-md-8{

    padding:15px 20px;

}


/* TITULO PRODUCTO */

.mod-catalogo #modalDetalleProducto .col-md-8 h4{

    margin-top:0;

    margin-bottom:20px;

    line-height:1.3;

    color:var(--ia-text) !important;

}


/* CAMPOS */

.mod-catalogo #modalDetalleProducto .col-md-8 .mb-3{

    margin-bottom:18px !important;

}


/* TEXTO DE LOS CAMPOS */

.mod-catalogo #modalDetalleProducto .col-md-8 strong{

    color:var(--ia-accent);

    font-size:12px;

    text-transform:uppercase;

}


/* VALORES */

.mod-catalogo #modalDetalleProducto .col-md-8 strong + br{

    line-height:1.8;

}
/* =========================================================
   DETALLE PRODUCTO
========================================================= */

.mod-catalogo .detalle-producto-row{

    align-items:flex-start;

}


/* IMAGEN */

.mod-catalogo .detalle-imagen{

    display:flex;

    justify-content:center;

    align-items:flex-start;

    padding:15px;

}


.mod-catalogo .detalle-imagen img{

    display:block;

    width:300px;

    height:300px;

    max-width:100%;

    object-fit:contain;

    border-radius:10px;

    border:1px solid var(--ia-line);

    background:var(--ia-bg);

}


/* INFORMACION */

.mod-catalogo .detalle-informacion{

    padding:15px 20px;

}


.mod-catalogo .detalle-informacion h4{

    margin-top:0;

    padding-top:0;

    color:var(--ia-text) !important;

}


/* =========================================================
   MOVIL
========================================================= */

@media(max-width:767px){

    .mod-catalogo .detalle-imagen{

        padding-bottom:20px;

    }


    .mod-catalogo .detalle-imagen img{

        width:220px;

        height:220px;

    }


    .mod-catalogo .detalle-informacion{

        padding:15px;

    }

}

/* =====================================================
   SELECT MULTIPLE - EQUIPOS Y PLANTILLAS
===================================================== */

.mod-catalogo #plantillas,
.mod-catalogo #modal_id_equipo {

    min-height: 130px;

}


/* =====================================================
   OPCIONES
===================================================== */

.mod-catalogo #plantillas option,
.mod-catalogo #modal_id_equipo option {

    background: var(--ia-panel) !important;

    color: var(--ia-text) !important;

    padding: 5px;

}


/* =====================================================
   OPCION SELECCIONADA
===================================================== */

.mod-catalogo #plantillas option:checked,
.mod-catalogo #modal_id_equipo option:checked {

    background: var(--ia-info) !important;

    color: #fff !important;

}

/* v2.2: stock por bodega en el detalle del producto */
.mod-catalogo .detalle-stock-bodegas { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.mod-catalogo .detalle-stock-bodega {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 2px 8px; border-radius: 6px; font-size: 12px;
    background: rgb(var(--ia-accent-rgb) / .12); color: var(--ia-text);
    border: 1px solid rgb(var(--ia-accent-rgb) / .35);
}
.mod-catalogo .detalle-stock-bodega i { color: var(--ia-accent); }

/* v2.2: devolver el aspecto original (neutraliza el refinamiento global solo aquí) */
.mod-catalogo .card-header h4.mb-1 { font-size: 24px; font-weight: 600; color: var(--ia-text); }
.mod-catalogo #btnNuevoProducto {
    background: var(--ia-info) !important; border-color: var(--ia-info) !important;
    color: #fff !important; font-size: 16px; padding: 6px 12px;
}
.mod-catalogo #btnNuevoProducto i { color: #fff !important; }
.mod-catalogo #tablaProductos thead th {
    font-size: 11px !important; font-weight: 600 !important;
    text-transform: uppercase !important; letter-spacing: normal !important;
    color: var(--ia-accent) !important;
}
.mod-catalogo .badge.badge-primary { background: var(--ia-info) !important; color: #fff !important; }
.mod-catalogo .badge.badge-success { background: var(--ia-accent) !important; color: var(--ia-accent-d) !important; }
.mod-catalogo .badge.badge-primary i, .mod-catalogo .badge.badge-success i { color: inherit !important; }

/* Detalle del producto: código de barras del N° de serie (siempre sobre blanco para poder escanearlo) */
.mod-catalogo .detalle-codbar svg { display: block; max-width: 100%; height: auto; border-radius: 4px; }

/* ============================================================
   Módulo .mod-equipos_productos (convertido desde el CSS antiguo del módulo)
   ============================================================ */
/* =========================================================
   EQUIPOS Y PRODUCTOS
   SISTEMA CONTROL
   CSS PRINCIPAL
   TEMA OSCURO CORPORATIVO
========================================================= */


/* =========================================================
   VARIABLES
========================================================= */

.mod-equipos_productos {

    --fondo: var(--ia-bg);
    --fondo-principal: var(--ia-bg);

    --card: var(--ia-panel);
    --card-2: var(--ia-panel2);
    --card-3: var(--ia-panel2);

    --input: var(--ia-input-bg);
    --hover: var(--ia-panel2);

    --borde: var(--ia-line);
    --borde-claro: var(--ia-line);

    --texto: var(--ia-text);
    --texto-secundario: var(--ia-muted);
    --texto-muted: var(--ia-muted);

    --azul: var(--ia-accent);
    --azul-hover: var(--ia-accent-h);

    --turquesa: var(--ia-accent);
    --turquesa-hover: var(--ia-accent);

    --rojo: var(--ia-danger);
    --verde: var(--ia-success);
    --amarillo: var(--ia-warn);

}


/* =========================================================
   GENERAL
========================================================= */

.mod-equipos_productos,
.mod-equipos_productos {

    margin: 0;
    padding: 0;

    min-height: 100%;

    background: var(--fondo) !important;

    color: var(--texto) !important;

    font-family:
        "Segoe UI",
        Arial,
        Helvetica,
        sans-serif;

    font-size: 14px;

}


/* Evita fondos blancos heredados */

.mod-equipos_productos .container_B,
.mod-equipos_productos .container_B *,
.mod-equipos_productos .container-fluid {

    box-sizing: border-box;

}


/* =========================================================
   CONTENEDOR PRINCIPAL
========================================================= */

.mod-equipos_productos .container_B {

    min-height: 100vh;

    width: 100%;

    background: var(--fondo) !important;

    color: var(--texto) !important;

}


.mod-equipos_productos .container_B > .container-fluid {

    background: transparent !important;

}


/* =========================================================
   CARD PRINCIPAL
========================================================= */

.mod-equipos_productos .container_B > .container-fluid > .card {

    background: var(--card) !important;

    border: 1px solid var(--borde) !important;

    border-radius: 10px !important;

    box-shadow:
        0 5px 20px rgba(0, 0, 0, .35) !important;

    overflow: hidden;

}


/* =========================================================
   HEADER PRINCIPAL
========================================================= */

.mod-equipos_productos .container_B > .container-fluid > .card > .card-header {

    background: var(--card-2) !important;

    color: var(--ia-text) !important;

    border-bottom:
        1px solid var(--borde) !important;

    padding: 16px 20px;

}


.mod-equipos_productos .container_B .card-header h4 {

    margin: 0;

    color: var(--ia-text) !important;

    font-size: 20px;

    font-weight: 700;

}


.mod-equipos_productos .container_B .card-header small {

    color:
        var(--texto-secundario) !important;

}


/* =========================================================
   CARD BODY
========================================================= */

.mod-equipos_productos .container_B .card-body {

    background: var(--card) !important;

    color: var(--texto) !important;

}


/* =========================================================
   PANELES
========================================================= */

.mod-equipos_productos .panel-equipos,
.mod-equipos_productos .panel-detalle {

    background:
        var(--card) !important;

    border:
        1px solid var(--borde) !important;

    border-radius:
        10px !important;

    overflow: hidden;

}


/* =========================================================
   TITULO PANEL
========================================================= */

.mod-equipos_productos .panel-titulo {

    display: flex;

    align-items: center;

    justify-content: space-between;

    min-height: 50px;

    padding:
        13px 15px;

    background:
        var(--card-2) !important;

    color: var(--ia-text) !important;

    border-bottom:
        1px solid var(--borde) !important;

    font-size: 15px;

    font-weight: 700;

}


.mod-equipos_productos .panel-titulo i {

    margin-right: 7px;

    color:
        var(--turquesa) !important;

}


/* =========================================================
   BUSCADOR EQUIPOS
========================================================= */

.mod-equipos_productos .buscador-equipo {

    position: relative;

    padding: 12px;

    background:
        var(--card) !important;

}


.mod-equipos_productos .buscador-equipo i {

    position: absolute;

    left: 24px;

    top: 50%;

    transform:
        translateY(-50%);

    color:
        var(--ia-muted) !important;

    font-size: 13px;

    z-index: 5;

}


.mod-equipos_productos .buscador-equipo input {

    width: 100%;

    padding-left: 36px !important;

}


/* =========================================================
   INPUTS
========================================================= */

.mod-equipos_productos .container_B .form-control {

    height: 38px;

    background:
        var(--input) !important;

    color:
        var(--ia-text) !important;

    border:
        1px solid var(--borde-claro) !important;

    border-radius:
        7px !important;

    box-shadow:
        none !important;

}


.mod-equipos_productos .container_B .form-control::placeholder {

    color:
        var(--ia-muted) !important;

    opacity: 1;

}


.mod-equipos_productos .container_B .form-control:focus {

    background:
        var(--input) !important;

    color:
        var(--ia-text) !important;

    border-color:
        var(--turquesa) !important;

    box-shadow:
        0 0 0 3px
        rgb(var(--ia-accent-rgb) / .12) !important;

}


/* =========================================================
   SELECT
========================================================= */

.mod-equipos_productos .container_B select.form-control {

    background:
        var(--input) !important;

    color:
        var(--ia-text) !important;

}


.mod-equipos_productos .container_B select.form-control option {

    background:
        var(--card) !important;

    color:
        var(--ia-text) !important;

}


/* =========================================================
   LISTA EQUIPOS
========================================================= */

.mod-equipos_productos .lista-equipos {

    max-height: 650px;

    overflow-y: auto;

    background:
        var(--card) !important;

}


/* =========================================================
   EQUIPO
========================================================= */

.mod-equipos_productos .equipo-item {

    position: relative;

    display: flex;

    align-items: center;

    width: 100%;

    min-height: 75px;

    padding:
        12px 13px;

    background:
        var(--card) !important;

    color:
        var(--texto) !important;

    border: 0 !important;

    border-bottom:
        1px solid var(--ia-line) !important;

    cursor: pointer;

    transition:
        background .15s ease,
        border .15s ease;

}


.mod-equipos_productos .equipo-item:hover {

    background:
        var(--hover) !important;

}


/* =========================================================
   EQUIPO ACTIVO
========================================================= */

.mod-equipos_productos .equipo-item.activo {

    background:
        rgb(var(--ia-accent-rgb) / .14) !important;

    border-left:
        4px solid var(--turquesa) !important;

    padding-left:
        9px;

}


.mod-equipos_productos .equipo-item.activo:hover {

    background:
        rgb(var(--ia-accent-rgb) / .14) !important;

}


/* =========================================================
   ICONO EQUIPO
========================================================= */

.mod-equipos_productos .equipo-item-icon {

    width: 43px;

    height: 43px;

    min-width: 43px;

    display: flex;

    align-items: center;

    justify-content: center;

    margin-right: 11px;

    border-radius: 9px;

    background:
        var(--card-3) !important;

    color:
        var(--turquesa) !important;

    font-size: 17px;

}


.mod-equipos_productos .equipo-item.activo .equipo-item-icon {

    background:
        var(--turquesa) !important;

    color:
        var(--ia-accent-d) !important;

}


/* =========================================================
   INFORMACION EQUIPO
========================================================= */

.mod-equipos_productos .equipo-item-info {

    min-width: 0;

    flex: 1;

}


.mod-equipos_productos .equipo-item-nombre {

    color:
        var(--ia-text) !important;

    font-size: 14px;

    font-weight: 700;

    white-space: nowrap;

    overflow: hidden;

    text-overflow: ellipsis;

}


.mod-equipos_productos .equipo-item-sistema {

    margin-top: 3px;

    color:
        var(--turquesa) !important;

    font-size: 11px;

}


.mod-equipos_productos .equipo-item-descripcion {

    margin-top: 2px;

    color:
        var(--texto-muted) !important;

    font-size: 11px;

    white-space: nowrap;

    overflow: hidden;

    text-overflow: ellipsis;

}


/* =========================================================
   CANTIDAD EQUIPO
========================================================= */

.mod-equipos_productos .equipo-item-cantidad {

    margin-left: 10px;

}


.mod-equipos_productos .equipo-item-cantidad .badge {

    min-width: 27px;

    padding:
        5px 8px;

    background:
        var(--azul) !important;

    color:
        var(--ia-accent-d) !important;

    border-radius:
        20px;

}


/* =========================================================
   ESTADOS LISTA
========================================================= */

.mod-equipos_productos .equipos-loading,
.mod-equipos_productos .equipos-vacio {

    padding:
        35px 20px;

    text-align: center;

    background:
        var(--card) !important;

    color:
        var(--texto-muted) !important;

}


.mod-equipos_productos .equipos-loading i {

    color:
        var(--turquesa) !important;

    margin-bottom: 8px;

}


.mod-equipos_productos .equipos-vacio i {

    display: block;

    margin-bottom: 12px;

    color:
        var(--ia-muted) !important;

    font-size: 30px;

}


.mod-equipos_productos .equipos-vacio h6 {

    margin-bottom: 5px;

    color:
        var(--ia-text) !important;

    font-weight: 700;

}


.mod-equipos_productos .equipos-vacio p {

    margin: 0;

    color:
        var(--texto-muted) !important;

    font-size: 12px;

}


/* =========================================================
   SIN EQUIPO
========================================================= */

.mod-equipos_productos .sin-equipo {

    min-height: 550px;

    display: flex;

    flex-direction: column;

    align-items: center;

    justify-content: center;

    padding: 30px;

    text-align: center;

    background:
        var(--card) !important;

}


.mod-equipos_productos .sin-equipo > i {

    width: 76px;

    height: 76px;

    display: flex;

    align-items: center;

    justify-content: center;

    margin-bottom: 18px;

    border-radius: 50%;

    background:
        var(--card-3) !important;

    color:
        var(--turquesa) !important;

    font-size: 30px;

}


.mod-equipos_productos .sin-equipo h5 {

    margin-bottom: 8px;

    color:
        var(--ia-text) !important;

    font-weight: 700;

}


.mod-equipos_productos .sin-equipo p {

    color:
        var(--texto-muted) !important;

}


/* =========================================================
   DETALLE EQUIPO HEADER
========================================================= */

.mod-equipos_productos .detalle-equipo-header {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 15px;

    padding:
        16px 20px;

    background:
        var(--card-2) !important;

    border-bottom:
        1px solid var(--borde) !important;

}


.mod-equipos_productos .detalle-equipo-label {

    margin-bottom: 3px;

    color:
        var(--turquesa) !important;

    font-size: 10px;

    font-weight: 700;

    letter-spacing: .5px;

    text-transform: uppercase;

}


.mod-equipos_productos .detalle-equipo-header h4 {

    margin: 0;

    color:
        var(--ia-text) !important;

    font-weight: 700;

}


.mod-equipos_productos .descripcion-equipo {

    margin-top: 4px;

    color:
        var(--texto-muted) !important;

    font-size: 12px;

}


/* =========================================================
   INFORMACION EQUIPO
========================================================= */

.mod-equipos_productos .info-equipo {

    padding:
        12px;

    background:
        var(--input) !important;

    border:
        1px solid var(--borde-claro) !important;

    border-radius:
        8px;

}


.mod-equipos_productos .info-equipo span {

    display: block;

    margin-bottom: 4px;

    color:
        var(--turquesa) !important;

    font-size: 10px;

    font-weight: 700;

    text-transform: uppercase;

}


.mod-equipos_productos .info-equipo strong {

    display: block;

    color:
        var(--ia-text) !important;

    font-size: 14px;

}


/* =========================================================
   PRODUCTOS ASIGNADOS
========================================================= */

.mod-equipos_productos .productos-asignados {

    width: 100%;

    padding:
        20px 20px 35px;

    background:
        var(--card) !important;

}


/* =========================================================
   HEADER PRODUCTOS
========================================================= */

.mod-equipos_productos .productos-header {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 10px;

    padding:
        10px 0;

    color:
        var(--ia-text) !important;

    font-size: 15px;

    font-weight: 700;

}


.mod-equipos_productos .productos-header i {

    margin-right: 7px;

    color:
        var(--turquesa) !important;

}


/* =========================================================
   BUSCADOR PRODUCTOS
========================================================= */

.mod-equipos_productos .buscador-producto {

    position: relative;

}


.mod-equipos_productos .buscador-producto i {

    position: absolute;

    left: 13px;

    top: 50%;

    transform:
        translateY(-50%);

    color:
        var(--ia-muted) !important;

    z-index: 5;

}


.mod-equipos_productos .buscador-producto input {

    padding-left:
        36px !important;

}


/* =========================================================
   TABLA PRODUCTOS EQUIPO
========================================================= */

.mod-equipos_productos .table-responsive {

    width: 100%;

    background:
        var(--card) !important;

    border: 0 !important;

}


/* =========================================================
   TABLA
========================================================= */

.mod-equipos_productos #tablaProductosEquipo {

    width: 100% !important;

    margin: 0 !important;

    background:
        var(--card) !important;

    color:
        var(--ia-text) !important;

    font-size: 12px;

    border-collapse:
        separate;

    border-spacing:
        0;

}


.mod-equipos_productos #tablaProductosEquipo thead th {

    padding:
        11px 10px;

    background:
        var(--ia-bg) !important;

    color:
        var(--turquesa) !important;

    border-top:
        0 !important;

    border-bottom:
        1px solid var(--ia-line) !important;

    font-size: 10px;

    font-weight: 700;

    text-transform:
        uppercase;

    white-space:
        nowrap;

}


.mod-equipos_productos #tablaProductosEquipo tbody td {

    padding:
        9px 10px;

    background:
        var(--card) !important;

    color:
        var(--ia-text) !important;

    border-top:
        1px solid var(--ia-line) !important;

    vertical-align:
        middle !important;

}


.mod-equipos_productos #tablaProductosEquipo tbody tr:nth-child(even) td {

    background:
        var(--ia-panel) !important;

}


.mod-equipos_productos #tablaProductosEquipo tbody tr:hover td {

    background:
        var(--hover) !important;

    color:
        var(--ia-text) !important;

}


/* =========================================================
   COLUMNA FOTO
========================================================= */

.mod-equipos_productos #tablaProductosEquipo .foto-columna {

    width:
        105px !important;

    min-width:
        105px !important;

    padding:
        8px 10px !important;

    text-align:
        center !important;

    vertical-align:
        middle !important;

}


/* =========================================================
   FOTO
========================================================= */

.mod-equipos_productos .foto-producto-contenedor {

    width:
        85px;

    height:
        85px;

    display:
        flex;

    align-items:
        center;

    justify-content:
        center;

    margin:
        auto;

    position:
        relative;

}


/* =========================================================
   FOTO PRODUCTO
========================================================= */

.mod-equipos_productos .fotoProducto,
.mod-equipos_productos .sinFoto {

    width:
        75px;

    height:
        75px;

    display:
        flex;

    align-items:
        center;

    justify-content:
        center;

    border-radius:
        9px;

    object-fit:
        cover;

    background:
        var(--input) !important;

    border:
        1px solid var(--borde-claro) !important;

}


.mod-equipos_productos .fotoProducto {

    cursor:
        zoom-in;

    transition:
        transform .2s ease,
        box-shadow .2s ease,
        border-color .2s ease;

}


.mod-equipos_productos .fotoProducto:hover {

    transform:
        scale(2);

    border-color:
        var(--turquesa) !important;

    box-shadow:
        0 8px 25px rgba(0, 0, 0, .75);

    position:
        relative;

    z-index:
        9999;

}


.mod-equipos_productos .sinFoto {

    color:
        var(--ia-muted) !important;

    font-size:
        22px;

}


/* =========================================================
   TEXTOS PRODUCTO
========================================================= */

.mod-equipos_productos .producto-nombre {

    color:
        var(--ia-text) !important;

    font-weight:
        600;

}


.mod-equipos_productos .producto-modelo {

    color:
        var(--texto-secundario) !important;

    font-size:
        11px;

}


.mod-equipos_productos .producto-serie {

    color:
        var(--turquesa) !important;

    font-family:
        monospace;

    font-size:
        11px;

}


/* =========================================================
   BADGES
========================================================= */

.mod-equipos_productos #tablaProductosEquipo .badge,
.mod-equipos_productos #tablaProductosDisponibles .badge {

    display:
        inline-block;

    padding:
        5px 8px;

    border-radius:
        5px;

    font-size:
        10px;

    font-weight:
        600;

}


.mod-equipos_productos .badge-primary {

    background:
        var(--azul) !important;

    color:
        var(--ia-accent-d) !important;

}


.mod-equipos_productos .badge-success {

    background:
        var(--verde) !important;

    color:
        var(--ia-text) !important;

}


/* =========================================================
   BOTON DESVINCULAR
========================================================= */

.mod-equipos_productos .btn-quitar-producto,
.mod-equipos_productos .btn-desvincular-producto {

    width:
        31px;

    height:
        31px;

    display:
        inline-flex;

    align-items:
        center;

    justify-content:
        center;

    padding:
        0 !important;

    border:
        1px solid var(--rojo) !important;

    border-radius:
        50% !important;

    background:
        transparent !important;

    color:
        var(--rojo) !important;

    font-size:
        12px;

    transition:
        .15s ease;

}


.mod-equipos_productos .btn-quitar-producto:hover,
.mod-equipos_productos .btn-desvincular-producto:hover {

    background:
        var(--rojo) !important;

    color:
        var(--ia-text) !important;

    transform:
        scale(1.1);

    box-shadow:
        0 3px 10px
        rgb(var(--ia-danger-rgb) / .35);

}


.mod-equipos_productos .btn-desvincular-producto:focus,
.mod-equipos_productos .btn-quitar-producto:focus {

    outline:
        none !important;

    box-shadow:
        0 0 0 3px
        rgb(var(--ia-danger-rgb) / .15) !important;

}


/* =========================================================
   SIN PRODUCTOS
========================================================= */

.mod-equipos_productos .sin-productos,
.mod-equipos_productos .sin-resultados-productos {

    padding:
        40px 20px;

    text-align:
        center;

    background:
        var(--card) !important;

    color:
        var(--texto-muted) !important;

}


.mod-equipos_productos .sin-productos i,
.mod-equipos_productos .sin-resultados-productos i {

    display:
        block;

    margin-bottom:
        12px;

    color:
        var(--ia-muted) !important;

    font-size:
        30px;

}


.mod-equipos_productos .sin-productos h6,
.mod-equipos_productos .sin-resultados-productos h6 {

    margin-bottom:
        5px;

    color:
        var(--ia-text) !important;

    font-weight:
        700;

}


.mod-equipos_productos .sin-productos p,
.mod-equipos_productos .sin-resultados-productos p {

    margin:
        0;

    color:
        var(--texto-muted) !important;

    font-size:
        12px;

}


/* =========================================================
   MODALES
========================================================= */

.mod-equipos_productos .modal-content {

    background:
        var(--card) !important;

    color:
        var(--texto) !important;

    border:
        1px solid var(--borde-claro) !important;

    border-radius:
        10px !important;

    box-shadow:
        0 15px 45px rgba(0, 0, 0, .65);

}


.mod-equipos_productos .modal-header {

    padding:
        14px 18px;

    background:
        var(--card-2) !important;

    color:
        var(--ia-text) !important;

    border-bottom:
        1px solid var(--borde-claro) !important;

}


.mod-equipos_productos .modal-title {

    color:
        var(--ia-text) !important;

    font-weight:
        700;

}


.mod-equipos_productos .modal-title i {

    margin-right:
        6px;

    color:
        var(--turquesa) !important;

}


.mod-equipos_productos .modal-body {

    background:
        var(--card) !important;

    color:
        var(--texto) !important;

}


.mod-equipos_productos .modal-footer {

    background:
        var(--ia-bg) !important;

    border-top:
        1px solid var(--borde-claro) !important;

}


/* =========================================================
   LABELS
========================================================= */

.mod-equipos_productos .modal label {

    color:
        var(--texto-secundario) !important;

    font-size:
        12px;

    font-weight:
        600;

}


.mod-equipos_productos .modal .form-text {

    color:
        var(--texto-muted) !important;

}


/* =========================================================
   INPUTS MODAL
========================================================= */

.mod-equipos_productos .modal .form-control {

    background:
        var(--input) !important;

    color:
        var(--ia-text) !important;

    border:
        1px solid var(--borde-claro) !important;

}


.mod-equipos_productos .modal .form-control:focus {

    border-color:
        var(--turquesa) !important;

    box-shadow:
        0 0 0 3px
        rgb(var(--ia-accent-rgb) / .12) !important;

}


/* =========================================================
   SELECT MODAL
========================================================= */

.mod-equipos_productos .modal select.form-control {

    background:
        var(--input) !important;

    color:
        var(--ia-text) !important;

}


.mod-equipos_productos .modal select.form-control option {

    background:
        var(--card) !important;

    color:
        var(--ia-text) !important;

}


/* =========================================================
   FILTROS PRODUCTOS
========================================================= */

.mod-equipos_productos .filtros-productos {

    margin-bottom:
        15px;

}


.mod-equipos_productos .filtros-productos label {

    color:
        var(--texto-secundario) !important;

}


.mod-equipos_productos .filtros-productos .form-control {

    height:
        38px;

}


/* =========================================================
   BARRA SELECCION
========================================================= */

.mod-equipos_productos .barra-seleccion {

    display:
        flex;

    align-items:
        center;

    justify-content:
        space-between;

    gap:
        15px;

    margin-top:
        8px;

    padding:
        10px 12px;

    background:
        rgb(var(--ia-accent-rgb) / .14) !important;

    border:
        1px solid rgb(var(--ia-accent-rgb) / .45) !important;

    border-radius:
        7px;

    color:
        var(--ia-text) !important;

    font-size:
        12px;

}


.mod-equipos_productos .barra-seleccion i {

    color:
        var(--turquesa) !important;

}


.mod-equipos_productos .barra-seleccion strong {

    color:
        var(--turquesa) !important;

}


/* =========================================================
   TABLA PRODUCTOS DISPONIBLES
========================================================= */

.mod-equipos_productos .tabla-productos-modal {

    max-height:
        440px;

    overflow:
        auto;

    border:
        1px solid var(--borde) !important;

    border-radius:
        8px;

    background:
        var(--card) !important;

}


.mod-equipos_productos #tablaProductosDisponibles {

    width:
        100% !important;

    margin:
        0 !important;

    background:
        var(--card) !important;

    color:
        var(--ia-text) !important;

    font-size:
        12px;

}


.mod-equipos_productos #tablaProductosDisponibles thead th {

    position:
        sticky;

    top:
        0;

    z-index:
        5;

    padding:
        10px;

    background:
        var(--ia-bg) !important;

    color:
        var(--turquesa) !important;

    border-bottom:
        1px solid var(--ia-line) !important;

    font-size:
        10px;

    text-transform:
        uppercase;

}


.mod-equipos_productos #tablaProductosDisponibles tbody td {

    padding:
        8px 10px;

    background:
        var(--card) !important;

    color:
        var(--ia-text) !important;

    border-top:
        1px solid var(--ia-line) !important;

    vertical-align:
        middle;

}


.mod-equipos_productos #tablaProductosDisponibles tbody tr:nth-child(even) td {

    background:
        var(--ia-panel) !important;

}


.mod-equipos_productos #tablaProductosDisponibles tbody tr:hover td {

    background:
        var(--hover) !important;

    color:
        var(--ia-text) !important;

}


.mod-equipos_productos #tablaProductosDisponibles strong {

    color:
        var(--ia-text) !important;

}


/* =========================================================
   CHECKBOX
========================================================= */

.mod-equipos_productos .check-producto,
.mod-equipos_productos #seleccionarTodosProductos {

    width:
        16px;

    height:
        16px;

    cursor:
        pointer;

    accent-color:
        var(--turquesa);

}


/* =========================================================
   CONTADOR
========================================================= */

.mod-equipos_productos #contadorSeleccionados,
.mod-equipos_productos #contadorSeleccionadosFooter {

    color:
        var(--turquesa) !important;

    font-weight:
        700;

}


.mod-equipos_productos .contador-seleccionados {

    color:
        var(--texto-secundario) !important;

}


/* =========================================================
   LOADING PRODUCTOS
========================================================= */

.mod-equipos_productos .loading-productos {

    padding:
        25px;

    text-align:
        center;

    background:
        var(--card) !important;

    color:
        var(--texto-muted) !important;

}


.mod-equipos_productos .loading-productos i {

    color:
        var(--turquesa) !important;

}


/* =========================================================
   ESTADO EQUIPO
========================================================= */

.mod-equipos_productos .estado-equipo {

    padding:
        10px 12px;

    background:
        var(--input) !important;

    border:
        1px solid var(--borde-claro) !important;

    border-radius:
        8px;

    color:
        var(--texto-secundario) !important;

}


.mod-equipos_productos .estado-equipo label {

    color:
        var(--texto-secundario) !important;

}


/* =========================================================
   ARCHIVOS
========================================================= */

.mod-equipos_productos .modal input[type="file"] {

    background:
        var(--input) !important;

    color:
        var(--texto-secundario) !important;

    border:
        1px solid var(--borde-claro) !important;

}


.mod-equipos_productos .modal input[type="file"]::file-selector-button {

    background:
        var(--card-3);

    color:
        var(--ia-text);

    border:
        0;

    border-right:
        1px solid var(--borde-claro);

    padding:
        6px 10px;

    margin-right:
        10px;

    cursor:
        pointer;

}


/* =========================================================
   SWITCH BOOTSTRAP
========================================================= */

.mod-equipos_productos .modal .custom-control-label {

    color:
        var(--texto-secundario) !important;

}


/* =========================================================
   BOTONES
========================================================= */

.mod-equipos_productos .container_B .btn {

    border-radius:
        7px;

    font-weight:
        500;

}


.mod-equipos_productos .container_B .btn-primary {

    background:
        var(--azul) !important;

    border-color:
        var(--azul) !important;

    color:
        var(--ia-accent-d) !important;

}


.mod-equipos_productos .container_B .btn-primary:hover {

    background:
        var(--azul-hover) !important;

    border-color:
        var(--azul-hover) !important;

}


.mod-equipos_productos .container_B .btn-success {

    background:
        var(--turquesa) !important;

    border-color:
        var(--turquesa) !important;

    color:
        var(--ia-accent-d) !important;

}


.mod-equipos_productos .container_B .btn-success:hover {

    background:
        var(--turquesa-hover) !important;

    border-color:
        var(--turquesa-hover) !important;

}


.mod-equipos_productos .container_B .btn-danger {

    background:
        var(--rojo) !important;

    border-color:
        var(--rojo) !important;

    color:
        var(--ia-text) !important;

}


.mod-equipos_productos .container_B .btn-outline-secondary {

    background:
        transparent !important;

    color:
        var(--texto-secundario) !important;

    border-color:
        var(--ia-line) !important;

}


.mod-equipos_productos .container_B .btn-outline-secondary:hover {

    background:
        var(--ia-muted) !important;

    color:
        var(--ia-text) !important;

}


/* =========================================================
   DROPDOWN
========================================================= */

.mod-equipos_productos .dropdown-menu {

    background:
        var(--card) !important;

    border:
        1px solid var(--borde-claro) !important;

}


.mod-equipos_productos .dropdown-item {

    color:
        var(--ia-text) !important;

}


.mod-equipos_productos .dropdown-item:hover {

    background:
        var(--hover) !important;

    color:
        var(--ia-text) !important;

}


/* =========================================================
   TEXTOS BOOTSTRAP
========================================================= */

.mod-equipos_productos .container_B .text-muted {

    color:
        var(--texto-muted) !important;

}


.mod-equipos_productos .container_B .text-secondary {

    color:
        var(--texto-secundario) !important;

}


.mod-equipos_productos .container_B .text-dark {

    color:
        var(--ia-text) !important;

}


/* =========================================================
   SCROLL
========================================================= */

.mod-equipos_productos .lista-equipos::-webkit-scrollbar,
.mod-equipos_productos .tabla-productos-modal::-webkit-scrollbar {

    width:
        8px;

    height:
        8px;

}


.mod-equipos_productos .lista-equipos::-webkit-scrollbar-track,
.mod-equipos_productos .tabla-productos-modal::-webkit-scrollbar-track {

    background:
        var(--ia-bg);

}


.mod-equipos_productos .lista-equipos::-webkit-scrollbar-thumb,
.mod-equipos_productos .tabla-productos-modal::-webkit-scrollbar-thumb {

    background:
        var(--ia-line);

    border-radius:
        10px;

}


.mod-equipos_productos .lista-equipos::-webkit-scrollbar-thumb:hover,
.mod-equipos_productos .tabla-productos-modal::-webkit-scrollbar-thumb:hover {

    background:
        var(--ia-muted);

}


/* =========================================================
   RESPONSIVE 992
========================================================= */

@media (max-width: 992px) {

    .mod-equipos_productos .detalle-equipo-header {

        flex-direction:
            column;

        align-items:
            flex-start;

    }


    .mod-equipos_productos .detalle-equipo-header > div:last-child {

        width:
            100%;

    }


    .mod-equipos_productos #tablaProductosEquipo,
    .mod-equipos_productos #tablaProductosDisponibles {

        min-width:
            850px;

    }


    .mod-equipos_productos .table-responsive {

        overflow-x:
            auto !important;

    }


    .mod-equipos_productos .fotoProducto,
    .mod-equipos_productos .sinFoto {

        width:
            70px;

        height:
            70px;

    }

}


/* =========================================================
   RESPONSIVE 768
========================================================= */

@media (max-width: 768px) {

    .mod-equipos_productos .container_B > .container-fluid {

        padding:
            10px !important;

    }


    .mod-equipos_productos .detalle-equipo-header {

        padding:
            14px;

    }


    .mod-equipos_productos .productos-asignados {

        padding:
            15px 12px 25px;

    }


    .mod-equipos_productos .barra-seleccion {

        flex-direction:
            column;

        align-items:
            flex-start;

    }


    .mod-equipos_productos .sin-equipo {

        min-height:
            400px;

    }


    .mod-equipos_productos #tablaProductosEquipo,
    .mod-equipos_productos #tablaProductosDisponibles {

        min-width:
            850px;

    }


    .mod-equipos_productos .fotoProducto,
    .mod-equipos_productos .sinFoto {

        width:
            65px;

        height:
            65px;

    }

}


/* =========================================================
   RESPONSIVE 576
========================================================= */

@media (max-width: 576px) {

    .mod-equipos_productos .container_B > .container-fluid {

        padding:
            6px !important;

    }


    .mod-equipos_productos .container_B .card-header h4 {

        font-size:
            17px;

    }


    .mod-equipos_productos .panel-titulo {

        padding:
            12px;

    }


    .mod-equipos_productos .detalle-equipo-header {

        padding:
            12px;

    }


    .mod-equipos_productos .productos-header {

        font-size:
            14px;

    }


    .mod-equipos_productos .fotoProducto,
    .mod-equipos_productos .sinFoto {

        width:
            55px;

        height:
            55px;

    }


    .mod-equipos_productos #tablaProductosEquipo .foto-columna {

        width:
            80px !important;

        min-width:
            80px !important;

        padding:
            6px !important;

    }


    .mod-equipos_productos .btn-desvincular-producto,
    .mod-equipos_productos .btn-quitar-producto {

        width:
            28px;

        height:
            28px;

    }

}
/* =========================================================
   MODAL AGREGAR PRODUCTOS - MÁS GRANDE
========================================================= */

/* Ancho general del modal */
.mod-equipos_productos #modalAgregarProductos .modal-dialog {
    max-width: 95%;
    width: 95%;
    margin: 1.5rem auto;
}

/* Contenido del modal */
.mod-equipos_productos #modalAgregarProductos .modal-content {
    min-height: 85vh;
}

/* Cuerpo del modal */
.mod-equipos_productos #modalAgregarProductos .modal-body {
    padding: 20px 25px;
}

/* Tabla de productos más alta */
.mod-equipos_productos #modalAgregarProductos .tabla-productos-modal {
    max-height: 60vh;
}

/* Tabla */
.mod-equipos_productos #modalAgregarProductos #tablaProductosDisponibles {
    font-size: 13px;
}

/* Celdas */
.mod-equipos_productos #modalAgregarProductos #tablaProductosDisponibles thead th {
    padding: 12px 10px;
    font-size: 11px;
}

.mod-equipos_productos #modalAgregarProductos #tablaProductosDisponibles tbody td {
    padding: 10px;
}

/* =========================================================
   MODAL EQUIPO TAMBIÉN UN POCO MÁS GRANDE
========================================================= */

.mod-equipos_productos #modalEquipo .modal-dialog {
    max-width: 700px;
    width: 95%;
}


/* =========================================================
   RESPONSIVE
========================================================= */

@media (max-width: 992px) {

    .mod-equipos_productos #modalAgregarProductos .modal-dialog {
        max-width: 98%;
        width: 98%;
        margin: 10px auto;
    }

    .mod-equipos_productos #modalAgregarProductos .modal-content {
        min-height: auto;
    }

    .mod-equipos_productos #modalAgregarProductos .tabla-productos-modal {
        max-height: 55vh;
    }
}


@media (max-width: 576px) {

    .mod-equipos_productos #modalAgregarProductos .modal-dialog {
        max-width: 100%;
        width: 100%;
        margin: 0;
    }

    .mod-equipos_productos #modalAgregarProductos .modal-content {
        min-height: 100vh;
        border-radius: 0;
    }

    .mod-equipos_productos #modalAgregarProductos .modal-body {
        padding: 15px;
    }

}


/* v2.2: botones azules y título como el original */
.mod-equipos_productos .container_B .btn-primary { background: var(--ia-info) !important; border-color: var(--ia-info) !important; color: #fff !important; }
.mod-equipos_productos .container_B .btn-primary i { color: #fff !important; }
.mod-equipos_productos .container_B .card-header h4.mb-1 { font-size: 21px; font-weight: 700; }
/* ============================================================
   Pantallas de bodega restauradas (v2.2): Traspaso de Bodegas,
   Recepción de Traspaso, Insumos y Repuestos de OT y Recepción de
   productos. El original cargaba Bootstrap 4.6 encima del sistema,
   por eso aquí, SOLO dentro de esas pantallas, se deja sin efecto el
   refinamiento visual global (_90/_91: botones, insignias, tablas,
   formularios y modales) y se vuelve a los tamaños del original.
   Las reglas propias de cada pantalla vienen después
   (_43_catalogo_ot.css, _43_recepcion.css, _43_traspaso.css).
   ============================================================ */

:where(.mod-traspaso .catalogo-page, .mod-traspaso #modalQRTraspaso, .mod-traspaso .recepcion-page,
    .mod-catalogo_ot .catalogo-page, .mod-catalogo_ot #modalRecepcion, body.mod-recepcion) {
    font-size: 16px;
    line-height: 1.5;
}

/* ---------- Botones (Bootstrap 4) ---------- */
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .btn {
    display: inline-block;
    gap: 0;
    min-height: 0;
    padding: 6px 12px;
    font-size: 16px;
    font-weight: 400;
    line-height: 1.5;
    letter-spacing: normal;
    border-radius: 4px;
}
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .btn-sm {
    min-width: 0;
    min-height: 0;
    padding: 4px 8px;
    font-size: 14px;
    border-radius: 3.2px;
}
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .btn-lg {
    min-height: 0;
    padding: 8px 16px;
    font-size: 20px;
    border-radius: 4.8px;
}
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .btn > :is(i, .fa, .fas, .far) {
    font-size: inherit;
}
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .btn > i.mr-1 { margin-right: 4px !important; }
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .btn > i.mr-2 { margin-right: 8px !important; }
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .btn:active { transform: none; }

/* ---------- Insignias ---------- */
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .badge {
    padding: .25em .4em;
    font-size: 75%;
    font-weight: 700;
    letter-spacing: normal;
    border-radius: 4px;
}
/* colores de Bootstrap en tema verde (claro/oscuro mantienen los tonos del tema) */
:where(:root[data-tema="verde"], :root:not([data-tema])) :is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .badge-danger  { background: #dc3545 !important; color: #fff !important; }
:where(:root[data-tema="verde"], :root:not([data-tema])) :is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .badge-success { background: #28a745 !important; color: #fff !important; }
:where(:root[data-tema="verde"], :root:not([data-tema])) :is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .badge-warning { background: #ffc107 !important; color: #212529 !important; }
:where(:root[data-tema="verde"], :root:not([data-tema])) :is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .badge-info    { background: #17a2b8 !important; color: #fff !important; }

/* ---------- Formularios ---------- */
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .form-control {
    min-height: 0;
    padding: 6px 12px;
    font-size: 16px;
    border-radius: 4px;
}
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .form-control-sm {
    padding: 4px 8px;
    font-size: 14px;
    border-radius: 3.2px;
}
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) textarea.form-control {
    min-height: 0;
}
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) label {
    font-size: inherit;
    margin-bottom: 8px;
}

/* ---------- Tablas, paginación y buscador ---------- */
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, .recepcion-page, .recepcion-container) table tbody tr td {
    font-size: inherit;
}
:is(.mod-traspaso, .mod-catalogo_ot) .catalogo-page .page-link {
    margin: 0;
    min-width: 0;
    font-size: inherit;
    border-radius: 0 !important;
}
:is(.mod-traspaso, .mod-catalogo_ot) .catalogo-page .page-item:first-child .page-link { border-radius: 4px 0 0 4px !important; }
:is(.mod-traspaso, .mod-catalogo_ot) .catalogo-page .page-item:last-child .page-link  { border-radius: 0 4px 4px 0 !important; }
:is(.mod-traspaso, .mod-catalogo_ot) .catalogo-page .dataTables_wrapper .dataTables_filter input {
    min-height: 0;
    padding: 4px 8px;
}

/* ---------- Títulos y texto ---------- */
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) :is(h5, .h5) {
    font-size: 20px;
    font-weight: 500;
    letter-spacing: normal;
}
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) :is(small, .small) { font-size: 80%; }
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) :is(b, strong) { font-weight: bolder; }

/* ---------- Modales ---------- */
:is(.mod-traspaso, .mod-catalogo_ot) :is(#modalQRTraspaso, #modalRecepcion) .modal-title { font-size: 20px; font-weight: 500; }
:is(.mod-traspaso, .mod-catalogo_ot) :is(#modalQRTraspaso, #modalRecepcion) .modal-footer { gap: 0; }
:is(.mod-traspaso, .mod-catalogo_ot) :is(#modalQRTraspaso, #modalRecepcion) .modal-footer > * { margin: 4px !important; }
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, .recepcion-page, .recepcion-container) table thead th {
    letter-spacing: normal !important;
}

/* Botones de color de Bootstrap 4 en tema verde (como el original);
   en claro/oscuro se mantienen los colores del tema */
:where(:root[data-tema="verde"], :root:not([data-tema])) :is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .btn-success {
    color: #fff !important; background-color: #28a745 !important; border-color: #28a745 !important;
}
:where(:root[data-tema="verde"], :root:not([data-tema])) :is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .btn-success:hover {
    background-color: #218838 !important; border-color: #1e7e34 !important; filter: none;
}
:where(:root[data-tema="verde"], :root:not([data-tema])) :is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .btn-danger {
    color: #fff !important; background-color: #dc3545 !important; border-color: #dc3545 !important;
}
:where(:root[data-tema="verde"], :root:not([data-tema])) :is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .btn-outline-danger {
    color: #dc3545 !important; border-color: #dc3545 !important; background-color: transparent !important;
}
:where(:root[data-tema="verde"], :root:not([data-tema])) :is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion) :where(.catalogo-page, #modalQRTraspaso, #modalRecepcion, .recepcion-page, .recepcion-container) .btn-outline-danger:hover {
    color: #fff !important; background-color: #dc3545 !important;
}
/* ============================================================
   Módulo .mod-catalogo_ot — CSS ORIGINAL restaurado (v2.2)
   Colores: en tema verde valen exactamente los del original;
   en claro/oscuro usan las variables del tema (--ia-*).
   ============================================================ */
.mod-catalogo_ot {
    --cat-fondo: var(--ia-bg);
    --cat-fondo-2: var(--ia-bg);
    --cat-card: var(--ia-panel);
    --cat-card-2: var(--ia-panel2);
    --cat-input: var(--ia-input-bg);
    --cat-tabla: var(--ia-panel);
    --cat-tabla-hover: rgb(var(--ia-accent-rgb) / .08);
    --cat-borde: var(--ia-line);
    --cat-borde-verde: rgb(var(--ia-accent-rgb) / .45);
    --cat-verde: var(--ia-accent);
    --cat-verde-claro: var(--ia-accent-h);
    --cat-verde-oscuro: var(--ia-accent-b);
    --cat-turquesa: var(--ia-accent);
    --cat-turquesa-hover: var(--ia-accent-h);
    --cat-blanco: var(--ia-text);
    --cat-texto: var(--ia-text);
    --cat-secundario: var(--ia-text);
    --cat-muted: var(--ia-muted);
    --cat-rojo: var(--ia-danger);
    --cat-amarillo: var(--ia-warn);
    --cat-radius: 10px;
    --otc-rgb-0-200-83: var(--ia-accent-rgb);
    --otc-rgb-0-0-0: 0 0 0;
    --otc-d9ffe8-t: var(--ia-accent);
    --otc-fff4d0-t: var(--ia-warn);
    --otc-rgb-255-193-7: var(--ia-warn-rgb);
    --otc-b8ffda-t: var(--ia-accent);
    --otc-cbd5da-t: var(--ia-text);
    --otc-1a252c-f: var(--ia-panel2);
    --otc-35454d-b: var(--ia-line);
    --otc-ffe8a1-t: var(--ia-warn);
    --otc-8e9ba2-t: var(--ia-muted);
    --otc-0d181f-f: var(--ia-panel);
    --otc-000000-t: var(--ia-muted);
    --otc-ffffff-f: var(--ia-panel);
    --otc-16232b-f: var(--ia-panel);
    --otc-1d2b32-b: var(--ia-line);
    --otc-aeb9be-t: var(--ia-text);
    --otc-151f25-f: var(--ia-panel);
    --otc-ff6b7a-t: var(--ia-danger);
    --otc-80333d-b: var(--ia-danger);
    --otc-a92332-f: var(--ia-danger);
    --otc-c52e3d-b: var(--ia-danger);
    --otc-c8ffdd-t: var(--ia-accent);
    --otc-ff8792-t: var(--ia-danger);
    --otc-67313a-b: rgb(var(--ia-danger-rgb) / .45);
    --otc-0d171d-f: var(--ia-panel);
    --otc-cbd5d9-t: var(--ia-text);
    --otc-aebbc1-t: var(--ia-text);
    --otc-dbe3e7-t: var(--ia-text);
    --otc-64737a-t: var(--ia-muted);
    --otc-0a1318-f: var(--ia-bg);
    --otc-b7c3c8-t: var(--ia-text);
    --otc-091015-f: var(--ia-bg);
    --otc-30434c-f: var(--ia-panel2);
    --otc-sobre-ffffff: var(--ia-accent-d);
}
:root[data-tema="verde"] .mod-catalogo_ot,
:root:not([data-tema]) .mod-catalogo_ot {
    --cat-fondo: #080d12;
    --cat-fondo-2: #0b1218;
    --cat-card: #101920;
    --cat-card-2: #121e26;
    --cat-input: #0b141a;
    --cat-tabla: #0c151b;
    --cat-tabla-hover: #13231d;
    --cat-borde: #263942;
    --cat-borde-verde: #087f46;
    --cat-verde: #00c853;
    --cat-verde-claro: #00e676;
    --cat-verde-oscuro: #087f46;
    --cat-turquesa: #00d9a6;
    --cat-turquesa-hover: #00b889;
    --cat-blanco: #ffffff;
    --cat-texto: #f4f7f8;
    --cat-secundario: #c7d2d7;
    --cat-muted: #9eacb3;
    --cat-rojo: #dc3545;
    --cat-amarillo: #ffc107;
    --cat-radius: 10px;
    --otc-rgb-0-200-83: 0 200 83;
    --otc-rgb-0-0-0: 0 0 0;
    --otc-d9ffe8-t: #d9ffe8;
    --otc-fff4d0-t: #fff4d0;
    --otc-rgb-255-193-7: 255 193 7;
    --otc-b8ffda-t: #b8ffda;
    --otc-cbd5da-t: #cbd5da;
    --otc-1a252c-f: #1a252c;
    --otc-35454d-b: #35454d;
    --otc-ffe8a1-t: #ffe8a1;
    --otc-8e9ba2-t: #8e9ba2;
    --otc-0d181f-f: #0d181f;
    --otc-000000-t: #000000;
    --otc-ffffff-f: #ffffff;
    --otc-16232b-f: #16232b;
    --otc-1d2b32-b: #1d2b32;
    --otc-aeb9be-t: #aeb9be;
    --otc-151f25-f: #151f25;
    --otc-ff6b7a-t: #ff6b7a;
    --otc-80333d-b: #80333d;
    --otc-a92332-f: #a92332;
    --otc-c52e3d-b: #c52e3d;
    --otc-c8ffdd-t: #c8ffdd;
    --otc-ff8792-t: #ff8792;
    --otc-67313a-b: #67313a;
    --otc-0d171d-f: #0d171d;
    --otc-cbd5d9-t: #cbd5d9;
    --otc-aebbc1-t: #aebbc1;
    --otc-dbe3e7-t: #dbe3e7;
    --otc-64737a-t: #64737a;
    --otc-0a1318-f: #0a1318;
    --otc-b7c3c8-t: #b7c3c8;
    --otc-091015-f: #091015;
    --otc-30434c-f: #30434c;
    --otc-sobre-ffffff: #ffffff;
}
/* =====================================================
   CATÁLOGO DE PRODUCTOS - TEMA OSCURO
===================================================== */

/* =====================================================
   CONTENEDOR GENERAL
===================================================== */

.mod-catalogo_ot .catalogo-page {

    min-height: calc(100vh - 60px);

    background:
        radial-gradient(
            circle at top right,
            rgb(var(--otc-rgb-0-200-83) / 0.05),
            transparent 35%
        ),
        var(--cat-fondo);

    color: var(--cat-texto);

}

/* =====================================================
   HEADER
===================================================== */

.mod-catalogo_ot .catalogo-header {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 20px;

    padding: 18px 20px;

    background: var(--cat-card);

    border: 1px solid var(--cat-borde);

    border-left: 3px solid var(--cat-verde);

    border-radius: var(--cat-radius);

    box-shadow:
        0 8px 24px rgb(var(--otc-rgb-0-0-0) / 0.22);

}

.mod-catalogo_ot .catalogo-header-main {

    display: flex;

    align-items: center;

    min-width: 0;

}

.mod-catalogo_ot .catalogo-title-icon {

    width: 46px;

    height: 46px;

    min-width: 46px;

    display: flex;

    align-items: center;

    justify-content: center;

    margin-right: 14px;

    color: var(--cat-verde);

    background: rgb(var(--otc-rgb-0-200-83) / 0.08);

    border: 1px solid rgb(var(--otc-rgb-0-200-83) / 0.25);

    border-radius: 10px;

    font-size: 20px;

}

.mod-catalogo_ot .catalogo-title {

    color: var(--cat-blanco);

    font-size: 21px;

    font-weight: 700;

    line-height: 1.3;

}

.mod-catalogo_ot .catalogo-title-separator {

    color: var(--cat-verde);

    margin: 0 4px;

}

.mod-catalogo_ot .catalogo-subtitle {

    margin-top: 4px;

    color: var(--cat-secundario);

    font-size: 13px;

}

.mod-catalogo_ot .catalogo-subtitle span {

    color: var(--cat-verde);

    margin: 0 5px;

}

.mod-catalogo_ot .catalogo-header-actions {

    flex-shrink: 0;

}

/* =====================================================
   BOTÓN RECEPCIÓN
===================================================== */

.mod-catalogo_ot .btn-recepcion {

    color: var(--otc-sobre-ffffff) !important;

    background: linear-gradient(
        135deg,
        var(--cat-verde-oscuro),
        var(--cat-verde)
    );

    border: 1px solid var(--cat-verde);

    border-radius: 7px;

    font-size: 13px;

    font-weight: 600;

    padding: 8px 13px;

    transition: all .2s ease;

}

.mod-catalogo_ot .btn-recepcion:hover {

    color: var(--otc-sobre-ffffff) !important;

    background: linear-gradient(
        135deg,
        var(--cat-verde),
        var(--cat-verde-claro)
    );

    border-color: var(--cat-verde-claro);

    transform: translateY(-1px);

}

/* =====================================================
   STATUS RECEPCIÓN
===================================================== */

.mod-catalogo_ot .recepcion-status {

    display: flex;

    align-items: center;

    gap: 12px;

    padding: 13px 16px;

    border-radius: 8px;

    font-size: 13px;

}

.mod-catalogo_ot .recepcion-status-icon {

    font-size: 20px;

}

.mod-catalogo_ot .recepcion-status strong {

    display: block;

    color: var(--cat-blanco);

}

.mod-catalogo_ot .recepcion-completa {

    color: var(--otc-d9ffe8-t);

    background: rgb(var(--otc-rgb-0-200-83) / 0.08);

    border: 1px solid rgb(var(--otc-rgb-0-200-83) / 0.28);

}

.mod-catalogo_ot .recepcion-completa .recepcion-status-icon {

    color: var(--cat-verde-claro);

}

.mod-catalogo_ot .recepcion-parcial {

    color: var(--otc-fff4d0-t);

    background: rgb(var(--otc-rgb-255-193-7) / 0.08);

    border: 1px solid rgb(var(--otc-rgb-255-193-7) / 0.28);

}

.mod-catalogo_ot .recepcion-parcial .recepcion-status-icon {

    color: var(--cat-amarillo);

}

/* =====================================================
   CARD
===================================================== */

.mod-catalogo_ot .catalogo-card {

    background: var(--cat-card);

    border: 1px solid var(--cat-borde);

    border-radius: var(--cat-radius);

    overflow: hidden;

    box-shadow:
        0 6px 20px rgb(var(--otc-rgb-0-0-0) / 0.18);

}

.mod-catalogo_ot .catalogo-card-header {

    min-height: 52px;

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 15px;

    padding: 13px 16px;

    color: var(--cat-blanco);

    background: var(--cat-card-2);

    border-bottom: 1px solid var(--cat-borde);

    font-size: 14px;

    font-weight: 700;

}

.mod-catalogo_ot .catalogo-card-header > div:first-child i {

    color: var(--cat-verde);

}

.mod-catalogo_ot .catalogo-card-body {

    padding: 17px;

}

.mod-catalogo_ot .catalogo-card-hint {

    color: var(--cat-muted);

    font-size: 11px;

    font-weight: 400;

}

.mod-catalogo_ot .catalogo-section-label {

    padding: 4px 9px;

    color: var(--otc-b8ffda-t);

    background: rgb(var(--otc-rgb-0-200-83) / 0.08);

    border: 1px solid rgb(var(--otc-rgb-0-200-83) / 0.2);

    border-radius: 20px;

    font-size: 10px;

    font-weight: 600;

    text-transform: uppercase;

    letter-spacing: .4px;

}

/* =====================================================
   INFORMACIÓN OT
===================================================== */

.mod-catalogo_ot .info-label {

    margin-bottom: 5px;

    color: var(--cat-muted);

    font-size: 10px;

    font-weight: 700;

    text-transform: uppercase;

    letter-spacing: .7px;

}

.mod-catalogo_ot .info-value {

    color: var(--cat-blanco);

    font-size: 14px;

    font-weight: 600;

}

.mod-catalogo_ot .catalogo-divider {

    height: 1px;

    margin: 16px 0;

    background: var(--cat-borde);

}

.mod-catalogo_ot .status-badge {

    display: inline-block;

    padding: 4px 9px;

    border-radius: 20px;

    font-size: 11px;

    font-weight: 600;

}

.mod-catalogo_ot .status-pendiente {

    color: var(--otc-cbd5da-t);

    background: var(--otc-1a252c-f);

    border: 1px solid var(--otc-35454d-b);

}

.mod-catalogo_ot .status-ok {

    color: var(--otc-b8ffda-t);

    background: rgb(var(--otc-rgb-0-200-83) / 0.10);

    border: 1px solid rgb(var(--otc-rgb-0-200-83) / 0.28);

}

.mod-catalogo_ot .status-warning {

    color: var(--otc-ffe8a1-t);

    background: rgb(var(--otc-rgb-255-193-7) / 0.10);

    border: 1px solid rgb(var(--otc-rgb-255-193-7) / 0.28);

}

/* =====================================================
   FORMULARIOS
===================================================== */

.mod-catalogo_ot .catalogo-page label {

    display: block;

    margin-bottom: 6px;

    color: var(--cat-blanco);

    font-size: 11px;

    font-weight: 600;

}

.mod-catalogo_ot .catalogo-page .form-control {

    height: 36px;

    color: var(--cat-blanco);

    background: var(--cat-input);

    border: 1px solid var(--cat-borde);

    border-radius: 6px;

    font-size: 12px;

    box-shadow: none;

}

.mod-catalogo_ot .catalogo-page .form-control::placeholder {

    color: var(--otc-8e9ba2-t);

    opacity: 1;

}

.mod-catalogo_ot .catalogo-page .form-control:focus {

    color: var(--cat-blanco);

    background: var(--otc-0d181f-f);

    border-color: var(--cat-verde);

    box-shadow:
        0 0 0 2px rgb(var(--otc-rgb-0-200-83) / 0.10);

}

.mod-catalogo_ot .catalogo-page select.form-control {

    cursor: pointer;

}

.mod-catalogo_ot .catalogo-page select.form-control option {

    color: var(--cat-blanco);

    background: var(--cat-card);

}

/* =====================================================
   BUSCADOR
===================================================== */

.mod-catalogo_ot .catalogo-page .input-group {

    flex-wrap: nowrap;

}

.mod-catalogo_ot .catalogo-search-icon {

    width: 38px;

    justify-content: center;

    padding: 0;

    color: var(--otc-000000-t) !important;

    background: var(--otc-ffffff-f) !important;

    border: 1px solid var(--cat-verde) !important;

    border-right: 0 !important;

}

.mod-catalogo_ot .catalogo-page .input-group .form-control {

    border-left: 0;

}

.mod-catalogo_ot .catalogo-page .input-group:focus-within
.catalogo-search-icon {

    border-color: var(--cat-verde-claro) !important;

}

/* =====================================================
   TABLAS
===================================================== */

.mod-catalogo_ot .catalogo-table-wrapper {

    width: 100%;

    overflow-x: auto;

}

.mod-catalogo_ot .catalogo-table {

    width: 100% !important;

    margin: 0 !important;

    color: var(--cat-blanco) !important;

    background: var(--cat-tabla) !important;

    border-collapse: separate !important;

    border-spacing: 0;

}

.mod-catalogo_ot .catalogo-table thead th {

    padding: 10px 8px !important;

    color: var(--cat-blanco) !important;

    background: var(--otc-16232b-f) !important;

    border: 0 !important;

    border-bottom: 1px solid var(--cat-borde) !important;

    font-size: 10px !important;

    font-weight: 700 !important;

    text-transform: uppercase !important;

    white-space: nowrap !important;

}

.mod-catalogo_ot .catalogo-table tbody tr {

    background: var(--cat-tabla) !important;

}

.mod-catalogo_ot .catalogo-table tbody tr:hover {

    background: var(--cat-tabla-hover) !important;

}

.mod-catalogo_ot .catalogo-table tbody td {

    padding: 8px !important;

    color: var(--cat-blanco) !important;

    background: transparent !important;

    border-top: 1px solid var(--otc-1d2b32-b) !important;

    font-size: 11px;

    vertical-align: middle;

}

.mod-catalogo_ot .catalogo-table tbody td:first-child {

    border-left: 2px solid transparent;

}

.mod-catalogo_ot .catalogo-table tbody tr:hover td:first-child {

    border-left-color: var(--cat-verde);

}

/* =====================================================
   IMÁGENES
===================================================== */

.mod-catalogo_ot .catalogo-product-image {

    width: 45px;

    height: 45px;

    display: block;

    object-fit: cover;

    border-radius: 6px;

    border: 1px solid var(--cat-borde);

}

.mod-catalogo_ot .catalogo-no-image {

    width: 45px;

    height: 45px;

    display: flex;

    align-items: center;

    justify-content: center;

    color: var(--otc-aeb9be-t);

    background: var(--otc-151f25-f);

    border: 1px solid var(--cat-borde);

    border-radius: 6px;

    font-size: 9px;

    text-align: center;

}

/* =====================================================
   BOTONES TABLA
===================================================== */

.mod-catalogo_ot .catalogo-table .btn-success {

    color: var(--otc-sobre-ffffff) !important;

    background: var(--cat-verde-oscuro) !important;

    border-color: var(--cat-verde) !important;

}

.mod-catalogo_ot .catalogo-table .btn-success:hover {

    background: var(--cat-verde) !important;

    border-color: var(--cat-verde-claro) !important;

}

.mod-catalogo_ot .catalogo-table .btn-success:disabled {

    opacity: .35 !important;

    cursor: not-allowed !important;

}

.mod-catalogo_ot .catalogo-table .btn-outline-danger {

    color: var(--otc-ff6b7a-t) !important;

    border-color: var(--otc-80333d-b) !important;

    background: transparent !important;

}

.mod-catalogo_ot .catalogo-table .btn-outline-danger:hover {

    color: var(--cat-blanco) !important;

    background: var(--cat-rojo) !important;

    border-color: var(--cat-rojo) !important;

}

.mod-catalogo_ot .catalogo-table .btn-danger {

    background: var(--otc-a92332-f) !important;

    border-color: var(--otc-c52e3d-b) !important;

}

/* =====================================================
   BADGES
===================================================== */

.mod-catalogo_ot .catalogo-table .badge-success {

    color: var(--otc-c8ffdd-t) !important;

    background: rgb(var(--otc-rgb-0-200-83) / 0.12) !important;

    border: 1px solid rgb(var(--otc-rgb-0-200-83) / 0.28) !important;

    font-size: 9px !important;

    font-weight: 600 !important;

}

.mod-catalogo_ot .catalogo-table .form-control {

    min-width: 70px;

    height: 30px;

    padding: 4px 7px;

    font-size: 11px;

}

/* =====================================================
   BOTÓN LIMPIAR
===================================================== */

.mod-catalogo_ot .btn-limpiar {

    color: var(--otc-ff8792-t) !important;

    background: transparent;

    border: 1px solid var(--otc-67313a-b);

    border-radius: 5px;

    font-size: 10px;

}

.mod-catalogo_ot .btn-limpiar:hover {

    color: var(--otc-sobre-ffffff) !important;

    background: var(--cat-rojo);

    border-color: var(--cat-rojo);

}

/* =====================================================
   FOOTER TABLA OT
===================================================== */

.mod-catalogo_ot .catalogo-footer-action {

    padding: 13px 15px;

    background: var(--otc-0d171d-f);

    border-top: 1px solid var(--cat-borde);

    text-align: right;

}

.mod-catalogo_ot .btn-guardar {

    min-width: 165px;

    color: var(--otc-sobre-ffffff) !important;

    background: linear-gradient(
        135deg,
        var(--cat-verde-oscuro),
        var(--cat-verde)
    );

    border: 1px solid var(--cat-verde);

    border-radius: 6px;

    font-size: 12px;

    font-weight: 700;

}

.mod-catalogo_ot .btn-guardar:hover {

    color: var(--otc-sobre-ffffff) !important;

    background: linear-gradient(
        135deg,
        var(--cat-verde),
        var(--cat-verde-claro)
    );

}

/* =====================================================
   DATATABLES
===================================================== */

.mod-catalogo_ot .catalogo-page .dataTables_wrapper {

    color: var(--cat-blanco);

    padding: 12px;

}

.mod-catalogo_ot .catalogo-page .dataTables_length,
.mod-catalogo_ot .catalogo-page .dataTables_filter {

    color: var(--otc-cbd5d9-t) !important;

    font-size: 11px;

}

.mod-catalogo_ot .catalogo-page .dataTables_length select,
.mod-catalogo_ot .catalogo-page .dataTables_filter input {

    height: 30px;

    color: var(--cat-blanco) !important;

    background: var(--cat-input) !important;

    border: 1px solid var(--cat-borde) !important;

    border-radius: 5px;

    font-size: 11px;

}

.mod-catalogo_ot .catalogo-page .dataTables_filter input {

    margin-left: 5px;

}

.mod-catalogo_ot .catalogo-page .dataTables_info {

    color: var(--otc-aebbc1-t) !important;

    font-size: 10px;

}

.mod-catalogo_ot .catalogo-page .dataTables_paginate {

    margin-top: 8px;

}

.mod-catalogo_ot .catalogo-page .page-item .page-link {

    color: var(--otc-dbe3e7-t) !important;

    background: var(--cat-card) !important;

    border-color: var(--cat-borde) !important;

    font-size: 10px !important;

}

.mod-catalogo_ot .catalogo-page .page-item.active .page-link {

    color: var(--otc-sobre-ffffff) !important;

    background: var(--cat-verde-oscuro) !important;

    border-color: var(--cat-verde) !important;

}

.mod-catalogo_ot .catalogo-page .page-item.disabled .page-link {

    color: var(--otc-64737a-t) !important;

    background: var(--cat-tabla) !important;

    border-color: var(--cat-borde) !important;

}

.mod-catalogo_ot .catalogo-page .dataTables_empty {

    padding: 30px !important;

    color: var(--cat-muted) !important;

    background: var(--cat-tabla) !important;

}

/* =====================================================
   ORDENAMIENTO DATATABLES
===================================================== */

.mod-catalogo_ot .catalogo-page table.dataTable thead
.sorting:before,
.mod-catalogo_ot .catalogo-page table.dataTable thead
.sorting:after,
.mod-catalogo_ot .catalogo-page table.dataTable thead
.sorting_asc:before,
.mod-catalogo_ot .catalogo-page table.dataTable thead
.sorting_asc:after,
.mod-catalogo_ot .catalogo-page table.dataTable thead
.sorting_desc:before,
.mod-catalogo_ot .catalogo-page table.dataTable thead
.sorting_desc:after {

    color: var(--cat-verde);

}

/* =====================================================
   MODAL
===================================================== */

.mod-catalogo_ot .catalogo-modal {

    color: var(--cat-blanco);

    background: var(--cat-card);

    border: 1px solid var(--cat-borde);

    border-radius: 10px;

    box-shadow:
        0 15px 50px rgb(var(--otc-rgb-0-0-0) / .55);

}

.mod-catalogo_ot .catalogo-modal .modal-header {

    color: var(--cat-blanco) !important;

    background: var(--cat-card-2) !important;

    border-bottom: 1px solid var(--cat-borde) !important;

}

.mod-catalogo_ot .catalogo-modal .modal-title {

    color: var(--cat-blanco);

    font-size: 16px;

    font-weight: 700;

}

.mod-catalogo_ot .catalogo-modal .modal-header small {

    color: var(--cat-muted) !important;

}

.mod-catalogo_ot .catalogo-modal-close {

    color: var(--cat-blanco) !important;

    text-shadow: none;

    opacity: .8;

}

.mod-catalogo_ot .catalogo-modal-close:hover {

    opacity: 1;

}

.mod-catalogo_ot .catalogo-modal .modal-body {

    background: var(--cat-card);

}

.mod-catalogo_ot .qr-container {

    display: flex;

    justify-content: center;

    margin: 5px 0 18px;

}

.mod-catalogo_ot .qr-box {

    padding: 10px;

    background: #ffffff;

    border-radius: 8px;

}

.mod-catalogo_ot .barcode-container {

    padding: 12px;

    background: #ffffff;

    border-radius: 6px;

}

.mod-catalogo_ot .barcode-container svg {

    max-width: 100%;

    height: auto;

}

.mod-catalogo_ot .codigo-recepcion {

    margin-top: 15px;

}

.mod-catalogo_ot .codigo-recepcion span {

    display: block;

    margin-bottom: 5px;

    color: var(--cat-muted);

    font-size: 10px;

    text-transform: uppercase;

}

.mod-catalogo_ot .codigo-recepcion strong {

    display: block;

    padding: 8px;

    color: var(--cat-verde-claro);

    background: var(--otc-0a1318-f);

    border: 1px solid var(--cat-borde);

    border-radius: 5px;

    font-size: 11px;

    word-break: break-all;

}

.mod-catalogo_ot .modal-info {

    margin-top: 15px;

    color: var(--otc-b7c3c8-t);

    font-size: 11px;

}

/* =====================================================
   SCROLLBAR
===================================================== */

.mod-catalogo_ot .catalogo-page ::-webkit-scrollbar {

    width: 8px;

    height: 8px;

}

.mod-catalogo_ot .catalogo-page ::-webkit-scrollbar-track {

    background: var(--otc-091015-f);

}

.mod-catalogo_ot .catalogo-page ::-webkit-scrollbar-thumb {

    background: var(--otc-30434c-f);

    border-radius: 10px;

}

.mod-catalogo_ot .catalogo-page ::-webkit-scrollbar-thumb:hover {

    background: var(--cat-verde-oscuro);

}

/* =====================================================
   RESPONSIVE
===================================================== */

@media (max-width: 991.98px) {

    .mod-catalogo_ot .catalogo-header {

        align-items: flex-start;

        flex-direction: column;

    }

    .mod-catalogo_ot .catalogo-header-actions {

        width: 100%;

    }

    .mod-catalogo_ot .btn-recepcion {

        width: 100%;

    }

}

@media (max-width: 767.98px) {

    .mod-catalogo_ot .catalogo-page .container-fluid {

        padding-left: 10px !important;

        padding-right: 10px !important;

    }

    .mod-catalogo_ot .catalogo-header {

        padding: 14px;

    }

    .mod-catalogo_ot .catalogo-title {

        font-size: 17px;

    }

    .mod-catalogo_ot .catalogo-subtitle {

        line-height: 1.6;

    }

    .mod-catalogo_ot .catalogo-card-header {

        min-height: 48px;

        padding: 11px 12px;

    }

    .mod-catalogo_ot .catalogo-card-body {

        padding: 13px;

    }

    .mod-catalogo_ot .catalogo-table {

        min-width: 850px;

    }

    .mod-catalogo_ot .catalogo-table-wrapper {

        overflow-x: auto;

    }

    .mod-catalogo_ot .dataTables_wrapper {

        overflow-x: auto;

    }

    .mod-catalogo_ot .catalogo-page .dataTables_length,
    .mod-catalogo_ot .catalogo-page .dataTables_filter {

        float: none !important;

        width: 100%;

        margin-bottom: 8px;

        text-align: left !important;

    }

    .mod-catalogo_ot .catalogo-page .dataTables_filter input {

        width: calc(100% - 55px);

    }

    .mod-catalogo_ot .catalogo-page .dataTables_info,
    .mod-catalogo_ot .catalogo-page .dataTables_paginate {

        float: none !important;

        text-align: left !important;

    }

}

@media (max-width: 575.98px) {

    .mod-catalogo_ot .catalogo-title-icon {

        width: 40px;

        height: 40px;

        min-width: 40px;

        margin-right: 10px;

        font-size: 17px;

    }

    .mod-catalogo_ot .catalogo-title {

        font-size: 15px;

    }

    .mod-catalogo_ot .catalogo-subtitle {

        font-size: 11px;

    }

    .mod-catalogo_ot .catalogo-subtitle span {

        margin: 0 2px;

    }

    .mod-catalogo_ot .catalogo-card-hint {

        display: none;

    }

    .mod-catalogo_ot .btn-guardar {

        width: 100%;

    }

    .mod-catalogo_ot .catalogo-footer-action {

        padding: 10px;

    }

}

/* ============================================================
   Módulo .mod-recepcion — CSS ORIGINAL restaurado (v2.2)
   Colores: en tema verde valen exactamente los del original;
   en claro/oscuro usan las variables del tema (--ia-*).
   ============================================================ */
.mod-recepcion {
    --fondo: var(--ia-bg);
    --card: var(--ia-panel);
    --card-2: var(--ia-panel2);
    --input: var(--ia-input-bg);
    --borde: var(--ia-line);
    --borde-verde: rgb(var(--ia-accent-rgb) / .45);
    --verde: var(--ia-accent);
    --verde-claro: var(--ia-accent-h);
    --turquesa: var(--ia-accent);
    --texto: var(--ia-text);
    --texto-secundario: var(--ia-text);
    --texto-muted: var(--ia-muted);
    --rojo: var(--ia-danger);
    --amarillo: var(--ia-warn);
    --rec-101c23-f: var(--ia-panel);
    --rec-060a0e-f: var(--ia-bg);
    --rec-rgb-0-0-0: 0 0 0;
    --rec-0f1c23-f: var(--ia-panel);
    --rec-0b141a-f: var(--ia-panel);
    --rec-rgb-0-200-83: var(--ia-accent-rgb);
    --rec-0c151b-f: var(--ia-panel);
    --rec-31505c-b: rgb(var(--ia-accent-rgb) / .45);
    --rec-17242b-f: var(--ia-panel);
    --rec-30434c-b: var(--ia-line);
    --rec-dbe4e8-t: var(--ia-text);
    --rec-71818a-t: var(--ia-muted);
    --rec-123027-f: var(--ia-panel);
    --rec-1c624b-b: rgb(var(--ia-accent-rgb) / .45);
    --rec-6dffb0-t: var(--ia-accent);
    --rec-00a846-f: var(--ia-accent);
    --rec-061009-t: var(--ia-muted);
    --rec-0a1116-f: var(--ia-bg);
    --rec-8be8c5-t: var(--ia-accent);
    --rec-sobre-ffffff: var(--ia-accent-d);
    --rec-sobre-061009: var(--ia-accent-d);
}
:root[data-tema="verde"] .mod-recepcion,
:root:not([data-tema]) .mod-recepcion {
    --fondo: #080d12;
    --card: #0f171d;
    --card-2: #121d24;
    --input: #0b1217;
    --borde: #24343d;
    --borde-verde: #00c853;
    --verde: #00c853;
    --verde-claro: #00e676;
    --turquesa: #00d9a6;
    --texto: #ffffff;
    --texto-secundario: #d7e0e4;
    --texto-muted: #aab7bd;
    --rojo: #dc3545;
    --amarillo: #ffc107;
    --rec-101c23-f: #101c23;
    --rec-060a0e-f: #060a0e;
    --rec-rgb-0-0-0: 0 0 0;
    --rec-0f1c23-f: #0f1c23;
    --rec-0b141a-f: #0b141a;
    --rec-rgb-0-200-83: 0 200 83;
    --rec-0c151b-f: #0c151b;
    --rec-31505c-b: #31505c;
    --rec-17242b-f: #17242b;
    --rec-30434c-b: #30434c;
    --rec-dbe4e8-t: #dbe4e8;
    --rec-71818a-t: #71818a;
    --rec-123027-f: #123027;
    --rec-1c624b-b: #1c624b;
    --rec-6dffb0-t: #6dffb0;
    --rec-00a846-f: #00a846;
    --rec-061009-t: #061009;
    --rec-0a1116-f: #0a1116;
    --rec-8be8c5-t: #8be8c5;
    --rec-sobre-ffffff: #ffffff;
    --rec-sobre-061009: #061009;
}

        /* =====================================================
           VARIABLES
        ===================================================== */

        /* =====================================================
           BODY
        ===================================================== */

        .mod-recepcion,
        .mod-recepcion{

            min-height:100%;

        }

        .mod-recepcion{

            margin:0;

            background:
                radial-gradient(
                    circle at top,
                    var(--rec-101c23-f) 0%,
                    var(--fondo) 45%,
                    var(--rec-060a0e-f) 100%
                );

            color:var(--texto);

            font-family:
                Arial,
                Helvetica,
                sans-serif;

            font-size:14px;

        }

        /* =====================================================
           CONTENEDOR
        ===================================================== */

        .mod-recepcion .recepcion-container{

            width:100%;

            max-width:850px;

            margin:0 auto;

            padding:18px 12px 25px;

        }

        /* =====================================================
           CARD PRINCIPAL
        ===================================================== */

        .mod-recepcion .recepcion-card{

            background:var(--card);

            border:1px solid var(--borde);

            border-radius:14px;

            box-shadow:
                0 10px 35px rgb(var(--rec-rgb-0-0-0) / .35);

            overflow:hidden;

        }

        /* =====================================================
           HEADER
        ===================================================== */

        .mod-recepcion .recepcion-header{

            background:
                linear-gradient(
                    135deg,
                    var(--rec-0f1c23-f),
                    var(--rec-0b141a-f)
                );

            border-bottom:1px solid var(--borde);

            padding:18px 20px;

        }

        .mod-recepcion .recepcion-header-content{

            display:flex;

            align-items:center;

            justify-content:space-between;

            gap:15px;

        }

        .mod-recepcion .recepcion-titulo{

            margin:0;

            color:var(--texto);

            font-size:21px;

            font-weight:700;

        }

        .mod-recepcion .recepcion-subtitulo{

            margin-top:4px;

            color:var(--texto-secundario);

            font-size:12px;

        }

        .mod-recepcion .recepcion-icono{

            width:48px;

            height:48px;

            min-width:48px;

            border-radius:12px;

            display:flex;

            align-items:center;

            justify-content:center;

            background:rgb(var(--rec-rgb-0-200-83) / .10);

            border:1px solid rgb(var(--rec-rgb-0-200-83) / .40);

            color:var(--verde);

            font-size:22px;

        }

        /* =====================================================
           BODY
        ===================================================== */

        .mod-recepcion .recepcion-body{

            padding:18px;

        }

        /* =====================================================
           USUARIO
        ===================================================== */

        .mod-recepcion .usuario-recepcion{

            display:flex;

            align-items:center;

            justify-content:space-between;

            gap:10px;

            padding:10px 12px;

            margin-bottom:14px;

            background:var(--card-2);

            border:1px solid var(--borde);

            border-left:3px solid var(--verde);

            border-radius:8px;

        }

        .mod-recepcion .usuario-label{

            color:var(--texto-muted);

            font-size:11px;

            text-transform:uppercase;

            letter-spacing:.4px;

        }

        .mod-recepcion .usuario-nombre{

            color:var(--texto);

            font-size:14px;

            font-weight:700;

        }

        .mod-recepcion .usuario-seguro{

            color:var(--verde);

            font-size:11px;

            white-space:nowrap;

        }

        /* =====================================================
           MENSAJES
        ===================================================== */

        .mod-recepcion #mensaje{

            margin-bottom:12px;

        }

        .mod-recepcion #mensaje .alert{

            margin-bottom:0;

            border-radius:8px;

            font-size:13px;

        }

        /* =====================================================
           DATOS OT
        ===================================================== */

        .mod-recepcion .datos-ot{

            background:var(--card-2);

            border:1px solid var(--borde);

            border-radius:10px;

            padding:12px;

            margin-bottom:15px;

        }

        .mod-recepcion .dato-ot{

            padding:5px 8px;

        }

        .mod-recepcion .dato-label{

            display:block;

            color:var(--texto-muted);

            font-size:10px;

            text-transform:uppercase;

            letter-spacing:.4px;

            margin-bottom:2px;

        }

        .mod-recepcion .dato-valor{

            color:var(--texto);

            font-size:13px;

            font-weight:600;

            word-break:break-word;

        }

        /* =====================================================
           TITULO PRODUCTOS
        ===================================================== */

        .mod-recepcion .titulo-productos{

            display:flex;

            align-items:center;

            justify-content:space-between;

            margin-bottom:9px;

        }

        .mod-recepcion .titulo-productos h5{

            margin:0;

            color:var(--texto);

            font-size:15px;

            font-weight:700;

        }

        .mod-recepcion .titulo-productos span{

            color:var(--texto-muted);

            font-size:11px;

        }

        /* =====================================================
           PRODUCTO
        ===================================================== */

        .mod-recepcion .producto{

            background:var(--rec-0c151b-f);

            border:1px solid var(--borde);

            border-left:3px solid var(--turquesa);

            border-radius:9px;

            padding:11px;

            margin-bottom:9px;

        }

        .mod-recepcion .producto:hover{

            border-color:var(--rec-31505c-b);

        }

        .mod-recepcion .producto-nombre{

            color:var(--texto);

            font-size:13px;

            font-weight:700;

            line-height:1.3;

        }

        .mod-recepcion .producto-serie{

            color:var(--texto-muted);

            font-size:10px;

            margin-top:2px;

        }

        .mod-recepcion .producto-tipo{

            color:var(--turquesa);

            font-size:10px;

            font-weight:600;

            margin-top:2px;

        }

        .mod-recepcion .badge-enviado{

            display:inline-block !important;

            padding:4px 7px !important;

            background:var(--rec-17242b-f) !important;

            border:1px solid var(--rec-30434c-b) !important;

            color:var(--rec-dbe4e8-t) !important;

            border-radius:6px !important;

            font-size:10px !important;

        }

        /* =====================================================
           CAMPOS
        ===================================================== */

        .mod-recepcion .campo-label{

            display:block;

            color:var(--texto-muted);

            font-size:10px;

            text-transform:uppercase;

            margin-bottom:4px;

        }

        .mod-recepcion .form-control{

            background:var(--input) !important;

            border:1px solid var(--borde) !important;

            color:var(--texto) !important;

            border-radius:7px;

            font-size:13px;

        }

        .mod-recepcion .form-control:focus{

            border-color:var(--verde) !important;

            box-shadow:
                0 0 0 .15rem rgb(var(--rec-rgb-0-200-83) / .12) !important;

        }

        .mod-recepcion .form-control::placeholder{

            color:var(--rec-71818a-t) !important;

        }

        .mod-recepcion select.form-control{

            background-color:var(--input) !important;

        }

        .mod-recepcion textarea.form-control{

            resize:vertical;

        }

        .mod-recepcion .cantidad-recibida{

            height:34px;

            font-weight:700;

            text-align:center;

        }

        .mod-recepcion .observacion-item{

            min-height:34px;

            resize:vertical;

        }

        /* =====================================================
           ESTADO
        ===================================================== */

        .mod-recepcion .estado-producto{

            display:inline-block;

            padding:5px 8px;

            border-radius:6px;

            background:var(--rec-123027-f);

            border:1px solid var(--rec-1c624b-b);

            color:var(--rec-6dffb0-t);

            font-size:10px;

            font-weight:700;

        }

        /* =====================================================
           FORMULARIO FINAL
        ===================================================== */

        .mod-recepcion .form-final{

            margin-top:15px;

            padding-top:15px;

            border-top:1px solid var(--borde);

        }

        .mod-recepcion .observacion-general{

            min-height:65px;

        }

        /* =====================================================
           BOTÓN
        ===================================================== */

        .mod-recepcion .btn-confirmar{

            width:100%;

            height:42px;

            border:none;

            border-radius:8px;

            background:
                linear-gradient(
                    135deg,
                    var(--verde),
                    var(--rec-00a846-f)
                );

            color:var(--rec-sobre-ffffff);

            font-size:14px;

            font-weight:700;

            box-shadow:
                0 5px 15px rgb(var(--rec-rgb-0-200-83) / .18);

            transition:.2s ease;

        }

        .mod-recepcion .btn-confirmar:hover{

            background:
                linear-gradient(
                    135deg,
                    var(--verde-claro),
                    var(--verde)
                );

            color:var(--rec-sobre-061009);

            transform:translateY(-1px);

        }

        .mod-recepcion .btn-confirmar:disabled{

            opacity:.55;

            transform:none;

        }

        /* =====================================================
           CÓDIGO
        ===================================================== */

        .mod-recepcion .codigo-recepcion{

            display:inline-block;

            margin-top:2px;

            padding:3px 7px;

            background:var(--rec-0a1116-f);

            border:1px solid var(--borde);

            border-radius:5px;

            color:var(--rec-8be8c5-t);

            font-size:10px;

            word-break:break-all;

        }

        /* =====================================================
           RESPONSIVE
        ===================================================== */

        @media(max-width:575px){

            .mod-recepcion .recepcion-container{

                padding:8px 7px 15px;

            }

            .mod-recepcion .recepcion-header{

                padding:13px 14px;

            }

            .mod-recepcion .recepcion-body{

                padding:12px;

            }

            .mod-recepcion .recepcion-titulo{

                font-size:18px;

            }

            .mod-recepcion .recepcion-icono{

                width:40px;

                height:40px;

                min-width:40px;

                font-size:18px;

            }

            .mod-recepcion .producto{

                padding:9px;

            }

            .mod-recepcion .usuario-recepcion{

                align-items:flex-start;

                flex-direction:column;

                gap:3px;

            }

            .mod-recepcion .usuario-seguro{

                font-size:10px;

            }

        }

/* ============================================================
   Módulo .mod-traspaso — CSS ORIGINAL restaurado (v2.2)
   Colores: en tema verde valen exactamente los del original;
   en claro/oscuro usan las variables del tema (--ia-*).
   ============================================================ */
.mod-traspaso {
    --cat-fondo: var(--ia-bg);
    --cat-fondo-2: var(--ia-bg);
    --cat-card: var(--ia-panel);
    --cat-card-2: var(--ia-panel2);
    --cat-input: var(--ia-input-bg);
    --cat-tabla: var(--ia-panel);
    --cat-tabla-hover: rgb(var(--ia-accent-rgb) / .08);
    --cat-borde: var(--ia-line);
    --cat-borde-verde: rgb(var(--ia-accent-rgb) / .45);
    --cat-verde: var(--ia-accent);
    --cat-verde-claro: var(--ia-accent-h);
    --cat-verde-oscuro: var(--ia-accent-b);
    --cat-turquesa: var(--ia-accent);
    --cat-turquesa-hover: var(--ia-accent-h);
    --cat-blanco: var(--ia-text);
    --cat-texto: var(--ia-text);
    --cat-secundario: var(--ia-text);
    --cat-muted: var(--ia-muted);
    --cat-rojo: var(--ia-danger);
    --cat-amarillo: var(--ia-warn);
    --cat-radius: 10px;
    --trc-rgb-0-200-83: var(--ia-accent-rgb);
    --trc-rgb-0-0-0: 0 0 0;
    --trc-b8ffda-t: var(--ia-accent);
    --trc-cbd5da-t: var(--ia-text);
    --trc-1a252c-f: var(--ia-panel2);
    --trc-35454d-b: var(--ia-line);
    --trc-ffe8a1-t: var(--ia-warn);
    --trc-rgb-255-193-7: var(--ia-warn-rgb);
    --trc-8e9ba2-t: var(--ia-muted);
    --trc-0d181f-f: var(--ia-panel);
    --trc-16232b-f: var(--ia-panel);
    --trc-1d2b32-b: var(--ia-line);
    --trc-aeb9be-t: var(--ia-text);
    --trc-151f25-f: var(--ia-panel);
    --trc-ff6b7a-t: var(--ia-danger);
    --trc-80333d-b: var(--ia-danger);
    --trc-c8ffdd-t: var(--ia-accent);
    --trc-b8fff0-t: var(--ia-accent);
    --trc-rgb-0-217-166: var(--ia-accent-rgb);
    --trc-ff8792-t: var(--ia-danger);
    --trc-67313a-b: rgb(var(--ia-danger-rgb) / .45);
    --trc-0d171d-f: var(--ia-panel);
    --trc-cbd5d9-t: var(--ia-text);
    --trc-aebbc1-t: var(--ia-text);
    --trc-dbe3e7-t: var(--ia-text);
    --trc-64737a-t: var(--ia-muted);
    --trc-091015-f: var(--ia-bg);
    --trc-30434c-f: var(--ia-panel2);
    --trc-00d9a6-t: var(--ia-accent);
    --trc-ffffff-f: var(--ia-panel);
    --trc-07130f-t: var(--ia-muted);
    --trc-000000-f: var(--ia-bg);
    --trc-sobre-ffffff: var(--ia-accent-d);
    --trc-sobre-07130f: var(--ia-accent-d);
}
:root[data-tema="verde"] .mod-traspaso,
:root:not([data-tema]) .mod-traspaso {
    --cat-fondo: #080d12;
    --cat-fondo-2: #0b1218;
    --cat-card: #101920;
    --cat-card-2: #121e26;
    --cat-input: #0b141a;
    --cat-tabla: #0c151b;
    --cat-tabla-hover: #13231d;
    --cat-borde: #263942;
    --cat-borde-verde: #087f46;
    --cat-verde: #00c853;
    --cat-verde-claro: #00e676;
    --cat-verde-oscuro: #087f46;
    --cat-turquesa: #00d9a6;
    --cat-turquesa-hover: #00b889;
    --cat-blanco: #ffffff;
    --cat-texto: #f4f7f8;
    --cat-secundario: #c7d2d7;
    --cat-muted: #9eacb3;
    --cat-rojo: #dc3545;
    --cat-amarillo: #ffc107;
    --cat-radius: 10px;
    --trc-rgb-0-200-83: 0 200 83;
    --trc-rgb-0-0-0: 0 0 0;
    --trc-b8ffda-t: #b8ffda;
    --trc-cbd5da-t: #cbd5da;
    --trc-1a252c-f: #1a252c;
    --trc-35454d-b: #35454d;
    --trc-ffe8a1-t: #ffe8a1;
    --trc-rgb-255-193-7: 255 193 7;
    --trc-8e9ba2-t: #8e9ba2;
    --trc-0d181f-f: #0d181f;
    --trc-16232b-f: #16232b;
    --trc-1d2b32-b: #1d2b32;
    --trc-aeb9be-t: #aeb9be;
    --trc-151f25-f: #151f25;
    --trc-ff6b7a-t: #ff6b7a;
    --trc-80333d-b: #80333d;
    --trc-c8ffdd-t: #c8ffdd;
    --trc-b8fff0-t: #b8fff0;
    --trc-rgb-0-217-166: 0 217 166;
    --trc-ff8792-t: #ff8792;
    --trc-67313a-b: #67313a;
    --trc-0d171d-f: #0d171d;
    --trc-cbd5d9-t: #cbd5d9;
    --trc-aebbc1-t: #aebbc1;
    --trc-dbe3e7-t: #dbe3e7;
    --trc-64737a-t: #64737a;
    --trc-091015-f: #091015;
    --trc-30434c-f: #30434c;
    --trc-00d9a6-t: #00d9a6;
    --trc-ffffff-f: #ffffff;
    --trc-07130f-t: #07130f;
    --trc-000000-f: #000000;
    --trc-sobre-ffffff: #ffffff;
    --trc-sobre-07130f: #07130f;
}
/* =====================================================
   CATÁLOGO DE PRODUCTOS / TRASPASO DE BODEGAS
   TEMA OSCURO
===================================================== */

/* =====================================================
   CONTENEDOR GENERAL
===================================================== */

.mod-traspaso .catalogo-page {

    min-height: calc(100vh - 60px);

    padding-bottom: 20px;

    background:
        radial-gradient(
            circle at top right,
            rgb(var(--trc-rgb-0-200-83) / 0.05),
            transparent 35%
        ),
        var(--cat-fondo);

    color: var(--cat-texto);

}

/* =====================================================
   HEADER
===================================================== */

.mod-traspaso .catalogo-header {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 15px;

    padding: 13px 16px;

    background: var(--cat-card);

    border: 1px solid var(--cat-borde);

    border-left: 3px solid var(--cat-verde);

    border-radius: var(--cat-radius);

    box-shadow:
        0 6px 18px rgb(var(--trc-rgb-0-0-0) / 0.20);

}

.mod-traspaso .catalogo-header-main {

    display: flex;

    align-items: center;

    min-width: 0;

}

.mod-traspaso .catalogo-title-icon {

    width: 42px;

    height: 42px;

    min-width: 42px;

    display: flex;

    align-items: center;

    justify-content: center;

    margin-right: 11px;

    color: var(--cat-verde);

    background: rgb(var(--trc-rgb-0-200-83) / 0.08);

    border: 1px solid rgb(var(--trc-rgb-0-200-83) / 0.25);

    border-radius: 9px;

    font-size: 18px;

}

.mod-traspaso .catalogo-title {

    color: var(--cat-blanco);

    font-size: 19px;

    font-weight: 700;

    line-height: 1.25;

}

.mod-traspaso .catalogo-title-separator {

    color: var(--cat-verde);

    margin: 0 4px;

}

.mod-traspaso .catalogo-subtitle {

    margin-top: 3px;

    color: var(--cat-secundario);

    font-size: 12px;

}

.mod-traspaso .catalogo-subtitle span {

    color: var(--cat-verde);

    margin: 0 4px;

}

.mod-traspaso .catalogo-header-actions {

    flex-shrink: 0;

}

/* =====================================================
   CARD
===================================================== */

.mod-traspaso .catalogo-card {

    background: var(--cat-card);

    border: 1px solid var(--cat-borde);

    border-radius: var(--cat-radius);

    overflow: hidden;

    box-shadow:
        0 5px 18px rgb(var(--trc-rgb-0-0-0) / 0.16);

}

.mod-traspaso .catalogo-card-header {

    min-height: 44px;

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 10px;

    padding: 9px 13px;

    color: var(--cat-blanco);

    background: var(--cat-card-2);

    border-bottom: 1px solid var(--cat-borde);

    font-size: 13px;

    font-weight: 700;

}

.mod-traspaso .catalogo-card-header > div:first-child i {

    color: var(--cat-verde);

}

.mod-traspaso .catalogo-card-body {

    padding: 12px;

}

.mod-traspaso .catalogo-card-hint {

    color: var(--cat-muted);

    font-size: 10px;

    font-weight: 400;

}

.mod-traspaso .catalogo-section-label {

    padding: 3px 8px;

    color: var(--trc-b8ffda-t);

    background: rgb(var(--trc-rgb-0-200-83) / 0.08);

    border: 1px solid rgb(var(--trc-rgb-0-200-83) / 0.2);

    border-radius: 20px;

    font-size: 9px;

    font-weight: 600;

    text-transform: uppercase;

    letter-spacing: .4px;

}

/* =====================================================
   INFORMACIÓN
===================================================== */

.mod-traspaso .catalogo-page .info-label {

    margin-bottom: 3px;

    color: var(--cat-muted);

    font-size: 9px;

    font-weight: 700;

    text-transform: uppercase;

    letter-spacing: .6px;

}

.mod-traspaso .catalogo-page .info-value {

    color: var(--cat-blanco);

    font-size: 12px;

    font-weight: 600;

}

.mod-traspaso .catalogo-divider {

    height: 1px;

    margin: 9px 0;

    background: var(--cat-borde);

}

/* =====================================================
   ESTADO
===================================================== */

.mod-traspaso .status-badge {

    display: inline-block;

    padding: 4px 8px;

    border-radius: 20px;

    font-size: 10px;

    font-weight: 600;

}

.mod-traspaso .status-pendiente {

    color: var(--trc-cbd5da-t);

    background: var(--trc-1a252c-f);

    border: 1px solid var(--trc-35454d-b);

}

.mod-traspaso .status-ok {

    color: var(--trc-b8ffda-t);

    background: rgb(var(--trc-rgb-0-200-83) / 0.10);

    border: 1px solid rgb(var(--trc-rgb-0-200-83) / 0.28);

}

.mod-traspaso .status-warning {

    color: var(--trc-ffe8a1-t);

    background: rgb(var(--trc-rgb-255-193-7) / 0.10);

    border: 1px solid rgb(var(--trc-rgb-255-193-7) / 0.28);

}

/* =====================================================
   FORMULARIOS
===================================================== */

.mod-traspaso .catalogo-page label {

    display: block;

    margin-bottom: 4px;

    color: var(--cat-blanco);

    font-size: 10px;

    font-weight: 600;

}

.mod-traspaso .catalogo-page .form-group {

    margin-bottom: 8px;

}

.mod-traspaso .catalogo-page .form-control {

    height: 32px;

    color: var(--cat-blanco);

    background: var(--cat-input);

    border: 1px solid var(--cat-borde);

    border-radius: 6px;

    font-size: 11px;

    box-shadow: none;

}

.mod-traspaso .catalogo-page .form-control::placeholder {

    color: var(--trc-8e9ba2-t);

    opacity: 1;

}

.mod-traspaso .catalogo-page .form-control:focus {

    color: var(--cat-blanco);

    background: var(--trc-0d181f-f);

    border-color: var(--cat-verde);

    box-shadow:
        0 0 0 2px rgb(var(--trc-rgb-0-200-83) / 0.10);

}

.mod-traspaso .catalogo-page select.form-control {

    cursor: pointer;

}

.mod-traspaso .catalogo-page select.form-control option {

    color: var(--cat-blanco);

    background: var(--cat-card);

}

/* =====================================================
   TABLAS
===================================================== */

.mod-traspaso .catalogo-table-wrapper {

    width: 100%;

    overflow-x: auto;

}

.mod-traspaso .catalogo-table {

    width: 100% !important;

    margin: 0 !important;

    color: var(--cat-blanco) !important;

    background: var(--cat-tabla) !important;

    border-collapse: separate !important;

    border-spacing: 0;

}

.mod-traspaso .catalogo-table thead th {

    padding: 8px 7px !important;

    color: var(--cat-blanco) !important;

    background: var(--trc-16232b-f) !important;

    border: 0 !important;

    border-bottom: 1px solid var(--cat-borde) !important;

    font-size: 9px !important;

    font-weight: 700 !important;

    text-transform: uppercase !important;

    white-space: nowrap !important;

}

.mod-traspaso .catalogo-table tbody tr {

    background: var(--cat-tabla) !important;

}

.mod-traspaso .catalogo-table tbody tr:hover {

    background: var(--cat-tabla-hover) !important;

}

.mod-traspaso .catalogo-table tbody td {

    padding: 7px !important;

    color: var(--cat-blanco) !important;

    background: transparent !important;

    border-top: 1px solid var(--trc-1d2b32-b) !important;

    font-size: 10px;

    vertical-align: middle;

}

.mod-traspaso .catalogo-table tbody td:first-child {

    border-left: 2px solid transparent;

}

.mod-traspaso .catalogo-table tbody tr:hover td:first-child {

    border-left-color: var(--cat-verde);

}

/* =====================================================
   IMÁGENES
===================================================== */

.mod-traspaso .catalogo-product-image {

    width: 42px;

    height: 42px;

    display: block;

    object-fit: cover;

    border-radius: 6px;

    border: 1px solid var(--cat-borde);

}

.mod-traspaso .catalogo-no-image {

    width: 42px;

    height: 42px;

    display: flex;

    align-items: center;

    justify-content: center;

    color: var(--trc-aeb9be-t);

    background: var(--trc-151f25-f);

    border: 1px solid var(--cat-borde);

    border-radius: 6px;

    font-size: 8px;

    text-align: center;

}

/* =====================================================
   BOTONES TABLA
===================================================== */

.mod-traspaso .catalogo-table .btn-success {

    color: var(--trc-sobre-ffffff) !important;

    background: var(--cat-verde-oscuro) !important;

    border-color: var(--cat-verde) !important;

}

.mod-traspaso .catalogo-table .btn-success:hover {

    background: var(--cat-verde) !important;

    border-color: var(--cat-verde-claro) !important;

}

.mod-traspaso .catalogo-table .btn-success:disabled {

    opacity: .35 !important;

    cursor: not-allowed !important;

}

.mod-traspaso .catalogo-table .btn-outline-danger {

    color: var(--trc-ff6b7a-t) !important;

    border-color: var(--trc-80333d-b) !important;

    background: transparent !important;

}

.mod-traspaso .catalogo-table .btn-outline-danger:hover {

    color: var(--cat-blanco) !important;

    background: var(--cat-rojo) !important;

    border-color: var(--cat-rojo) !important;

}

/* =====================================================
   BADGES
===================================================== */

.mod-traspaso .catalogo-table .badge-success {

    color: var(--trc-c8ffdd-t) !important;

    background: rgb(var(--trc-rgb-0-200-83) / 0.12) !important;

    border: 1px solid rgb(var(--trc-rgb-0-200-83) / 0.28) !important;

    font-size: 9px !important;

    font-weight: 600 !important;

}

.mod-traspaso .catalogo-page .badge-info {

    color: var(--trc-b8fff0-t) !important;

    background: rgb(var(--trc-rgb-0-217-166) / 0.10) !important;

    border: 1px solid rgb(var(--trc-rgb-0-217-166) / 0.25) !important;

    font-size: 9px !important;

    font-weight: 600 !important;

}

.mod-traspaso .catalogo-page .badge-warning {

    color: var(--trc-ffe8a1-t) !important;

    background: rgb(var(--trc-rgb-255-193-7) / 0.10) !important;

    border: 1px solid rgb(var(--trc-rgb-255-193-7) / 0.28) !important;

    font-size: 9px !important;

    font-weight: 600 !important;

}

/* =====================================================
   INPUT CANTIDAD
===================================================== */

.mod-traspaso .catalogo-table .form-control {

    min-width: 65px;

    height: 28px;

    padding: 3px 6px;

    font-size: 10px;

}

.mod-traspaso .cantidadTraspaso {

    width: 65px !important;

    min-width: 65px !important;

    text-align: center;

    font-weight: 700;

}

/* =====================================================
   BOTÓN AGREGAR
===================================================== */

.mod-traspaso .catalogo-table .agregarProducto {

    width: 30px;

    height: 28px;

    padding: 0;

    display: inline-flex;

    align-items: center;

    justify-content: center;

}

/* =====================================================
   PRODUCTOS SELECCIONADOS
===================================================== */

.mod-traspaso #tablaSeleccionados tbody td {

    font-size: 10px;

}

.mod-traspaso #tablaSeleccionados tbody td strong {

    color: var(--cat-blanco);

}

/* =====================================================
   BOTÓN LIMPIAR
===================================================== */

.mod-traspaso .btn-limpiar {

    color: var(--trc-ff8792-t) !important;

    background: transparent;

    border: 1px solid var(--trc-67313a-b);

    border-radius: 5px;

    font-size: 9px;

    padding: 4px 7px;

}

.mod-traspaso .btn-limpiar:hover {

    color: var(--trc-sobre-ffffff) !important;

    background: var(--cat-rojo);

    border-color: var(--cat-rojo);

}

/* =====================================================
   FOOTER ACCIÓN
===================================================== */

.mod-traspaso .catalogo-footer-action {

    padding: 10px 12px;

    background: var(--trc-0d171d-f);

    border-top: 1px solid var(--cat-borde);

    text-align: right;

}

.mod-traspaso .btn-guardar {

    min-width: 155px;

    color: var(--trc-sobre-ffffff) !important;

    background: linear-gradient(
        135deg,
        var(--cat-verde-oscuro),
        var(--cat-verde)
    );

    border: 1px solid var(--cat-verde);

    border-radius: 6px;

    font-size: 11px;

    font-weight: 700;

    padding: 7px 12px;

}

.mod-traspaso .btn-guardar:hover {

    color: var(--trc-sobre-ffffff) !important;

    background: linear-gradient(
        135deg,
        var(--cat-verde),
        var(--cat-verde-claro)
    );

}

/* =====================================================
   DATATABLES
===================================================== */

.mod-traspaso .catalogo-page .dataTables_wrapper {

    color: var(--cat-blanco);

    padding: 8px;

}

.mod-traspaso .catalogo-page .dataTables_length,
.mod-traspaso .catalogo-page .dataTables_filter {

    color: var(--trc-cbd5d9-t) !important;

    font-size: 10px;

}

.mod-traspaso .catalogo-page .dataTables_length select,
.mod-traspaso .catalogo-page .dataTables_filter input {

    height: 28px;

    color: var(--cat-blanco) !important;

    background: var(--cat-input) !important;

    border: 1px solid var(--cat-borde) !important;

    border-radius: 5px;

    font-size: 10px;

}

.mod-traspaso .catalogo-page .dataTables_filter input {

    margin-left: 4px;

}

.mod-traspaso .catalogo-page .dataTables_info {

    color: var(--trc-aebbc1-t) !important;

    font-size: 9px;

}

.mod-traspaso .catalogo-page .dataTables_paginate {

    margin-top: 5px;

}

.mod-traspaso .catalogo-page .page-item .page-link {

    color: var(--trc-dbe3e7-t) !important;

    background: var(--cat-card) !important;

    border-color: var(--cat-borde) !important;

    font-size: 9px !important;

    padding: 4px 7px !important;

}

.mod-traspaso .catalogo-page .page-item.active .page-link {

    color: var(--trc-sobre-ffffff) !important;

    background: var(--cat-verde-oscuro) !important;

    border-color: var(--cat-verde) !important;

}

.mod-traspaso .catalogo-page .page-item.disabled .page-link {

    color: var(--trc-64737a-t) !important;

    background: var(--cat-tabla) !important;

    border-color: var(--cat-borde) !important;

}

.mod-traspaso .catalogo-page .dataTables_empty {

    padding: 25px !important;

    color: var(--cat-muted) !important;

    background: var(--cat-tabla) !important;

}

/* =====================================================
   ORDENAMIENTO DATATABLES
===================================================== */

.mod-traspaso .catalogo-page table.dataTable thead
.sorting:before,
.mod-traspaso .catalogo-page table.dataTable thead
.sorting:after,
.mod-traspaso .catalogo-page table.dataTable thead
.sorting_asc:before,
.mod-traspaso .catalogo-page table.dataTable thead
.sorting_asc:after,
.mod-traspaso .catalogo-page table.dataTable thead
.sorting_desc:before,
.mod-traspaso .catalogo-page table.dataTable thead
.sorting_desc:after {

    color: var(--cat-verde);

}

/* =====================================================
   SELECT BODEGAS
===================================================== */

.mod-traspaso #id_bodega_origen,
.mod-traspaso #id_bodega_destino {

    font-weight: 600;

}

/* =====================================================
   SCROLLBAR
===================================================== */

.mod-traspaso .catalogo-page ::-webkit-scrollbar {

    width: 7px;

    height: 7px;

}

.mod-traspaso .catalogo-page ::-webkit-scrollbar-track {

    background: var(--trc-091015-f);

}

.mod-traspaso .catalogo-page ::-webkit-scrollbar-thumb {

    background: var(--trc-30434c-f);

    border-radius: 10px;

}

.mod-traspaso .catalogo-page ::-webkit-scrollbar-thumb:hover {

    background: var(--cat-verde-oscuro);

}

/* =====================================================
   RESPONSIVE
===================================================== */

@media (max-width: 991.98px) {

    .mod-traspaso .catalogo-header {

        align-items: flex-start;

        flex-direction: column;

    }

    .mod-traspaso .catalogo-header-actions {

        width: 100%;

    }

}

@media (max-width: 767.98px) {

    .mod-traspaso .catalogo-page .container-fluid {

        padding-left: 8px !important;

        padding-right: 8px !important;

    }

    .mod-traspaso .catalogo-header {

        padding: 12px;

    }

    .mod-traspaso .catalogo-title {

        font-size: 16px;

    }

    .mod-traspaso .catalogo-subtitle {

        line-height: 1.5;

    }

    .mod-traspaso .catalogo-card-header {

        min-height: 43px;

        padding: 9px 10px;

    }

    .mod-traspaso .catalogo-card-body {

        padding: 10px;

    }

    .mod-traspaso .catalogo-table {

        min-width: 850px;

    }

    .mod-traspaso .catalogo-table-wrapper {

        overflow-x: auto;

    }

    .mod-traspaso .dataTables_wrapper {

        overflow-x: auto;

    }

    .mod-traspaso .catalogo-page .dataTables_length,
    .mod-traspaso .catalogo-page .dataTables_filter {

        float: none !important;

        width: 100%;

        margin-bottom: 6px;

        text-align: left !important;

    }

    .mod-traspaso .catalogo-page .dataTables_filter input {

        width: calc(100% - 55px);

    }

    .mod-traspaso .catalogo-page .dataTables_info,
    .mod-traspaso .catalogo-page .dataTables_paginate {

        float: none !important;

        text-align: left !important;

    }

    .mod-traspaso #tablaSeleccionados {

        min-width: 650px;

    }

}

@media (max-width: 575.98px) {

    .mod-traspaso .catalogo-title-icon {

        width: 38px;

        height: 38px;

        min-width: 38px;

        margin-right: 9px;

        font-size: 16px;

    }

    .mod-traspaso .catalogo-title {

        font-size: 14px;

    }

    .mod-traspaso .catalogo-subtitle {

        font-size: 10px;

    }

    .mod-traspaso .catalogo-subtitle span {

        margin: 0 2px;

    }

    .mod-traspaso .catalogo-card-hint {

        display: none;

    }

    .mod-traspaso .catalogo-section-label {

        display: none;

    }

    .mod-traspaso .btn-guardar {

        width: 100%;

    }

    .mod-traspaso .catalogo-footer-action {

        padding: 9px;

    }

}
/* =====================================================
   MODAL QR - TRASPASO GENERADO
===================================================== */

.mod-traspaso #modalQRTraspaso {
    z-index: 1060;
}

/* =====================================================
   CONTENEDOR DEL MODAL
===================================================== */

.mod-traspaso #modalQRTraspaso .modal-dialog {

    max-width: 560px;

    width: calc(100% - 30px);

}

.mod-traspaso #modalQRTraspaso .modal-content {

    background: var(--cat-card) !important;

    color: var(--cat-texto) !important;

    border: 1px solid var(--cat-turquesa) !important;

    border-radius: 12px !important;

    overflow: hidden;

    box-shadow:
        0 20px 60px rgb(var(--trc-rgb-0-0-0) / .70),
        0 0 25px rgb(var(--trc-rgb-0-217-166) / .08);

}

/* =====================================================
   HEADER
===================================================== */

.mod-traspaso #modalQRTraspaso .modal-header {

    display: flex !important;

    align-items: center !important;

    justify-content: space-between !important;

    padding: 14px 17px !important;

    background: var(--cat-fondo-2) !important;

    border-bottom: 1px solid var(--cat-borde) !important;

}

.mod-traspaso #modalQRTraspaso .modal-title {

    margin: 0;

    color: var(--cat-blanco) !important;

    font-size: 15px;

    font-weight: 700;

}

.mod-traspaso #modalQRTraspaso .modal-title i {

    color: var(--trc-00d9a6-t) !important;

}

.mod-traspaso #modalQRTraspaso .close {

    color: var(--cat-muted) !important;

    opacity: 1 !important;

    text-shadow: none !important;

    font-size: 25px;

    line-height: 1;

}

.mod-traspaso #modalQRTraspaso .close:hover {

    color: var(--cat-blanco) !important;

}

/* =====================================================
   BODY
===================================================== */

.mod-traspaso #modalQRTraspaso .modal-body {

    padding: 20px;

    background: var(--cat-card) !important;

    color: var(--cat-texto) !important;

}

/* =====================================================
   ESTADO PENDIENTE
===================================================== */

.mod-traspaso #modalQRTraspaso .badge-warning {

    display: inline-block !important;

    color: var(--trc-ffe8a1-t) !important;

    background: rgb(var(--trc-rgb-255-193-7) / .10) !important;

    border: 1px solid rgb(var(--trc-rgb-255-193-7) / .30) !important;

    border-radius: 20px !important;

    font-size: 9px !important;

    font-weight: 700 !important;

    letter-spacing: .3px !important;

}

/* =====================================================
   CÓDIGO TRASPASO
===================================================== */

.mod-traspaso #modalQRTraspaso h5 {

    color: var(--cat-blanco) !important;

}

.mod-traspaso #modalQRTraspaso #qrCodigo {

    color: var(--trc-00d9a6-t) !important;

    font-size: 20px;

    font-weight: 800;

    letter-spacing: .5px;

}

.mod-traspaso #modalQRTraspaso p.text-muted {

    color: var(--cat-muted) !important;

    font-size: 11px;

    line-height: 1.5;

}

/* =====================================================
   CONTENEDOR QR
===================================================== */

.mod-traspaso #modalQRTraspaso #qrTraspaso {

    width: 100%;

    min-height: 240px !important;

    display: flex;

    align-items: center;

    justify-content: center;

    padding: 15px;

    background: var(--cat-fondo-2) !important;

    border: 1px solid var(--cat-borde);

    border-radius: 10px;

    box-sizing: border-box;

}

/* =====================================================
   QR GENERADO
===================================================== */

.mod-traspaso #modalQRTraspaso #qrTraspaso img {

    display: block;

    width: 210px !important;

    height: 210px !important;

    max-width: 100%;

    padding: 8px;

    background: #ffffff;

    border-radius: 7px;

    box-sizing: border-box;

}

.mod-traspaso #modalQRTraspaso #qrTraspaso canvas {

    display: block;

    width: 210px !important;

    height: 210px !important;

    max-width: 100%;

    padding: 8px;

    background: #ffffff;

    border-radius: 7px;

    box-sizing: border-box;

}

/* =====================================================
   LABEL DEL ENLACE
===================================================== */

.mod-traspaso #modalQRTraspaso .form-group label {

    color: var(--cat-secundario) !important;

    font-size: 10px;

    font-weight: 700;

}

.mod-traspaso #modalQRTraspaso .form-group label i {

    color: var(--trc-00d9a6-t) !important;

}

/* =====================================================
   INPUT URL
===================================================== */

.mod-traspaso #modalQRTraspaso #qrUrl {

    height: 34px;

    color: var(--cat-blanco) !important;

    background: var(--cat-input) !important;

    border: 1px solid var(--cat-borde) !important;

    font-size: 10px;

    box-shadow: none !important;

}

.mod-traspaso #modalQRTraspaso #qrUrl:focus {

    color: var(--cat-blanco) !important;

    background: var(--cat-input) !important;

    border-color: var(--cat-turquesa) !important;

    box-shadow:
        0 0 0 2px rgb(var(--trc-rgb-0-217-166) / .10) !important;

}

/* =====================================================
   BOTÓN COPIAR
===================================================== */

.mod-traspaso #modalQRTraspaso #btnCopiarQR {

    height: 34px;

    color: var(--trc-00d9a6-t) !important;

    background: var(--cat-card) !important;

    border: 1px solid var(--cat-turquesa) !important;

}

.mod-traspaso #modalQRTraspaso #btnCopiarQR:hover {

    color: var(--trc-sobre-07130f) !important;

    background: var(--cat-turquesa) !important;

}

/* =====================================================
   INFORMACIÓN DEL TRASPASO
===================================================== */

.mod-traspaso #modalQRTraspaso #qrInfoTraspaso {

    margin-top: 8px;

    color: var(--cat-muted) !important;

    font-size: 10px;

    line-height: 1.5;

}

/* =====================================================
   FOOTER
===================================================== */

.mod-traspaso #modalQRTraspaso .modal-footer {

    padding: 12px 17px;

    background: var(--cat-fondo-2) !important;

    border-top: 1px solid var(--cat-borde) !important;

}

/* =====================================================
   ABRIR RECEPCIÓN
===================================================== */

.mod-traspaso #modalQRTraspaso #btnAbrirQR {

    color: var(--trc-00d9a6-t) !important;

    background: transparent !important;

    border: 1px solid var(--cat-turquesa) !important;

    border-radius: 6px;

    font-size: 10px;

    font-weight: 600;

}

.mod-traspaso #modalQRTraspaso #btnAbrirQR:hover {

    color: var(--trc-sobre-07130f) !important;

    background: var(--cat-turquesa) !important;

}

/* =====================================================
   NUEVO TRASPASO
===================================================== */

.mod-traspaso #modalQRTraspaso #btnNuevoTraspaso {

    color: var(--cat-blanco) !important;

    background: var(--cat-borde-verde) !important;

    border: 1px solid var(--cat-verde) !important;

    border-radius: 6px;

    font-size: 10px;

    font-weight: 700;

}

.mod-traspaso #modalQRTraspaso #btnNuevoTraspaso:hover {

    background: var(--cat-verde) !important;

    border-color: var(--cat-verde-claro) !important;

}

/* =====================================================
   BACKDROP
===================================================== */

.mod-traspaso .modal-backdrop.show {

    background: #000000 !important;

    opacity: .78 !important;

}

/* =====================================================
   RESPONSIVE
===================================================== */

@media (max-width: 575.98px) {

    .mod-traspaso #modalQRTraspaso .modal-dialog {

        width: calc(100% - 16px);

        margin: 8px auto;

    }

    .mod-traspaso #modalQRTraspaso .modal-body {

        padding: 15px;

    }

    .mod-traspaso #modalQRTraspaso #qrTraspaso {

        min-height: 220px !important;

    }

    .mod-traspaso #modalQRTraspaso #qrTraspaso img,
    .mod-traspaso #modalQRTraspaso #qrTraspaso canvas {

        width: 185px !important;

        height: 185px !important;

    }

    .mod-traspaso #modalQRTraspaso .modal-footer {

        display: flex;

        flex-direction: column;

        gap: 7px;

    }

    .mod-traspaso #modalQRTraspaso .modal-footer button {

        width: 100%;

    }

}

/* ============================================================
   Módulo .mod-traspaso .recepcion-page — CSS ORIGINAL restaurado (v2.2)
   Colores: en tema verde valen exactamente los del original;
   en claro/oscuro usan las variables del tema (--ia-*).
   ============================================================ */
.mod-traspaso .recepcion-page {
    --trr-1b1e21-f: var(--ia-bg);
    --trr-e8eaed-t: var(--ia-text);
    --trr-252a2f-f: var(--ia-panel2);
    --trr-rgb-0-0-0: 0 0 0;
    --trr-3a4046-b: var(--ia-line);
    --trr-202428-f: var(--ia-panel2);
    --trr-ffffff-t: var(--ia-text);
    --trr-9da5ad-t: var(--ia-muted);
    --trr-28a745-t: var(--ia-accent);
    --trr-1f2428-f: var(--ia-panel2);
    --trr-8f989f-t: var(--ia-muted);
    --trr-181c1f-f: var(--ia-panel);
    --trr-bfc5ca-t: var(--ia-text);
    --trr-2d3338-f: var(--ia-panel2);
    --trr-594d20-f: rgb(var(--ia-warn-rgb) / .14);
    --trr-ffe69c-t: var(--ia-warn);
    --trr-796a28-b: rgb(var(--ia-warn-rgb) / .45);
    --trr-164b31-f: rgb(var(--ia-accent-rgb) / .14);
    --trr-9be7bd-t: var(--ia-accent);
    --trr-237447-b: rgb(var(--ia-accent-rgb) / .45);
    --trr-d8dde1-t: var(--ia-text);
    --trr-1b1f23-f: var(--ia-panel);
    --trr-414850-b: var(--ia-line);
    --trr-rgb-40-167-69: var(--ia-accent-rgb);
    --trr-7e878f-t: var(--ia-muted);
    --trr-292d31-f: var(--ia-panel2);
    --trr-484f56-b: var(--ia-line);
    --trr-403817-f: rgb(var(--ia-warn-rgb) / .14);
    --trr-665b25-b: rgb(var(--ia-warn-rgb) / .45);
    --trr-153b29-f: rgb(var(--ia-accent-rgb) / .14);
    --trr-246b46-b: rgb(var(--ia-accent-rgb) / .45);
    --trr-a8e6c1-t: var(--ia-accent);
    --trr-4a2227-f: rgb(var(--ia-danger-rgb) / .14);
    --trr-7b343d-b: rgb(var(--ia-danger-rgb) / .45);
    --trr-ffb3bb-t: var(--ia-danger);
}
:root[data-tema="verde"] .mod-traspaso .recepcion-page,
:root:not([data-tema]) .mod-traspaso .recepcion-page {
    --trr-1b1e21-f: #1b1e21;
    --trr-e8eaed-t: #e8eaed;
    --trr-252a2f-f: #252a2f;
    --trr-rgb-0-0-0: 0 0 0;
    --trr-3a4046-b: #3a4046;
    --trr-202428-f: #202428;
    --trr-ffffff-t: #ffffff;
    --trr-9da5ad-t: #9da5ad;
    --trr-28a745-t: #28a745;
    --trr-1f2428-f: #1f2428;
    --trr-8f989f-t: #8f989f;
    --trr-181c1f-f: #181c1f;
    --trr-bfc5ca-t: #bfc5ca;
    --trr-2d3338-f: #2d3338;
    --trr-594d20-f: #594d20;
    --trr-ffe69c-t: #ffe69c;
    --trr-796a28-b: #796a28;
    --trr-164b31-f: #164b31;
    --trr-9be7bd-t: #9be7bd;
    --trr-237447-b: #237447;
    --trr-d8dde1-t: #d8dde1;
    --trr-1b1f23-f: #1b1f23;
    --trr-414850-b: #414850;
    --trr-rgb-40-167-69: 40 167 69;
    --trr-7e878f-t: #7e878f;
    --trr-292d31-f: #292d31;
    --trr-484f56-b: #484f56;
    --trr-403817-f: #403817;
    --trr-665b25-b: #665b25;
    --trr-153b29-f: #153b29;
    --trr-246b46-b: #246b46;
    --trr-a8e6c1-t: #a8e6c1;
    --trr-4a2227-f: #4a2227;
    --trr-7b343d-b: #7b343d;
    --trr-ffb3bb-t: #ffb3bb;
}

        /* =====================================================
           TEMA OSCURO
        ===================================================== */

        .mod-traspaso .recepcion-page {

            background:var(--trr-1b1e21-f);

            color:var(--trr-e8eaed-t);

        }

        .mod-traspaso .recepcion-page {

            padding:25px 15px;

        }

        .mod-traspaso .recepcion-page .recepcion-card {

            background:var(--trr-252a2f-f);

            border-radius:12px;

            box-shadow:0 5px 20px rgb(var(--trr-rgb-0-0-0) / .35);

            border:1px solid var(--trr-3a4046-b);

            overflow:hidden;

        }

        .mod-traspaso .recepcion-page .recepcion-header {

            padding:20px;

            border-bottom:1px solid var(--trr-3a4046-b);

            background:var(--trr-202428-f);

        }

        .mod-traspaso .recepcion-page .recepcion-title {

            font-size:24px;

            font-weight:700;

            color:var(--trr-ffffff-t);

        }

        .mod-traspaso .recepcion-page .recepcion-subtitle {

            color:var(--trr-9da5ad-t);

            margin-top:4px;

        }

        .mod-traspaso .recepcion-page .codigo {

            font-size:20px;

            font-weight:700;

            color:var(--trr-28a745-t);

        }

        /* =====================================================
           INFO
        ===================================================== */

        .mod-traspaso .recepcion-page .info-box {

            background:var(--trr-1f2428-f);

            border:1px solid var(--trr-3a4046-b);

            border-radius:8px;

            padding:15px;

            height:100%;

        }

        .mod-traspaso .recepcion-page .info-label {

            font-size:12px;

            color:var(--trr-8f989f-t);

            text-transform:uppercase;

            font-weight:600;

            margin-bottom:5px;

        }

        .mod-traspaso .recepcion-page .info-value {

            font-size:17px;

            font-weight:600;

            color:var(--trr-ffffff-t);

        }

        /* =====================================================
           TÍTULOS
        ===================================================== */

        .mod-traspaso .recepcion-page h5 {

            color:var(--trr-ffffff-t);

            font-weight:600;

        }

        /* =====================================================
           TABLA
        ===================================================== */

        .mod-traspaso .recepcion-page .producto-table {

            color:var(--trr-e8eaed-t);

            margin-bottom:0;

        }

        .mod-traspaso .recepcion-page .producto-table thead th {

            background:var(--trr-181c1f-f) !important;

            color:var(--trr-bfc5ca-t) !important;

            border-color:var(--trr-3a4046-b) !important;

            font-size:13px !important;

            text-transform:uppercase !important;

            vertical-align:middle !important;

        }

        .mod-traspaso .recepcion-page .producto-table tbody td {

            background:var(--trr-252a2f-f);

            color:var(--trr-e8eaed-t);

            border-color:var(--trr-3a4046-b);

            vertical-align:middle;

        }

        .mod-traspaso .recepcion-page .producto-table tbody tr:hover td {

            background:var(--trr-2d3338-f);

        }

        .mod-traspaso .recepcion-page .cantidad {

            font-size:18px;

            font-weight:700;

            color:var(--trr-28a745-t);

        }

        /* =====================================================
           ESTADOS
        ===================================================== */

        .mod-traspaso .recepcion-page .estado-pendiente {

            background:var(--trr-594d20-f);

            color:var(--trr-ffe69c-t);

            padding:7px 12px;

            border-radius:20px;

            font-weight:600;

            border:1px solid var(--trr-796a28-b);

        }

        .mod-traspaso .recepcion-page .estado-recibido {

            background:var(--trr-164b31-f);

            color:var(--trr-9be7bd-t);

            padding:7px 12px;

            border-radius:20px;

            font-weight:600;

            border:1px solid var(--trr-237447-b);

        }

        /* =====================================================
           OBSERVACIÓN DE RECEPCIÓN
        ===================================================== */

        .mod-traspaso .recepcion-page .recepcion-label {

            color:var(--trr-d8dde1-t);

            font-weight:600;

            margin-bottom:7px;

        }

        .mod-traspaso .recepcion-page .recepcion-textarea {

            background:var(--trr-1b1f23-f) !important;

            border:1px solid var(--trr-414850-b) !important;

            color:var(--trr-ffffff-t) !important;

            border-radius:8px;

            resize:vertical;

        }

        .mod-traspaso .recepcion-page .recepcion-textarea:focus {

            background:var(--trr-1b1f23-f) !important;

            color:var(--trr-ffffff-t) !important;

            border-color:var(--trr-28a745-t) !important;

            box-shadow:0 0 0 .15rem rgb(var(--trr-rgb-40-167-69) / .20) !important;

        }

        .mod-traspaso .recepcion-page .recepcion-textarea::placeholder {

            color:var(--trr-7e878f-t);

        }

        /* =====================================================
           PANEL APROBACIÓN
        ===================================================== */

        .mod-traspaso .recepcion-page .panel-aprobacion {

            background:var(--trr-292d31-f);

            border:1px solid var(--trr-484f56-b);

            border-radius:10px;

            padding:20px;

        }

        .mod-traspaso .recepcion-page .alert-warning {

            background:var(--trr-403817-f);

            border-color:var(--trr-665b25-b);

            color:var(--trr-ffe69c-t);

        }

        .mod-traspaso .recepcion-page .alert-success {

            background:var(--trr-153b29-f);

            border-color:var(--trr-246b46-b);

            color:var(--trr-a8e6c1-t);

        }

        .mod-traspaso .recepcion-page .alert-danger {

            background:var(--trr-4a2227-f);

            border-color:var(--trr-7b343d-b);

            color:var(--trr-ffb3bb-t);

        }

        /* =====================================================
           BOTÓN
        ===================================================== */

        .mod-traspaso .recepcion-page #btnRecibir {

            min-width:230px;

            font-weight:600;

            border-radius:7px;

        }

        /* =====================================================
           MENSAJE SUPERIOR
        ===================================================== */

        .mod-traspaso .recepcion-page #mensajeRecepcion {

            border-radius:8px;

        }

        /* =====================================================
           MOBILE
        ===================================================== */

        @media (max-width:768px) {

            .mod-traspaso .recepcion-page {

                padding:10px;

            }

            .mod-traspaso .recepcion-page .recepcion-header {

                padding:15px;

            }

            .mod-traspaso .recepcion-page .recepcion-title {

                font-size:20px;

            }

            .mod-traspaso .recepcion-page .recepcion-header
            .d-flex {

                align-items:flex-start !important;

            }

            .mod-traspaso .recepcion-page .estado-pendiente,
            .mod-traspaso .recepcion-page .estado-recibido {

                font-size:12px;

                white-space:nowrap;

            }

            .mod-traspaso .recepcion-page #btnRecibir {

                width:100%;

                margin-top:10px;

            }

        }

/* ============================================================
   Agregados v2.2 (no estaban en el original)
   ============================================================ */

/* Acceso al historial de traspasos (listar, recibir, anular) */
.mod-traspaso .catalogo-header-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.mod-traspaso .status-badge.status-historial {
    color: var(--cat-turquesa);
    background: rgb(var(--trc-rgb-0-217-166) / .08);
    border-color: rgb(var(--trc-rgb-0-217-166) / .35);
    text-decoration: none;
}
.mod-traspaso .status-badge.status-historial:hover { background: rgb(var(--trc-rgb-0-217-166) / .16); }
.mod-traspaso .historial-pendientes {
    display: inline-block;
    min-width: 18px;
    margin-left: 4px;
    padding: 0 5px;
    border-radius: 9px;
    font-size: 10px;
    line-height: 16px;
    text-align: center;
    color: #212529;
    background: var(--cat-amarillo);
}

/* Recepción: columna "Recibido" y separador del panel recibido */
.mod-traspaso .recepcion-page .producto-table .cantidad-recibida {
    max-width: 110px;
    margin: 0 auto;
    text-align: center;
    background: var(--trr-1b1f23-f);
    border: 1px solid var(--trr-414850-b);
    color: var(--trr-ffffff-t);
}
.mod-traspaso .recepcion-page .producto-table .cantidad-recibida:focus {
    border-color: var(--trr-28a745-t);
    box-shadow: 0 0 0 .15rem rgb(var(--trr-rgb-40-167-69) / .20);
}
.mod-traspaso .recepcion-page .cantidad.cantidad-diferencia { color: var(--ia-warn); }
.mod-traspaso .recepcion-page .recepcion-separador { border-color: rgb(var(--ia-overlay-rgb) / .15); }
.mod-traspaso .recepcion-page .alert-warning strong,
.mod-traspaso .recepcion-page .alert-success strong { color: inherit; }

/* ============================================================
   Módulo .mod-kardex_bodegas (convertido desde el CSS antiguo del módulo)
   ============================================================ */
/* =========================================================
   KARDEX ERP PRO
   TEMA OSCURO CORPORATIVO
   VERSION LIMPIA
========================================================= */


/* =========================================================
   VARIABLES
========================================================= */

.mod-kardex_bodegas {

    --fondo: var(--ia-bg);

    --card: var(--ia-panel);

    --card2: var(--ia-panel2);

    --input: var(--ia-input-bg);

    --borde: var(--ia-line);

    --borde-claro: var(--ia-line);

    --texto: var(--ia-text);

    --texto-sec: var(--ia-muted);

    --muted: var(--ia-muted);

    --azul: var(--ia-info);

    --azul-hover: var(--ia-info);

    --turquesa: var(--ia-accent);

    --verde: var(--ia-accent);

    --verde-claro: var(--ia-success);

    --rojo: var(--ia-danger);

    --rojo-claro: var(--ia-danger);

    --amarillo: var(--ia-warn);

}


/* =========================================================
   RESET
========================================================= */

.mod-kardex_bodegas .container_B * {
    box-sizing: border-box;
}


.mod-kardex_bodegas .container_B {

    background: var(--fondo) !important;

    color: var(--texto) !important;

    font-family:
        "Segoe UI",
        Arial,
        Helvetica,
        sans-serif;

    font-size: 14px;

}


/* =========================================================
   CONTENEDOR PRINCIPAL
========================================================= */

.mod-kardex_bodegas .container_B {

    min-height: 100vh;

    background: var(--fondo);

}


/* =========================================================
   CARDS
========================================================= */

.mod-kardex_bodegas .container_B .kardex-card {

    background: var(--card) !important;

    border: 1px solid var(--borde) !important;

    border-radius: 12px;

    overflow: hidden;

    box-shadow:
        0 8px 25px rgba(0, 0, 0, .35);

}


.mod-kardex_bodegas .container_B .kardex-card .card-body {

    background: var(--card);

}


/* =========================================================
   HEADER KARDEX
========================================================= */

.mod-kardex_bodegas .container_B .kardex-header {

    background:
        linear-gradient(
            135deg,
            var(--ia-panel2),
            var(--ia-bg)
        ) !important;

    border-bottom:
        1px solid var(--borde) !important;

    padding: 16px 20px;

}


.mod-kardex_bodegas .container_B .kardex-header h4 {

    color: var(--ia-text) !important;

    font-weight: 700;

    letter-spacing: .3px;

}


.mod-kardex_bodegas .container_B .kardex-header h4 i {

    color: var(--turquesa);

}


.mod-kardex_bodegas .container_B .kardex-header small {

    color: var(--texto-sec) !important;

}


/* =========================================================
   PESTAÑAS
========================================================= */

.mod-kardex_bodegas .container_B .kardex-tabs {

    border-bottom:
        1px solid var(--borde) !important;

    margin-bottom:
        15px !important;

}


.mod-kardex_bodegas .container_B .kardex-tabs .nav-item {

    margin-bottom: -1px;

}


.mod-kardex_bodegas .container_B .kardex-tabs .nav-link {

    background: var(--ia-panel) !important;

    color: var(--muted) !important;

    border:
        1px solid var(--borde) !important;

    border-bottom:
        1px solid var(--borde) !important;

    border-radius:
        8px 8px 0 0;

    margin-right: 5px;

    padding: 10px 18px;

    font-size: 12px;

    font-weight: 600;

    transition:
        all .2s ease;

}


.mod-kardex_bodegas .container_B .kardex-tabs .nav-link i {

    color: var(--muted);

    transition:
        color .2s ease;

}


.mod-kardex_bodegas .container_B .kardex-tabs .nav-link:hover {

    background: var(--ia-panel) !important;

    color: var(--ia-text) !important;

    border-color:
        var(--borde-claro) !important;

}


.mod-kardex_bodegas .container_B .kardex-tabs .nav-link:hover i {

    color: var(--turquesa);

}


.mod-kardex_bodegas .container_B .kardex-tabs .nav-link.active {

    background:
        var(--card) !important;

    color:
        var(--ia-text) !important;

    border-color:
        var(--borde) !important;

    border-bottom-color:
        var(--card) !important;

}


.mod-kardex_bodegas .container_B .kardex-tabs .nav-link.active i {

    color: var(--turquesa);

}


.mod-kardex_bodegas .container_B .kardex-tabs #tabAlertas.active {

    color: var(--ia-warn) !important;

}


.mod-kardex_bodegas .container_B .kardex-tabs #tabAlertas.active i {

    color: var(--ia-warn);

}


.mod-kardex_bodegas .container_B #badgeAlertasTabs,
.mod-kardex_bodegas .container_B #badgeTraspasos {

    font-size: 9px;

    min-width: 18px;

    padding: 3px 5px;

    border-radius: 10px;

    vertical-align: middle;

}


/* =========================================================
   INDICADORES SUPERIORES
========================================================= */

.mod-kardex_bodegas .container_B .kardex-indicadores {

    display: flex;

    align-items: center;

    gap: 8px;

}


.mod-kardex_bodegas .container_B .indicador {

    display: flex;

    align-items: center;

    gap: 6px;

    padding: 7px 11px;

    border-radius: 8px;

    font-size: 11px;

    font-weight: 600;

    border: 1px solid transparent;

}


.mod-kardex_bodegas .container_B .indicador i {

    font-size: 12px;

}


.mod-kardex_bodegas .container_B .indicador.movimiento-entrada {

    color:
        var(--verde-claro);

    background:
        rgb(var(--ia-accent-rgb) / .10);

    border-color:
        rgb(var(--ia-accent-rgb) / .25);

}


.mod-kardex_bodegas .container_B .indicador.movimiento-salida {

    color:
        var(--rojo-claro);

    background:
        rgba(239, 68, 68, .10);

    border-color:
        rgba(239, 68, 68, .25);

}


.mod-kardex_bodegas .container_B .indicador.movimiento-transferencia {

    color: var(--ia-info);

    background:
        rgb(var(--ia-info-rgb) / .10);

    border-color:
        rgb(var(--ia-info-rgb) / .25);

}


/* =========================================================
   FILTROS
========================================================= */

.mod-kardex_bodegas .container_B .filtros-kardex {

    padding: 15px 18px !important;

    border-bottom:
        1px solid var(--borde);

}


.mod-kardex_bodegas .container_B .filtros-kardex label {

    color:
        var(--texto-sec) !important;

    font-size: 12px;

    font-weight: 600;

    margin-bottom: 5px;

}


.mod-kardex_bodegas .container_B .filtros-kardex label i {

    color:
        var(--turquesa);

}


.mod-kardex_bodegas .container_B .form-control {

    background:
        var(--input) !important;

    color:
        var(--ia-text) !important;

    border:
        1px solid var(--borde-claro) !important;

    border-radius: 7px;

    transition:
        border-color .2s ease,
        box-shadow .2s ease;

}


.mod-kardex_bodegas .container_B .form-control:focus {

    background:
        var(--input) !important;

    color:
        var(--ia-text) !important;

    border-color:
        var(--turquesa) !important;

    box-shadow:
        0 0 0 .15rem
        rgb(var(--ia-accent-rgb) / .15) !important;

}


.mod-kardex_bodegas .container_B .form-control::placeholder {

    color: var(--ia-muted) !important;

}


.mod-kardex_bodegas .container_B select.form-control option {

    background:
        var(--card);

    color:
        var(--ia-text);

}


/* =========================================================
   BOTON LIMPIAR
========================================================= */

.mod-kardex_bodegas .container_B #btnLimpiarKardex,
.mod-kardex_bodegas .container_B #btnLimpiarTraspasos,
.mod-kardex_bodegas .container_B #btnLimpiarAlertas {

    background:
        var(--ia-panel) !important;

    color:
        var(--texto-sec) !important;

    border:
        1px solid var(--ia-line) !important;

    border-radius: 7px;

    transition:
        all .2s ease;

}


.mod-kardex_bodegas .container_B #btnLimpiarKardex:hover,
.mod-kardex_bodegas .container_B #btnLimpiarTraspasos:hover,
.mod-kardex_bodegas .container_B #btnLimpiarAlertas:hover {

    background:
        var(--ia-panel2) !important;

    color:
        var(--ia-text) !important;

    border-color:
        var(--ia-line) !important;

}


/* =========================================================
   LOADING
========================================================= */

.mod-kardex_bodegas .container_B .loading-kardex {

    display: none;

    align-items: center;

    gap: 8px;

    color:
        var(--muted);

    font-size: 12px;

}


.mod-kardex_bodegas .container_B .loading-kardex i {

    color:
        var(--turquesa);

}


/* =========================================================
   LEYENDA
========================================================= */

.mod-kardex_bodegas .container_B .leyenda-kardex {

    display: flex;

    align-items: center;

    gap: 20px;

    padding-top: 8px;

}


.mod-kardex_bodegas .container_B .leyenda-item {

    display: flex;

    align-items: center;

    gap: 7px;

    color:
        var(--muted);

    font-size: 11px;

}


.mod-kardex_bodegas .container_B .leyenda-icon {

    width: 25px;

    height: 25px;

    display: flex;

    align-items: center;

    justify-content: center;

    border-radius: 6px;

}


.mod-kardex_bodegas .container_B .leyenda-icon.entrada {

    color:
        var(--verde-claro);

    background:
        rgb(var(--ia-accent-rgb) / .12);

}


.mod-kardex_bodegas .container_B .leyenda-icon.salida {

    color:
        var(--rojo-claro);

    background:
        rgba(239, 68, 68, .12);

}


.mod-kardex_bodegas .container_B .leyenda-icon.transferencia {

    color:
        var(--ia-info);

    background:
        rgb(var(--ia-info-rgb) / .12);

}


/* =========================================================
   KPI KARDEX
========================================================= */

.mod-kardex_bodegas .container_B .kpi-card {

    display: flex;

    align-items: center;

    gap: 14px;

    min-height: 78px;

    padding: 14px 16px;

    background:
        var(--ia-panel);

    border:
        1px solid var(--ia-line);

    border-radius: 10px;

    box-shadow:
        0 4px 15px rgba(0, 0, 0, .18);

    transition:
        transform .2s ease,
        border-color .2s ease;

}


.mod-kardex_bodegas .container_B .kpi-card:hover {

    transform:
        translateY(-2px);

    border-color:
        var(--ia-line);

}


.mod-kardex_bodegas .container_B .kpi-icon {

    width: 42px;

    height: 42px;

    min-width: 42px;

    display: flex;

    align-items: center;

    justify-content: center;

    border-radius: 10px;

    font-size: 18px;

}


.mod-kardex_bodegas .container_B .kpi-card small {

    display: block;

    color:
        var(--ia-muted);

    font-size: 11px;

    margin-bottom: 2px;

}


.mod-kardex_bodegas .container_B .kpi-card strong {

    display: block;

    color:
        var(--ia-text);

    font-size: 21px;

    line-height: 1.1;

}


.mod-kardex_bodegas .container_B .kpi-movimientos .kpi-icon {

    color:
        var(--ia-info);

    background:
        rgb(var(--ia-info-rgb) / .13);

}


.mod-kardex_bodegas .container_B .kpi-entrada .kpi-icon {

    color:
        var(--turquesa);

    background:
        rgb(var(--ia-accent-rgb) / .12);

}


.mod-kardex_bodegas .container_B .kpi-salida .kpi-icon {

    color:
        var(--ia-danger);

    background:
        rgba(239, 68, 68, .12);

}


.mod-kardex_bodegas .container_B .kpi-stock .kpi-icon {

    color:
        var(--ia-warn);

    background:
        rgb(var(--ia-warn-rgb) / .12);

}

/* =========================================================
   TABLA KARDEX
========================================================= */

.mod-kardex_bodegas .container_B .kardex-table-container {

    width: 100%;

    max-width: 100%;

    overflow-x: auto;

    overflow-y: visible;

    border: 1px solid var(--ia-accent);

    border-radius: 10px;

    background: var(--card);

    box-sizing: border-box;

}


/* =========================================================
   TABLA
========================================================= */

.mod-kardex_bodegas .container_B #tablaKardex {

    width: 100% !important;

    min-width: 1100px;

    background: var(--card) !important;

    color: var(--ia-text);

    border-collapse: separate;

    border-spacing: 0;

    margin-bottom: 0 !important;

    border: 0 !important;

}


/* =========================================================
   ENCABEZADO
========================================================= */

.mod-kardex_bodegas .container_B #tablaKardex thead th {

    background: var(--ia-bg) !important;

    color: var(--turquesa) !important;

    border: 1px solid var(--ia-line) !important;

    font-size: 11px;

    font-weight: 700;

    text-transform: uppercase;

    letter-spacing: .3px;

    white-space: nowrap;

    padding: 11px 10px;

    vertical-align: middle;

}


/* =========================================================
   TITULOS STICKY
========================================================= */

.mod-kardex_bodegas .container_B #tablaKardex thead tr.kardex-titulos th {

    position: sticky;

    top: 0;

    z-index: 3;

}


/* =========================================================
   FILA DE FILTROS
========================================================= */

.mod-kardex_bodegas .container_B #tablaKardex thead tr.kardex-filtros-columnas th {

    background: var(--ia-panel) !important;

    border: 1px solid var(--ia-line) !important;

    padding: 5px 6px !important;

    vertical-align: middle !important;

}


/* =========================================================
   CUERPO
========================================================= */

.mod-kardex_bodegas .container_B #tablaKardex tbody td {

    background: var(--ia-panel) !important;

    color: var(--ia-text) !important;

    border: 1px solid var(--ia-line) !important;

    vertical-align: middle;

    padding: 9px 10px;

}


/* =========================================================
   HOVER
========================================================= */

.mod-kardex_bodegas .container_B #tablaKardex tbody tr {

    transition: background .18s ease;

}


.mod-kardex_bodegas .container_B #tablaKardex tbody tr:hover td {

    background: var(--ia-panel) !important;

}


/* =========================================================
   ESQUINAS DE LA TABLA
========================================================= */

.mod-kardex_bodegas .container_B #tablaKardex thead tr:first-child th:first-child {

    border-top-left-radius: 9px;

}


.mod-kardex_bodegas .container_B #tablaKardex thead tr:first-child th:last-child {

    border-top-right-radius: 9px;

}


.mod-kardex_bodegas .container_B #tablaKardex tbody tr:last-child td:first-child {

    border-bottom-left-radius: 9px;

}


.mod-kardex_bodegas .container_B #tablaKardex tbody tr:last-child td:last-child {

    border-bottom-right-radius: 9px;

}


/* =========================================================
   BARRA DE DESPLAZAMIENTO
========================================================= */

.mod-kardex_bodegas .container_B .kardex-table-container::-webkit-scrollbar {

    height: 8px;

}


.mod-kardex_bodegas .container_B .kardex-table-container::-webkit-scrollbar-track {

    background: var(--ia-bg);

    border-radius: 10px;

}


.mod-kardex_bodegas .container_B .kardex-table-container::-webkit-scrollbar-thumb {

    background: var(--ia-accent);

    border-radius: 10px;

}


.mod-kardex_bodegas .container_B .kardex-table-container::-webkit-scrollbar-thumb:hover {

    background: var(--ia-accent);

}

/* =========================================================
   FILTROS DE COLUMNAS
========================================================= */

.mod-kardex_bodegas .container_B #tablaKardex .filtro-columna {

    width:
        100%;

    min-width:
        70px;

    height:
        30px;

    padding:
        4px 7px;

    background:
        var(--ia-bg) !important;

    color:
        var(--ia-text) !important;

    border:
        1px solid var(--ia-line) !important;

    border-radius:
        6px;

    font-size:
        10px;

    outline:
        none;

}


.mod-kardex_bodegas .container_B #tablaKardex .filtro-columna:focus {

    border-color:
        var(--turquesa) !important;

    box-shadow:
        0 0 0 .12rem
        rgb(var(--ia-accent-rgb) / .12) !important;

}


.mod-kardex_bodegas .container_B #tablaKardex .filtro-columna::placeholder {

    color:
        var(--ia-muted);

}


.mod-kardex_bodegas .container_B #tablaKardex select.filtro-columna {

    cursor:
        pointer;

}


.mod-kardex_bodegas .container_B #tablaKardex select.filtro-columna option {

    background:
        var(--ia-panel);

    color:
        var(--ia-text);

}


.mod-kardex_bodegas .container_B .filtro-no-aplica {

    display:
        flex;

    align-items:
        center;

    justify-content:
        center;

    height:
        30px;

    color:
        var(--ia-muted);

    font-size:
        10px;

}


/* =========================================================
   FECHA KARDEX
========================================================= */

.mod-kardex_bodegas .container_B .fecha-kardex {

    display:
        flex;

    flex-direction:
        column;

    line-height:
        1.3;

}


.mod-kardex_bodegas .container_B .fecha-kardex strong {

    color:
        var(--ia-text);

    font-size:
        12px;

}


.mod-kardex_bodegas .container_B .fecha-kardex small {

    color:
        var(--muted);

    font-size:
        10px;

}


/* =========================================================
   DOCUMENTO
========================================================= */

.mod-kardex_bodegas .container_B .documento-badge {

    display:
        inline-flex;

    align-items:
        center;

    gap:
        5px;

    padding:
        5px 8px;

    background:
        var(--ia-panel);

    border:
        1px solid var(--ia-line);

    border-radius:
        6px;

    color:
        var(--ia-muted);

    font-size:
        10px;

    font-weight:
        600;

}


.mod-kardex_bodegas .container_B .documento-badge i {

    color:
        var(--ia-info);

}


/* =========================================================
   PRODUCTO
========================================================= */

.mod-kardex_bodegas .container_B .producto-kardex {

    display:
        flex;

    align-items:
        center;

    gap:
        8px;

}


.mod-kardex_bodegas .container_B .producto-kardex i {

    color:
        var(--turquesa);

    font-size:
        14px;

}


.mod-kardex_bodegas .container_B .producto-kardex strong {

    color:
        var(--ia-text);

    font-weight:
        600;

    font-size:
        12px;

}


/* =========================================================
   SERIE
========================================================= */

.mod-kardex_bodegas .container_B .serie-kardex {

    display:
        inline-flex;

    align-items:
        center;

    gap:
        5px;

    color:
        var(--ia-muted);

    font-size:
        11px;

    white-space:
        nowrap;

}


.mod-kardex_bodegas .container_B .serie-kardex i {

    color:
        var(--turquesa);

}


/* =========================================================
   BODEGA
========================================================= */

.mod-kardex_bodegas .container_B .bodega-badge {

    display:
        inline-flex;

    align-items:
        center;

    gap:
        6px;

    padding:
        6px 9px;

    background:
        rgb(var(--ia-info-rgb) / .10);

    border:
        1px solid rgb(var(--ia-info-rgb) / .30);

    border-radius:
        7px;

    color:
        var(--ia-info);

    font-size:
        10px;

    font-weight:
        600;

    white-space:
        nowrap;

}


.mod-kardex_bodegas .container_B .bodega-badge i {

    color:
        var(--ia-info);

}


/* =========================================================
   MOVIMIENTOS
========================================================= */

.mod-kardex_bodegas .container_B .movimiento {

    display:
        inline-flex;

    align-items:
        center;

    justify-content:
        center;

    gap:
        7px;

    min-width:
        105px;

    padding:
        6px 10px;

    border-radius:
        20px;

    font-size:
        10px;

    font-weight:
        700;

    white-space:
        nowrap;

    transition:
        transform .2s ease,
        box-shadow .2s ease;

}


.mod-kardex_bodegas .container_B .movimiento:hover {

    transform:
        translateY(-2px);

    box-shadow:
        0 4px 10px rgba(0, 0, 0, .20);

}


.mod-kardex_bodegas .container_B .movimiento-icon {

    width:
        25px;

    height:
        25px;

    display:
        flex;

    align-items:
        center;

    justify-content:
        center;

    border-radius:
        50%;

}


/* ENTRADA */

.mod-kardex_bodegas .container_B .movimiento-entrada {

    color:
        var(--verde-claro);

    background:
        rgb(var(--ia-accent-rgb) / .09);

    border:
        1px solid rgb(var(--ia-accent-rgb) / .25);

}


.mod-kardex_bodegas .container_B .movimiento-entrada .movimiento-icon {

    background:
        rgb(var(--ia-accent-rgb) / .18);

    color:
        var(--verde-claro);

}


.mod-kardex_bodegas .container_B .movimiento-entrada .movimiento-icon i {

    animation:
        flechaEntrada 1.6s ease-in-out infinite;

}


/* SALIDA */

.mod-kardex_bodegas .container_B .movimiento-salida {

    color:
        var(--rojo-claro);

    background:
        rgba(239, 68, 68, .09);

    border:
        1px solid rgba(239, 68, 68, .25);

}


.mod-kardex_bodegas .container_B .movimiento-salida .movimiento-icon {

    background:
        rgba(239, 68, 68, .18);

    color:
        var(--rojo-claro);

}


.mod-kardex_bodegas .container_B .movimiento-salida .movimiento-icon i {

    animation:
        flechaSalida 1.6s ease-in-out infinite;

}


/* TRANSFERENCIA */

.mod-kardex_bodegas .container_B .movimiento-transferencia {

    color:
        var(--ia-info);

    background:
        rgb(var(--ia-info-rgb) / .09);

    border:
        1px solid rgb(var(--ia-info-rgb) / .25);

}


.mod-kardex_bodegas .container_B .movimiento-transferencia .movimiento-icon {

    background:
        rgb(var(--ia-info-rgb) / .18);

    color:
        var(--ia-info);

}


.mod-kardex_bodegas .container_B .movimiento-transferencia .movimiento-icon i {

    animation:
        transferencia 1.8s ease-in-out infinite;

}


/* =========================================================
   CANTIDADES
========================================================= */

.mod-kardex_bodegas .container_B .cantidad {

    display:
        inline-flex;

    align-items:
        center;

    justify-content:
        center;

    gap:
        5px;

    min-width:
        70px;

    font-size:
        13px;

    font-weight:
        700;

}


.mod-kardex_bodegas .container_B .entrada-cantidad {

    color:
        var(--verde-claro);

}


.mod-kardex_bodegas .container_B .salida-cantidad {

    color:
        var(--rojo-claro);

}


.mod-kardex_bodegas .container_B .cantidad-vacia {

    color:
        var(--ia-muted);

}


/* =========================================================
   SALDO
========================================================= */

.mod-kardex_bodegas .container_B .saldo-box {

    display:
        inline-flex;

    align-items:
        center;

    justify-content:
        center;

    gap:
        7px;

    min-width:
        80px;

    padding:
        6px 9px;

    border-radius:
        7px;

    font-size:
        13px;

    font-weight:
        700;

}


.mod-kardex_bodegas .container_B .saldo-ok {

    color:
        var(--verde-claro);

    background:
        rgb(var(--ia-accent-rgb) / .09);

    border:
        1px solid rgb(var(--ia-accent-rgb) / .25);

}


.mod-kardex_bodegas .container_B .saldo-bajo {

    color:
        var(--amarillo);

    background:
        rgb(var(--ia-warn-rgb) / .10);

    border:
        1px solid rgb(var(--ia-warn-rgb) / .30);

}


.mod-kardex_bodegas .container_B .saldo-agotado {

    color:
        var(--rojo-claro);

    background:
        rgba(239, 68, 68, .10);

    border:
        1px solid rgba(239, 68, 68, .30);

}


/* =========================================================
   DATATABLES
========================================================= */

.mod-kardex_bodegas .container_B .dataTables_wrapper {

    color:
        var(--texto-sec) !important;

    padding:
        12px;

}


.mod-kardex_bodegas .container_B .dataTables_wrapper .dataTables_length,
.mod-kardex_bodegas .container_B .dataTables_wrapper .dataTables_info {

    color:
        var(--muted) !important;

    font-size:
        11px;

}


.mod-kardex_bodegas .container_B .dataTables_wrapper .dataTables_length select {

    background:
        var(--input) !important;

    color:
        var(--ia-text) !important;

    border:
        1px solid var(--borde-claro) !important;

    border-radius:
        5px;

    margin:
        0 4px;

}


.mod-kardex_bodegas .container_B .dataTables_wrapper .dataTables_paginate .paginate_button {

    color:
        var(--texto-sec) !important;

    border:
        1px solid transparent !important;

    border-radius:
        5px !important;

}


.mod-kardex_bodegas .container_B .dataTables_wrapper
.dataTables_paginate
.paginate_button.current {

    background:
        var(--azul) !important;

    border:
        1px solid var(--azul) !important;

    color:
        var(--ia-text) !important;

}


.mod-kardex_bodegas .container_B .dataTables_wrapper
.dataTables_paginate
.paginate_button.current:hover {

    background:
        var(--azul-hover) !important;

    color:
        var(--ia-text) !important;

}


.mod-kardex_bodegas .container_B .dataTables_wrapper
.dataTables_paginate
.paginate_button:hover {

    background:
        var(--ia-panel) !important;

    border:
        1px solid var(--borde-claro) !important;

    color:
        var(--ia-text) !important;

}


/* =========================================================
   BOTONES DATATABLES
========================================================= */

.mod-kardex_bodegas .container_B .kardex-top {

    display:
        flex;

    justify-content:
        space-between;

    align-items:
        center;

    gap:
        10px;

    margin-bottom:
        10px;

}


.mod-kardex_bodegas .container_B .kardex-buttons {

    display:
        flex;

    gap:
        5px;

}


.mod-kardex_bodegas .container_B .kardex-buttons .btn,
.mod-kardex_bodegas .container_B .kardex-top .dt-buttons .btn {

    border-radius:
        6px;

    font-size:
        11px;

}


.mod-kardex_bodegas .container_B .kardex-bottom {

    display:
        flex;

    justify-content:
        space-between;

    align-items:
        center;

    padding-top:
        10px;

}


/* =========================================================
   ALERTAS - SEPARADOR
========================================================= */

.mod-kardex_bodegas .container_B .kardex-separador {

    display:
        flex;

    align-items:
        center;

    gap:
        15px;

    margin:
        25px 0;

}


.mod-kardex_bodegas .container_B .kardex-separador-linea {

    flex:
        1;

    height:
        1px;

    background:
        rgb(var(--ia-overlay-rgb) / .08);

}


.mod-kardex_bodegas .container_B .kardex-separador-titulo {

    color:
        var(--ia-muted);

    font-size:
        13px;

    font-weight:
        600;

    text-transform:
        uppercase;

    letter-spacing:
        .5px;

}


/* =========================================================
   ALERTAS HEADER
========================================================= */

.mod-kardex_bodegas .container_B .alertas-header {

    background:
        linear-gradient(
            135deg,
            rgb(var(--ia-warn-rgb) / .08),
            rgb(var(--ia-warn-rgb) / .02)
        ) !important;

    border-bottom:
        1px solid rgb(var(--ia-warn-rgb) / .18) !important;

}


.mod-kardex_bodegas .container_B .alertas-header h4 {

    color:
        var(--ia-warn) !important;

}


.mod-kardex_bodegas .container_B .alertas-header h4 i {

    color:
        var(--ia-warn);

}


.mod-kardex_bodegas .container_B .alertas-header small {

    color:
        var(--ia-muted) !important;

}


/* =========================================================
   ALERTAS KPI
========================================================= */

.mod-kardex_bodegas .container_B .alerta-kpi {

    display:
        flex;

    align-items:
        center;

    gap:
        14px;

    padding:
        16px;

    border-radius:
        10px;

    border:
        1px solid rgb(var(--ia-overlay-rgb) / .06);

    background:
        rgb(var(--ia-overlay-rgb) / .025);

    transition:
        transform .2s ease,
        border-color .2s ease;

}


.mod-kardex_bodegas .container_B .alerta-kpi:hover {

    transform:
        translateY(-2px);

    border-color:
        rgb(var(--ia-overlay-rgb) / .12);

}


.mod-kardex_bodegas .container_B .alerta-kpi-icon {

    width:
        42px;

    height:
        42px;

    min-width:
        42px;

    border-radius:
        10px;

    display:
        flex;

    align-items:
        center;

    justify-content:
        center;

    font-size:
        17px;

}


.mod-kardex_bodegas .container_B .alerta-kpi small {

    display:
        block;

    color:
        var(--ia-muted);

    font-size:
        11px;

    margin-bottom:
        2px;

}


.mod-kardex_bodegas .container_B .alerta-kpi strong {

    display:
        block;

    font-size:
        22px;

    line-height:
        1.1;

}


.mod-kardex_bodegas .container_B .alerta-kpi-total .alerta-kpi-icon {

    background:
        rgb(var(--ia-warn-rgb) / .12);

    color:
        var(--ia-warn);

}


.mod-kardex_bodegas .container_B .alerta-kpi-total strong {

    color:
        var(--ia-warn);

}


.mod-kardex_bodegas .container_B .alerta-kpi-sin-stock .alerta-kpi-icon {

    background:
        rgb(var(--ia-danger-rgb) / .12);

    color:
        var(--ia-danger);

}


.mod-kardex_bodegas .container_B .alerta-kpi-sin-stock strong {

    color:
        var(--ia-danger);

}


.mod-kardex_bodegas .container_B .alerta-kpi-critico .alerta-kpi-icon {

    background:
        rgba(255,152,0,.12);

    color:
        #ff9800;

}


.mod-kardex_bodegas .container_B .alerta-kpi-critico strong {

    color:
        #ff9800;

}

/* =========================================================
   TABLA ALERTAS
========================================================= */

.mod-kardex_bodegas .container_B .alertas-table-container {

    width: 100%;

    max-width: 100%;

    overflow-x: auto;

    overflow-y: visible;

    border: 1px solid var(--ia-accent);

    border-radius: 10px;

    background: var(--card);

    box-sizing: border-box;

}


/* =========================================================
   TABLA ALERTAS
========================================================= */

.mod-kardex_bodegas .container_B #tablaAlertas {

    width: 100% !important;

    min-width: 950px;

    margin-bottom: 0 !important;

    background: var(--card) !important;

    color: var(--ia-text);

    border-collapse: separate;

    border-spacing: 0;

    border: 0 !important;

}


/* =========================================================
   ENCABEZADO
========================================================= */

.mod-kardex_bodegas .container_B #tablaAlertas thead th {

    background: var(--ia-bg) !important;

    color: var(--turquesa) !important;

    border: 1px solid var(--ia-line) !important;

    font-size: 11px;

    font-weight: 700;

    text-transform: uppercase;

    letter-spacing: .4px;

    vertical-align: middle;

    white-space: nowrap;

    padding: 11px 10px;

}


/* =========================================================
   CUERPO
========================================================= */

.mod-kardex_bodegas .container_B #tablaAlertas tbody td {

    background: var(--ia-panel) !important;

    color: var(--ia-text) !important;

    border: 1px solid var(--ia-line) !important;

    padding: 9px 10px;

    vertical-align: middle;

}


/* =========================================================
   HOVER
========================================================= */

.mod-kardex_bodegas .container_B #tablaAlertas tbody tr {

    transition: background .18s ease;

}


.mod-kardex_bodegas .container_B #tablaAlertas tbody tr:hover td {

    background: var(--ia-panel) !important;

}


/* =========================================================
   ESQUINAS
========================================================= */

.mod-kardex_bodegas .container_B #tablaAlertas thead tr:first-child th:first-child {

    border-top-left-radius: 9px;

}


.mod-kardex_bodegas .container_B #tablaAlertas thead tr:first-child th:last-child {

    border-top-right-radius: 9px;

}


.mod-kardex_bodegas .container_B #tablaAlertas tbody tr:last-child td:first-child {

    border-bottom-left-radius: 9px;

}


.mod-kardex_bodegas .container_B #tablaAlertas tbody tr:last-child td:last-child {

    border-bottom-right-radius: 9px;

}


/* =========================================================
   SCROLLBAR ALERTAS
========================================================= */

.mod-kardex_bodegas .container_B .alertas-table-container::-webkit-scrollbar {

    height: 8px;

}


.mod-kardex_bodegas .container_B .alertas-table-container::-webkit-scrollbar-track {

    background: var(--ia-bg);

    border-radius: 10px;

}


.mod-kardex_bodegas .container_B .alertas-table-container::-webkit-scrollbar-thumb {

    background: var(--ia-accent);

    border-radius: 10px;

}


.mod-kardex_bodegas .container_B .alertas-table-container::-webkit-scrollbar-thumb:hover {

    background: var(--ia-accent);

}


/* =========================================================
   ESTADOS ALERTAS
========================================================= */

.mod-kardex_bodegas .container_B .alerta-estado {

    display:
        inline-flex;

    align-items:
        center;

    justify-content:
        center;

    gap:
        5px;

    padding:
        6px 9px;

    border-radius:
        20px;

    font-size:
        10px;

    font-weight:
        700;

    white-space:
        nowrap;

}


.mod-kardex_bodegas .container_B .alerta-sin-stock {

    color:
        #ff6b78;

    background:
        rgb(var(--ia-danger-rgb) / .12);

    border:
        1px solid rgb(var(--ia-danger-rgb) / .20);

}


.mod-kardex_bodegas .container_B .alerta-stock-critico {

    color:
        var(--ia-warn);

    background:
        rgb(var(--ia-warn-rgb) / .10);

    border:
        1px solid rgb(var(--ia-warn-rgb) / .18);

}


/* =========================================================
   ALERTA PRODUCTO
========================================================= */

.mod-kardex_bodegas .container_B .alerta-producto {

    display:
        flex;

    flex-direction:
        column;

    gap:
        2px;

}


.mod-kardex_bodegas .container_B .alerta-producto strong {

    color:
        var(--ia-text);

    font-size:
        13px;

}


.mod-kardex_bodegas .container_B .alerta-producto small {

    color:
        var(--ia-muted);

    font-size:
        10px;

}


.mod-kardex_bodegas .container_B .alerta-categoria {

    color:
        var(--ia-muted);

    font-size:
        11px;

}


/* =========================================================
   TIPOS
========================================================= */

.mod-kardex_bodegas .container_B .badge-insumo {

    background:
        rgba(23,162,184,.12) !important;

    color:
        #5bc0de !important;

    border:
        1px solid rgba(23,162,184,.20);

    font-size:
        10px;

    padding:
        6px 8px;

}


.mod-kardex_bodegas .container_B .badge-repuesto {

    background:
        rgba(111,66,193,.12) !important;

    color:
        #b99ae8 !important;

    border:
        1px solid rgba(111,66,193,.20);

    font-size:
        10px;

    padding:
        6px 8px;

}


/* =========================================================
   NUMEROS STOCK
========================================================= */

.mod-kardex_bodegas .container_B .alerta-numero {

    font-size:
        17px;

}


.mod-kardex_bodegas .container_B .alerta-numero-rojo {

    color:
        var(--ia-danger);

}


.mod-kardex_bodegas .container_B .alerta-numero-naranjo {

    color:
        var(--ia-warn);

}


.mod-kardex_bodegas .container_B .alerta-numero-critico {

    color:
        var(--ia-muted);

}


/* =========================================================
   FALTANTE
========================================================= */

.mod-kardex_bodegas .container_B .alerta-faltante {

    display:
        inline-block;

    padding:
        5px 9px;

    border-radius:
        6px;

    background:
        rgb(var(--ia-danger-rgb) / .10);

    color:
        #ff6b78;

    font-size:
        11px;

    font-weight:
        700;

}

/* =========================================================
   TABLA TRASPASOS
========================================================= */

.mod-kardex_bodegas .container_B .traspasos-table-container {

    width: 100%;

    max-width: 100%;

    overflow-x: auto;

    overflow-y: visible;

    border: 1px solid var(--ia-accent);

    border-radius: 10px;

    background: var(--card);

    box-sizing: border-box;

}


/* =========================================================
   TABLA TRASPASOS
========================================================= */

.mod-kardex_bodegas .container_B #tablaTraspasos {

    width: 100% !important;

    min-width: 1050px;

    background: var(--card) !important;

    color: var(--ia-text);

    border-collapse: separate;

    border-spacing: 0;

    margin-bottom: 0 !important;

    border: 0 !important;

}


/* =========================================================
   ENCABEZADO
========================================================= */

.mod-kardex_bodegas .container_B #tablaTraspasos thead th {

    background: var(--ia-bg) !important;

    color: var(--turquesa) !important;

    border: 1px solid var(--ia-line) !important;

    font-size: 11px;

    font-weight: 700;

    text-transform: uppercase;

    letter-spacing: .3px;

    white-space: nowrap;

    padding: 11px 10px;

    vertical-align: middle;

}


/* =========================================================
   CUERPO
========================================================= */

.mod-kardex_bodegas .container_B #tablaTraspasos tbody td {

    background: var(--ia-panel) !important;

    color: var(--ia-text) !important;

    border: 1px solid var(--ia-line) !important;

    vertical-align: middle;

    padding: 9px 10px;

    font-size: 12px;

}


/* =========================================================
   HOVER
========================================================= */

.mod-kardex_bodegas .container_B #tablaTraspasos tbody tr {

    transition: background .18s ease;

}


.mod-kardex_bodegas .container_B #tablaTraspasos tbody tr:hover td {

    background: var(--ia-panel) !important;

}


/* =========================================================
   TRASPASO PENDIENTE
========================================================= */

.mod-kardex_bodegas .container_B #tablaTraspasos tbody tr.traspaso-fila-pendiente td {

    background: rgb(var(--ia-warn-rgb) / .025) !important;

}


.mod-kardex_bodegas .container_B #tablaTraspasos tbody tr.traspaso-fila-pendiente:hover td {

    background: rgb(var(--ia-warn-rgb) / .06) !important;

}


/* =========================================================
   ESQUINAS
========================================================= */

.mod-kardex_bodegas .container_B #tablaTraspasos thead tr:first-child th:first-child {

    border-top-left-radius: 9px;

}


.mod-kardex_bodegas .container_B #tablaTraspasos thead tr:first-child th:last-child {

    border-top-right-radius: 9px;

}


.mod-kardex_bodegas .container_B #tablaTraspasos tbody tr:last-child td:first-child {

    border-bottom-left-radius: 9px;

}


.mod-kardex_bodegas .container_B #tablaTraspasos tbody tr:last-child td:last-child {

    border-bottom-right-radius: 9px;

}


/* =========================================================
   SCROLLBAR TRASPASOS
========================================================= */

.mod-kardex_bodegas .container_B .traspasos-table-container::-webkit-scrollbar {

    height: 8px;

}


.mod-kardex_bodegas .container_B .traspasos-table-container::-webkit-scrollbar-track {

    background: var(--ia-bg);

    border-radius: 10px;

}


.mod-kardex_bodegas .container_B .traspasos-table-container::-webkit-scrollbar-thumb {

    background: var(--ia-accent);

    border-radius: 10px;

}


.mod-kardex_bodegas .container_B .traspasos-table-container::-webkit-scrollbar-thumb:hover {

    background: var(--ia-accent);

}

/* =========================================================
   CODIGO TRASPASO
========================================================= */

.mod-kardex_bodegas .container_B .traspaso-codigo {

    display:
        inline-flex;

    align-items:
        center;

    gap:
        6px;

    padding:
        5px 8px;

    border-radius:
        6px;

    background:
        var(--ia-panel);

    border:
        1px solid var(--ia-line);

    color:
        var(--ia-text);

    font-size:
        10px;

    font-weight:
        700;

    white-space:
        nowrap;

}


.mod-kardex_bodegas .container_B .traspaso-codigo i {

    color:
        var(--turquesa);

}


/* =========================================================
   FECHA TRASPASO
========================================================= */

.mod-kardex_bodegas .container_B .traspaso-fecha {

    display:
        flex;

    flex-direction:
        column;

    line-height:
        1.3;

}


.mod-kardex_bodegas .container_B .traspaso-fecha strong {

    color:
        var(--ia-text);

    font-size:
        12px;

}


.mod-kardex_bodegas .container_B .traspaso-fecha small {

    color:
        var(--muted);

    font-size:
        10px;

}


/* =========================================================
   RUTA TABLA
========================================================= */

.mod-kardex_bodegas .container_B .traspaso-ruta-tabla {

    display:
        flex;

    align-items:
        center;

    gap:
        7px;

    white-space:
        nowrap;

}


.mod-kardex_bodegas .container_B .traspaso-ruta-tabla .bodega-origen {

    color:
        var(--ia-danger);

    font-weight:
        600;

}


.mod-kardex_bodegas .container_B .traspaso-ruta-tabla .bodega-destino {

    color:
        var(--ia-success);

    font-weight:
        600;

}


.mod-kardex_bodegas .container_B .traspaso-ruta-tabla .flecha {

    color:
        var(--ia-info);

    font-size:
        11px;

}


/* =========================================================
   BODEGAS TABLA
========================================================= */

.mod-kardex_bodegas .container_B .bodega-origen {

    color:
        var(--ia-danger);

    font-weight:
        600;

}


.mod-kardex_bodegas .container_B .bodega-destino {

    color:
        var(--ia-success);

    font-weight:
        600;

}


/* =========================================================
   PRODUCTOS TRASPASO
========================================================= */

.mod-kardex_bodegas .container_B .traspaso-productos-badge {

    display:
        inline-flex;

    align-items:
        center;

    justify-content:
        center;

    min-width:
        32px;

    height:
        27px;

    padding:
        0 8px;

    border-radius:
        7px;

    background:
        rgb(var(--ia-accent-rgb) / .10);

    border:
        1px solid rgb(var(--ia-accent-rgb) / .22);

    color:
        var(--turquesa);

    font-size:
        11px;

    font-weight:
        700;

}


/* =========================================================
   ESTADO TRASPASO
========================================================= */

.mod-kardex_bodegas .container_B .traspaso-estado {

    display:
        inline-flex;

    align-items:
        center;

    justify-content:
        center;

    gap:
        5px;

    padding:
        6px 9px;

    border-radius:
        20px;

    font-size:
        10px;

    font-weight:
        700;

    white-space:
        nowrap;

}


.mod-kardex_bodegas .container_B .traspaso-pendiente {

    color:
        var(--ia-warn);

    background:
        rgb(var(--ia-warn-rgb) / .10);

    border:
        1px solid rgb(var(--ia-warn-rgb) / .25);

}


.mod-kardex_bodegas .container_B .traspaso-recibido {

    color:
        var(--ia-success);

    background:
        rgb(var(--ia-accent-rgb) / .10);

    border:
        1px solid rgb(var(--ia-accent-rgb) / .25);

}


.mod-kardex_bodegas .container_B .traspaso-anulado {

    color:
        var(--ia-danger);

    background:
        rgba(239,68,68,.10);

    border:
        1px solid rgba(239,68,68,.25);

}


/* =========================================================
   ACCIONES TRASPASO
========================================================= */

.mod-kardex_bodegas .container_B .traspaso-acciones {

    display:
        flex;

    align-items:
        center;

    justify-content:
        center;

    gap:
        5px;

}


.mod-kardex_bodegas .container_B .btn-traspaso-accion {

    width:
        32px;

    height:
        32px;

    padding:
        0;

    display:
        inline-flex;

    align-items:
        center;

    justify-content:
        center;

    border-radius:
        6px;

    transition:
        all .18s ease;

}


.mod-kardex_bodegas .container_B .btn-traspaso-ver {

    background:
        var(--ia-panel);

    border:
        1px solid var(--ia-line);

    color:
        var(--ia-info);

}


.mod-kardex_bodegas .container_B .btn-traspaso-ver:hover {

    background:
        var(--azul);

    border-color:
        var(--azul);

    color:
        var(--ia-text);

    transform:
        translateY(-1px);

}


.mod-kardex_bodegas .container_B .btn-traspaso-qr {

    background:
        rgb(var(--ia-accent-rgb) / .08);

    border:
        1px solid rgb(var(--ia-accent-rgb) / .25);

    color:
        var(--verde);

}


.mod-kardex_bodegas .container_B .btn-traspaso-qr:hover {

    background:
        var(--verde);

    border-color:
        var(--verde);

    color:
        var(--ia-accent-d);

    transform:
        translateY(-1px);

}


/* =========================================================
   MODAL TRASPASO
========================================================= */

.mod-kardex_bodegas .container_B .modal-traspaso {

    background:
        var(--ia-panel) !important;

    color:
        var(--ia-text);

    border:
        1px solid var(--ia-line);

    border-radius:
        10px;

    overflow:
        hidden;

}


.mod-kardex_bodegas .container_B .modal-traspaso .modal-header {

    background:
        var(--ia-bg);

    border-bottom:
        1px solid var(--ia-line);

    padding:
        14px 18px;

}


.mod-kardex_bodegas .container_B .modal-traspaso .modal-title {

    color:
        var(--ia-text);

    font-weight:
        700;

}


.mod-kardex_bodegas .container_B .modal-traspaso .modal-title i {

    color:
        var(--turquesa);

}


.mod-kardex_bodegas .container_B .modal-traspaso .close {

    color:
        var(--ia-text);

    opacity:
        .8;

}


.mod-kardex_bodegas .container_B .modal-traspaso .close:hover {

    opacity:
        1;

}


.mod-kardex_bodegas .container_B .modal-traspaso .modal-body {

    background:
        var(--ia-panel);

}


.mod-kardex_bodegas .container_B .modal-traspaso .table {

    color:
        var(--ia-text);

}


.mod-kardex_bodegas .container_B .modal-traspaso .table td,
.mod-kardex_bodegas .container_B .modal-traspaso .table th {

    border-color:
        var(--ia-line) !important;

}


/* =========================================================
   DETALLE CABECERA
========================================================= */

.mod-kardex_bodegas .container_B .detalle-traspaso-cabecera {

    display:
        flex;

    justify-content:
        space-between;

    align-items:
        center;

    gap:
        15px;

    padding:
        14px;

    margin-bottom:
        15px;

    background:
        var(--ia-bg);

    border:
        1px solid var(--ia-line);

    border-radius:
        8px;

}


.mod-kardex_bodegas .container_B .detalle-traspaso-codigo {

    color:
        var(--ia-text);

    font-size:
        17px;

    font-weight:
        700;

}


.mod-kardex_bodegas .container_B .detalle-traspaso-codigo i {

    color:
        var(--turquesa);

    margin-right:
        6px;

}


.mod-kardex_bodegas .container_B .detalle-traspaso-id {

    color:
        var(--muted);

    font-size:
        10px;

    margin-top:
        3px;

}


/* =========================================================
   INFORMACION DETALLE
========================================================= */

.mod-kardex_bodegas .container_B .detalle-traspaso-info {

    display:
        grid;

    grid-template-columns:
        repeat(4, 1fr);

    gap:
        8px;

    margin-bottom:
        15px;

}


.mod-kardex_bodegas .container_B .detalle-traspaso-info-item {

    background:
        var(--ia-bg);

    border:
        1px solid var(--ia-line);

    border-radius:
        8px;

    padding:
        10px 12px;

}


.mod-kardex_bodegas .container_B .detalle-traspaso-info-item small {

    display:
        block;

    color:
        var(--ia-muted);

    font-size:
        9px;

    text-transform:
        uppercase;

    margin-bottom:
        4px;

}


.mod-kardex_bodegas .container_B .detalle-traspaso-info-item strong {

    display:
        block;

    color:
        var(--ia-text);

    font-size:
        12px;

}


/* =========================================================
   RUTA DETALLE
========================================================= */

.mod-kardex_bodegas .container_B .detalle-traspaso-ruta {

    display:
        grid;

    grid-template-columns:
        1fr 50px 1fr;

    align-items:
        center;

    gap:
        10px;

    margin-bottom:
        15px;

}


.mod-kardex_bodegas .container_B .detalle-traspaso-bodega {

    background:
        var(--ia-bg);

    border:
        1px solid var(--ia-line);

    border-radius:
        8px;

    padding:
        13px;

}


.mod-kardex_bodegas .container_B .detalle-traspaso-bodega.origen {

    border-left:
        3px solid var(--ia-danger);

}


.mod-kardex_bodegas .container_B .detalle-traspaso-bodega.destino {

    border-left:
        3px solid var(--ia-accent);

}


.mod-kardex_bodegas .container_B .detalle-traspaso-bodega small {

    display:
        block;

    color:
        var(--ia-muted);

    font-size:
        9px;

    text-transform:
        uppercase;

    margin-bottom:
        4px;

}


.mod-kardex_bodegas .container_B .detalle-traspaso-bodega strong {

    color:
        var(--ia-text);

    font-size:
        13px;

}


.mod-kardex_bodegas .container_B .detalle-traspaso-flecha {

    text-align:
        center;

    color:
        var(--ia-info);

    font-size:
        18px;

}


/* =========================================================
   OBSERVACIONES
========================================================= */

.mod-kardex_bodegas .container_B .detalle-traspaso-observacion {

    background:
        var(--ia-bg);

    border:
        1px solid var(--ia-line);

    border-left:
        3px solid var(--ia-line);

    border-radius:
        7px;

    padding:
        11px 13px;

    margin-bottom:
        10px;

    color:
        var(--ia-text);

    font-size:
        12px;

}


.mod-kardex_bodegas .container_B .detalle-traspaso-observacion.recepcion {

    border-left-color:
        var(--ia-accent);

}


.mod-kardex_bodegas .container_B .detalle-traspaso-observacion small {

    display:
        block;

    color:
        var(--ia-muted);

    font-size:
        9px;

    text-transform:
        uppercase;

    margin-bottom:
        4px;

    font-weight:
        700;

}


.mod-kardex_bodegas .container_B .detalle-traspaso-observacion i {

    margin-right:
        5px;

    color:
        var(--turquesa);

}


/* =========================================================
   TABLA DETALLE TRASPASO
========================================================= */

.mod-kardex_bodegas .container_B .detalle-traspaso-table-container {

    width: 100%;

    max-width: 100%;

    overflow-x: auto;

    overflow-y: visible;

    border: 1px solid var(--ia-accent);

    border-radius: 10px;

    background: var(--card);

    box-sizing: border-box;

}


/* =========================================================
   TABLA
========================================================= */

.mod-kardex_bodegas .container_B #tablaDetalleTraspaso {

    width: 100% !important;

    min-width: 700px;

    margin-bottom: 0 !important;

    color: var(--ia-text);

    background: var(--card) !important;

    border-collapse: separate;

    border-spacing: 0;

    border: 0 !important;

}


/* =========================================================
   ENCABEZADO
========================================================= */

.mod-kardex_bodegas .container_B #tablaDetalleTraspaso thead th {

    background: var(--ia-bg) !important;

    color: var(--turquesa) !important;

    border: 1px solid var(--ia-line) !important;

    font-size: 10px;

    font-weight: 700;

    text-transform: uppercase;

    letter-spacing: .3px;

    padding: 9px;

    white-space: nowrap;

    vertical-align: middle;

}


/* =========================================================
   CUERPO
========================================================= */

.mod-kardex_bodegas .container_B #tablaDetalleTraspaso tbody td {

    background: var(--ia-panel) !important;

    color: var(--ia-text) !important;

    border: 1px solid var(--ia-line) !important;

    padding: 9px;

    font-size: 11px;

    vertical-align: middle;

}


/* =========================================================
   HOVER
========================================================= */

.mod-kardex_bodegas .container_B #tablaDetalleTraspaso tbody tr {

    transition: background .18s ease;

}


.mod-kardex_bodegas .container_B #tablaDetalleTraspaso tbody tr:hover td {

    background: var(--ia-panel) !important;

}


/* =========================================================
   ESQUINAS
========================================================= */

.mod-kardex_bodegas .container_B #tablaDetalleTraspaso thead tr:first-child th:first-child {

    border-top-left-radius: 9px;

}


.mod-kardex_bodegas .container_B #tablaDetalleTraspaso thead tr:first-child th:last-child {

    border-top-right-radius: 9px;

}


.mod-kardex_bodegas .container_B #tablaDetalleTraspaso tbody tr:last-child td:first-child {

    border-bottom-left-radius: 9px;

}


.mod-kardex_bodegas .container_B #tablaDetalleTraspaso tbody tr:last-child td:last-child {

    border-bottom-right-radius: 9px;

}


/* =========================================================
   SCROLLBAR DETALLE
========================================================= */

.mod-kardex_bodegas .container_B .detalle-traspaso-table-container::-webkit-scrollbar {

    height: 8px;

}


.mod-kardex_bodegas .container_B .detalle-traspaso-table-container::-webkit-scrollbar-track {

    background: var(--ia-bg);

    border-radius: 10px;

}


.mod-kardex_bodegas .container_B .detalle-traspaso-table-container::-webkit-scrollbar-thumb {

    background: var(--ia-accent);

    border-radius: 10px;

}


.mod-kardex_bodegas .container_B .detalle-traspaso-table-container::-webkit-scrollbar-thumb:hover {

    background: var(--ia-accent);

}

/* =========================================================
   RECEPCION DETALLE
========================================================= */

.mod-kardex_bodegas .container_B .detalle-recepcion-fecha {

    margin-top:
        12px;

    color:
        var(--ia-muted);

    font-size:
        10px;

}


.mod-kardex_bodegas .container_B .detalle-recepcion-fecha strong {

    color:
        var(--ia-muted);

}


/* =========================================================
   ANIMACIONES
========================================================= */

@keyframes flechaEntrada {

    0%,
    100% {

        transform:
            translateY(-2px);

    }

    50% {

        transform:
            translateY(3px);

    }

}


@keyframes flechaSalida {

    0%,
    100% {

        transform:
            translateY(2px);

    }

    50% {

        transform:
            translateY(-3px);

    }

}


@keyframes transferencia {

    0%,
    100% {

        transform:
            translateX(-2px);

    }

    50% {

        transform:
            translateX(3px);

    }

}


/* =========================================================
   RESPONSIVE
========================================================= */

@media (max-width: 900px) {

    .mod-kardex_bodegas .container_B .kardex-indicadores {

        display:
            none;

    }


    .mod-kardex_bodegas .container_B .detalle-traspaso-info {

        grid-template-columns:
            repeat(2, 1fr);

    }

}


@media (max-width: 768px) {

    .mod-kardex_bodegas .container_B .kardex-header {

        padding:
            12px;

    }


    .mod-kardex_bodegas .container_B .kardex-header h4 {

        font-size:
            16px;

    }


    .mod-kardex_bodegas .container_B .leyenda-kardex {

        gap:
            10px;

        flex-wrap:
            wrap;

    }


    .mod-kardex_bodegas .container_B .kardex-top {

        flex-direction:
            column;

        align-items:
            flex-start;

        gap:
            8px;

    }


    .mod-kardex_bodegas .container_B .kardex-bottom {

        flex-direction:
            column;

        align-items:
            flex-start;

        gap:
            8px;

    }


    .mod-kardex_bodegas .container_B .kpi-card {

        min-height:
            68px;

    }


    .mod-kardex_bodegas .container_B .kpi-card strong {

        font-size:
            18px;

    }


    .mod-kardex_bodegas .container_B #tablaKardex .filtro-columna {

        min-width:
            85px;

    }


    .mod-kardex_bodegas .container_B .alerta-kpi {

        padding:
            13px;

    }


    .mod-kardex_bodegas .container_B .alerta-kpi strong {

        font-size:
            19px;

    }


    .mod-kardex_bodegas .container_B .kardex-separador {

        margin:
            20px 0;

    }

}


@media (max-width: 600px) {

    .mod-kardex_bodegas .container_B .detalle-traspaso-cabecera {

        flex-direction:
            column;

        align-items:
            flex-start;

    }


    .mod-kardex_bodegas .container_B .detalle-traspaso-info {

        grid-template-columns:
            1fr;

    }


    .mod-kardex_bodegas .container_B .detalle-traspaso-ruta {

        grid-template-columns:
            1fr;

    }


    .mod-kardex_bodegas .container_B .detalle-traspaso-flecha {

        transform:
            rotate(90deg);

    }


    .mod-kardex_bodegas .container_B #tablaTraspasos {

        min-width:
            900px;

    }

}


@media (max-width: 576px) {

    .mod-kardex_bodegas .container_B .kardex-tabs .nav-link {

        padding:
            8px 11px;

        font-size:
            11px;

    }


    .mod-kardex_bodegas .container_B .kardex-tabs .nav-link i {

        margin-right:
            2px !important;

    }


    .mod-kardex_bodegas .container_B .movimiento {

        min-width:
            45px;

    }


    .mod-kardex_bodegas .container_B .movimiento span:last-child {

        display:
            none;

    }


    .mod-kardex_bodegas .container_B .movimiento-icon {

        width:
            24px;

        height:
            24px;

    }


    .mod-kardex_bodegas .container_B .bodega-badge {

        max-width:
            120px;

        overflow:
            hidden;

        text-overflow:
            ellipsis;

    }


    .mod-kardex_bodegas .container_B .alerta-estado {

        font-size:
            9px;

        padding:
            5px 7px;

    }


    .mod-kardex_bodegas .container_B .alerta-numero {

        font-size:
            15px;

    }


    .mod-kardex_bodegas .container_B .leyenda-kardex {

        gap:
            8px;

    }

}

/* =========================================================
   MODAL DETALLE TRASPASO - DISEÑO PRO
========================================================= */

.mod-kardex_bodegas .container_B .modal-traspaso {

    background: var(--card) !important;

    color: var(--texto) !important;

    border: 1px solid var(--borde) !important;

    border-radius: 14px;

    overflow: hidden;

    box-shadow: 0 18px 60px rgba(0,0,0,.55);

}

.mod-kardex_bodegas .container_B .modal-traspaso .modal-header {

    background:
        linear-gradient(135deg, var(--ia-panel2), var(--ia-bg)) !important;

    border-bottom: 1px solid var(--borde) !important;

    color: var(--ia-text) !important;

    padding: 14px 18px;

}

.mod-kardex_bodegas .container_B .modal-traspaso .modal-title {

    font-size: 15px;

    font-weight: 700;

    letter-spacing: .2px;

}

.mod-kardex_bodegas .container_B .modal-traspaso .modal-title i {

    color: var(--turquesa);

}

.mod-kardex_bodegas .container_B .modal-traspaso .close {

    color: var(--ia-text) !important;

    opacity: .8;

}

.mod-kardex_bodegas .container_B .modal-traspaso .modal-body {

    background: var(--ia-bg);

    padding: 18px;

}

.mod-kardex_bodegas .container_B .traspaso-detalle-header {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 15px;

    padding: 17px 18px;

    background: linear-gradient(135deg, var(--ia-panel2), var(--ia-bg));

    border: 1px solid var(--borde);

    border-radius: 11px;

}

.mod-kardex_bodegas .container_B .traspaso-detalle-header-main {

    display: flex;

    align-items: center;

    gap: 13px;

}

.mod-kardex_bodegas .container_B .traspaso-detalle-icono {

    width: 48px;

    height: 48px;

    min-width: 48px;

    display: flex;

    align-items: center;

    justify-content: center;

    border-radius: 11px;

    color: var(--turquesa);

    background: rgb(var(--ia-accent-rgb) / .10);

    border: 1px solid rgb(var(--ia-accent-rgb) / .25);

    font-size: 19px;

}

.mod-kardex_bodegas .container_B .traspaso-detalle-overline {

    display: block;

    color: var(--muted);

    font-size: 9px;

    font-weight: 700;

    letter-spacing: 1.1px;

    margin-bottom: 2px;

}

.mod-kardex_bodegas .container_B .traspaso-detalle-header h3 {

    margin: 0;

    color: var(--ia-text);

    font-size: 22px;

    font-weight: 800;

}

.mod-kardex_bodegas .container_B .traspaso-detalle-meta {

    display: flex;

    flex-wrap: wrap;

    gap: 12px;

    margin-top: 4px;

    color: var(--texto-sec);

    font-size: 10px;

}

.mod-kardex_bodegas .container_B .traspaso-detalle-status {

    white-space: nowrap;

}

.mod-kardex_bodegas .container_B .traspaso-ruta-card {

    min-height: 86px;

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 12px;

    padding: 15px 18px;

    background: var(--card);

    border: 1px solid var(--borde);

    border-radius: 10px;

}

.mod-kardex_bodegas .container_B .traspaso-ruta-item {

    flex: 1;

    min-width: 0;

    display: flex;

    flex-direction: column;

    gap: 4px;

}

.mod-kardex_bodegas .container_B .traspaso-ruta-label {

    font-size: 9px;

    font-weight: 800;

    letter-spacing: .8px;

    color: var(--muted);

}

.mod-kardex_bodegas .container_B .traspaso-ruta-item.origen .traspaso-ruta-label {
    color: var(--ia-danger);
}

.mod-kardex_bodegas .container_B .traspaso-ruta-item.destino .traspaso-ruta-label {
    color: var(--verde-claro);
}

.mod-kardex_bodegas .container_B .traspaso-ruta-item strong {

    color: var(--ia-text);

    font-size: 14px;

    overflow: hidden;

    text-overflow: ellipsis;

    white-space: nowrap;

}

.mod-kardex_bodegas .container_B .traspaso-ruta-flecha {

    width: 38px;

    height: 38px;

    min-width: 38px;

    display: flex;

    align-items: center;

    justify-content: center;

    border-radius: 50%;

    background: rgb(var(--ia-accent-rgb) / .08);

    border: 1px solid rgb(var(--ia-accent-rgb) / .20);

    color: var(--turquesa);

}

.mod-kardex_bodegas .container_B .traspaso-resumen-card {

    height: 100%;

    display: flex;

    align-items: center;

    justify-content: space-around;

    gap: 10px;

    padding: 15px;

    background: var(--ia-bg);

    border: 1px solid var(--borde);

    border-radius: 10px;

}

.mod-kardex_bodegas .container_B .traspaso-resumen-card div {

    text-align: center;

}

.mod-kardex_bodegas .container_B .traspaso-resumen-card small {

    display: block;

    color: var(--muted);

    font-size: 9px;

    font-weight: 700;

    letter-spacing: .7px;

}

.mod-kardex_bodegas .container_B .traspaso-resumen-card strong {

    display: block;

    color: var(--turquesa);

    font-size: 21px;

    margin-top: 3px;

}

.mod-kardex_bodegas .container_B .traspaso-codigo-card {

    min-height: 270px;

    display: flex;

    flex-direction: column;

    align-items: center;

    justify-content: center;

    background: var(--ia-bg);

    border: 1px solid var(--borde);

    border-radius: 11px;

    padding: 15px;

    position: relative;

    overflow: hidden;

}

.mod-kardex_bodegas .container_B .traspaso-codigo-card::before {

    content: "";

    position: absolute;

    top: 0;

    left: 0;

    right: 0;

    height: 2px;

    background: var(--turquesa);

    opacity: .65;

}

.mod-kardex_bodegas .container_B .traspaso-codigo-title {

    width: 100%;

    display: flex;

    align-items: center;

    justify-content: space-between;

    margin-bottom: 10px;

    color: var(--ia-text);

    font-size: 12px;

    font-weight: 700;

}

.mod-kardex_bodegas .container_B .traspaso-codigo-title i {
    color: var(--turquesa);
}

.mod-kardex_bodegas .container_B .traspaso-codigo-title small {

    color: var(--muted);

    font-size: 9px;

    font-weight: 600;

}

.mod-kardex_bodegas .container_B .traspaso-qr {

    width: 202px;

    height: 202px;

    display: flex;

    align-items: center;

    justify-content: center;

    /* QR siempre sobre blanco con margen blanco: si no, no se puede escanear */
    background: #ffffff;

    border: 6px solid #ffffff;

    border-radius: 8px;

    box-shadow: 0 5px 20px rgba(0,0,0,.30);

}

.mod-kardex_bodegas .container_B .traspaso-qr img,
.mod-kardex_bodegas .container_B .traspaso-qr canvas {

    max-width: 190px;

    max-height: 190px;

}

.mod-kardex_bodegas .container_B .traspaso-barcode-wrap {

    width: 100%;

    min-height: 135px;

    display: flex;

    align-items: center;

    justify-content: center;

    padding: 10px 12px;

    background: #ffffff; /* código de barras sobre blanco (escaneable) */

    border-radius: 8px;

    box-shadow: 0 5px 20px rgba(0,0,0,.25);

}

.mod-kardex_bodegas .container_B #barcodeTraspaso {

    width: 100%;

    max-width: 440px;

    height: auto;

}

.mod-kardex_bodegas .container_B .traspaso-codigo-texto {

    margin-top: 9px;

    color: var(--ia-text);

    font-size: 12px;

    font-weight: 800;

    letter-spacing: 1.2px;

}

.mod-kardex_bodegas .container_B .traspaso-detalle-section-title {

    display: flex;

    align-items: center;

    margin: 5px 0 9px;

    color: var(--ia-text);

    font-size: 12px;

    font-weight: 700;

    text-transform: uppercase;

    letter-spacing: .5px;

}

.mod-kardex_bodegas .container_B .traspaso-detalle-section-title i {
    color: var(--turquesa);
}

.mod-kardex_bodegas .container_B .traspaso-detalle-table-wrap {

    border: 1px solid var(--borde);

    border-radius: 10px;

    overflow: hidden;

    background: var(--card);

}

.mod-kardex_bodegas .container_B .traspaso-detalle-table {

    margin-bottom: 0 !important;

    min-width: 850px;

    color: var(--ia-text);

}

.mod-kardex_bodegas .container_B .traspaso-detalle-table thead th {

    background: var(--ia-bg) !important;

    color: var(--turquesa) !important;

    border: 1px solid var(--ia-line) !important;

    font-size: 10px;

    text-transform: uppercase;

    letter-spacing: .4px;

    padding: 10px;

    white-space: nowrap;

}

.mod-kardex_bodegas .container_B .traspaso-detalle-table tbody td {

    background: var(--ia-panel) !important;

    color: var(--ia-text) !important;

    border: 1px solid var(--ia-line) !important;

    padding: 10px;

    vertical-align: middle;

}

.mod-kardex_bodegas .container_B .traspaso-detalle-table tbody tr:hover td {
    background: var(--ia-panel) !important;
}

.mod-kardex_bodegas .container_B .traspaso-producto-detalle {

    display: flex;

    align-items: center;

    gap: 9px;

}

.mod-kardex_bodegas .container_B .traspaso-producto-icon {

    width: 32px;

    height: 32px;

    min-width: 32px;

    display: flex;

    align-items: center;

    justify-content: center;

    border-radius: 7px;

    color: var(--turquesa);

    background: rgb(var(--ia-accent-rgb) / .08);

    border: 1px solid rgb(var(--ia-accent-rgb) / .16);

}

.mod-kardex_bodegas .container_B .traspaso-producto-detalle strong {

    display: block;

    color: var(--ia-text);

    font-size: 12px;

}

.mod-kardex_bodegas .container_B .traspaso-producto-detalle small {

    display: block;

    margin-top: 2px;

    color: var(--muted);

    font-size: 9px;

}

.mod-kardex_bodegas .container_B .traspaso-serie-detalle {

    color: var(--ia-muted);

    font-size: 10px;

    white-space: nowrap;

}

.mod-kardex_bodegas .container_B .traspaso-serie-detalle i {
    color: var(--turquesa);
}

.mod-kardex_bodegas .container_B .traspaso-cantidad-detalle {

    display: inline-flex;

    align-items: center;

    justify-content: center;

    min-width: 45px;

    padding: 5px 8px;

    border-radius: 6px;

    color: var(--ia-text);

    background: rgb(var(--ia-accent-rgb) / .09);

    border: 1px solid rgb(var(--ia-accent-rgb) / .18);

    font-weight: 700;

}

.mod-kardex_bodegas .container_B .traspaso-stock-movimiento {

    display: inline-flex;

    align-items: center;

    gap: 6px;

    color: var(--ia-muted);

    font-size: 10px;

}

.mod-kardex_bodegas .container_B .traspaso-stock-movimiento i {
    color: var(--ia-info);
    font-size: 9px;
}

.mod-kardex_bodegas .container_B .traspaso-stock-movimiento strong {
    color: var(--ia-danger);
}

.mod-kardex_bodegas .container_B .traspaso-stock-movimiento.destino strong {
    color: var(--verde-claro);
}

.mod-kardex_bodegas .container_B .traspaso-tipo-detalle {

    display: inline-flex;

    padding: 5px 8px;

    border-radius: 14px;

    font-size: 9px;

    font-weight: 700;

}

.mod-kardex_bodegas .container_B .traspaso-tipo-repuesto {

    color: #b99ae8;

    background: rgba(111,66,193,.12);

    border: 1px solid rgba(111,66,193,.20);

}

.mod-kardex_bodegas .container_B .traspaso-tipo-insumo {

    color: #5bc0de;

    background: rgba(23,162,184,.12);

    border: 1px solid rgba(23,162,184,.20);

}

.mod-kardex_bodegas .container_B .traspaso-info-footer {

    height: 100%;

    padding: 12px 14px;

    background: var(--ia-bg);

    border: 1px solid var(--borde);

    border-radius: 9px;

}

.mod-kardex_bodegas .container_B .traspaso-info-footer > span {

    display: block;

    color: var(--muted);

    font-size: 9px;

    font-weight: 800;

    letter-spacing: .7px;

    margin-bottom: 6px;

}

.mod-kardex_bodegas .container_B .traspaso-info-footer > span i {
    color: var(--turquesa);
}

.mod-kardex_bodegas .container_B .traspaso-info-footer p {

    margin: 0;

    color: var(--ia-text);

    font-size: 11px;

    line-height: 1.5;

}

.mod-kardex_bodegas .container_B .traspaso-loading-detalle {

    min-height: 360px;

    display: flex;

    flex-direction: column;

    align-items: center;

    justify-content: center;

    gap: 7px;

    color: var(--texto-sec);

}

.mod-kardex_bodegas .container_B .traspaso-spinner {

    width: 58px;

    height: 58px;

    display: flex;

    align-items: center;

    justify-content: center;

    border-radius: 50%;

    color: var(--turquesa);

    background: rgb(var(--ia-accent-rgb) / .08);

    border: 1px solid rgb(var(--ia-accent-rgb) / .18);

    font-size: 22px;

}

.mod-kardex_bodegas .container_B .traspaso-loading-detalle strong {
    color: var(--ia-text);
    font-size: 13px;
}

.mod-kardex_bodegas .container_B .traspaso-loading-detalle small {
    color: var(--muted);
    font-size: 10px;
}

.mod-kardex_bodegas .container_B .traspaso-error-detalle {

    margin: 0;

    background: rgba(239,68,68,.08) !important;

    border: 1px solid rgba(239,68,68,.25) !important;

    color: var(--ia-danger) !important;

}

@media (max-width: 767.98px) {

    .mod-kardex_bodegas .container_B .modal-traspaso .modal-body {
        padding: 10px;
    }

    .mod-kardex_bodegas .container_B .traspaso-detalle-header {
        align-items: flex-start;
        flex-direction: column;
    }

    .mod-kardex_bodegas .container_B .traspaso-detalle-status {
        align-self: flex-start;
    }

    .mod-kardex_bodegas .container_B .traspaso-ruta-card {
        flex-direction: column;
        align-items: stretch;
    }

    .mod-kardex_bodegas .container_B .traspaso-ruta-flecha {
        align-self: center;
        transform: rotate(90deg);
    }

    .mod-kardex_bodegas .container_B .traspaso-resumen-card {
        min-height: 75px;
    }

    .mod-kardex_bodegas .container_B .traspaso-codigo-card {
        min-height: 250px;
    }

    .mod-kardex_bodegas .container_B .traspaso-qr {
        width: 185px;
        height: 185px;
    }

    .mod-kardex_bodegas .container_B .traspaso-qr img,
    .mod-kardex_bodegas .container_B .traspaso-qr canvas {
        max-width: 173px;
        max-height: 173px;
    }

}
/* =========================================================
   BOTÓN IMPRIMIR ETIQUETA - TRASPASO
========================================================= */

.mod-kardex_bodegas .container_B .traspaso-codigo-acciones {
    display: flex;
    align-items: center;
    gap: 10px;
}

.mod-kardex_bodegas .container_B .btn-imprimir-etiqueta {
    border: 1px solid var(--turquesa);
    background: transparent;
    color: var(--turquesa);
    border-radius: 6px;
    font-size: 12px;
    font-weight: 600;
    padding: 5px 10px;
    transition: all .2s ease;
}

.mod-kardex_bodegas .container_B .btn-imprimir-etiqueta:hover {
    background: var(--turquesa);
    color: var(--ia-accent-d);
    border-color: var(--turquesa);
}

@media (max-width: 576px) {

    .mod-kardex_bodegas .container_B .traspaso-codigo-acciones {
        flex-direction: column;
        align-items: flex-end;
        gap: 5px;
    }

    .mod-kardex_bodegas .container_B .btn-imprimir-etiqueta {
        font-size: 11px;
    }

}

/* ============================================================
   Ajustes v2.2: devolver tamaños del original (en el original
   Bootstrap 4.6 se cargaba después de style.css: base 16px) y
   neutralizar el refinamiento global (_90/_91) solo en esta pantalla.
   ============================================================ */
.mod-kardex_bodegas .container_B {
    font-family: var(--ia-font);
    font-size: 16px;
}
.mod-kardex_bodegas .container_B .kardex-header h4,
.mod-kardex_bodegas .container_B .alertas-header h4 {
    font-size: 24px;
    font-weight: 700;
    color: var(--ia-text);
}
.mod-kardex_bodegas .container_B table.dataTable thead th,
.mod-kardex_bodegas .container_B .table thead th {
    font-size: 11px !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    letter-spacing: normal !important;
}
.mod-kardex_bodegas .container_B table.dataTable tbody td,
.mod-kardex_bodegas .container_B .table td {
    font-size: 16px;
}
.mod-kardex_bodegas .container_B .form-control {
    font-size: 16px;
    height: calc(1.5em + .75rem + 2px);
    padding: 6px 12px;
    border-radius: 4px;
}
.mod-kardex_bodegas .container_B .btn-outline-secondary {
    font-size: 16px;
    font-weight: 400;
}
.mod-kardex_bodegas .container_B .dt-buttons .btn {
    font-size: 11px !important;
    font-weight: 400 !important;
    color: #fff !important;
    border: 0 !important;
    border-radius: 0 !important;
    padding: 4px 8px !important;
    min-height: 0;
}
.mod-kardex_bodegas .container_B .dt-buttons .btn:first-child { border-radius: 6px 0 0 6px !important; }
.mod-kardex_bodegas .container_B .dt-buttons .btn:last-child  { border-radius: 0 6px 6px 0 !important; }
.mod-kardex_bodegas .container_B .dt-buttons .btn i { color: #fff !important; }
.mod-kardex_bodegas .container_B .dt-buttons .btn-success { background: #28a745 !important; }
.mod-kardex_bodegas .container_B .dt-buttons .btn-danger  { background: #dc3545 !important; }
.mod-kardex_bodegas .container_B .dt-buttons .btn-info    { background: #17a2b8 !important; }
.mod-kardex_bodegas .container_B .dt-buttons .btn:hover   { filter: brightness(1.1); color: #fff !important; }
.mod-kardex_bodegas .container_B .dataTables_wrapper .dt-buttons { gap: 0; }
/* ============================================================
   Bodega — pantallas ORIGINALES restauradas (v2.2)
   Movimiento Bodega (c_bodegas), productos del documento
   (consumos_bodega), Bodegas, Estado Equipo, Tipo Doc. Bodega y
   Proveedores usan el diseño original "container_B" (tarjeta con
   tabla DataTables, botones verdes "Nuevo …" / Exportar / Imprimir).
   Aquí se devuelven los tamaños del original (base 16px) y se
   neutraliza el refinamiento global (_90/_91) SOLO en estas pantallas.
   Colores siempre con variables del tema.
   ============================================================ */
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-bodegas, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores) .container_B {
    font-size: 16px;
}
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-bodegas, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores) .container_B > .container > .card > .card-header {
    font-size: 16px;
    font-weight: 600;
    color: var(--ia-accent);
    padding: 16px 21.6px;
}
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-bodegas, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores) .container_B table.dataTable thead th {
    font-size: 16px !important;
    font-weight: 700 !important;
    color: var(--ia-info) !important;
    text-transform: none !important;
    letter-spacing: normal !important;
}
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-bodegas, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores) .container_B table.dataTable tfoot th {
    font-size: 16px;
    font-weight: 700;
    color: var(--ia-muted);
}
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-bodegas, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores) .container_B table.dataTable tbody td {
    font-size: 16px;
}
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-bodegas, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores) .container_B .dataTables_info,
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-bodegas, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores) .container_B .dataTables_length,
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-bodegas, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores) .container_B .dataTables_filter {
    font-size: 16px;
}
/* Botones verdes del original (Nuevo …, Exportar, Imprimir) */
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-bodegas, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores) .container_B .btn-success,
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-bodegas, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores) .container_B .dt-buttons .btn {
    background: var(--ia-success) !important;
    border-color: var(--ia-success) !important;
    color: #fff !important;
    font-size: 14px !important;
    font-weight: 400 !important;
    padding: 4px 8px !important;
    border-radius: 3.2px !important;
}
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-bodegas, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores) .container_B .dt-buttons .btn i {
    color: #fff !important;
}
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-bodegas, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores) .container_B .btn-success:hover,
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-bodegas, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores) .container_B .dt-buttons .btn:hover {
    filter: brightness(.92);
}
/* Iconos de acción de la tabla (tres puntos / papelera) sin recuadro, como el original */
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores) .container_B .btn-datatable {
    background: transparent !important;
    border: 0 !important;
    padding: 0 !important;
    width: 24px;
    height: 24px;
    color: var(--ia-muted) !important;
}
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores) .container_B .btn-datatable svg {
    width: 18px;
    height: 18px;
}
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores) .container_B .btn-datatable:hover {
    color: var(--ia-accent) !important;
}
/* Productos del documento: lista de sugerencias bajo "Producto" */
.mod-consumos_bodega #show-list {
    position: absolute;
    z-index: 1060;
    left: 5px;
    right: 5px;
    top: 100%;
    max-height: 260px;
    overflow-y: auto;
}
.mod-consumos_bodega #show-list .list-group-item {
    background: var(--ia-panel2);
    color: var(--ia-text);
    border-color: var(--ia-line);
}
.mod-consumos_bodega #show-list .list-group-item-action:hover {
    background: rgb(var(--ia-accent-rgb) / .15);
    color: var(--ia-accent);
}
.mod-consumos_bodega .modal-900 { max-width: 900px; }
.mod-consumos_bodega .form-group.col-md-6 { position: relative; }
/* Documento: datos en la cabecera (campos de solo lectura) */
.mod-consumos_bodega .container_B .card-header label { font-size: 14px; color: var(--ia-muted); margin-bottom: 2px; }

/* ============================================================
   Módulo .mod-bodegas (convertido desde el CSS antiguo del módulo)
   ============================================================ */


/* =========================================================
   BODEGAS - TEMA OSCURO CORPORATIVO
========================================================= */

.mod-bodegas{

    --bodega-fondo:var(--ia-bg);
    --bodega-card:var(--ia-panel);
    --bodega-card-2:var(--ia-panel);
    --bodega-input:var(--ia-bg);
    --bodega-borde:var(--ia-line);

    --bodega-texto:var(--ia-text);
    --bodega-texto-sec:var(--ia-muted);

    --bodega-turquesa:var(--ia-accent);
    --bodega-verde:var(--ia-accent);
    --bodega-verde-claro:var(--ia-success);

    --bodega-rojo:var(--ia-danger);
    --bodega-amarillo:var(--ia-warn);
}


/* =========================================================
   CARD
========================================================= */

.mod-bodegas .container_B .card{

    background:var(--bodega-card);

    border:1px solid var(--bodega-borde);

    border-radius:10px;

    color:var(--bodega-texto);

}


.mod-bodegas .container_B .card-header{

    background:var(--bodega-card-2);

    border-bottom:1px solid var(--bodega-borde);

    color:var(--bodega-texto);

}


/* =========================================================
   TABLA
========================================================= */

.mod-bodegas #tablabodega{

    background:var(--bodega-card);

    color:var(--bodega-texto);

}


.mod-bodegas #tablabodega thead th{

    background:var(--bodega-card-2);

    color:var(--bodega-texto);

    border-color:var(--bodega-borde);

}


.mod-bodegas #tablabodega tbody td{

    border-color:var(--bodega-borde);

    vertical-align:middle;

}


.mod-bodegas #tablabodega tbody tr:hover{

    background:var(--ia-panel);

}


.mod-bodegas #tablabodega tfoot th{

    background:var(--bodega-card-2);

    color:var(--bodega-texto);

    border-color:var(--bodega-borde);

}


/* =========================================================
   MODAL
========================================================= */

.mod-bodegas #formbodega .modal-content{

    background:var(--bodega-card);

    color:var(--bodega-texto);

    border:1px solid var(--bodega-borde);

    border-radius:10px;

}


.mod-bodegas #formbodega .modal-header{

    background:var(--bodega-card-2);

    color:var(--bodega-texto);

    border-bottom:1px solid var(--bodega-borde);

}


.mod-bodegas #formbodega .modal-footer{

    border-top:1px solid var(--bodega-borde);

}


.mod-bodegas #formbodega .close{

    color:var(--ia-text);

}


/* =========================================================
   INPUTS
========================================================= */

.mod-bodegas #formbodega label{

    color:var(--bodega-texto);

    font-weight:600;

}


.mod-bodegas #formbodega .form-control{

    background:var(--bodega-input);

    color:var(--bodega-texto);

    border:1px solid var(--bodega-borde);

}


.mod-bodegas #formbodega .form-control:focus{

    background:var(--bodega-input);

    color:var(--bodega-texto);

    border-color:var(--bodega-turquesa);

    box-shadow:0 0 0 .15rem rgb(var(--ia-accent-rgb) / .15);

}


/* =========================================================
   ZONAS
========================================================= */

.mod-bodegas .zonas-container{

    border:1px solid var(--bodega-turquesa);

    border-radius:10px;

    background:var(--bodega-input);

    padding:15px;

    max-height:300px;

    overflow-y:auto;

}


.mod-bodegas .zonas-titulo{

    display:flex;

    justify-content:space-between;

    align-items:center;

    margin-bottom:12px;

}


.mod-bodegas .zonas-titulo strong{

    color:var(--bodega-texto);

}


.mod-bodegas .zonas-contador{

    color:var(--bodega-turquesa);

    font-size:13px;

    font-weight:600;

}


.mod-bodegas .zona-item{

    display:flex;

    align-items:center;

    padding:9px 10px;

    margin-bottom:6px;

    border:1px solid var(--bodega-borde);

    border-radius:7px;

    background:var(--bodega-card);

    cursor:pointer;

    transition:.2s;

}


.mod-bodegas .zona-item:hover{

    border-color:var(--bodega-turquesa);

    background:var(--ia-panel2);

}


.mod-bodegas .zona-item input{

    margin-right:10px;

    accent-color:var(--bodega-turquesa);

}


.mod-bodegas .zona-item label{

    margin:0;

    cursor:pointer;

    width:100%;

    color:var(--bodega-texto);

}


.mod-bodegas .zona-item.zona-ocupada{

    opacity:.45;

    cursor:not-allowed;

}


.mod-bodegas .zona-item.zona-ocupada label{

    cursor:not-allowed;

}


.mod-bodegas .zona-ocupada-text{

    margin-left:auto;

    font-size:11px;

    color:var(--bodega-rojo);

    font-weight:600;

}


.mod-bodegas .zona-disponible{

    color:var(--bodega-verde-claro);

}


/* =========================================================
   DETALLES
========================================================= */

.mod-bodegas #viewRow .modal-content{

    background:var(--bodega-card);

    color:var(--bodega-texto);

    border:1px solid var(--bodega-borde);

}


.mod-bodegas #viewRow .modal-header{

    background:var(--bodega-card-2);

    border-bottom:1px solid var(--bodega-borde);

}


.mod-bodegas #viewRow .list-group-item{

    background:var(--bodega-card);

    color:var(--bodega-texto);

    border-color:var(--bodega-borde);

}


.mod-bodegas .detalle-zonas{

    display:flex;

    flex-wrap:wrap;

    gap:6px;

}


.mod-bodegas .detalle-zona{

    background:rgb(var(--ia-accent-rgb) / .12);

    border:1px solid var(--bodega-turquesa);

    color:var(--bodega-turquesa);

    padding:4px 9px;

    border-radius:15px;

    font-size:12px;

}


/* =========================================================
   BOTONES
========================================================= */

.mod-bodegas #btnNuevo,
.mod-bodegas #registro-btn{

    background:var(--bodega-verde);

    border-color:var(--bodega-verde);

}


.mod-bodegas #btnNuevo:hover,
.mod-bodegas #registro-btn:hover{

    background:var(--bodega-turquesa);

    border-color:var(--bodega-turquesa);

}


.mod-bodegas .btn-secondary{

    border-color:var(--bodega-borde);

}


/* =========================================================
   DATATABLE
========================================================= */

.mod-bodegas .dataTables_wrapper{

    color:var(--bodega-texto);

}


.mod-bodegas .dataTables_wrapper select,
.mod-bodegas .dataTables_wrapper input{

    background:var(--bodega-input) !important;

    color:var(--bodega-texto) !important;

    border:1px solid var(--bodega-borde) !important;

}


.mod-bodegas .dataTables_wrapper .dataTables_paginate .paginate_button{

    color:var(--bodega-texto) !important;

}

/* =========================================================
   BOTONES DE ACCIÓN - BODEGAS
========================================================= */

.mod-bodegas .btn-bodega-verde {

    background-color: var(--ia-accent) !important;

    border-color: var(--ia-accent) !important;

    color: #ffffff !important;

    transition: all .15s ease;

}


.mod-bodegas .btn-bodega-verde:hover {

    background-color: var(--ia-accent-b) !important;

    border-color: var(--ia-accent-b) !important;

    color: var(--ia-text) !important;

    transform: translateY(-1px);

}


.mod-bodegas .btn-bodega-verde:focus,
.mod-bodegas .btn-bodega-verde:active {

    background-color: var(--ia-accent) !important;

    border-color: var(--ia-accent) !important;

    color: #ffffff !important;

    box-shadow:
        0 0 0 .15rem rgba(28, 200, 138, .25) !important;

}


/* v2.2: insignia de zona (antes con colores en línea) */
.mod-bodegas .badge-zona-bodega {
    background: rgb(var(--ia-accent-rgb) / .12);
    border: 1px solid var(--ia-accent);
    color: var(--ia-accent);
    margin: 2px;
    padding: 5px 8px;
}
.mod-bodegas .detalle-stock-bodega {
    max-height: 260px;
    overflow-y: auto;
    border: 1px solid var(--ia-line);
    border-radius: 6px;
}
.mod-bodegas .detalle-stock-bodega th,
.mod-bodegas .detalle-stock-bodega td { color: var(--ia-text); border-color: var(--ia-line); }
/* ============================================================
   §48 — MÓDULOS GENERALES: pantallas ORIGINALES restauradas (v2.4)
   Clientes, Supervisores, Correos de OT, Ciudades, Zonas, Tipos de
   atención, Tipos de servicio, Tipos de plantilla, Plantillas,
   Configuración correo, Correcciones, Palabras técnicas, Empresa,
   Usuarios, Perfil de usuario (menús), Log de usuario, Bitácora,
   Técnicos, Manuales y Calendario.
   Devuelve tamaños y disposición del original (base 16px, títulos de
   tabla en color, Buscar + Exportar/Imprimir a la derecha, insignias
   sólidas, cabecera de modal verde al crear y azul al editar).
   Colores SIEMPRE con variables del tema. Los botones los manda
   _92_botones.css (aprobado por el cliente); aquí no se tocan.
   ============================================================ */

/* ---------- Pantallas con tarjeta "container_B" ---------- */
:is(.mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-correcciones, .mod-palabras_tecnicas,
    .mod-config_email, .mod-empresa, .mod-log_usuario, .mod-menus, .mod-plantillas, .mod-manuales, .mod-calendario) .container_B {
    font-size: 16px;
}
:is(.mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-correcciones, .mod-palabras_tecnicas,
    .mod-config_email, .mod-empresa, .mod-log_usuario, .mod-menus, .mod-plantillas, .mod-manuales, .mod-calendario) .container_B > .container > .card > .card-header {
    font-size: 16px;
    font-weight: 600;
    color: var(--ia-accent);
    padding: 16px 21.6px;
}
:is(.mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-correcciones, .mod-palabras_tecnicas,
    .mod-config_email, .mod-empresa, .mod-log_usuario, .mod-menus, .mod-plantillas, .mod-manuales) .container_B table.dataTable thead th {
    font-size: 16px !important;
    font-weight: 700 !important;
    color: var(--ia-info) !important;
    text-transform: none !important;
    letter-spacing: normal !important;
}
:is(.mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-correcciones, .mod-palabras_tecnicas,
    .mod-config_email, .mod-empresa, .mod-log_usuario, .mod-menus, .mod-plantillas, .mod-manuales) .container_B table.dataTable tfoot th {
    font-size: 16px;
    font-weight: 700;
    color: var(--ia-muted);
    text-transform: none;
}
:is(.mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-correcciones, .mod-palabras_tecnicas,
    .mod-config_email, .mod-empresa, .mod-log_usuario, .mod-menus, .mod-plantillas, .mod-manuales) .container_B table.dataTable tbody td {
    font-size: 16px;
    vertical-align: middle;
}
:is(.mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-correcciones, .mod-palabras_tecnicas,
    .mod-config_email, .mod-empresa, .mod-log_usuario, .mod-menus, .mod-plantillas, .mod-manuales) .container_B :is(.dataTables_info, .dataTables_length, .dataTables_filter) {
    font-size: 16px;
}

/* ---------- Pantallas con tarjeta "ia-tema" (Clientes, Usuarios, Técnicos…) ---------- */
:is(.mod-clientes, .mod-supervisores, .mod-correos_clientes, .mod-registrar, .mod-trabajadores, .mod-vitacora, .mod-manuales) .ia-tema > .card > .card-header {
    font-size: 16px;
    font-weight: 600;
    color: var(--ia-accent);
}
:is(.mod-clientes, .mod-supervisores, .mod-correos_clientes, .mod-registrar, .mod-trabajadores, .mod-vitacora, .mod-manuales) .ia-tema table.dataTable thead th {
    font-size: 13.6px !important;
    font-weight: 600 !important;
    color: var(--ia-info) !important;
    text-transform: uppercase !important;
    letter-spacing: .3px;
}
:is(.mod-clientes, .mod-supervisores, .mod-correos_clientes, .mod-registrar, .mod-trabajadores, .mod-vitacora, .mod-manuales) .ia-tema table.dataTable tbody td {
    font-size: 14px;
    vertical-align: middle;
}

/* ---------- Común: Mostrar a la izquierda; Buscar + Exportar / Imprimir a la derecha (como el original) ---------- */
:is(.mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-correcciones, .mod-palabras_tecnicas,
    .mod-config_email, .mod-empresa, .mod-log_usuario, .mod-plantillas, .mod-manuales,
    .mod-clientes, .mod-supervisores, .mod-correos_clientes, .mod-registrar, .mod-trabajadores, .mod-vitacora) .dataTables_wrapper .dt-buttons {
    float: right;
    margin-left: 8px;
}
:is(.mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-correcciones, .mod-palabras_tecnicas,
    .mod-config_email, .mod-empresa, .mod-log_usuario, .mod-plantillas, .mod-manuales,
    .mod-clientes, .mod-supervisores, .mod-correos_clientes, .mod-registrar, .mod-trabajadores, .mod-vitacora) .dataTables_wrapper .dataTables_filter {
    text-align: right;
}

/* Insignias sólidas (Activo / Inactivo / Insumos…) como el original */
:is(.mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-correcciones, .mod-palabras_tecnicas,
    .mod-config_email, .mod-empresa, .mod-log_usuario, .mod-plantillas, .mod-manuales,
    .mod-clientes, .mod-supervisores, .mod-correos_clientes, .mod-registrar, .mod-trabajadores, .mod-vitacora) table .badge-success,
:is(.mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-correcciones, .mod-palabras_tecnicas,
    .mod-clientes, .mod-supervisores, .mod-correos_clientes, .mod-registrar, .mod-trabajadores) .modal .badge-success {
    background: var(--ia-success) !important;
    color: var(--sc-on-success, var(--ia-accent-d)) !important;
    border: 0 !important;
}
:is(.mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-correcciones, .mod-palabras_tecnicas,
    .mod-config_email, .mod-empresa, .mod-log_usuario, .mod-plantillas, .mod-manuales,
    .mod-clientes, .mod-supervisores, .mod-correos_clientes, .mod-registrar, .mod-trabajadores, .mod-vitacora) table .badge-secondary,
:is(.mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-correcciones, .mod-palabras_tecnicas,
    .mod-clientes, .mod-supervisores, .mod-correos_clientes, .mod-registrar, .mod-trabajadores) .modal .badge-secondary {
    background: var(--ia-muted) !important;
    color: var(--ia-bg) !important;
    border: 0 !important;
}

/* Cabecera del modal: verde al crear, azul al editar (antes era color fijo puesto por el JS) */
:is(.mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-config_email, .mod-empresa,
    .mod-clientes, .mod-registrar, .mod-plantillas, .mod-trabajadores, .mod-correos_clientes) .modal-header.sc-mh-nuevo {
    background: var(--ia-success) !important;
    border-bottom-color: var(--ia-success) !important;
}
:is(.mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-config_email, .mod-empresa,
    .mod-clientes, .mod-registrar, .mod-plantillas, .mod-trabajadores, .mod-correos_clientes) .modal-header.sc-mh-editar {
    background: var(--ia-info) !important;
    border-bottom-color: var(--ia-info) !important;
}
:is(.mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-config_email, .mod-empresa,
    .mod-clientes, .mod-registrar, .mod-plantillas, .mod-trabajadores, .mod-correos_clientes) .modal-header.sc-mh-nuevo :is(.modal-title, .close) {
    color: var(--sc-on-success, var(--ia-accent-d)) !important;
}
:is(.mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-config_email, .mod-empresa,
    .mod-clientes, .mod-registrar, .mod-plantillas, .mod-trabajadores, .mod-correos_clientes) .modal-header.sc-mh-editar :is(.modal-title, .close) {
    color: var(--sc-on-info, var(--ia-bg)) !important;
}

/* Acciones de la tabla (3 puntos / papelera) sin recuadro, como el original */
:is(.mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-correcciones, .mod-palabras_tecnicas,
    .mod-config_email, .mod-empresa, .mod-plantillas, .mod-manuales) .container_B .btn-datatable svg {
    width: 18px;
    height: 18px;
}

/* ---------- Clientes / Usuarios / Técnicos / Empresa: vista previa de foto y logo ---------- */
:is(.mod-registrar, .mod-empresa, .mod-clientes) #user_uploaded_image img {
    max-width: 120px;
    max-height: 120px;
    border-radius: 6px;
    border: 1px solid var(--ia-line);
}
.mod-registrar .emailBox { width: 100%; }
.mod-registrar .help-block { color: var(--ia-danger); font-size: 12px; }
.mod-registrar #passstrength { font-size: 13px; color: var(--ia-info); }
.mod-registrar #viewRow .profile-user-img { border: 2px solid var(--ia-accent); object-fit: cover; }

/* Correos de OT: nombre del cliente (antes con colores fijos en línea) */
.mod-correos_clientes .cc-cliente {
    background: var(--ia-panel) !important;
    color: var(--ia-text) !important;
    border: 1px solid var(--ia-line) !important;
    min-width: 220px;
}

/* Perfil de usuario (menús): fila que se va al cargar / eliminar */
.mod-menus .sc-fila-quitada { background: var(--ia-line); }
.mod-menus #tabla1 th, .mod-menus #tabla2 th { color: var(--ia-info); }

/* Plantillas: lista de productos encontrados bajo "Producto" */
.mod-plantillas #show-list .list-group-item {
    background: var(--ia-panel2);
    color: var(--ia-text);
    border-color: var(--ia-line);
}
.mod-plantillas #show-list .list-group-item-action:hover {
    background: rgb(var(--ia-accent-rgb) / .15);
    color: var(--ia-accent);
}

/* ---------- Bitácora (antes <style> en la página; colores fijos → variables) ---------- */
.mod-vitacora #previewArchivo1,
.mod-vitacora #previewArchivo2 {
    margin-top: 10px;
    min-height: 220px;
    border: 1px dashed var(--ia-line);
    border-radius: 10px;
    padding: 10px;
    background: var(--ia-panel2);
    display: flex;
    align-items: center;
    justify-content: center;
}
.mod-vitacora #previewArchivo1 img,
.mod-vitacora #previewArchivo2 img { max-width: 100%; max-height: 320px; border-radius: 8px; }
.mod-vitacora #previewArchivo1 video,
.mod-vitacora #previewArchivo2 video { width: 100%; max-height: 320px; border-radius: 8px; }
.mod-vitacora #contenidoArchivo { width: 100%; }
.mod-vitacora #contenidoArchivo img { max-width: 100%; max-height: 700px; border-radius: 10px; }
.mod-vitacora #contenidoArchivo video { width: 100%; max-height: 700px; border-radius: 10px; }
.mod-vitacora #at-actividad { white-space: pre-wrap; line-height: 22px; }
.mod-vitacora .table th,
.mod-vitacora .table td { vertical-align: middle; }
.mod-vitacora .modal-xl { max-width: 1200px; }
.mod-vitacora .evidencia-box {
    border: 1px solid var(--ia-success);
    border-radius: 12px;
    padding: 15px;
    color: var(--ia-success);
    margin-bottom: 15px;
    background: var(--ia-panel2);
}
.mod-vitacora .evidencia-box h6 {
    font-weight: bold;
    border-bottom: 1px solid var(--ia-success);
    padding-bottom: 8px;
}
.mod-vitacora .evidencia-contenido {
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 10px 0;
    overflow: hidden;
    color: var(--ia-muted);
}
.mod-vitacora .evidencia-img { max-width: 100%; max-height: 450px; object-fit: contain; border-radius: 10px; }
.mod-vitacora .evidencia-video { width: 100%; max-height: 450px; border-radius: 10px; }
.mod-vitacora #buscar_inicio,
.mod-vitacora #buscar_fin {
    background-color: var(--ia-panel2) !important;
    color: var(--ia-text) !important;
    border: 1px solid var(--ia-line) !important;
    border-radius: 6px;
    font-weight: 500;
}
:root:not([data-tema="claro"]) .mod-vitacora :is(#buscar_inicio, #buscar_fin) { color-scheme: dark; }
.mod-vitacora #conteo:disabled { opacity: .55; cursor: not-allowed; }
.mod-vitacora #viewRow .list-group-item { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; }
.mod-vitacora #viewRow .list-group-item .float-right,
.mod-vitacora #viewRow .list-group-item #at-actividad { float: none !important; text-align: right; }

/* ---------- Calendario (FullCalendar + selector de usuarios) ---------- */
.mod-calendario .container_B .card-header { text-align: center; }
.mod-calendario #caljump { margin: 4px auto 8px; }
.mod-calendario #months {
    background: var(--ia-input-bg);
    color: var(--ia-text);
    border: 1px solid var(--ia-line);
    border-radius: 6px;
    padding: 2px 6px;
    font-size: 14px;
}
.mod-calendario #calendar { color: var(--ia-text); font-size: 14px; }
.mod-calendario #calendar .fc-toolbar h2 { color: var(--ia-accent); font-size: 1.6rem; }
.mod-calendario #calendar :is(th, td, .fc-row, .fc-divider, .fc-content, .fc-popover, hr, thead, tbody) { border-color: var(--ia-line); }
.mod-calendario #calendar .fc-day-header { background: var(--ia-info); color: var(--sc-on-info, var(--ia-bg)); font-weight: 600; }
.mod-calendario #calendar .fc-today { background: rgb(var(--ia-warn-rgb) / .18); }
.mod-calendario #calendar .fc-week-number { color: var(--ia-muted); background: var(--ia-panel2); }
.mod-calendario #calendar .fc-other-month { opacity: .55; }
.mod-calendario #calendar .fc-basic-view .fc-day-top .fc-day-number { float: left; } /* como el original */
.mod-calendario #calendar .fc-list-item:hover td { background: rgb(var(--ia-accent-rgb) / .1); }
.mod-calendario #calendar .fc-list-heading td { background: var(--ia-panel2); }
.mod-calendario .ms-options-wrap > button,
.mod-calendario .ms-options-wrap > button:focus {
    background: var(--ia-input-bg);
    color: var(--ia-text);
    border: 1px solid var(--ia-line);
}
.mod-calendario .ms-options-wrap > .ms-options {
    background: var(--ia-panel);
    color: var(--ia-text);
    border-color: var(--ia-line);
}
.mod-calendario .ms-options-wrap > .ms-options > .ms-search input {
    background: var(--ia-input-bg);
    color: var(--ia-text);
    border-color: var(--ia-line);
}
.mod-calendario .ms-options-wrap > .ms-options > ul li.selected label,
.mod-calendario .ms-options-wrap > .ms-options > ul label:hover {
    background: rgb(var(--ia-accent-rgb) / .15);
    border-color: transparent;
}
.mod-calendario .ms-options-wrap > .ms-options > .ms-selectall { color: var(--ia-accent); }

/* ---------- Manuales ---------- */
.mod-manuales .nav-tabs .nav-link { color: var(--ia-muted); }
.mod-manuales .nav-tabs .nav-link.active { color: var(--ia-accent); background: var(--ia-panel); border-color: var(--ia-line) var(--ia-line) var(--ia-panel); }
/* v2.4: estas reglas son SOLO de las pantallas extra de v2 (ficha.php, informe.php, revision.php),
   marcadas con la clase .art-v2; las pantallas originales restauradas usan _52_artefactos_original.css */
/* ============================================================
   §50 — ARTEFACTOS NAVALES (Artefacto Naval, ficha, Equipamiento
   Naval, Equipamientos, historia de equipo, informes de A. Naval,
   Líneas, Tipos Equipos, Sistemas, Centro Cultivos).
   Todo acotado por .mod-<carpeta>.
   ============================================================ */

/* Alias de variables para reglas antiguas de .ia-tema (.form-control…) */
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .ia-tema {
    --bg: var(--ia-input-bg); --panel: var(--ia-panel); --panel2: var(--ia-panel2); --line: var(--ia-line);
    --text: var(--ia-text); --muted: var(--ia-muted); --accent: var(--ia-accent);
}
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .ia-tema label { color: var(--ia-muted); font-size: .8rem; font-weight: 600; margin-bottom: 4px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .ia-tema textarea.form-control { min-height: 70px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .ia-tema select[multiple].form-control { min-height: 96px; }

/* ---------- Cabecera de página ---------- */
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-cabecera {
    display: flex; justify-content: space-between; align-items: flex-start;
    flex-wrap: wrap; gap: 12px; margin-bottom: 10px;
}
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-cabecera h1 { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-cabecera h1 .badge { font-size: .7rem; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-acciones { display: flex; flex-wrap: wrap; gap: 8px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-miga { margin: 0 0 2px; font-size: .8rem; color: var(--ia-muted); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-miga a { color: var(--ia-muted); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-miga a:hover { color: var(--ia-accent); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-contador {
    display: inline-block; min-width: 20px; padding: 0 6px; margin-left: 4px; border-radius: 10px;
    background: var(--ia-danger); color: #fff; font-size: .72rem; line-height: 20px; text-align: center;
}
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-chip {
    display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 14px;
    background: var(--ia-panel2); border: 1px solid var(--ia-line); color: var(--ia-text); font-size: .8rem;
}
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-chip i { color: var(--ia-accent); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-chip small { color: var(--ia-muted); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-chip.ok { border-color: rgb(var(--ia-success-rgb) / .5); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-chip.ok i { color: var(--ia-success); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-chip.muted { color: var(--ia-muted); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-chip.muted i { color: var(--ia-muted); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-link { color: var(--ia-accent); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-corto { display: inline-block; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-revision ul { margin: 4px 0 0; padding-left: 18px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-revision li { margin: 2px 0; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-stats { margin: 6px 0 12px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-stats .stat { cursor: default; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-stats .stat .valor { font-size: 1.45rem; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .dataTables_wrapper .dt-buttons { float: none; display: inline-flex; gap: 4px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .dataTables_wrapper .dt-buttons .btn { border-radius: 4px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .dataTables_wrapper .dataTables_filter { float: none; text-align: left; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .filtros select, :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .filtros input { min-width: 160px; }

/* ---------- Pestañas (con colores del tema) ---------- */
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tabs { display: flex; flex-wrap: wrap; gap: 4px; border-bottom: 1px solid var(--ia-line); margin: 4px 0 12px; padding: 0; list-style: none; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tabs .nav-link {
    color: var(--ia-muted); font-weight: 600; border: 1px solid transparent; border-bottom: none;
    border-radius: var(--ia-radius) var(--ia-radius) 0 0; padding: 8px 14px; background: transparent;
}
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tabs .nav-link:hover { color: var(--ia-text); background: rgb(var(--ia-accent-rgb) / .08); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tabs .nav-link.active { color: var(--ia-accent-d); background: var(--ia-accent); border-color: var(--ia-accent); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tabs .nav-link i { margin-right: 4px; }

/* ---------- Barra de la ficha ---------- */
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-barra { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-barra-izq, :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-barra-der { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-barra-der { flex-wrap: nowrap; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-barra-der input { min-width: 240px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-ayuda { color: var(--ia-muted); font-size: .82rem; margin: 0 0 12px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-ayuda i { color: var(--ia-info); }

/* ---------- Árbol: línea → puesto → equipo ---------- */
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-arbol { display: flex; flex-direction: column; gap: 12px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-linea { background: var(--ia-panel); border: 1px solid var(--ia-line); border-radius: var(--ia-radius); box-shadow: var(--ia-shadow); overflow: hidden; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-linea-head {
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
    padding: 10px 14px; background: var(--ia-panel2); border-bottom: 1px solid var(--ia-line);
}
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-linea-head h4 { margin: 0; font-size: 1rem; font-weight: 700; color: var(--ia-text); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-linea-head h4 i { color: var(--ia-accent); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-linea-head .art-cuenta { color: var(--ia-muted); font-size: .8rem; flex: 1; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-plegar {
    border: none; background: transparent; color: var(--ia-accent); width: 26px; height: 26px; border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center; cursor: pointer;
}
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-plegar:hover { background: rgb(var(--ia-accent-rgb) / .12); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-plegar i { transition: transform .2s; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-linea.plegada .art-plegar i { transform: rotate(-90deg); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-linea.plegada .art-puestos { display: none; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-linea.plegada .art-linea-head { border-bottom: none; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-puestos { display: flex; flex-direction: column; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-puesto { border-bottom: 1px solid var(--ia-line); padding: 10px 14px 10px 14px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-puesto:last-child { border-bottom: none; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-puesto.resaltado { background: rgb(var(--ia-accent-rgb) / .08); box-shadow: inset 3px 0 0 var(--ia-accent); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-puesto-head { display: flex; align-items: flex-start; gap: 12px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-pos {
    flex: 0 0 34px; height: 34px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
    background: rgb(var(--ia-accent-rgb) / .15); color: var(--ia-accent); font-weight: 700; font-size: .9rem;
    border: 1px solid rgb(var(--ia-accent-rgb) / .4);
}
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-puesto-tit { flex: 1; min-width: 0; color: var(--ia-text); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-puesto-tit b { font-size: .95rem; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-acc { display: flex; flex-wrap: wrap; gap: 4px; justify-content: flex-end; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-acc .btn { padding: 2px 7px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tag {
    display: inline-flex; align-items: center; gap: 4px; padding: 1px 8px; border-radius: 10px;
    font-size: .72rem; font-weight: 600; white-space: nowrap;
    background: rgb(var(--ia-overlay-rgb) / .07); color: var(--ia-muted); border: 1px solid var(--ia-line);
}
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tag.info { background: rgb(var(--ia-info-rgb) / .12); color: var(--ia-info); border-color: rgb(var(--ia-info-rgb) / .3); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tag.ok { background: rgb(var(--ia-success-rgb) / .12); color: var(--ia-success); border-color: rgb(var(--ia-success-rgb) / .3); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tag.warn { background: rgb(var(--ia-warn-rgb) / .14); color: var(--ia-warn); border-color: rgb(var(--ia-warn-rgb) / .35); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tag.danger { background: rgb(var(--ia-danger-rgb) / .12); color: var(--ia-danger); border-color: rgb(var(--ia-danger-rgb) / .3); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tag.muted { white-space: normal; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-equipos { margin: 8px 0 0 46px; display: flex; flex-direction: column; gap: 6px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-por-ubicar .art-equipos { margin-left: 0; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-por-ubicar { border-style: dashed; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-equipo {
    display: flex; align-items: flex-start; gap: 10px; padding: 8px 10px;
    background: var(--ia-panel2); border: 1px solid var(--ia-line); border-radius: 6px;
}
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-equipo:hover { border-color: rgb(var(--ia-accent-rgb) / .5); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-eq-foto { flex: 0 0 44px; width: 44px; height: 44px; border-radius: 6px; overflow: hidden; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--ia-line); background: var(--ia-panel); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-eq-foto img { width: 100%; height: 100%; object-fit: cover; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-eq-foto.vacia { color: var(--ia-muted); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-eq-datos { flex: 1; min-width: 0; color: var(--ia-text); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-eq-datos small { color: var(--ia-muted); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-eq-detalle { color: var(--ia-muted); font-size: .8rem; margin-top: 3px; white-space: pre-line; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-vacio { color: var(--ia-muted); font-size: .85rem; padding: 6px 10px; border: 1px dashed var(--ia-line); border-radius: 6px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-vacio a { color: var(--ia-accent); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-vacio.grande { display: flex; gap: 14px; align-items: center; padding: 22px; font-size: .95rem; background: var(--ia-panel); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-vacio.grande > i { font-size: 2rem; color: var(--ia-accent); }

/* ---------- Modales de la ficha ---------- */
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-foto-prev img { max-width: 100%; max-height: 140px; margin-top: 6px; border-radius: 6px; border: 1px solid var(--ia-line); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-libres { max-height: 280px; overflow-y: auto; margin: 8px 0; display: flex; flex-direction: column; gap: 4px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-libre {
    text-align: left; display: flex; flex-direction: column; gap: 1px; padding: 7px 10px; cursor: pointer;
    background: var(--ia-panel2); color: var(--ia-text); border: 1px solid var(--ia-line); border-radius: 6px;
}
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-libre small { color: var(--ia-muted); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-libre:hover, :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-libre.activo { border-color: var(--ia-accent); background: rgb(var(--ia-accent-rgb) / .10); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-elegido { margin: 6px 0 10px; color: var(--ia-text); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-linea-tiempo { list-style: none; margin: 0; padding: 0 0 0 14px; border-left: 2px solid var(--ia-line); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-linea-tiempo li { position: relative; padding: 0 0 12px 10px; color: var(--ia-text); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-linea-tiempo li::before { content: ''; position: absolute; left: -21px; top: 4px; width: 12px; height: 12px; border-radius: 50%; background: var(--ia-accent); border: 2px solid var(--ia-panel); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-linea-tiempo .cuando { color: var(--ia-muted); font-size: .8rem; margin-right: 6px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-ot-eq { margin: 0; padding-left: 16px; font-size: .8rem; }

/* ---------- Selector (Equipamiento Naval / Ficha) ---------- */
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tarjetas { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 12px; margin-top: 12px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tarjeta {
    display: flex; flex-direction: column; gap: 4px; padding: 12px 14px; text-decoration: none;
    background: var(--ia-panel); border: 1px solid var(--ia-line); border-radius: var(--ia-radius); color: var(--ia-text);
    box-shadow: var(--ia-shadow); transition: border-color .15s, transform .15s;
}
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tarjeta:hover { border-color: var(--ia-accent); transform: translateY(-1px); text-decoration: none; color: var(--ia-text); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tarjeta b { font-size: 1rem; color: var(--ia-accent); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tarjeta small { color: var(--ia-muted); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-tarjeta .art-tags { margin-top: 6px; }

/* ---------- Equipamientos (lista) y historia de equipo ---------- */
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-mini-foto { width: 38px; height: 38px; object-fit: cover; border-radius: 5px; border: 1px solid var(--ia-line); background: var(--ia-panel2); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-sinfoto { width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; border-radius: 5px; background: var(--ia-panel2); color: var(--ia-muted); border: 1px solid var(--ia-line); }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-ficha-datos {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 4px 16px;
    background: var(--ia-panel2); border: 1px solid var(--ia-line); border-radius: 6px; padding: 12px 14px; margin-bottom: 12px;
}
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-ficha-datos .label { display: block; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-ficha-datos .value { margin-bottom: 4px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-foto-grande { max-width: 100%; max-height: 220px; border-radius: 8px; border: 1px solid var(--ia-line); }

/* ---------- Gráficos de informes ---------- */
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-graficos { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 12px; margin-bottom: 12px; }
:is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-graficos .grafico-card { min-height: 300px; }

@media (max-width: 768px) {
    :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-equipos { margin-left: 0; }
    :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-puesto-head { flex-wrap: wrap; }
    :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-acc { width: 100%; justify-content: flex-start; }
    :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-barra-der input { min-width: 0; width: 100%; }
}

/* ---------- Informe imprimible (hoja blanca: colores fijos permitidos) ---------- */
@media print {
    :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) #accordionSidebar, :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .topbar, :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) footer, :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .no-imprimir, :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .scroll-to-top { display: none !important; }
    :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) #content-wrapper, :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) #content { margin: 0 !important; padding: 0 !important; background: #fff !important; }
    :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-informe, :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-informe * { color: #111 !important; background: #fff !important; box-shadow: none !important; }
    :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-informe .art-tag, :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-informe .badge { border: 1px solid #999 !important; }
    :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-informe .art-linea { break-inside: avoid; border: 1px solid #999 !important; }
    :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-informe table th, :is(.mod-artefacto-naval, .mod-informe_anaval):has(.art-v2) .art-informe table td { border: 1px solid #bbb !important; }
}

/* ---------- Informe de artefacto ---------- */
:is(.mod-informe_anaval) .art-periodo { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
:is(.mod-informe_anaval) .art-periodo input { width: 150px; }
:is(.mod-informe_anaval) .art-inf-linea { margin: 14px 0 6px; font-size: .95rem; font-weight: 700; color: var(--ia-accent); }
:is(.mod-informe_anaval) .art-inf-tabla th { background: var(--ia-panel2); color: var(--ia-muted); font-size: .75rem; text-transform: uppercase; white-space: nowrap; }
:is(.mod-informe_anaval) .art-inf-tabla td { color: var(--ia-text); border-color: var(--ia-line); vertical-align: top; }
:is(.mod-informe_anaval) .art-lienzo { position: relative; height: 290px; }
@media print {
    .mod-informe_anaval .art-inf-linea { color: #111 !important; }
    .mod-informe_anaval .art-inf-tabla th { background: #eee !important; color: #111 !important; }
    .mod-informe_anaval .box, .mod-informe_anaval .art-ficha-datos, .mod-informe_anaval .stat { border: 1px solid #bbb !important; }
    .mod-informe_anaval .art-graficos { grid-template-columns: 1fr 1fr; }
    .mod-informe_anaval a[href]::after { content: none !important; }
}
/* =====================================================================
   v2.4 — Artefactos navales: CSS ORIGINAL restaurado
   · .mod-especificaciones_anaval  → pantalla Especificaciones (menú "Ficha de Artefacto Naval")
   · .mod-artefacto-naval #modalEspecificaciones → modal Especificaciones del listado de Artefacto Naval
   Fuente: especificaciones_anaval/css/estilos.css + estilos en línea de index.php,
   artefacto-naval/vistas/especificaciones.php y ajax/*.php (originales).
   Generado con scratchpad/ra/css/build.sh (rt_convertir.js): en tema verde = colores originales.
   ===================================================================== */
/* ============================================================
   Módulo .mod-especificaciones_anaval — CSS ORIGINAL restaurado (v2.2)
   Colores: en tema verde valen exactamente los del original;
   en claro/oscuro usan las variables del tema (--ia-*).
   ============================================================ */
.mod-especificaciones_anaval {
    --fondo: var(--ia-bg);
    --fondo-card: var(--ia-panel);
    --fondo-card-2: var(--ia-panel2);
    --fondo-input: var(--ia-input-bg);
    --borde: var(--ia-line);
    --borde-claro: rgb(var(--ia-info-rgb) / .45);
    --texto: var(--ia-text);
    --texto-secundario: var(--ia-text);
    --texto-muted: var(--ia-muted);
    --azul: var(--ia-info);
    --azul-hover: var(--ia-info);
    --turquesa: var(--ia-accent);
    --turquesa-hover: var(--ia-accent-h);
    --verde: var(--ia-accent);
    --rojo: var(--ia-danger);
    --amarillo: var(--ia-warn);
    --eap-e8eef5-t: var(--ia-text);
    --eap-2dd4bf-t: var(--ia-accent);
    --eap-rgb-0-0-0: 0 0 0;
    --eap-ffffff-t: var(--ia-text);
    --eap-20d6c7-t: var(--ia-accent);
    --eap-dce5ed-t: var(--ia-text);
    --eap-202d3a-f: var(--ia-panel2);
    --eap-061014-t: var(--ia-muted);
    --eap-222b37-f: var(--ia-panel2);
    --eap-293746-f: var(--ia-panel2);
    --eap-2563eb-b: var(--ia-info);
    --eap-0f1419-f: var(--ia-panel);
    --eap-rgb-32-214-199: var(--ia-accent-rgb);
    --eap-7e8d9d-t: var(--ia-muted);
    --eap-354657-t: var(--ia-info);
    --eap-718096-t: var(--ia-muted);
    --eap-102c32-f: rgb(var(--ia-accent-rgb) / .14);
    --eap-1b655f-b: rgb(var(--ia-accent-rgb) / .45);
    --eap-526477-t: var(--ia-info);
    --eap-aebdca-t: var(--ia-text);
    --eap-1976d2-t: var(--ia-info);
    --eap-ffc107-t: var(--ia-warn);
    --eap-ff6b6b-t: var(--ia-danger);
    --eap-94a3b8-t: var(--ia-info);
    --eap-1a232e-f: var(--ia-panel2);
    --eap-202c38-f: var(--ia-panel2);
    --eap-e5edf5-t: var(--ia-text);
    --eap-101820-t: var(--ia-muted);
    --eap-dbe4ec-t: var(--ia-text);
    --eap-0f141a-t: var(--ia-muted);
    --eap-16272b-f: var(--ia-panel);
    --eap-607386-t: var(--ia-muted);
    --eap-sobre-061014: var(--ia-accent-d);
    --eap-sobre-ffffff: var(--ia-accent-d);
    --eap-sobre-101820: var(--ia-accent-d);
    --eap-sobre-0f141a: var(--ia-accent-d);
}
:root[data-tema="verde"] .mod-especificaciones_anaval,
:root:not([data-tema]) .mod-especificaciones_anaval {
    --fondo: #0f141a;
    --fondo-card: #151c25;
    --fondo-card-2: #1b2430;
    --fondo-input: #101820;
    --borde: #2b3948;
    --borde-claro: #354657;
    --texto: #f1f5f9;
    --texto-secundario: #b8c4d0;
    --texto-muted: #8796a6;
    --azul: #1976d2;
    --azul-hover: #2388ed;
    --turquesa: #20d6c7;
    --turquesa-hover: #16b7aa;
    --verde: #20c997;
    --rojo: #dc3545;
    --amarillo: #ffc107;
    --eap-e8eef5-t: #e8eef5;
    --eap-2dd4bf-t: #2dd4bf;
    --eap-rgb-0-0-0: 0 0 0;
    --eap-ffffff-t: #ffffff;
    --eap-20d6c7-t: #20d6c7;
    --eap-dce5ed-t: #dce5ed;
    --eap-202d3a-f: #202d3a;
    --eap-061014-t: #061014;
    --eap-222b37-f: #222b37;
    --eap-293746-f: #293746;
    --eap-2563eb-b: #2563eb;
    --eap-0f1419-f: #0f1419;
    --eap-rgb-32-214-199: 32 214 199;
    --eap-7e8d9d-t: #7e8d9d;
    --eap-354657-t: #354657;
    --eap-718096-t: #718096;
    --eap-102c32-f: #102c32;
    --eap-1b655f-b: #1b655f;
    --eap-526477-t: #526477;
    --eap-aebdca-t: #aebdca;
    --eap-1976d2-t: #1976d2;
    --eap-ffc107-t: #ffc107;
    --eap-ff6b6b-t: #ff6b6b;
    --eap-94a3b8-t: #94a3b8;
    --eap-1a232e-f: #1a232e;
    --eap-202c38-f: #202c38;
    --eap-e5edf5-t: #e5edf5;
    --eap-101820-t: #101820;
    --eap-dbe4ec-t: #dbe4ec;
    --eap-0f141a-t: #0f141a;
    --eap-16272b-f: #16272b;
    --eap-607386-t: #607386;
    --eap-sobre-061014: #061014;
    --eap-sobre-ffffff: #ffffff;
    --eap-sobre-101820: #101820;
    --eap-sobre-0f141a: #0f141a;
}
/* =========================================================
   EQUIPOS NAVALES
   TEMA OSCURO CORPORATIVO
========================================================= */

/* =========================================================
   BODY
========================================================= */

.mod-especificaciones_anaval{

    font-size:14px;

    background:var(--fondo);

    color:var(--eap-e8eef5-t);

    overflow-x:hidden;

}

/* =========================================================
   PANEL IZQUIERDO
========================================================= */

.mod-especificaciones_anaval .panel-izq{

    background:var(--fondo-card);

    color:var(--eap-2dd4bf-t);

    height:92vh;

    overflow-y:auto;

    border-radius:10px;

    padding:15px;

    border:1px solid var(--borde);

    box-shadow:
        0 4px 15px rgb(var(--eap-rgb-0-0-0) / .35);

}

.mod-especificaciones_anaval .panel-izq h5{

    color:var(--eap-ffffff-t);

    font-weight:600;

}

.mod-especificaciones_anaval .panel-izq h5 i{

    color:var(--eap-20d6c7-t);

    margin-right:5px;

}

/* =========================================================
   PANEL DERECHO
========================================================= */

.mod-especificaciones_anaval .panel-der{

    background:var(--fondo-card);

    height:92vh;

    overflow-y:auto;

    border-radius:10px;

    padding:15px;

    border:1px solid var(--borde);

    box-shadow:
        0 4px 15px rgb(var(--eap-rgb-0-0-0) / .35);

}

/* =========================================================
   ARTEFACTOS
========================================================= */

.mod-especificaciones_anaval .item-artefacto{

    padding:10px;

    cursor:pointer;

    border-bottom:1px solid var(--borde-claro);

    transition:all .2s;

    border-radius:6px;

    color:var(--eap-dce5ed-t);

}

.mod-especificaciones_anaval .item-artefacto:hover{

    background:var(--eap-202d3a-f);

}

.mod-especificaciones_anaval .item-artefacto.activo{

    background:var(--turquesa);

    color:var(--eap-sobre-061014);

}

/* =========================================================
   CATEGORIAS
========================================================= */

.mod-especificaciones_anaval .categoria{

    background:var(--fondo-card);

    border:1px solid var(--borde-claro);

    border-radius:8px;

    margin-bottom:10px;

    overflow:hidden;

    transition:all .2s;

}

.mod-especificaciones_anaval .categoria:hover{

    border-color:var(--turquesa);

}

.mod-especificaciones_anaval .categoria-item{

    padding:10px;

    cursor:pointer;

}

.mod-especificaciones_anaval .categoria.activa{

    border-left:4px solid var(--turquesa);

}

/* =========================================================
   CONTENIDO CATEGORIA
========================================================= */

.mod-especificaciones_anaval .contenido-categoria{

    display:none;

    padding:8px;

    background:var(--eap-222b37-f);

}

/* =========================================================
   LINEAS
========================================================= */

.mod-especificaciones_anaval .linea-expand{

    margin-bottom:8px;

    border-left:2px solid var(--turquesa);

    margin-left:8px;

    padding-left:10px;

}

/* =========================================================
   TITULO LINEA
========================================================= */

.mod-especificaciones_anaval .titulo-linea{

    display:flex;

    justify-content:space-between;

    align-items:center;

    padding:8px 10px;

    background:var(--eap-222b37-f);

    border-radius:6px;

    cursor:pointer;

    transition:all .2s;

    user-select:none;

    color:var(--eap-ffffff-t);

}

.mod-especificaciones_anaval .titulo-linea:hover{

    background:var(--eap-293746-f);

}

.mod-especificaciones_anaval .titulo-linea::before{

    content:"▶";

    margin-right:8px;

    font-size:10px;

    transition:transform .2s;

}

.mod-especificaciones_anaval .titulo-linea.abierta::before{

    transform:rotate(90deg);

}

/* =========================================================
   CONTENIDO LINEA
========================================================= */

.mod-especificaciones_anaval .contenido-linea{

    display:none;

    margin-top:6px;

    padding-left:10px;

    animation:fadeIn .2s ease;

    background:var(--eap-222b37-f);

}

/* =========================================================
   EQUIPOS
========================================================= */

.mod-especificaciones_anaval .equipo{

    display:flex;

    justify-content:space-between;

    align-items:center;

    margin-top:5px;

    padding:8px;

    background:var(--eap-222b37-f);

    border-radius:6px;

    border:1px solid var(--borde-claro);

    transition:all .2s;

    cursor:pointer;

}

.mod-especificaciones_anaval .equipo:hover{

    background:var(--eap-293746-f);

    transform:translateX(2px);

}

.mod-especificaciones_anaval .equipo.activo{

    background:var(--eap-222b37-f);

    border-left:3px solid var(--eap-2563eb-b);

}

/* =========================================================
   DETALLE EQUIPO
========================================================= */

.mod-especificaciones_anaval .detalle-equipo{

    display:none;

    margin-top:8px;

    padding:10px;

    background:var(--fondo-card);

    border-radius:8px;

    border:1px solid var(--borde-claro);

}

/* =========================================================
   BOTONES
========================================================= */

.mod-especificaciones_anaval .btn-agregar-equipo,
.mod-especificaciones_anaval .btn-agregar-linea{

    margin-left:10px;

}

.mod-especificaciones_anaval .btn-danger{

    padding:2px 8px;

    font-size:12px;

    background-color:var(--eap-0f1419-f);

}

/* =========================================================
   BOTON DARK
========================================================= */

.mod-especificaciones_anaval .btn-dark{

    color:var(--eap-20d6c7-t) !important;

    background:var(--eap-0f1419-f) !important;

    border:1px solid var(--turquesa) !important;

}

.mod-especificaciones_anaval .btn-dark:hover{

    color:var(--eap-sobre-ffffff) !important;

    background:var(--turquesa) !important;

    border-color:var(--turquesa) !important;

}

/* =========================================================
   BOTON PRIMARY
========================================================= */

.mod-especificaciones_anaval .btn-primary{

    color:var(--eap-sobre-061014) !important;

    background:var(--turquesa) !important;

    border-color:var(--turquesa) !important;

}

.mod-especificaciones_anaval .btn-primary:hover{

    color:var(--eap-sobre-ffffff) !important;

    background:var(--turquesa-hover) !important;

    border-color:var(--turquesa-hover) !important;

}

/* =========================================================
   INPUTS
========================================================= */

.mod-especificaciones_anaval .form-control{

    color:var(--eap-ffffff-t) !important;

    background:var(--fondo-input) !important;

    border:1px solid var(--borde-claro) !important;

    border-radius:6px;

}

.mod-especificaciones_anaval .form-control:focus{

    color:var(--eap-ffffff-t) !important;

    background:var(--fondo-input) !important;

    border-color:var(--turquesa) !important;

    box-shadow:
        0 0 0 .15rem rgb(var(--eap-rgb-32-214-199) / .18) !important;

}

.mod-especificaciones_anaval .form-control::placeholder{

    color:var(--eap-7e8d9d-t) !important;

}

/* =========================================================
   SELECT
========================================================= */

.mod-especificaciones_anaval select.form-control{

    background-color:var(--fondo-input) !important;

    color:var(--eap-ffffff-t) !important;

}

.mod-especificaciones_anaval select.form-control option{

    background:var(--fondo-card);

    color:var(--eap-ffffff-t);

}

/* =========================================================
   CARGANDO
========================================================= */

.mod-especificaciones_anaval .cargando{

    text-align:center;

    padding:20px;

    color:var(--texto-muted);

}

.mod-especificaciones_anaval .cargando i{

    color:var(--eap-20d6c7-t);

    margin-right:5px;

}

/* =========================================================
   DETALLE INICIAL
========================================================= */

.mod-especificaciones_anaval .detalle-inicial{

    min-height:300px;

    display:flex;

    flex-direction:column;

    align-items:center;

    justify-content:center;

    text-align:center;

    color:var(--texto-muted);

}

.mod-especificaciones_anaval .detalle-inicial > i{

    font-size:55px;

    color:var(--eap-354657-t);

    margin-bottom:15px;

}

.mod-especificaciones_anaval .detalle-inicial h5{

    color:var(--texto-secundario);

    margin-bottom:5px;

}

.mod-especificaciones_anaval .detalle-inicial p{

    color:var(--eap-718096-t);

    font-size:12px;

}

/* =========================================================
   ANIMACION
========================================================= */

@keyframes fadeIn{

    from{

        opacity:0;

        transform:translateY(-3px);

    }

    to{

        opacity:1;

        transform:translateY(0);

    }

}

/* =========================================================
   SCROLL
========================================================= */

.mod-especificaciones_anaval ::-webkit-scrollbar{

    width:8px;

}

.mod-especificaciones_anaval ::-webkit-scrollbar-track{

    background:var(--fondo-input);

}

.mod-especificaciones_anaval ::-webkit-scrollbar-thumb{

    background:var(--borde-claro);

    border-radius:10px;

}

.mod-especificaciones_anaval ::-webkit-scrollbar-thumb:hover{

    background:var(--turquesa);

}

/* =========================================================
   DETALLE TIPO EQUIPO
========================================================= */

.mod-especificaciones_anaval .detalle-tipo-equipo{

    width:100%;

}

/* =========================================================
   CABECERA TIPO EQUIPO
========================================================= */

.mod-especificaciones_anaval .tipo-equipo-header{

    display:flex;

    justify-content:space-between;

    align-items:center;

    gap:15px;

    padding:10px 14px;

    margin-bottom:15px;

    background:var(--fondo-card-2);

    border:1px solid var(--borde);

    border-left:3px solid var(--turquesa);

    border-radius:8px;

}

.mod-especificaciones_anaval .tipo-equipo-titulo{

    color:var(--eap-ffffff-t);

    font-size:17px;

    font-weight:700;

    line-height:1.3;

}

.mod-especificaciones_anaval .tipo-equipo-titulo i{

    color:var(--eap-20d6c7-t);

    margin-right:7px;

}

.mod-especificaciones_anaval .tipo-equipo-sistema{

    color:var(--texto-muted);

    font-size:11px;

    margin-top:3px;

}

.mod-especificaciones_anaval .tipo-equipo-sistema strong{

    color:var(--texto-secundario);

}

.mod-especificaciones_anaval .tipo-equipo-contador{

    flex-shrink:0;

    background:var(--eap-102c32-f);

    border:1px solid var(--eap-1b655f-b);

    color:var(--eap-20d6c7-t);

    border-radius:15px;

    padding:5px 10px;

    font-size:11px;

    font-weight:600;

}

/* =========================================================
   GRID PRODUCTOS
========================================================= */

.mod-especificaciones_anaval .grid-productos-equipo{

    display:grid;

    grid-template-columns:
        repeat(4, minmax(0, 1fr));

    gap:15px;

}

/* =========================================================
   TARJETA PRODUCTO
========================================================= */

.mod-especificaciones_anaval .producto-equipo-card{

    min-width:0;

    background:var(--fondo-card);

    border:1px solid var(--borde);

    border-radius:12px;

    overflow:hidden;

    transition:
        transform .2s ease,
        border-color .2s ease,
        box-shadow .2s ease;

}

.mod-especificaciones_anaval .producto-equipo-card:hover{

    transform:translateY(-3px);

    border-color:var(--turquesa);

    box-shadow:
        0 8px 22px rgb(var(--eap-rgb-0-0-0) / .35);

}

/* =========================================================
   FOTO
========================================================= */

.mod-especificaciones_anaval .producto-equipo-foto{

    width:100%;

    height:190px;

    background:var(--fondo-input);

    border-bottom:1px solid var(--borde);

    display:flex;

    align-items:center;

    justify-content:center;

    overflow:hidden;

}

.mod-especificaciones_anaval .producto-equipo-foto img{

    width:100%;

    height:190px;

    object-fit:contain;

    padding:10px;

}

/* =========================================================
   SIN FOTO
========================================================= */

.mod-especificaciones_anaval .producto-equipo-sin-foto{

    width:100%;

    height:190px;

    display:flex;

    align-items:center;

    justify-content:center;

    flex-direction:column;

    gap:5px;

    color:var(--eap-526477-t);

    background:var(--fondo-input);

}

.mod-especificaciones_anaval .producto-equipo-sin-foto i{

    font-size:42px;

    color:var(--eap-354657-t);

}

.mod-especificaciones_anaval .producto-equipo-sin-foto span{

    font-size:10px;

    color:var(--eap-718096-t);

}

/* =========================================================
   CUERPO PRODUCTO
========================================================= */

.mod-especificaciones_anaval .producto-equipo-body{

    padding:13px;

}

/* =========================================================
   NOMBRE
========================================================= */

.mod-especificaciones_anaval .producto-equipo-nombre{

    color:var(--eap-ffffff-t);

    font-size:15px;

    font-weight:700;

    line-height:1.3;

    min-height:39px;

    margin-bottom:5px;

    overflow:hidden;

}

/* =========================================================
   MODELO
========================================================= */

.mod-especificaciones_anaval .producto-equipo-modelo{

    color:var(--eap-aebdca-t);

    font-size:11px;

    margin-bottom:4px;

    white-space:nowrap;

    overflow:hidden;

    text-overflow:ellipsis;

}

.mod-especificaciones_anaval .producto-equipo-modelo i{

    color:var(--eap-20d6c7-t);

    margin-right:4px;

}

/* =========================================================
   SERIE
========================================================= */

.mod-especificaciones_anaval .producto-equipo-serie{

    color:var(--texto-muted);

    font-size:10px;

    margin-bottom:10px;

    white-space:nowrap;

    overflow:hidden;

    text-overflow:ellipsis;

}

.mod-especificaciones_anaval .producto-equipo-serie i{

    color:var(--eap-1976d2-t);

    margin-right:4px;

}

/* =========================================================
   INFORMACION
========================================================= */

.mod-especificaciones_anaval .producto-equipo-info{

    border-top:1px solid var(--eap-293746-f);

    border-bottom:1px solid var(--eap-293746-f);

    padding:8px 0;

}

.mod-especificaciones_anaval .producto-equipo-info-item{

    display:flex;

    justify-content:space-between;

    align-items:center;

    gap:8px;

    padding:3px 0;

}

.mod-especificaciones_anaval .producto-equipo-info-item span{

    color:var(--eap-718096-t);

    font-size:10px;

}

.mod-especificaciones_anaval .producto-equipo-info-item span i{

    color:var(--eap-20d6c7-t);

    width:15px;

}

.mod-especificaciones_anaval .producto-equipo-info-item strong{

    color:var(--eap-dce5ed-t);

    font-size:10px;

    font-weight:500;

    text-align:right;

    overflow:hidden;

    text-overflow:ellipsis;

    white-space:nowrap;

    max-width:60%;

}

/* =========================================================
   TIPO
========================================================= */

.mod-especificaciones_anaval .producto-equipo-tipo{

    margin-top:10px;

}

.mod-especificaciones_anaval .producto-equipo-tipo .badge{

    font-size:10px;

    padding:4px 8px;

    border-radius:15px;

}

.mod-especificaciones_anaval .producto-equipo-tipo .badge-primary{

    background:var(--azul) !important;

    color:var(--eap-ffffff-t) !important;

}

.mod-especificaciones_anaval .producto-equipo-tipo .badge-success{

    background:var(--turquesa) !important;

    color:var(--eap-sobre-061014) !important;

}

/* =========================================================
   FOOTER
========================================================= */

.mod-especificaciones_anaval .producto-equipo-footer{

    display:flex;

    justify-content:space-between;

    align-items:center;

    margin-top:10px;

}

.mod-especificaciones_anaval .producto-equipo-footer small{

    color:var(--eap-718096-t) !important;

    font-size:9px;

}

.mod-especificaciones_anaval .producto-equipo-stock{

    font-size:16px;

    font-weight:700;

    color:var(--eap-20d6c7-t);

}

.mod-especificaciones_anaval .producto-equipo-stock.bajo{

    color:var(--eap-ffc107-t);

}

.mod-especificaciones_anaval .producto-equipo-stock.agotado{

    color:var(--eap-ff6b6b-t);

}

/* =========================================================
   PRODUCTOS VACIOS
========================================================= */

.mod-especificaciones_anaval .productos-equipo-vacio{

    padding:45px 20px;

    text-align:center;

    color:var(--eap-718096-t);

    background:var(--fondo-input);

    border:1px dashed var(--borde-claro);

    border-radius:10px;

}

.mod-especificaciones_anaval .productos-equipo-vacio i{

    display:block;

    font-size:42px;

    color:var(--eap-354657-t);

    margin-bottom:10px;

}

.mod-especificaciones_anaval .productos-equipo-vacio h6{

    color:var(--texto-secundario);

    margin-bottom:5px;

}

.mod-especificaciones_anaval .productos-equipo-vacio p{

    font-size:11px;

    margin:0;

    color:var(--eap-718096-t);

}

/* =========================================================
   CARGANDO PRODUCTOS
========================================================= */

.mod-especificaciones_anaval .productos-equipo-cargando{

    padding:35px;

    text-align:center;

    color:var(--texto-muted);

}

.mod-especificaciones_anaval .productos-equipo-cargando i{

    color:var(--eap-20d6c7-t);

    margin-right:5px;

}

/* =========================================================
   RESPONSIVE 1200
========================================================= */

@media(max-width:1200px){

    .mod-especificaciones_anaval .grid-productos-equipo{

        grid-template-columns:
            repeat(3, minmax(0, 1fr));

    }

}

/* =========================================================
   RESPONSIVE 900
========================================================= */

@media(max-width:900px){

    .mod-especificaciones_anaval .grid-productos-equipo{

        grid-template-columns:
            repeat(2, minmax(0, 1fr));

    }

}

/* =========================================================
   MOBILE
========================================================= */

@media(max-width:768px){

    .mod-especificaciones_anaval{

        font-size:13px;

    }

    .mod-especificaciones_anaval .container-fluid{

        padding:5px;

    }

    .mod-especificaciones_anaval .panel-izq{

        height:auto;

        margin-bottom:10px;

        padding:10px;

    }

    .mod-especificaciones_anaval .panel-der{

        height:auto;

        min-height:85vh;

        padding:10px;

    }

    .mod-especificaciones_anaval .categoria-item{

        padding:8px;

    }

    .mod-especificaciones_anaval .titulo-linea{

        padding:7px;

        font-size:13px;

    }

    .mod-especificaciones_anaval .equipo{

        flex-direction:column;

        align-items:flex-start;

        gap:6px;

        font-size:13px;

    }

    .mod-especificaciones_anaval .btn-danger{

        width:100%;

    }

    .mod-especificaciones_anaval .producto-equipo-foto,
    .mod-especificaciones_anaval .producto-equipo-foto img,
    .mod-especificaciones_anaval .producto-equipo-sin-foto{

        height:180px;

    }

    .mod-especificaciones_anaval .tipo-equipo-header{

        align-items:flex-start;

    }

}

/* =========================================================
   MOBILE PEQUEÑO
========================================================= */

@media(max-width:576px){

    .mod-especificaciones_anaval .grid-productos-equipo{

        grid-template-columns:1fr;

    }

    .mod-especificaciones_anaval .producto-equipo-foto,
    .mod-especificaciones_anaval .producto-equipo-foto img,
    .mod-especificaciones_anaval .producto-equipo-sin-foto{

        height:210px;

    }

    .mod-especificaciones_anaval .tipo-equipo-header{

        flex-direction:column;

    }

    .mod-especificaciones_anaval .tipo-equipo-titulo{

        font-size:15px;

    }

    .mod-especificaciones_anaval .producto-equipo-nombre{

        font-size:16px;

    }

    .mod-especificaciones_anaval .btn-danger{

        width:100%;

    }

}
.mod-especificaciones_anaval .equipo-nombre,
.mod-especificaciones_anaval .equipo-sistema{
    display:block;
}

/* =====================================================
   NOMBRE Y SISTEMA
===================================================== */

.mod-especificaciones_anaval .equipo-nombre,
.mod-especificaciones_anaval .equipo-sistema{
    display:block;
}

/* =====================================================
   CUANDO ESTÁ ABIERTO
===================================================== */

.mod-especificaciones_anaval .equipo.abierto .equipo-nombre,
.mod-especificaciones_anaval .equipo.abierto .equipo-sistema{
    display:none;
}

/* =====================================================
   FLECHA
===================================================== */

.mod-especificaciones_anaval .flecha-equipo{
    display:inline-block;
    width:20px;
    transition:transform .2s;
    color:var(--eap-94a3b8-t);
}

.mod-especificaciones_anaval .equipo.abierto .flecha-equipo{
    transform:rotate(90deg);
    color:var(--eap-2dd4bf-t);
}
/* =========================================================
   MODAL INTERNO
========================================================= */

.mod-especificaciones_anaval #modalEquipo{

    display:none;

    position:fixed;

    top:0;
    left:0;

    width:100%;
    height:100%;

    background:rgb(var(--eap-rgb-0-0-0) / .75);

    z-index:99999;

    overflow:auto;

    padding:25px 15px;

}

/* =========================================================
   CONTENEDOR MODAL
========================================================= */

.mod-especificaciones_anaval #modalEquipo .modal-dialog{

    width:100%;

    max-width:1400px;

    margin:20px auto;

}

/* =========================================================
   CONTENIDO MODAL
========================================================= */

.mod-especificaciones_anaval #modalEquipo .modal-content{

    background:var(--fondo-card) !important;

    color:var(--eap-e8eef5-t) !important;

    border:1px solid var(--borde-claro) !important;

    border-radius:12px;

    overflow:hidden;

    box-shadow:
        0 15px 50px rgb(var(--eap-rgb-0-0-0) / .65);

}

/* =========================================================
   HEADER
========================================================= */

.mod-especificaciones_anaval #modalEquipo .modal-header{

    background:var(--fondo-card-2) !important;

    color:var(--eap-ffffff-t) !important;

    border-bottom:1px solid var(--borde-claro) !important;

    padding:12px 18px;

}

.mod-especificaciones_anaval #modalEquipo .modal-title{

    color:var(--eap-ffffff-t) !important;

    font-size:16px;

    font-weight:600;

}

.mod-especificaciones_anaval #modalEquipo .modal-title i{

    color:var(--eap-20d6c7-t);

    margin-right:6px;

}

.mod-especificaciones_anaval #modalEquipo .close{

    color:var(--eap-ffffff-t) !important;

    opacity:.9;

    text-shadow:none;

}

.mod-especificaciones_anaval #modalEquipo .close:hover{

    color:var(--eap-20d6c7-t) !important;

    opacity:1;

}

/* =========================================================
   BODY
========================================================= */

.mod-especificaciones_anaval #modalEquipo .modal-body{

    background:var(--fondo-card) !important;

    color:var(--eap-e8eef5-t) !important;

    padding:18px;

}

/* =========================================================
   PANTALLAS GRANDES
========================================================= */

@media(min-width:1200px){

    .mod-especificaciones_anaval #modalEquipo .modal-dialog{

        max-width:1400px;

    }

}

/* =========================================================
   TABLET
========================================================= */

@media(max-width:768px){

    .mod-especificaciones_anaval #modalEquipo{

        padding:10px;

    }

    .mod-especificaciones_anaval #modalEquipo .modal-dialog{

        margin:10px auto;

    }

    .mod-especificaciones_anaval #modalEquipo .modal-body{

        padding:12px;

    }

}

/* =========================================================
   MOBILE
========================================================= */

@media(max-width:576px){

    .mod-especificaciones_anaval #modalEquipo{

        padding:5px;

    }

    .mod-especificaciones_anaval #modalEquipo .modal-dialog{

        margin:5px auto;

    }

    .mod-especificaciones_anaval #modalEquipo .modal-header{

        padding:10px 12px;

    }

    .mod-especificaciones_anaval #modalEquipo .modal-body{

        padding:10px;

    }

}

/* ---- ajax/categorias_linea.php ---- */

/* =====================================================
   CATEGORIAS
===================================================== */

.mod-especificaciones_anaval .categorias-linea {

    width: 100%;

}

/* =====================================================
   CATEGORIA
===================================================== */

.mod-especificaciones_anaval .categoria {

    margin-bottom: 12px;

    border: 1px solid var(--borde);

    border-radius: 10px;

    overflow: hidden;

    background: var(--fondo-card);

}

/* =====================================================
   HEADER CATEGORIA
===================================================== */

.mod-especificaciones_anaval .categoria-header {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 15px;

    padding: 12px 15px;

    cursor: pointer;

    background: var(--eap-1a232e-f);

    transition:
        background .15s,
        border-color .15s;

}

.mod-especificaciones_anaval .categoria-header:hover {

    background: var(--eap-202c38-f);

}

.mod-especificaciones_anaval .categoria-header-info {

    min-width: 0;

    display: flex;

    align-items: center;

    gap: 10px;

}

.mod-especificaciones_anaval .categoria-header-info i {

    color: var(--eap-20d6c7-t);

}

.mod-especificaciones_anaval .categoria-nombre {

    color: var(--eap-e5edf5-t);

    font-size: 14px;

    font-weight: 600;

}

.mod-especificaciones_anaval .categoria-tipo {

    color: var(--texto-muted);

    font-size: 11px;

}

.mod-especificaciones_anaval .categoria-header-acciones {

    display: flex;

    align-items: center;

    gap: 6px;

}

/* =====================================================
   BOTON
===================================================== */

.mod-especificaciones_anaval .btn-agregar-equipo {

    border: 1px solid var(--turquesa);

    background: transparent;

    color: var(--eap-20d6c7-t);

    border-radius: 6px;

    padding: 5px 9px;

    font-size: 11px;

    cursor: pointer;

}

.mod-especificaciones_anaval .btn-agregar-equipo:hover {

    background: var(--turquesa);

    color: var(--eap-sobre-101820);

}

/* =====================================================
   EQUIPOS
===================================================== */

.mod-especificaciones_anaval .equipos-categoria {

    display: none;

    padding: 12px;

}

.mod-especificaciones_anaval .equipo {

    margin-bottom: 8px;

    border: 1px solid var(--borde);

    border-radius: 8px;

    background: var(--fondo-input);

    overflow: hidden;

    cursor: pointer;

}

.mod-especificaciones_anaval .equipo:last-child {

    margin-bottom: 0;

}

.mod-especificaciones_anaval .equipo-info {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 15px;

    padding: 10px 12px;

}

.mod-especificaciones_anaval .equipo-info-principal {

    min-width: 0;

}

.mod-especificaciones_anaval .equipo-nombre {

    color: var(--eap-dbe4ec-t);

    font-size: 13px;

    font-weight: 600;

}

.mod-especificaciones_anaval .equipo-sistema {

    margin-top: 3px;

    color: var(--texto-muted);

    font-size: 10px;

}

.mod-especificaciones_anaval .equipo-sistema strong {

    color: var(--eap-20d6c7-t);

}

.mod-especificaciones_anaval .detalle-equipo {

    display: none;

    padding: 12px;

    border-top: 1px solid var(--borde);

}

/* ---- ajax/detalle_tipo_equipo.php ---- */

/* =====================================================
   CONTENEDOR
===================================================== */

.mod-especificaciones_anaval .detalle-tipo-equipo {

    width: 100%;

    box-sizing: border-box;

}

/* =====================================================
   CABECERA
===================================================== */

.mod-especificaciones_anaval .tipo-equipo-header {

    width: 100%;

    display: flex;

    justify-content: space-between;

    align-items: center;

    gap: 20px;

    padding: 12px 15px;

    margin-bottom: 18px;

    background: var(--fondo-card);

    border: 1px solid var(--borde);

    border-radius: 10px;

    box-sizing: border-box;

}

.mod-especificaciones_anaval .tipo-equipo-header-info {

    min-width: 0;

}

.mod-especificaciones_anaval .tipo-equipo-titulo {

    color: var(--eap-2dd4bf-t);

    font-size: 17px;

    font-weight: 700;

}

.mod-especificaciones_anaval .tipo-equipo-titulo i {

    margin-right: 7px;

}

.mod-especificaciones_anaval .tipo-equipo-sistema {

    margin-top: 5px;

    color: var(--texto-muted);

    font-size: 12px;

}

.mod-especificaciones_anaval .tipo-equipo-sistema strong {

    color: var(--texto-secundario);

}

.mod-especificaciones_anaval .tipo-equipo-contador {

    flex-shrink: 0;

    display: flex;

    align-items: center;

    gap: 5px;

    padding: 7px 12px;

    color: var(--eap-20d6c7-t);

    background: var(--fondo-input);

    border: 1px solid var(--borde);

    border-radius: 8px;

    font-size: 12px;

}

.mod-especificaciones_anaval .tipo-equipo-contador strong {

    font-size: 16px;

}

/* =====================================================
   GRID PRODUCTOS
===================================================== */

.mod-especificaciones_anaval .grid-productos-equipo {

    width: 100%;

    display: grid;

    grid-template-columns:
        repeat(4, minmax(0, 1fr));

    gap: 18px;

}

/* =====================================================
   TARJETA
===================================================== */

.mod-especificaciones_anaval .producto-equipo-card {

    width: 100%;

    min-width: 0;

    overflow: hidden;

    background: var(--fondo-card);

    border: 1px solid var(--borde);

    border-radius: 12px;

    transition:
        transform .18s ease,
        border-color .18s ease,
        box-shadow .18s ease;

}

.mod-especificaciones_anaval .producto-equipo-card:hover {

    transform: translateY(-3px);

    border-color: var(--turquesa);

    box-shadow:
        0 8px 22px rgb(var(--eap-rgb-0-0-0) / .25);

}

/* =====================================================
   FOTO
===================================================== */

.mod-especificaciones_anaval .producto-equipo-foto {

    width: 100%;

    height: 210px;

    background: var(--fondo-input);

    display: flex;

    align-items: center;

    justify-content: center;

    overflow: hidden;

    border-bottom: 1px solid var(--borde);

}

.mod-especificaciones_anaval .producto-equipo-foto img {

    width: 100%;

    height: 100%;

    object-fit: contain;

    padding: 10px;

    box-sizing: border-box;

}

.mod-especificaciones_anaval .producto-equipo-sin-foto {

    width: 100%;

    height: 100%;

    display: flex;

    flex-direction: column;

    align-items: center;

    justify-content: center;

    gap: 8px;

    color: var(--texto-muted);

    font-size: 12px;

}

.mod-especificaciones_anaval .producto-equipo-sin-foto i {

    font-size: 40px;

    opacity: .55;

}

/* =====================================================
   CUERPO
===================================================== */

.mod-especificaciones_anaval .producto-equipo-body {

    padding: 15px;

}

/* =====================================================
   NOMBRE
===================================================== */

.mod-especificaciones_anaval .producto-equipo-nombre {

    color: var(--texto);

    font-size: 16px;

    font-weight: 700;

    line-height: 1.3;

    min-height: 42px;

    overflow: hidden;

    display: -webkit-box;

    -webkit-line-clamp: 2;

    -webkit-box-orient: vertical;

}

/* =====================================================
   MODELO
===================================================== */

.mod-especificaciones_anaval .producto-equipo-modelo {

    display: flex;

    align-items: center;

    gap: 7px;

    margin-top: 9px;

    color: var(--texto-secundario);

    font-size: 13px;

}

.mod-especificaciones_anaval .producto-equipo-modelo i {

    color: var(--eap-20d6c7-t);

    width: 15px;

}

/* =====================================================
   SERIE
===================================================== */

.mod-especificaciones_anaval .producto-equipo-serie {

    display: flex;

    align-items: center;

    gap: 7px;

    margin-top: 7px;

    color: var(--texto-muted);

    font-size: 12px;

    overflow: hidden;

}

.mod-especificaciones_anaval .producto-equipo-serie i {

    color: var(--eap-20d6c7-t);

    width: 15px;

    flex-shrink: 0;

}

/* =====================================================
   INFORMACIÓN
===================================================== */

.mod-especificaciones_anaval .producto-equipo-info {

    margin-top: 14px;

    padding-top: 11px;

    border-top: 1px solid var(--borde);

}

.mod-especificaciones_anaval .producto-equipo-info-item {

    display: flex;

    justify-content: space-between;

    gap: 10px;

    padding: 4px 0;

    font-size: 11px;

}

.mod-especificaciones_anaval .producto-equipo-info-item span {

    color: var(--texto-muted);

    white-space: nowrap;

}

.mod-especificaciones_anaval .producto-equipo-info-item span i {

    color: var(--eap-20d6c7-t);

    width: 14px;

}

.mod-especificaciones_anaval .producto-equipo-info-item strong {

    color: var(--eap-dbe4ec-t);

    text-align: right;

    overflow: hidden;

    text-overflow: ellipsis;

    white-space: nowrap;

}

/* =====================================================
   TIPO
===================================================== */

.mod-especificaciones_anaval .producto-equipo-tipo {

    margin-top: 12px;

}

.mod-especificaciones_anaval .producto-equipo-tipo .badge {

    font-size: 10px;

    padding: 5px 8px;

    letter-spacing: .3px;

}

/* =====================================================
   FOOTER
===================================================== */

.mod-especificaciones_anaval .producto-equipo-footer {

    display: flex;

    align-items: center;

    justify-content: space-between;

    margin-top: 15px;

    padding-top: 11px;

    border-top: 1px solid var(--borde);

}

.mod-especificaciones_anaval .producto-equipo-footer small {

    color: var(--texto-muted);

    font-size: 10px;

}

/* =====================================================
   STOCK
===================================================== */

.mod-especificaciones_anaval .producto-equipo-stock {

    min-width: 32px;

    height: 32px;

    padding: 0 8px;

    display: flex;

    align-items: center;

    justify-content: center;

    border-radius: 7px;

    background: var(--verde);

    color: var(--eap-sobre-0f141a);

    font-size: 14px;

    font-weight: 700;

}

.mod-especificaciones_anaval .producto-equipo-stock.bajo {

    background: var(--amarillo);

}

.mod-especificaciones_anaval .producto-equipo-stock.agotado {

    background: var(--rojo);

    color: var(--eap-sobre-ffffff);

}

/* =====================================================
   SIN PRODUCTOS
===================================================== */

.mod-especificaciones_anaval .productos-equipo-vacio {

    width: 100%;

    padding: 35px 20px;

    text-align: center;

    color: var(--texto-muted);

    background: var(--fondo-card);

    border: 1px dashed var(--borde-claro);

    border-radius: 10px;

    box-sizing: border-box;

}

.mod-especificaciones_anaval .productos-equipo-vacio i {

    display: block;

    margin-bottom: 10px;

    font-size: 34px;

    color: var(--eap-20d6c7-t);

}

.mod-especificaciones_anaval .productos-equipo-vacio h6 {

    margin: 0;

    color: var(--eap-dbe4ec-t);

    font-weight: 600;

}

.mod-especificaciones_anaval .productos-equipo-vacio p {

    margin: 7px 0 0;

    font-size: 12px;

}

/* =====================================================
   RESPONSIVE
===================================================== */

@media(max-width:1200px){

    .mod-especificaciones_anaval .grid-productos-equipo {

        grid-template-columns:
            repeat(3, minmax(0, 1fr));

    }

}

@media(max-width:900px){

    .mod-especificaciones_anaval .grid-productos-equipo {

        grid-template-columns:
            repeat(2, minmax(0, 1fr));

    }

}

@media(max-width:600px){

    .mod-especificaciones_anaval .tipo-equipo-header {

        flex-direction: column;

        align-items: flex-start;

    }

    .mod-especificaciones_anaval .tipo-equipo-contador {

        width: 100%;

        justify-content: center;

    }

    .mod-especificaciones_anaval .grid-productos-equipo {

        grid-template-columns:
            1fr;

    }

    .mod-especificaciones_anaval .producto-equipo-foto {

        height: 220px;

    }

}

/* ---- ajax/form_agregar_equipo.php ---- */

/* =====================================================
   FORMULARIO
===================================================== */

.mod-especificaciones_anaval .form-equipos {

    width: 100%;

}

.mod-especificaciones_anaval .form-equipos-header {

    margin-bottom: 15px;

}

.mod-especificaciones_anaval .form-equipos-header h5 {

    margin: 0;

    color: var(--eap-2dd4bf-t);

    font-size: 17px;

    font-weight: 700;

}

.mod-especificaciones_anaval .form-equipos-header p {

    margin: 5px 0 0;

    color: var(--texto-muted);

    font-size: 12px;

}

/* =====================================================
   CONTEXTO
===================================================== */

.mod-especificaciones_anaval .form-equipos-contexto {

    display: flex;

    flex-wrap: wrap;

    gap: 8px;

    margin-bottom: 15px;

}

.mod-especificaciones_anaval .form-equipos-contexto span {

    padding: 6px 9px;

    background: var(--fondo-input);

    border: 1px solid var(--borde);

    border-radius: 6px;

    color: var(--texto-secundario);

    font-size: 11px;

}

.mod-especificaciones_anaval .form-equipos-contexto strong {

    color: var(--eap-20d6c7-t);

}

/* =====================================================
   BUSQUEDA
===================================================== */

.mod-especificaciones_anaval .buscar-equipos {

    margin-bottom: 12px;

}

.mod-especificaciones_anaval .buscar-equipos input {

    width: 100%;

    padding: 9px 12px;

    border-radius: 7px;

    border: 1px solid var(--borde-claro);

    background: var(--fondo-input);

    color: var(--eap-e5edf5-t);

    outline: none;

}

.mod-especificaciones_anaval .buscar-equipos input:focus {

    border-color: var(--turquesa);

}

/* =====================================================
   CONTADOR
===================================================== */

.mod-especificaciones_anaval .contador-equipos {

    margin-bottom: 12px;

    color: var(--texto-muted);

    font-size: 11px;

}

.mod-especificaciones_anaval .contador-equipos strong {

    color: var(--eap-20d6c7-t);

}

/* =====================================================
   GRID
===================================================== */

.mod-especificaciones_anaval .grid-equipos {

    display: grid;

    grid-template-columns:
        repeat(2, minmax(0, 1fr));

    gap: 10px;

    max-height: 430px;

    overflow-y: auto;

    padding-right: 4px;

}

.mod-especificaciones_anaval .grid-equipos::-webkit-scrollbar {

    width: 6px;

}

.mod-especificaciones_anaval .grid-equipos::-webkit-scrollbar-thumb {

    background: var(--borde-claro);

    border-radius: 10px;

}

/* =====================================================
   CARD
===================================================== */

.mod-especificaciones_anaval .equipo-selector {

    position: relative;

}

.mod-especificaciones_anaval .equipo-selector input {

    position: absolute;

    opacity: 0;

}

.mod-especificaciones_anaval .equipo-selector-card {

    display: block;

    padding: 12px;

    background: var(--fondo-input);

    border: 1px solid var(--borde);

    border-radius: 8px;

    cursor: pointer;

    transition:
        border-color .15s,
        background .15s,
        transform .15s;

}

.mod-especificaciones_anaval .equipo-selector-card:hover {

    border-color: var(--turquesa);

    transform: translateY(-1px);

}

.mod-especificaciones_anaval .equipo-selector input:checked
+ .equipo-selector-card {

    border-color: var(--turquesa);

    background: var(--eap-16272b-f);

}

.mod-especificaciones_anaval .equipo-selector-nombre {

    color: var(--eap-e5edf5-t);

    font-size: 13px;

    font-weight: 600;

}

.mod-especificaciones_anaval .equipo-selector-sistema {

    margin-top: 4px;

    color: var(--texto-muted);

    font-size: 10px;

}

.mod-especificaciones_anaval .equipo-selector-sistema strong {

    color: var(--eap-20d6c7-t);

}

.mod-especificaciones_anaval .equipo-selector-id {

    margin-top: 5px;

    color: var(--eap-607386-t);

    font-size: 9px;

}

.mod-especificaciones_anaval .equipo-selector-asignado {

    margin-top: 7px;

    color: var(--eap-20d6c7-t);

    font-size: 10px;

}

@media(max-width:700px){

    .mod-especificaciones_anaval .grid-equipos {

        grid-template-columns: 1fr;

    }

}

/* ---- ajax/ver_logs.php ---- */

/* ============================================================
   Módulo .mod-artefacto-naval #modalEspecificaciones — CSS ORIGINAL restaurado (v2.2)
   Colores: en tema verde valen exactamente los del original;
   en claro/oscuro usan las variables del tema (--ia-*).
   ============================================================ */
.mod-artefacto-naval #modalEspecificaciones {
    --fondo: var(--ia-bg);
    --fondo-card: var(--ia-panel);
    --fondo-card-2: var(--ia-panel2);
    --fondo-input: var(--ia-input-bg);
    --borde: var(--ia-line);
    --borde-claro: rgb(var(--ia-info-rgb) / .45);
    --texto: var(--ia-text);
    --texto-secundario: var(--ia-text);
    --texto-muted: var(--ia-muted);
    --azul: var(--ia-info);
    --azul-hover: var(--ia-info);
    --turquesa: var(--ia-accent);
    --turquesa-hover: var(--ia-accent-h);
    --verde: var(--ia-accent);
    --rojo: var(--ia-danger);
    --amarillo: var(--ia-warn);
    --eam-e8eef5-t: var(--ia-text);
    --eam-2dd4bf-t: var(--ia-accent);
    --eam-rgb-0-0-0: 0 0 0;
    --eam-ffffff-t: var(--ia-text);
    --eam-20d6c7-t: var(--ia-accent);
    --eam-dce5ed-t: var(--ia-text);
    --eam-202d3a-f: var(--ia-panel2);
    --eam-061014-t: var(--ia-muted);
    --eam-222b37-f: var(--ia-panel2);
    --eam-293746-f: var(--ia-panel2);
    --eam-2563eb-b: var(--ia-info);
    --eam-0f1419-f: var(--ia-panel);
    --eam-rgb-32-214-199: var(--ia-accent-rgb);
    --eam-7e8d9d-t: var(--ia-muted);
    --eam-354657-t: var(--ia-info);
    --eam-718096-t: var(--ia-muted);
    --eam-102c32-f: rgb(var(--ia-accent-rgb) / .14);
    --eam-1b655f-b: rgb(var(--ia-accent-rgb) / .45);
    --eam-526477-t: var(--ia-info);
    --eam-aebdca-t: var(--ia-text);
    --eam-1976d2-t: var(--ia-info);
    --eam-ffc107-t: var(--ia-warn);
    --eam-ff6b6b-t: var(--ia-danger);
    --eam-94a3b8-t: var(--ia-info);
    --eam-1a232e-f: var(--ia-panel2);
    --eam-202c38-f: var(--ia-panel2);
    --eam-e5edf5-t: var(--ia-text);
    --eam-101820-t: var(--ia-muted);
    --eam-dbe4ec-t: var(--ia-text);
    --eam-0f141a-t: var(--ia-muted);
    --eam-16272b-f: var(--ia-panel);
    --eam-607386-t: var(--ia-muted);
    --eam-sobre-061014: var(--ia-accent-d);
    --eam-sobre-ffffff: var(--ia-accent-d);
    --eam-sobre-101820: var(--ia-accent-d);
    --eam-sobre-0f141a: var(--ia-accent-d);
}
:root[data-tema="verde"] .mod-artefacto-naval #modalEspecificaciones,
:root:not([data-tema]) .mod-artefacto-naval #modalEspecificaciones {
    --fondo: #0f141a;
    --fondo-card: #151c25;
    --fondo-card-2: #1b2430;
    --fondo-input: #101820;
    --borde: #2b3948;
    --borde-claro: #354657;
    --texto: #f1f5f9;
    --texto-secundario: #b8c4d0;
    --texto-muted: #8796a6;
    --azul: #1976d2;
    --azul-hover: #2388ed;
    --turquesa: #20d6c7;
    --turquesa-hover: #16b7aa;
    --verde: #20c997;
    --rojo: #dc3545;
    --amarillo: #ffc107;
    --eam-e8eef5-t: #e8eef5;
    --eam-2dd4bf-t: #2dd4bf;
    --eam-rgb-0-0-0: 0 0 0;
    --eam-ffffff-t: #ffffff;
    --eam-20d6c7-t: #20d6c7;
    --eam-dce5ed-t: #dce5ed;
    --eam-202d3a-f: #202d3a;
    --eam-061014-t: #061014;
    --eam-222b37-f: #222b37;
    --eam-293746-f: #293746;
    --eam-2563eb-b: #2563eb;
    --eam-0f1419-f: #0f1419;
    --eam-rgb-32-214-199: 32 214 199;
    --eam-7e8d9d-t: #7e8d9d;
    --eam-354657-t: #354657;
    --eam-718096-t: #718096;
    --eam-102c32-f: #102c32;
    --eam-1b655f-b: #1b655f;
    --eam-526477-t: #526477;
    --eam-aebdca-t: #aebdca;
    --eam-1976d2-t: #1976d2;
    --eam-ffc107-t: #ffc107;
    --eam-ff6b6b-t: #ff6b6b;
    --eam-94a3b8-t: #94a3b8;
    --eam-1a232e-f: #1a232e;
    --eam-202c38-f: #202c38;
    --eam-e5edf5-t: #e5edf5;
    --eam-101820-t: #101820;
    --eam-dbe4ec-t: #dbe4ec;
    --eam-0f141a-t: #0f141a;
    --eam-16272b-f: #16272b;
    --eam-607386-t: #607386;
    --eam-sobre-061014: #061014;
    --eam-sobre-ffffff: #ffffff;
    --eam-sobre-101820: #101820;
    --eam-sobre-0f141a: #0f141a;
}
/* =========================================================
   EQUIPOS NAVALES
   TEMA OSCURO CORPORATIVO
========================================================= */

/* =========================================================
   BODY
========================================================= */

.mod-artefacto-naval #modalEspecificaciones{

    font-size:14px;

    background:var(--fondo);

    color:var(--eam-e8eef5-t);

    overflow-x:hidden;

}

/* =========================================================
   PANEL IZQUIERDO
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .panel-izq{

    background:var(--fondo-card);

    color:var(--eam-2dd4bf-t);

    height:92vh;

    overflow-y:auto;

    border-radius:10px;

    padding:15px;

    border:1px solid var(--borde);

    box-shadow:
        0 4px 15px rgb(var(--eam-rgb-0-0-0) / .35);

}

.mod-artefacto-naval #modalEspecificaciones .panel-izq h5{

    color:var(--eam-ffffff-t);

    font-weight:600;

}

.mod-artefacto-naval #modalEspecificaciones .panel-izq h5 i{

    color:var(--eam-20d6c7-t);

    margin-right:5px;

}

/* =========================================================
   PANEL DERECHO
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .panel-der{

    background:var(--fondo-card);

    height:92vh;

    overflow-y:auto;

    border-radius:10px;

    padding:15px;

    border:1px solid var(--borde);

    box-shadow:
        0 4px 15px rgb(var(--eam-rgb-0-0-0) / .35);

}

/* =========================================================
   ARTEFACTOS
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .item-artefacto{

    padding:10px;

    cursor:pointer;

    border-bottom:1px solid var(--borde-claro);

    transition:all .2s;

    border-radius:6px;

    color:var(--eam-dce5ed-t);

}

.mod-artefacto-naval #modalEspecificaciones .item-artefacto:hover{

    background:var(--eam-202d3a-f);

}

.mod-artefacto-naval #modalEspecificaciones .item-artefacto.activo{

    background:var(--turquesa);

    color:var(--eam-sobre-061014);

}

/* =========================================================
   CATEGORIAS
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .categoria{

    background:var(--fondo-card);

    border:1px solid var(--borde-claro);

    border-radius:8px;

    margin-bottom:10px;

    overflow:hidden;

    transition:all .2s;

}

.mod-artefacto-naval #modalEspecificaciones .categoria:hover{

    border-color:var(--turquesa);

}

.mod-artefacto-naval #modalEspecificaciones .categoria-item{

    padding:10px;

    cursor:pointer;

}

.mod-artefacto-naval #modalEspecificaciones .categoria.activa{

    border-left:4px solid var(--turquesa);

}

/* =========================================================
   CONTENIDO CATEGORIA
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .contenido-categoria{

    display:none;

    padding:8px;

    background:var(--eam-222b37-f);

}

/* =========================================================
   LINEAS
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .linea-expand{

    margin-bottom:8px;

    border-left:2px solid var(--turquesa);

    margin-left:8px;

    padding-left:10px;

}

/* =========================================================
   TITULO LINEA
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .titulo-linea{

    display:flex;

    justify-content:space-between;

    align-items:center;

    padding:8px 10px;

    background:var(--eam-222b37-f);

    border-radius:6px;

    cursor:pointer;

    transition:all .2s;

    user-select:none;

    color:var(--eam-ffffff-t);

}

.mod-artefacto-naval #modalEspecificaciones .titulo-linea:hover{

    background:var(--eam-293746-f);

}

.mod-artefacto-naval #modalEspecificaciones .titulo-linea::before{

    content:"▶";

    margin-right:8px;

    font-size:10px;

    transition:transform .2s;

}

.mod-artefacto-naval #modalEspecificaciones .titulo-linea.abierta::before{

    transform:rotate(90deg);

}

/* =========================================================
   CONTENIDO LINEA
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .contenido-linea{

    display:none;

    margin-top:6px;

    padding-left:10px;

    animation:fadeIn .2s ease;

    background:var(--eam-222b37-f);

}

/* =========================================================
   EQUIPOS
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .equipo{

    display:flex;

    justify-content:space-between;

    align-items:center;

    margin-top:5px;

    padding:8px;

    background:var(--eam-222b37-f);

    border-radius:6px;

    border:1px solid var(--borde-claro);

    transition:all .2s;

    cursor:pointer;

}

.mod-artefacto-naval #modalEspecificaciones .equipo:hover{

    background:var(--eam-293746-f);

    transform:translateX(2px);

}

.mod-artefacto-naval #modalEspecificaciones .equipo.activo{

    background:var(--eam-222b37-f);

    border-left:3px solid var(--eam-2563eb-b);

}

/* =========================================================
   DETALLE EQUIPO
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .detalle-equipo{

    display:none;

    margin-top:8px;

    padding:10px;

    background:var(--fondo-card);

    border-radius:8px;

    border:1px solid var(--borde-claro);

}

/* =========================================================
   BOTONES
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .btn-agregar-equipo,
.mod-artefacto-naval #modalEspecificaciones .btn-agregar-linea{

    margin-left:10px;

}

.mod-artefacto-naval #modalEspecificaciones .btn-danger{

    padding:2px 8px;

    font-size:12px;

    background-color:var(--eam-0f1419-f);

}

/* =========================================================
   BOTON DARK
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .btn-dark{

    color:var(--eam-20d6c7-t) !important;

    background:var(--eam-0f1419-f) !important;

    border:1px solid var(--turquesa) !important;

}

.mod-artefacto-naval #modalEspecificaciones .btn-dark:hover{

    color:var(--eam-sobre-ffffff) !important;

    background:var(--turquesa) !important;

    border-color:var(--turquesa) !important;

}

/* =========================================================
   BOTON PRIMARY
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .btn-primary{

    color:var(--eam-sobre-061014) !important;

    background:var(--turquesa) !important;

    border-color:var(--turquesa) !important;

}

.mod-artefacto-naval #modalEspecificaciones .btn-primary:hover{

    color:var(--eam-sobre-ffffff) !important;

    background:var(--turquesa-hover) !important;

    border-color:var(--turquesa-hover) !important;

}

/* =========================================================
   INPUTS
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .form-control{

    color:var(--eam-ffffff-t) !important;

    background:var(--fondo-input) !important;

    border:1px solid var(--borde-claro) !important;

    border-radius:6px;

}

.mod-artefacto-naval #modalEspecificaciones .form-control:focus{

    color:var(--eam-ffffff-t) !important;

    background:var(--fondo-input) !important;

    border-color:var(--turquesa) !important;

    box-shadow:
        0 0 0 .15rem rgb(var(--eam-rgb-32-214-199) / .18) !important;

}

.mod-artefacto-naval #modalEspecificaciones .form-control::placeholder{

    color:var(--eam-7e8d9d-t) !important;

}

/* =========================================================
   SELECT
========================================================= */

.mod-artefacto-naval #modalEspecificaciones select.form-control{

    background-color:var(--fondo-input) !important;

    color:var(--eam-ffffff-t) !important;

}

.mod-artefacto-naval #modalEspecificaciones select.form-control option{

    background:var(--fondo-card);

    color:var(--eam-ffffff-t);

}

/* =========================================================
   CARGANDO
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .cargando{

    text-align:center;

    padding:20px;

    color:var(--texto-muted);

}

.mod-artefacto-naval #modalEspecificaciones .cargando i{

    color:var(--eam-20d6c7-t);

    margin-right:5px;

}

/* =========================================================
   DETALLE INICIAL
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .detalle-inicial{

    min-height:300px;

    display:flex;

    flex-direction:column;

    align-items:center;

    justify-content:center;

    text-align:center;

    color:var(--texto-muted);

}

.mod-artefacto-naval #modalEspecificaciones .detalle-inicial > i{

    font-size:55px;

    color:var(--eam-354657-t);

    margin-bottom:15px;

}

.mod-artefacto-naval #modalEspecificaciones .detalle-inicial h5{

    color:var(--texto-secundario);

    margin-bottom:5px;

}

.mod-artefacto-naval #modalEspecificaciones .detalle-inicial p{

    color:var(--eam-718096-t);

    font-size:12px;

}

/* =========================================================
   ANIMACION
========================================================= */

@keyframes fadeIn{

    from{

        opacity:0;

        transform:translateY(-3px);

    }

    to{

        opacity:1;

        transform:translateY(0);

    }

}

/* =========================================================
   SCROLL
========================================================= */

.mod-artefacto-naval #modalEspecificaciones ::-webkit-scrollbar{

    width:8px;

}

.mod-artefacto-naval #modalEspecificaciones ::-webkit-scrollbar-track{

    background:var(--fondo-input);

}

.mod-artefacto-naval #modalEspecificaciones ::-webkit-scrollbar-thumb{

    background:var(--borde-claro);

    border-radius:10px;

}

.mod-artefacto-naval #modalEspecificaciones ::-webkit-scrollbar-thumb:hover{

    background:var(--turquesa);

}

/* =========================================================
   DETALLE TIPO EQUIPO
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .detalle-tipo-equipo{

    width:100%;

}

/* =========================================================
   CABECERA TIPO EQUIPO
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .tipo-equipo-header{

    display:flex;

    justify-content:space-between;

    align-items:center;

    gap:15px;

    padding:10px 14px;

    margin-bottom:15px;

    background:var(--fondo-card-2);

    border:1px solid var(--borde);

    border-left:3px solid var(--turquesa);

    border-radius:8px;

}

.mod-artefacto-naval #modalEspecificaciones .tipo-equipo-titulo{

    color:var(--eam-ffffff-t);

    font-size:17px;

    font-weight:700;

    line-height:1.3;

}

.mod-artefacto-naval #modalEspecificaciones .tipo-equipo-titulo i{

    color:var(--eam-20d6c7-t);

    margin-right:7px;

}

.mod-artefacto-naval #modalEspecificaciones .tipo-equipo-sistema{

    color:var(--texto-muted);

    font-size:11px;

    margin-top:3px;

}

.mod-artefacto-naval #modalEspecificaciones .tipo-equipo-sistema strong{

    color:var(--texto-secundario);

}

.mod-artefacto-naval #modalEspecificaciones .tipo-equipo-contador{

    flex-shrink:0;

    background:var(--eam-102c32-f);

    border:1px solid var(--eam-1b655f-b);

    color:var(--eam-20d6c7-t);

    border-radius:15px;

    padding:5px 10px;

    font-size:11px;

    font-weight:600;

}

/* =========================================================
   GRID PRODUCTOS
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .grid-productos-equipo{

    display:grid;

    grid-template-columns:
        repeat(4, minmax(0, 1fr));

    gap:15px;

}

/* =========================================================
   TARJETA PRODUCTO
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-card{

    min-width:0;

    background:var(--fondo-card);

    border:1px solid var(--borde);

    border-radius:12px;

    overflow:hidden;

    transition:
        transform .2s ease,
        border-color .2s ease,
        box-shadow .2s ease;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-card:hover{

    transform:translateY(-3px);

    border-color:var(--turquesa);

    box-shadow:
        0 8px 22px rgb(var(--eam-rgb-0-0-0) / .35);

}

/* =========================================================
   FOTO
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-foto{

    width:100%;

    height:190px;

    background:var(--fondo-input);

    border-bottom:1px solid var(--borde);

    display:flex;

    align-items:center;

    justify-content:center;

    overflow:hidden;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-foto img{

    width:100%;

    height:190px;

    object-fit:contain;

    padding:10px;

}

/* =========================================================
   SIN FOTO
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-sin-foto{

    width:100%;

    height:190px;

    display:flex;

    align-items:center;

    justify-content:center;

    flex-direction:column;

    gap:5px;

    color:var(--eam-526477-t);

    background:var(--fondo-input);

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-sin-foto i{

    font-size:42px;

    color:var(--eam-354657-t);

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-sin-foto span{

    font-size:10px;

    color:var(--eam-718096-t);

}

/* =========================================================
   CUERPO PRODUCTO
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-body{

    padding:13px;

}

/* =========================================================
   NOMBRE
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-nombre{

    color:var(--eam-ffffff-t);

    font-size:15px;

    font-weight:700;

    line-height:1.3;

    min-height:39px;

    margin-bottom:5px;

    overflow:hidden;

}

/* =========================================================
   MODELO
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-modelo{

    color:var(--eam-aebdca-t);

    font-size:11px;

    margin-bottom:4px;

    white-space:nowrap;

    overflow:hidden;

    text-overflow:ellipsis;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-modelo i{

    color:var(--eam-20d6c7-t);

    margin-right:4px;

}

/* =========================================================
   SERIE
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-serie{

    color:var(--texto-muted);

    font-size:10px;

    margin-bottom:10px;

    white-space:nowrap;

    overflow:hidden;

    text-overflow:ellipsis;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-serie i{

    color:var(--eam-1976d2-t);

    margin-right:4px;

}

/* =========================================================
   INFORMACION
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-info{

    border-top:1px solid var(--eam-293746-f);

    border-bottom:1px solid var(--eam-293746-f);

    padding:8px 0;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-info-item{

    display:flex;

    justify-content:space-between;

    align-items:center;

    gap:8px;

    padding:3px 0;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-info-item span{

    color:var(--eam-718096-t);

    font-size:10px;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-info-item span i{

    color:var(--eam-20d6c7-t);

    width:15px;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-info-item strong{

    color:var(--eam-dce5ed-t);

    font-size:10px;

    font-weight:500;

    text-align:right;

    overflow:hidden;

    text-overflow:ellipsis;

    white-space:nowrap;

    max-width:60%;

}

/* =========================================================
   TIPO
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-tipo{

    margin-top:10px;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-tipo .badge{

    font-size:10px;

    padding:4px 8px;

    border-radius:15px;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-tipo .badge-primary{

    background:var(--azul) !important;

    color:var(--eam-ffffff-t) !important;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-tipo .badge-success{

    background:var(--turquesa) !important;

    color:var(--eam-sobre-061014) !important;

}

/* =========================================================
   FOOTER
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-footer{

    display:flex;

    justify-content:space-between;

    align-items:center;

    margin-top:10px;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-footer small{

    color:var(--eam-718096-t) !important;

    font-size:9px;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-stock{

    font-size:16px;

    font-weight:700;

    color:var(--eam-20d6c7-t);

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-stock.bajo{

    color: #ffffff;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-stock.agotado{

    color:var(--eam-ff6b6b-t);

}

/* =========================================================
   PRODUCTOS VACIOS
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .productos-equipo-vacio{

    padding:45px 20px;

    text-align:center;

    color:var(--eam-718096-t);

    background:var(--fondo-input);

    border:1px dashed var(--borde-claro);

    border-radius:10px;

}

.mod-artefacto-naval #modalEspecificaciones .productos-equipo-vacio i{

    display:block;

    font-size:42px;

    color:var(--eam-354657-t);

    margin-bottom:10px;

}

.mod-artefacto-naval #modalEspecificaciones .productos-equipo-vacio h6{

    color:var(--texto-secundario);

    margin-bottom:5px;

}

.mod-artefacto-naval #modalEspecificaciones .productos-equipo-vacio p{

    font-size:11px;

    margin:0;

    color:var(--eam-718096-t);

}

/* =========================================================
   CARGANDO PRODUCTOS
========================================================= */

.mod-artefacto-naval #modalEspecificaciones .productos-equipo-cargando{

    padding:35px;

    text-align:center;

    color:var(--texto-muted);

}

.mod-artefacto-naval #modalEspecificaciones .productos-equipo-cargando i{

    color:var(--eam-20d6c7-t);

    margin-right:5px;

}

/* =========================================================
   RESPONSIVE 1200
========================================================= */

@media(max-width:1200px){

    .mod-artefacto-naval #modalEspecificaciones .grid-productos-equipo{

        grid-template-columns:
            repeat(3, minmax(0, 1fr));

    }

}

/* =========================================================
   RESPONSIVE 900
========================================================= */

@media(max-width:900px){

    .mod-artefacto-naval #modalEspecificaciones .grid-productos-equipo{

        grid-template-columns:
            repeat(2, minmax(0, 1fr));

    }

}

/* =========================================================
   MOBILE
========================================================= */

@media(max-width:768px){

    .mod-artefacto-naval #modalEspecificaciones{

        font-size:13px;

    }

    .mod-artefacto-naval #modalEspecificaciones .container-fluid{

        padding:5px;

    }

    .mod-artefacto-naval #modalEspecificaciones .panel-izq{

        height:auto;

        margin-bottom:10px;

        padding:10px;

    }

    .mod-artefacto-naval #modalEspecificaciones .panel-der{

        height:auto;

        min-height:85vh;

        padding:10px;

    }

    .mod-artefacto-naval #modalEspecificaciones .categoria-item{

        padding:8px;

    }

    .mod-artefacto-naval #modalEspecificaciones .titulo-linea{

        padding:7px;

        font-size:13px;

    }

    .mod-artefacto-naval #modalEspecificaciones .equipo{

        flex-direction:column;

        align-items:flex-start;

        gap:6px;

        font-size:13px;

    }

    .mod-artefacto-naval #modalEspecificaciones .btn-danger{

        width:100%;

    }

    .mod-artefacto-naval #modalEspecificaciones .producto-equipo-foto,
    .mod-artefacto-naval #modalEspecificaciones .producto-equipo-foto img,
    .mod-artefacto-naval #modalEspecificaciones .producto-equipo-sin-foto{

        height:180px;

    }

    .mod-artefacto-naval #modalEspecificaciones .tipo-equipo-header{

        align-items:flex-start;

    }

}

/* =========================================================
   MOBILE PEQUEÑO
========================================================= */

@media(max-width:576px){

    .mod-artefacto-naval #modalEspecificaciones .grid-productos-equipo{

        grid-template-columns:1fr;

    }

    .mod-artefacto-naval #modalEspecificaciones .producto-equipo-foto,
    .mod-artefacto-naval #modalEspecificaciones .producto-equipo-foto img,
    .mod-artefacto-naval #modalEspecificaciones .producto-equipo-sin-foto{

        height:210px;

    }

    .mod-artefacto-naval #modalEspecificaciones .tipo-equipo-header{

        flex-direction:column;

    }

    .mod-artefacto-naval #modalEspecificaciones .tipo-equipo-titulo{

        font-size:15px;

    }

    .mod-artefacto-naval #modalEspecificaciones .producto-equipo-nombre{

        font-size:16px;

    }

    .mod-artefacto-naval #modalEspecificaciones .btn-danger{

        width:100%;

    }

}
.mod-artefacto-naval #modalEspecificaciones .equipo-nombre,
.mod-artefacto-naval #modalEspecificaciones .equipo-sistema{
    display:block;
}

/* =====================================================
   NOMBRE Y SISTEMA
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .equipo-nombre,
.mod-artefacto-naval #modalEspecificaciones .equipo-sistema{
    display:block;
}

/* =====================================================
   CUANDO ESTÁ ABIERTO
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .equipo.abierto .equipo-nombre,
.mod-artefacto-naval #modalEspecificaciones .equipo.abierto .equipo-sistema{
    display:none;
}

/* =====================================================
   FLECHA
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .flecha-equipo{
    display:inline-block;
    width:20px;
    transition:transform .2s;
    color:var(--eam-94a3b8-t);
}

.mod-artefacto-naval #modalEspecificaciones .equipo.abierto .flecha-equipo{
    transform:rotate(90deg);
    color:var(--eam-2dd4bf-t);
}
.mod-artefacto-naval #modalEspecificaciones #contenedor-especificaciones{
    padding:10px;
}

/* =========================================
   LINEAS
========================================= */

.mod-artefacto-naval #modalEspecificaciones #contenedor-especificaciones .linea-especificacion{
    margin-bottom:10px;
}

.mod-artefacto-naval #modalEspecificaciones #contenedor-especificaciones .contenido-categoria{
    display:none;
}

.mod-artefacto-naval #modalEspecificaciones #contenedor-especificaciones button{
    cursor:pointer;
}

/* =========================================
   MODAL CUSTOM
========================================= */

.mod-artefacto-naval #modalEspecificaciones #modalEquipo{

    display:none;

    position:fixed;

    top:0;
    left:0;

    width:100%;
    height:100%;

    background:rgb(var(--eam-rgb-0-0-0) / .5);

    z-index:99999;

    overflow:auto;
}

.mod-artefacto-naval #modalEspecificaciones .modal-equipo-dialog{

    width:96%;

    max-width:1500px;

    margin:25px auto;

    padding:10px;
}

.mod-artefacto-naval #modalEspecificaciones .modal-equipo-content{

    background:var(--eam-222b37-f);

    border-radius:8px;

    overflow:hidden;

    max-height:calc(100vh - 50px);

    display:flex;

    flex-direction:column;
}

.mod-artefacto-naval #modalEspecificaciones .modal-equipo-header{

    display:flex;

    justify-content:space-between;

    align-items:center;

    padding:15px 20px;

    background:var(--eam-222b37-f);

    color:var(--eam-2dd4bf-t);

    border-bottom:1px solid var(--eam-2dd4bf-t);
}

.mod-artefacto-naval #modalEspecificaciones .modal-equipo-header h5{
    margin:0;
}

.mod-artefacto-naval #modalEspecificaciones .modal-equipo-header button{

    background:none;

    border:none;

    color:var(--eam-2dd4bf-t);

    font-size:28px;

    line-height:1;
}

.mod-artefacto-naval #modalEspecificaciones .modal-equipo-header button:hover{
    color:var(--eam-ffffff-t);
}

.mod-artefacto-naval #modalEspecificaciones .modal-equipo-body{

    padding:20px;

    overflow-y:auto;
}

@media(max-width:768px){

    .mod-artefacto-naval #modalEspecificaciones .modal-equipo-dialog{

        width:calc(100% - 10px);

        margin:5px auto;
    }

}

/* ---- ajax/categorias_linea.php ---- */

/* =====================================================
   CATEGORIAS
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .categorias-linea {

    width: 100%;

}

/* =====================================================
   CATEGORIA
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .categoria {

    margin-bottom: 12px;

    border: 1px solid var(--borde);

    border-radius: 10px;

    overflow: hidden;

    background: var(--fondo-card);

}

/* =====================================================
   HEADER CATEGORIA
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .categoria-header {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 15px;

    padding: 12px 15px;

    cursor: pointer;

    background: var(--eam-1a232e-f);

    transition:
        background .15s,
        border-color .15s;

}

.mod-artefacto-naval #modalEspecificaciones .categoria-header:hover {

    background: var(--eam-202c38-f);

}

.mod-artefacto-naval #modalEspecificaciones .categoria-header-info {

    min-width: 0;

    display: flex;

    align-items: center;

    gap: 10px;

}

.mod-artefacto-naval #modalEspecificaciones .categoria-header-info i {

    color: var(--eam-20d6c7-t);

}

.mod-artefacto-naval #modalEspecificaciones .categoria-nombre {

    color: var(--eam-e5edf5-t);

    font-size: 14px;

    font-weight: 600;

}

.mod-artefacto-naval #modalEspecificaciones .categoria-tipo {

    color: var(--texto-muted);

    font-size: 11px;

}

.mod-artefacto-naval #modalEspecificaciones .categoria-header-acciones {

    display: flex;

    align-items: center;

    gap: 6px;

}

/* =====================================================
   BOTON
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .btn-agregar-equipo {

    border: 1px solid var(--turquesa);

    background: transparent;

    color: var(--eam-20d6c7-t);

    border-radius: 6px;

    padding: 5px 9px;

    font-size: 11px;

    cursor: pointer;

}

.mod-artefacto-naval #modalEspecificaciones .btn-agregar-equipo:hover {

    background: var(--turquesa);

    color: var(--eam-sobre-101820);

}

/* =====================================================
   EQUIPOS
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .equipos-categoria {

    display: none;

    padding: 12px;

}

.mod-artefacto-naval #modalEspecificaciones .equipo {

    margin-bottom: 8px;

    border: 1px solid var(--borde);

    border-radius: 8px;

    background: var(--fondo-input);

    overflow: hidden;

    cursor: pointer;

}

.mod-artefacto-naval #modalEspecificaciones .equipo:last-child {

    margin-bottom: 0;

}

.mod-artefacto-naval #modalEspecificaciones .equipo-info {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 15px;

    padding: 10px 12px;

}

.mod-artefacto-naval #modalEspecificaciones .equipo-info-principal {

    min-width: 0;

}

.mod-artefacto-naval #modalEspecificaciones .equipo-nombre {

    color: var(--eam-dbe4ec-t);

    font-size: 13px;

    font-weight: 600;

}

.mod-artefacto-naval #modalEspecificaciones .equipo-sistema {

    margin-top: 3px;

    color: var(--texto-muted);

    font-size: 10px;

}

.mod-artefacto-naval #modalEspecificaciones .equipo-sistema strong {

    color: var(--eam-20d6c7-t);

}

.mod-artefacto-naval #modalEspecificaciones .detalle-equipo {

    display: none;

    padding: 12px;

    border-top: 1px solid var(--borde);

}

/* ---- ajax/detalle_tipo_equipo.php ---- */

/* =====================================================
   CONTENEDOR
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .detalle-tipo-equipo {

    width: 100%;

    box-sizing: border-box;

}

/* =====================================================
   CABECERA
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .tipo-equipo-header {

    width: 100%;

    display: flex;

    justify-content: space-between;

    align-items: center;

    gap: 20px;

    padding: 12px 15px;

    margin-bottom: 18px;

    background: var(--fondo-card);

    border: 1px solid var(--borde);

    border-radius: 10px;

    box-sizing: border-box;

}

.mod-artefacto-naval #modalEspecificaciones .tipo-equipo-header-info {

    min-width: 0;

}

.mod-artefacto-naval #modalEspecificaciones .tipo-equipo-titulo {

    color: var(--eam-2dd4bf-t);

    font-size: 17px;

    font-weight: 700;

}

.mod-artefacto-naval #modalEspecificaciones .tipo-equipo-titulo i {

    margin-right: 7px;

}

.mod-artefacto-naval #modalEspecificaciones .tipo-equipo-sistema {

    margin-top: 5px;

    color: var(--texto-muted);

    font-size: 12px;

}

.mod-artefacto-naval #modalEspecificaciones .tipo-equipo-sistema strong {

    color: var(--texto-secundario);

}

.mod-artefacto-naval #modalEspecificaciones .tipo-equipo-contador {

    flex-shrink: 0;

    display: flex;

    align-items: center;

    gap: 5px;

    padding: 7px 12px;

    color: var(--eam-20d6c7-t);

    background: var(--fondo-input);

    border: 1px solid var(--borde);

    border-radius: 8px;

    font-size: 12px;

}

.mod-artefacto-naval #modalEspecificaciones .tipo-equipo-contador strong {

    font-size: 16px;

}

/* =====================================================
   GRID PRODUCTOS
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .grid-productos-equipo {

    width: 100%;

    display: grid;

    grid-template-columns:
        repeat(4, minmax(0, 1fr));

    gap: 18px;

}

/* =====================================================
   TARJETA
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-card {

    width: 100%;

    min-width: 0;

    overflow: hidden;

    background: var(--fondo-card);

    border: 1px solid var(--borde);

    border-radius: 12px;

    transition:
        transform .18s ease,
        border-color .18s ease,
        box-shadow .18s ease;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-card:hover {

    transform: translateY(-3px);

    border-color: var(--turquesa);

    box-shadow:
        0 8px 22px rgb(var(--eam-rgb-0-0-0) / .25);

}

/* =====================================================
   FOTO
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-foto {

    width: 100%;

    height: 210px;

    background: var(--fondo-input);

    display: flex;

    align-items: center;

    justify-content: center;

    overflow: hidden;

    border-bottom: 1px solid var(--borde);

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-foto img {

    width: 100%;

    height: 100%;

    object-fit: contain;

    padding: 10px;

    box-sizing: border-box;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-sin-foto {

    width: 100%;

    height: 100%;

    display: flex;

    flex-direction: column;

    align-items: center;

    justify-content: center;

    gap: 8px;

    color: var(--texto-muted);

    font-size: 12px;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-sin-foto i {

    font-size: 40px;

    opacity: .55;

}

/* =====================================================
   CUERPO
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-body {

    padding: 15px;

}

/* =====================================================
   NOMBRE
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-nombre {

    color: var(--texto);

    font-size: 16px;

    font-weight: 700;

    line-height: 1.3;

    min-height: 42px;

    overflow: hidden;

    display: -webkit-box;

    -webkit-line-clamp: 2;

    -webkit-box-orient: vertical;

}

/* =====================================================
   MODELO
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-modelo {

    display: flex;

    align-items: center;

    gap: 7px;

    margin-top: 9px;

    color: var(--texto-secundario);

    font-size: 13px;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-modelo i {

    color: var(--eam-20d6c7-t);

    width: 15px;

}

/* =====================================================
   SERIE
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-serie {

    display: flex;

    align-items: center;

    gap: 7px;

    margin-top: 7px;

    color: var(--texto-muted);

    font-size: 12px;

    overflow: hidden;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-serie i {

    color: var(--eam-20d6c7-t);

    width: 15px;

    flex-shrink: 0;

}

/* =====================================================
   INFORMACIÓN
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-info {

    margin-top: 14px;

    padding-top: 11px;

    border-top: 1px solid var(--borde);

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-info-item {

    display: flex;

    justify-content: space-between;

    gap: 10px;

    padding: 4px 0;

    font-size: 11px;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-info-item span {

    color: var(--texto-muted);

    white-space: nowrap;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-info-item span i {

    color: var(--eam-20d6c7-t);

    width: 14px;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-info-item strong {

    color: var(--eam-dbe4ec-t);

    text-align: right;

    overflow: hidden;

    text-overflow: ellipsis;

    white-space: nowrap;

}

/* =====================================================
   TIPO
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-tipo {

    margin-top: 12px;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-tipo .badge {

    font-size: 10px;

    padding: 5px 8px;

    letter-spacing: .3px;

}

/* =====================================================
   FOOTER
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-footer {

    display: flex;

    align-items: center;

    justify-content: space-between;

    margin-top: 15px;

    padding-top: 11px;

    border-top: 1px solid var(--borde);

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-footer small {

    color: var(--texto-muted);

    font-size: 10px;

}

/* =====================================================
   STOCK
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-stock {

    min-width: 32px;

    height: 32px;

    padding: 0 8px;

    display: flex;

    align-items: center;

    justify-content: center;

    border-radius: 7px;

    background: var(--verde);

    color: #ffffff;

    font-size: 14px;

    font-weight: 700;

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-stock.bajo {

    background: var(--amarillo);

}

.mod-artefacto-naval #modalEspecificaciones .producto-equipo-stock.agotado {

    background: var(--rojo);

    color: var(--eam-sobre-ffffff);

}

/* =====================================================
   SIN PRODUCTOS
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .productos-equipo-vacio {

    width: 100%;

    padding: 35px 20px;

    text-align: center;

    color: var(--texto-muted);

    background: var(--fondo-card);

    border: 1px dashed var(--borde-claro);

    border-radius: 10px;

    box-sizing: border-box;

}

.mod-artefacto-naval #modalEspecificaciones .productos-equipo-vacio i {

    display: block;

    margin-bottom: 10px;

    font-size: 34px;

    color: var(--eam-20d6c7-t);

}

.mod-artefacto-naval #modalEspecificaciones .productos-equipo-vacio h6 {

    margin: 0;

    color: var(--eam-dbe4ec-t);

    font-weight: 600;

}

.mod-artefacto-naval #modalEspecificaciones .productos-equipo-vacio p {

    margin: 7px 0 0;

    font-size: 12px;

}

/* =====================================================
   RESPONSIVE
===================================================== */

@media(max-width:1200px){

    .mod-artefacto-naval #modalEspecificaciones .grid-productos-equipo {

        grid-template-columns:
            repeat(3, minmax(0, 1fr));

    }

}

@media(max-width:900px){

    .mod-artefacto-naval #modalEspecificaciones .grid-productos-equipo {

        grid-template-columns:
            repeat(2, minmax(0, 1fr));

    }

}

@media(max-width:600px){

    .mod-artefacto-naval #modalEspecificaciones .tipo-equipo-header {

        flex-direction: column;

        align-items: flex-start;

    }

    .mod-artefacto-naval #modalEspecificaciones .tipo-equipo-contador {

        width: 100%;

        justify-content: center;

    }

    .mod-artefacto-naval #modalEspecificaciones .grid-productos-equipo {

        grid-template-columns:
            1fr;

    }

    .mod-artefacto-naval #modalEspecificaciones .producto-equipo-foto {

        height: 220px;

    }

}

/* ---- ajax/form_agregar_equipo.php ---- */

/* =====================================================
   FORMULARIO
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .form-equipos {

    width: 100%;

}

.mod-artefacto-naval #modalEspecificaciones .form-equipos-header {

    margin-bottom: 15px;

}

.mod-artefacto-naval #modalEspecificaciones .form-equipos-header h5 {

    margin: 0;

    color: var(--eam-2dd4bf-t);

    font-size: 17px;

    font-weight: 700;

}

.mod-artefacto-naval #modalEspecificaciones .form-equipos-header p {

    margin: 5px 0 0;

    color: var(--texto-muted);

    font-size: 12px;

}

/* =====================================================
   CONTEXTO
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .form-equipos-contexto {

    display: flex;

    flex-wrap: wrap;

    gap: 8px;

    margin-bottom: 15px;

}

.mod-artefacto-naval #modalEspecificaciones .form-equipos-contexto span {

    padding: 6px 9px;

    background: var(--fondo-input);

    border: 1px solid var(--borde);

    border-radius: 6px;

    color: var(--texto-secundario);

    font-size: 11px;

}

.mod-artefacto-naval #modalEspecificaciones .form-equipos-contexto strong {

    color: var(--eam-20d6c7-t);

}

/* =====================================================
   BUSQUEDA
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .buscar-equipos {

    margin-bottom: 12px;

}

.mod-artefacto-naval #modalEspecificaciones .buscar-equipos input {

    width: 100%;

    padding: 9px 12px;

    border-radius: 7px;

    border: 1px solid var(--borde-claro);

    background: var(--fondo-input);

    color: var(--eam-e5edf5-t);

    outline: none;

}

.mod-artefacto-naval #modalEspecificaciones .buscar-equipos input:focus {

    border-color: var(--turquesa);

}

/* =====================================================
   CONTADOR
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .contador-equipos {

    margin-bottom: 12px;

    color: var(--texto-muted);

    font-size: 11px;

}

.mod-artefacto-naval #modalEspecificaciones .contador-equipos strong {

    color: var(--eam-20d6c7-t);

}

/* =====================================================
   GRID
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .grid-equipos {

    display: grid;

    grid-template-columns:
        repeat(2, minmax(0, 1fr));

    gap: 10px;

    max-height: 430px;

    overflow-y: auto;

    padding-right: 4px;

}

.mod-artefacto-naval #modalEspecificaciones .grid-equipos::-webkit-scrollbar {

    width: 6px;

}

.mod-artefacto-naval #modalEspecificaciones .grid-equipos::-webkit-scrollbar-thumb {

    background: var(--borde-claro);

    border-radius: 10px;

}

/* =====================================================
   CARD
===================================================== */

.mod-artefacto-naval #modalEspecificaciones .equipo-selector {

    position: relative;

}

.mod-artefacto-naval #modalEspecificaciones .equipo-selector input {

    position: absolute;

    opacity: 0;

}

.mod-artefacto-naval #modalEspecificaciones .equipo-selector-card {

    display: block;

    padding: 12px;

    background: var(--fondo-input);

    border: 1px solid var(--borde);

    border-radius: 8px;

    cursor: pointer;

    transition:
        border-color .15s,
        background .15s,
        transform .15s;

}

.mod-artefacto-naval #modalEspecificaciones .equipo-selector-card:hover {

    border-color: var(--turquesa);

    transform: translateY(-1px);

}

.mod-artefacto-naval #modalEspecificaciones .equipo-selector input:checked
+ .equipo-selector-card {

    border-color: var(--turquesa);

    background: var(--eam-16272b-f);

}

.mod-artefacto-naval #modalEspecificaciones .equipo-selector-nombre {

    color: var(--eam-e5edf5-t);

    font-size: 13px;

    font-weight: 600;

}

.mod-artefacto-naval #modalEspecificaciones .equipo-selector-sistema {

    margin-top: 4px;

    color: var(--texto-muted);

    font-size: 10px;

}

.mod-artefacto-naval #modalEspecificaciones .equipo-selector-sistema strong {

    color: var(--eam-20d6c7-t);

}

.mod-artefacto-naval #modalEspecificaciones .equipo-selector-id {

    margin-top: 5px;

    color: var(--eam-607386-t);

    font-size: 9px;

}

.mod-artefacto-naval #modalEspecificaciones .equipo-selector-asignado {

    margin-top: 7px;

    color: var(--eam-20d6c7-t);

    font-size: 10px;

}

@media(max-width:700px){

    .mod-artefacto-naval #modalEspecificaciones .grid-equipos {

        grid-template-columns: 1fr;

    }

}

/* ---- ajax/ver_logs.php ---- */

/* ---- Ajustes a mano v2.4 ---- */
/* el título global de los modales (_90) no debe pisar el del modal propio de especificaciones */
.mod-artefacto-naval #modalEspecificaciones .modal-equipo-header h5,
.mod-especificaciones_anaval #modalEquipo .modal-title { color: inherit; font-size: 1.25rem; font-weight: 500; }
/* botones nuevos para quitar categoría / tipo de equipo junto a "+ Equipo" */
:is(.mod-artefacto-naval #modalEspecificaciones, .mod-especificaciones_anaval) .categoria-header-acciones { display: flex; gap: 6px; align-items: center; }
:is(.mod-artefacto-naval #modalEspecificaciones, .mod-especificaciones_anaval) .equipo { position: relative; }
:is(.mod-artefacto-naval #modalEspecificaciones, .mod-especificaciones_anaval) .equipo > .btn-eliminar-equipo { position: absolute; top: 8px; right: 8px; }

/* =============================================================================
   v2.5 — Ventana "Agregar Equipo / tipos de equipo" (Especificaciones):
   en pantallas de notebook los botones Cancelar/Guardar quedaban fuera de la
   ventana. La lista se ajusta a la altura disponible y los botones quedan
   siempre visibles al pie.
   ============================================================================= */
:is(.mod-artefacto-naval #modalEspecificaciones, .mod-especificaciones_anaval) #modalEquipo .grid-equipos {
    max-height: min(430px, calc(100vh - 360px)) !important;
    min-height: 140px;
}
:is(.mod-artefacto-naval #modalEspecificaciones, .mod-especificaciones_anaval) #modalEquipo .form-equipos > .text-right:last-child {
    position: sticky;
    bottom: -20px;
    z-index: 2;
    margin: 12px -20px -20px !important;
    padding: 10px 20px;
    background: var(--ia-panel2, #222b37);
    border-top: 1px solid var(--ia-line, #2a3441);
}
.mod-artefacto-naval #modalEspecificaciones .modal-equipo-dialog { max-width: min(1500px, calc(100vw - 20px)); box-sizing: border-box; }
/* =====================================================================
   v2.4 — Equipamiento Naval (c_lineas/c_equipos.php): style.css + home.css ORIGINALES
   acotados a .mod-c_lineas y con colores del tema. Se omiten las reglas globales del
   original que no se veían (fondo claro de body, fuente Ubuntu por internet, reset *).
   ===================================================================== */
.mod-c_lineas .container_B .container { box-shadow: 4px 4px 16px rgb(var(--ia-overlay-rgb) / .14); }
.mod-c_lineas .top { margin-top: 80px; }
.mod-c_lineas #lista-equipos h1 { margin: 0; }
.mod-c_lineas #lista-equipos img { max-width: 100%; height: auto; }
.mod-c_lineas .drop__name { font-size: 1rem; color: var(--ia-text); font-weight: 500; }
.mod-c_lineas .drop__profession { font-size: .813rem; color: var(--ia-muted); }
.mod-c_lineas .sortable-chosen { box-shadow: 8px 8px 32px rgb(var(--ia-overlay-rgb) / .14); }
.mod-c_lineas .sortable-drag { opacity: 0; }
.mod-c_lineas .ui-sortable-helper { opacity: .85; }

/* tarjeta de puesto (".class" del original) */
.mod-c_lineas #lista-equipos .class {
    border: 1px solid var(--ia-line); border-radius: 5px; text-align: center;
    width: 150px; margin: 10px; padding: 10px; float: left; cursor: pointer; position: relative;
    background: var(--ia-panel);
}
.mod-c_lineas #lista-equipos .class:hover { box-shadow: 0 0 10px rgb(0 0 0 / .6); border-color: rgb(var(--ia-accent-rgb) / .5); }
.mod-c_lineas #lista-equipos .row.sortable > div { flex: 0 0 auto; max-width: none; width: auto; padding: 0; }
.mod-c_lineas #lista-equipos .class h1.drop__name { font-size: 1rem; line-height: 1.25; }
.mod-c_lineas #lista-equipos .class a { color: var(--ia-accent); }
.mod-c_lineas .delete-class-warning { display: none !important; }
.mod-c_lineas #lista-equipos .class:hover .delete-class-warning {
    display: inline-flex !important; position: absolute; top: -15px; right: -15px; border-radius: 50% !important;
    width: 28px; height: 28px; padding: 0; align-items: center; justify-content: center;
}
.mod-c_lineas #lista-equipos #btnNuevo { font-size: 80px; padding: 10px; color: var(--ia-text); line-height: 1; }
.mod-c_lineas #lista-equipos::after { content: ""; display: block; clear: both; }

/* modal original: etiquetas centradas y campos con margen */
.mod-c_lineas .modal-content { text-align: center; padding-bottom: 20px; }
.mod-c_lineas .modal-content li { margin: 5px; }
.mod-c_lineas .modal-content .modal-body input,
.mod-c_lineas .modal-content .modal-body select { margin: 20px 0; width: 92%; }
.mod-c_lineas .modal-content .modal-body .input-group input { width: auto; }
/* ============================================================================
   §60 — MÓDULOS DE ÓRDENES / SERVICIOS / INFORMES / IA (agente modulos-ordenes)
   Reglas comunes a esos módulos. El CSS propio de cada grupo está en
   _61…_69. Todo acotado con .mod-<carpeta>.
   ============================================================================ */

/* Alias de variables que usan las reglas antiguas de .ia-tema (.form-control,
   .card, tablas…): sin esto los campos quedan sin borde o con colores del
   tema verde en los temas claro y oscuro. */
:is(.mod-inicio, .mod-home, .mod-ordenes, .mod-ordenes2, .mod-ordenes_masivas, .mod-ordenes_masivas_bajas,
    .mod-ordenes_masivas_pendientes, .mod-servicios, .mod-servicios2, .mod-consultor, .mod-contador_ot-tecnicos,
    .mod-equipos_cumplidos, .mod-historico_centros, .mod-informes, .mod-meteorologia, .mod-ia_acantilada,
    .mod-img_servicios, .mod-cargar_img_servicio, .mod-doc_tecnicos, .mod-cargar_doc_tecnicos, .mod-gestor_form,
    .mod-revision_puertos) .ia-tema {
    --bg: var(--ia-input-bg); --panel: var(--ia-panel); --panel2: var(--ia-panel2); --line: var(--ia-line);
    --text: var(--ia-text); --muted: var(--ia-muted); --accent: var(--ia-accent); --accent2: var(--ia-accent2);
    --danger: var(--ia-danger); --success: var(--ia-success); --warn: var(--ia-warn); --info: var(--ia-info);
}

/* ---------- Inicio: calendario (tempusdominus) con colores del tema ---------- */
.mod-inicio .bootstrap-datetimepicker-widget table td.active,
.mod-inicio .bootstrap-datetimepicker-widget table td.active:hover,
.mod-inicio .bootstrap-datetimepicker-widget table td span.active {
    background-color: var(--ia-accent);
    color: var(--ia-accent-d);
    text-shadow: none;
}
.mod-inicio .bootstrap-datetimepicker-widget table td.today::before { border-bottom-color: var(--ia-accent); }
.mod-inicio .bootstrap-datetimepicker-widget table td.active.today::before { border-bottom-color: var(--ia-accent-d); }
.mod-inicio .bootstrap-datetimepicker-widget table td.day:hover,
.mod-inicio .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,
.mod-inicio .bootstrap-datetimepicker-widget table td span:hover { background: rgb(var(--ia-accent-rgb) / .12); }
.mod-inicio .bootstrap-datetimepicker-widget table td.old,
.mod-inicio .bootstrap-datetimepicker-widget table td.new { color: var(--ia-muted); }

/* Insignias grises y oscuras legibles en los tres temas */
:is(.mod-informes, .mod-ordenes, .mod-ordenes2, .mod-servicios, .mod-servicios2, .mod-img_servicios, .mod-doc_tecnicos,
    .mod-revision_puertos, .mod-gestor_form, .mod-cargar_img_servicio) .badge-secondary { background: var(--ia-chip); color: var(--ia-text); }
/* ============================================================================
   ÓRDENES DE TRABAJO — ordenes/ (Iniciadas), ordenes2/ (Aprobadas),
   ordenes_masivas*, consultor/
   (antes: <style> dentro de ordenes/index.php y ordenes2/index.php)
   ============================================================================ */

/* ---------- Colores de estado de la OT (fila, leyenda y contadores) ----------
   Iniciada = danger · Aprobada = warn · Cotizada = success.
   En vez de pintar la fila entera con un color fijo (ilegible en los temas
   oscuros) se usa un tinte del color + franja a la izquierda. */
.mod-ordenes, .mod-ordenes2, .mod-ordenes_masivas, .mod-ordenes_masivas_bajas, .mod-ordenes_masivas_pendientes {
    --ot-iniciada: var(--ia-danger);
    --ot-iniciada-rgb: var(--ia-danger-rgb);
    --ot-aprobada: var(--ia-warn);
    --ot-aprobada-rgb: var(--ia-warn-rgb);
    --ot-cotizada: var(--ia-success);
    --ot-cotizada-rgb: var(--ia-success-rgb);
}
.mod-ordenes table.dataTable tbody tr.ot-fila-iniciada > td,
.mod-ordenes2 table.dataTable tbody tr.ot-fila-iniciada > td { background-color: rgb(var(--ot-iniciada-rgb) / .16) !important; }
.mod-ordenes table.dataTable tbody tr.ot-fila-aprobada > td,
.mod-ordenes2 table.dataTable tbody tr.ot-fila-aprobada > td { background-color: rgb(var(--ot-aprobada-rgb) / .16) !important; }
.mod-ordenes table.dataTable tbody tr.ot-fila-cotizada > td,
.mod-ordenes2 table.dataTable tbody tr.ot-fila-cotizada > td { background-color: rgb(var(--ot-cotizada-rgb) / .16) !important; }
.mod-ordenes table.dataTable tbody tr.ot-fila-iniciada > td:first-child,
.mod-ordenes2 table.dataTable tbody tr.ot-fila-iniciada > td:first-child { box-shadow: inset 4px 0 0 var(--ot-iniciada); }
.mod-ordenes table.dataTable tbody tr.ot-fila-aprobada > td:first-child,
.mod-ordenes2 table.dataTable tbody tr.ot-fila-aprobada > td:first-child { box-shadow: inset 4px 0 0 var(--ot-aprobada); }
.mod-ordenes table.dataTable tbody tr.ot-fila-cotizada > td:first-child,
.mod-ordenes2 table.dataTable tbody tr.ot-fila-cotizada > td:first-child { box-shadow: inset 4px 0 0 var(--ot-cotizada); }
.mod-ordenes table.dataTable tbody tr.ot-fila-iniciada + tr.child > td,
.mod-ordenes2 table.dataTable tbody tr.ot-fila-iniciada + tr.child > td { background-color: rgb(var(--ot-iniciada-rgb) / .10) !important; }
.mod-ordenes table.dataTable tbody tr.ot-fila-aprobada + tr.child > td,
.mod-ordenes2 table.dataTable tbody tr.ot-fila-aprobada + tr.child > td { background-color: rgb(var(--ot-aprobada-rgb) / .10) !important; }
.mod-ordenes table.dataTable tbody tr.ot-fila-cotizada + tr.child > td,
.mod-ordenes2 table.dataTable tbody tr.ot-fila-cotizada + tr.child > td { background-color: rgb(var(--ot-cotizada-rgb) / .10) !important; }

/* Contadores (botones Iniciadas / Pendientes / Aprobadas) */
:is(.mod-ordenes, .mod-ordenes2) .btn-cont-iniciada,
:is(.mod-ordenes, .mod-ordenes2) .btn-cont-aprobada,
:is(.mod-ordenes, .mod-ordenes2) .btn-cont-cotizada {
    border: 1px solid transparent;
    color: var(--ia-text) !important;
    font-weight: 700;
    padding: 6px 14px;
    border-radius: 999px;
    font-size: .82rem;
    transition: transform .15s, box-shadow .2s, filter .15s;
    cursor: pointer;
}
:is(.mod-ordenes, .mod-ordenes2) .btn-cont-iniciada { background: rgb(var(--ot-iniciada-rgb) / .2); border-color: var(--ot-iniciada); }
:is(.mod-ordenes, .mod-ordenes2) .btn-cont-aprobada { background: rgb(var(--ot-aprobada-rgb) / .2); border-color: var(--ot-aprobada); }
:is(.mod-ordenes, .mod-ordenes2) .btn-cont-cotizada { background: rgb(var(--ot-cotizada-rgb) / .2); border-color: var(--ot-cotizada); }
:is(.mod-ordenes, .mod-ordenes2) .btn-cont-iniciada:hover,
:is(.mod-ordenes, .mod-ordenes2) .btn-cont-aprobada:hover,
:is(.mod-ordenes, .mod-ordenes2) .btn-cont-cotizada:hover { transform: translateY(-1px); box-shadow: var(--ia-shadow); }
:is(.mod-ordenes, .mod-ordenes2) .btn-cont-iniciada:focus,
:is(.mod-ordenes, .mod-ordenes2) .btn-cont-aprobada:focus,
:is(.mod-ordenes, .mod-ordenes2) .btn-cont-cotizada:focus { outline: 2px solid var(--ia-accent); outline-offset: 2px; }
:is(.mod-ordenes, .mod-ordenes2) .ot-contadores { display: flex; gap: 6px; flex-wrap: wrap; }
:is(.mod-ordenes, .mod-ordenes2) .filtros .fld.ot-fld-derecha { margin-left: auto; }

/* Leyenda de estados */
.mod-ordenes .ia-leyenda-estados,
.mod-ordenes2 .ia-leyenda-estados {
    margin: 12px 0;
    padding: 10px 14px;
    background: var(--ia-panel2);
    border: 1px solid var(--ia-line);
    border-radius: 6px;
}
.mod-ordenes .ia-leyenda-estados .ley-linea,
.mod-ordenes2 .ia-leyenda-estados .ley-linea { display: flex; flex-wrap: wrap; gap: 10px 18px; align-items: center; font-size: .85rem; }
.mod-ordenes .ia-leyenda-estados .ley-linea + .ley-linea,
.mod-ordenes2 .ia-leyenda-estados .ley-linea + .ley-linea { margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--ia-line); }
.mod-ordenes .ia-leyenda-estados .ley-titulo,
.mod-ordenes2 .ia-leyenda-estados .ley-titulo { color: var(--ia-muted); font-size: .75rem; letter-spacing: .5px; text-transform: uppercase; }
.mod-ordenes .ia-leyenda-estados .ley-item,
.mod-ordenes2 .ia-leyenda-estados .ley-item { display: inline-flex; align-items: center; gap: 6px; color: var(--ia-text); }
.mod-ordenes .ia-leyenda-estados .ley-muestra,
.mod-ordenes2 .ia-leyenda-estados .ley-muestra { display: inline-block; width: 18px; height: 14px; border-radius: 3px; border-left: 4px solid; }
.mod-ordenes .ley-muestra.iniciada, .mod-ordenes2 .ley-muestra.iniciada { background: rgb(var(--ot-iniciada-rgb) / .25); border-color: var(--ot-iniciada); }
.mod-ordenes .ley-muestra.aprobada, .mod-ordenes2 .ley-muestra.aprobada { background: rgb(var(--ot-aprobada-rgb) / .25); border-color: var(--ot-aprobada); }
.mod-ordenes .ley-muestra.cotizada, .mod-ordenes2 .ley-muestra.cotizada { background: rgb(var(--ot-cotizada-rgb) / .25); border-color: var(--ot-cotizada); }

/* Botón de correo ya enviado (contador) */
.mod-ordenes .ot-email-enviado,
.mod-ordenes2 .ot-email-enviado { color: var(--ia-accent) !important; font-weight: 600; }

/* Menú de acciones: los iconos del menú (bd/iconos.php) traen colores fijos */
.mod-ordenes .btn-datatable,
.mod-ordenes2 .btn-datatable,
.mod-ordenes .btn-transparent-dark,
.mod-ordenes2 .btn-transparent-dark { color: var(--ia-text) !important; }
.mod-ordenes .btn-datatable i,
.mod-ordenes2 .btn-datatable i { color: var(--ia-text) !important; }

/* Bloques de texto del modal "Ver detalles" */
.mod-ordenes .ot-det-titulo,
.mod-ordenes2 .ot-det-titulo {
    color: var(--ia-accent);
    font-weight: 600;
    font-size: .82rem;
    text-transform: uppercase;
    letter-spacing: .5px;
    margin-bottom: 6px;
}
.mod-ordenes .ot-det-texto,
.mod-ordenes2 .ot-det-texto { white-space: pre-wrap; line-height: 1.5; }

/* Primera columna (N° OT) con tooltip */
.mod-ordenes #tablaordenes tbody td:nth-child(1),
.mod-ordenes2 #tablaordenes tbody td:nth-child(1) { cursor: help; position: relative; }
.mod-ordenes #tablaordenes tbody td:nth-child(1):hover,
.mod-ordenes2 #tablaordenes tbody td:nth-child(1):hover { background: rgb(var(--ia-accent-rgb) / .08) !important; }
.mod-ordenes #tablaordenes tbody td:nth-child(1) .ot-trigger,
.mod-ordenes2 #tablaordenes tbody td:nth-child(1) .ot-trigger { display: inline-block; width: 100%; }

/* ---------- Envío de correo: capa con el sobre volando ---------- */
.mod-ordenes .email-envio-overlay,
.mod-ordenes2 .email-envio-overlay {
    position: fixed;
    inset: 0;
    background: rgb(var(--ia-bg-rgb) / .92);
    z-index: 10100;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    visibility: hidden;
    transition: opacity .25s, visibility .25s;
}
.mod-ordenes .email-envio-overlay.activo,
.mod-ordenes2 .email-envio-overlay.activo { opacity: 1; visibility: visible; }
.mod-ordenes .email-envio-card,
.mod-ordenes2 .email-envio-card {
    background: var(--ia-panel);
    border: 1px solid var(--ia-line);
    border-radius: 12px;
    padding: 32px 38px;
    width: 95%;
    max-width: 540px;
    box-shadow: var(--ia-shadow-lg);
    color: var(--ia-text);
    text-align: center;
}
.mod-ordenes .email-envio-titulo, .mod-ordenes2 .email-envio-titulo { font-size: 1.15rem; font-weight: 700; color: var(--ia-text); margin-bottom: 6px; }
.mod-ordenes .email-envio-titulo .ok, .mod-ordenes2 .email-envio-titulo .ok { color: var(--ia-success); }
.mod-ordenes .email-envio-subtitulo, .mod-ordenes2 .email-envio-subtitulo { color: var(--ia-muted); font-size: .9rem; margin-bottom: 28px; }
.mod-ordenes .email-fly-scene, .mod-ordenes2 .email-fly-scene {
    position: relative; height: 80px; display: flex; align-items: center; justify-content: space-between;
    padding: 0 12px; margin-bottom: 22px;
}
.mod-ordenes .email-fly-origen, .mod-ordenes .email-fly-destino,
.mod-ordenes2 .email-fly-origen, .mod-ordenes2 .email-fly-destino {
    text-align: center; color: var(--ia-muted); font-size: 1.6rem; width: 60px; flex-shrink: 0;
}
.mod-ordenes .email-fly-origen small, .mod-ordenes .email-fly-destino small,
.mod-ordenes2 .email-fly-origen small, .mod-ordenes2 .email-fly-destino small {
    display: block; font-size: .65rem; color: var(--ia-muted); margin-top: 4px; letter-spacing: .5px; text-transform: uppercase;
}
.mod-ordenes .email-fly-path, .mod-ordenes2 .email-fly-path {
    flex: 1; position: relative; height: 4px; border-radius: 2px; margin: 0 18px;
    background: linear-gradient(90deg, transparent 0%, rgb(var(--ia-accent-rgb) / .3) 30%, rgb(var(--ia-accent-rgb) / .3) 70%, transparent 100%);
}
.mod-ordenes .email-fly-sobre, .mod-ordenes2 .email-fly-sobre {
    position: absolute; top: 50%; left: 0; transform: translate(0, -50%);
    color: var(--ia-accent); font-size: 1.8rem;
    transition: left 1.8s cubic-bezier(.4, 0, .2, 1), transform .3s;
    filter: drop-shadow(0 4px 8px rgb(var(--ia-accent-rgb) / .5));
}
.mod-ordenes .email-fly-scene.volando .email-fly-sobre,
.mod-ordenes2 .email-fly-scene.volando .email-fly-sobre { left: calc(100% - 26px); }
.mod-ordenes .email-fly-scene.entregado .email-fly-sobre,
.mod-ordenes2 .email-fly-scene.entregado .email-fly-sobre {
    left: calc(100% - 26px); transform: translate(0, -50%) scale(1.4);
    color: var(--ia-success); filter: drop-shadow(0 4px 12px rgb(var(--ia-success-rgb) / .7));
}
.mod-ordenes .email-fly-scene.entregado .email-fly-destino,
.mod-ordenes2 .email-fly-scene.entregado .email-fly-destino { color: var(--ia-success); transform: scale(1.15); transition: all .35s; }
.mod-ordenes .email-envio-msg, .mod-ordenes2 .email-envio-msg {
    background: rgb(var(--ia-accent-rgb) / .08);
    border-left: 3px solid var(--ia-accent);
    padding: 10px 14px; border-radius: 4px; color: var(--ia-text); font-size: .9rem;
    min-height: 42px; display: flex; align-items: center; justify-content: center; transition: all .3s;
}
.mod-ordenes .email-envio-msg.exito, .mod-ordenes2 .email-envio-msg.exito {
    background: rgb(var(--ia-success-rgb) / .1); border-color: var(--ia-success); color: var(--ia-success); font-weight: 600;
}
.mod-ordenes .email-envio-cerrar, .mod-ordenes2 .email-envio-cerrar {
    margin-top: 18px; width: 100%; padding: 12px;
    background: var(--ia-success); color: var(--ia-bg);
    border: none; border-radius: 8px; font-weight: 700; font-size: .95rem; letter-spacing: .5px; cursor: pointer;
    transition: transform .15s, box-shadow .2s;
}
.mod-ordenes .email-envio-cerrar:hover, .mod-ordenes2 .email-envio-cerrar:hover {
    transform: translateY(-2px); box-shadow: 0 8px 20px rgb(var(--ia-success-rgb) / .35);
}

/* Utilidades de texto de las páginas antiguas */
.mod-ordenes .transformacion1, .mod-ordenes2 .transformacion1 { text-transform: capitalize; }
.mod-ordenes .transformacion2, .mod-ordenes2 .transformacion2 { text-transform: uppercase; }
.mod-ordenes .transformacion3, .mod-ordenes2 .transformacion3 { text-transform: lowercase; }

/* Insignia "Origen y cierre de pendiente" (badge-dark) legible en los 3 temas */
body.mod-ordenes .badge.badge-dark,
body.mod-ordenes2 .badge.badge-dark,
body.mod-ordenes .ia-tema .badge.badge-dark,
body.mod-ordenes2 .ia-tema .badge.badge-dark { background: rgb(var(--ia-overlay-rgb) / .12) !important; color: var(--ia-text) !important; }

/* Modal "Ver detalles": la base usa pre-wrap en todo el ítem y la sangría
   del HTML aparecía como espacio en blanco; solo los textos largos lo usan */
.mod-ordenes #viewRow .list-group-item,
.mod-ordenes2 #viewRow .list-group-item { white-space: normal; }
.mod-ordenes #viewRow .ot-det-texto,
.mod-ordenes2 #viewRow .ot-det-texto,
.mod-ordenes #viewRow #at-d_pendientes,
.mod-ordenes2 #viewRow #at-d_pendientes { white-space: pre-wrap; }

/* Rebajar OT en lote: línea "Quedan pendientes por rebajar" */
:is(.mod-ordenes_masivas_bajas, .mod-ordenes_masivas_pendientes) .ia-progreso-quedan { margin-top: 14px; font-size: .85rem; color: var(--ia-muted); }
:is(.mod-ordenes_masivas_bajas, .mod-ordenes_masivas_pendientes) .ia-progreso-quedan strong { color: var(--ia-accent); }

/* v2.1 — Tema claro: la regla global "texto blanco sobre insignias sólidas" (_00_temas)
   choca con las insignias suaves de _90_refinamiento (fondo claro) → texto ilegible.
   En órdenes se devuelve el color del estado. */
:root[data-tema="claro"] body.mod-ordenes .badge.badge-success,
:root[data-tema="claro"] body.mod-ordenes2 .badge.badge-success { color: var(--ia-success) !important; }
:root[data-tema="claro"] body.mod-ordenes .badge.badge-warning,
:root[data-tema="claro"] body.mod-ordenes2 .badge.badge-warning { color: var(--ia-warn) !important; }
/* ============================================================================
   SERVICIOS — Equipos en detalle de la OT (servicios/), Equipos de la OT
   (servicios2/). Antes: servicios/style.css y home2.css con colores fijos.
   ============================================================================ */

/* Tarjetas de líneas activas (servicios/c_equipos.php) */
.mod-servicios .serv-lineas { margin: 0 0 16px; }
.mod-servicios .serv-linea {
    background: var(--ia-panel);
    border: 1px solid var(--ia-line);
    border-radius: var(--ia-radius);
    box-shadow: var(--ia-shadow);
    text-align: center;
    padding: 12px 10px;
    margin: 8px 0;
    min-height: 150px;
    display: flex;
    flex-direction: column;
    gap: 4px;
    justify-content: center;
    transition: transform .15s, box-shadow .2s;
}
.mod-servicios .serv-linea:hover { transform: translateY(-2px); box-shadow: var(--ia-shadow-lg); border-color: var(--ia-accent); }
.mod-servicios .serv-linea .drop__name { font-size: 1rem; color: var(--ia-text); font-weight: 500; margin: 0; }
.mod-servicios .serv-linea h1.drop__name { font-size: 1.05rem; color: var(--ia-accent); }
.mod-servicios .serv-linea .drop__profession { font-size: .813rem; color: var(--ia-muted); }
.mod-servicios .serv-linea a { margin-top: 6px; font-weight: 600; }

/* Ficha del equipo (modal "Detalle del equipo") */
:is(.mod-servicios, .mod-servicios2) #viewRow #perfil_image img { max-width: 100%; height: auto; border-radius: var(--ia-radius); border: 1px solid var(--ia-line); }
:is(.mod-servicios, .mod-servicios2) #viewRow td p { margin-bottom: .35rem; }

/* v2.1 — pie de tabla (repite los títulos) más liviano */
:is(.mod-servicios, .mod-servicios2) table.dataTable tfoot th { font-size: .8rem; font-weight: 600; color: var(--ia-muted); }
/* ============================================================================
   INFORMES — Informe de centros (informes/), Datos históricos de centros
   (historico_centros/), Técnicos por OT (contador_ot-tecnicos/)
   ============================================================================ */

/* Datos históricos: tarjetas de gráficos */
.mod-historico_centros .hc-periodo { color: var(--ia-muted); font-size: .9rem; margin: 18px 0 10px; }
.mod-historico_centros .hc-periodo strong { color: var(--ia-text); }
.mod-historico_centros .hc-grafico {
    background: var(--ia-panel2);
    border: 1px solid var(--ia-line);
    border-radius: var(--ia-radius);
    padding: 12px 14px;
    margin-bottom: 16px;
}
.mod-historico_centros .hc-tit { color: var(--ia-accent); font-weight: 600; font-size: .9rem; margin-bottom: 6px; }
.mod-historico_centros .hc-lienzo { position: relative; min-height: 380px; height: 380px; }
.mod-historico_centros .hc-vacio {
    display: flex; align-items: center; justify-content: center; height: 100%;
    color: var(--ia-muted); font-size: .9rem;
}
/* Tooltip de Google Charts (fondo blanco propio): texto oscuro legible */
.mod-historico_centros .google-visualization-tooltip { color: #1b2631; }

/* Técnicos por OT */
.mod-contador_ot-tecnicos .grafico-container { position: relative; width: 100%; height: 400px; }
.mod-contador_ot-tecnicos #tablaTecnicosOT th,
.mod-contador_ot-tecnicos #tablaResumen th { white-space: nowrap; vertical-align: middle; }
.mod-contador_ot-tecnicos #tablaTecnicosOT td,
.mod-contador_ot-tecnicos #tablaResumen td { vertical-align: middle; }
.mod-contador_ot-tecnicos .border-left-primary { border-left: 5px solid var(--ia-info) !important; }
.mod-contador_ot-tecnicos .border-left-success { border-left: 5px solid var(--ia-success) !important; }
.mod-contador_ot-tecnicos .border-left-warning { border-left: 5px solid var(--ia-warn) !important; }

/* Equipamiento cumplido: contador del encabezado */
.mod-equipos_cumplidos .count-pill {
    background: var(--ia-panel2); color: var(--ia-accent); padding: 2px 10px;
    border-radius: 10px; font-size: .8rem; font-weight: 600;
}
/* ============================================================================
   ARCHIVOS — Imágenes de OT (img_servicios/, cargar_img_servicio/) y
   Documentos de técnicos (doc_tecnicos/, cargar_doc_tecnicos/).
   Antes: style.css, home.css, c3.css y <style> con colores fijos.
   ============================================================================ */

/* Miniaturas y visor */
:is(.mod-img_servicios, .mod-doc_tecnicos) .imagen {
    width: 100%; height: 150px; object-fit: cover; border-radius: 8px; cursor: pointer;
}
:is(.mod-img_servicios, .mod-doc_tecnicos) .recibir-imagen {
    max-width: 100%; max-height: 80vh; object-fit: contain; display: block; margin: auto;
}
:is(.mod-img_servicios, .mod-doc_tecnicos) #mimodal .modal-footer {
    justify-content: center; font-size: 1rem;
}
:is(.mod-img_servicios, .mod-doc_tecnicos) table.dataTable img.img-thumbnail { background: var(--ia-panel2); border-color: var(--ia-line); }

/* Galería "Visualizar todo" */
.mod-img_servicios .galeria-ot { margin: 0 0 16px; }
.mod-img_servicios .galeria-item {
    background: var(--ia-panel);
    border: 1px solid var(--ia-line);
    border-radius: var(--ia-radius);
    padding: 8px;
    margin: 8px 0;
    transition: box-shadow .2s, border-color .2s;
}
.mod-img_servicios .galeria-item:hover { border-color: var(--ia-accent); box-shadow: var(--ia-shadow-lg); }

/* Zona para arrastrar archivos (Dropzone) */
:is(.mod-cargar_img_servicio, .mod-cargar_doc_tecnicos) .dropzone.sc-dropzone {
    background: var(--ia-panel2);
    border: 3px dashed var(--ia-line);
    border-radius: var(--ia-radius);
    color: var(--ia-text);
    min-height: 220px;
    transition: border-color .2s, background .2s;
}
:is(.mod-cargar_img_servicio, .mod-cargar_doc_tecnicos) .dropzone.sc-dropzone:hover,
:is(.mod-cargar_img_servicio, .mod-cargar_doc_tecnicos) .dropzone.sc-dropzone.dz-drag-hover {
    border-color: var(--ia-accent);
    background: rgb(var(--ia-accent-rgb) / .06);
}
:is(.mod-cargar_img_servicio, .mod-cargar_doc_tecnicos) .dropzone .dz-message { color: var(--ia-text); }
:is(.mod-cargar_img_servicio, .mod-cargar_doc_tecnicos) .dropzone .dz-message i { color: var(--ia-accent); }
:is(.mod-cargar_img_servicio, .mod-cargar_doc_tecnicos) .sc-dropzone-ayuda {
    margin: 14px auto 0; max-width: 520px; text-align: left; font-size: .85rem;
    color: var(--ia-muted); background: var(--ia-panel); border: 1px solid var(--ia-line);
    border-radius: 6px; padding: 10px 14px;
}
:is(.mod-cargar_img_servicio, .mod-cargar_doc_tecnicos) .dropzone .dz-preview .dz-details { color: var(--ia-text); }
:is(.mod-cargar_img_servicio, .mod-cargar_doc_tecnicos) .dropzone .dz-preview .dz-error-message { background: var(--ia-danger); color: #fff; }
:is(.mod-img_servicios) video.recibir-imagen, :is(.mod-img_servicios) img.recibir-imagen { width: 100%; }
/* ============================================================================
   PUERTOS CERRADOS — revisión de bitácoras (revision_puertos/)
   Antes: un <style> de 600 líneas dentro de index.php con colores fijos.
   ============================================================================ */
.mod-revision_puertos .ia-tema .card { border-radius: 12px; }
.mod-revision_puertos .ia-tema .card-header { font-weight: 600; }

/* Tarjetas con borde de color */
.mod-revision_puertos .border-left-primary { border-left: 5px solid var(--ia-info) !important; }
.mod-revision_puertos .border-left-warning { border-left: 5px solid var(--ia-warn) !important; }
.mod-revision_puertos .border-left-success { border-left: 5px solid var(--ia-success) !important; }
.mod-revision_puertos .border-left-danger  { border-left: 5px solid var(--ia-danger) !important; }

/* Tablas */
.mod-revision_puertos .table th { white-space: nowrap; vertical-align: middle; }
.mod-revision_puertos .table td { vertical-align: middle; }
.mod-revision_puertos .table-responsive { overflow-x: auto; }
.mod-revision_puertos #tablaRevision tbody tr:hover,
.mod-revision_puertos #tablaResumen tbody tr:hover { background: rgb(var(--ia-accent-rgb) / .06); }

/* Pestañas */
.mod-revision_puertos .nav-tabs { border-bottom-color: var(--ia-line); }
.mod-revision_puertos .nav-tabs .nav-link { font-weight: 600; color: var(--ia-muted); border-color: transparent; }
.mod-revision_puertos .nav-tabs .nav-link:hover { color: var(--ia-text); border-color: var(--ia-line) var(--ia-line) transparent; }
.mod-revision_puertos .nav-tabs .nav-link.active { background: var(--ia-accent); color: var(--ia-accent-d); border-color: var(--ia-accent); }

.mod-revision_puertos .alert-info { border-left: 5px solid var(--ia-info); }

/* Actividad y evidencias */
.mod-revision_puertos #actividad { min-height: 220px; line-height: 24px; white-space: pre-wrap; font-size: 14px; }
.mod-revision_puertos .evidencia-box {
    border: 1px solid var(--ia-accent); border-radius: 12px; padding: 15px;
    background: var(--ia-panel2); color: var(--ia-text);
}
.mod-revision_puertos .evidencia-box h6 { font-weight: bold; color: var(--ia-accent); border-bottom: 1px solid var(--ia-accent); padding-bottom: 8px; }
.mod-revision_puertos .evidencia-contenido { width: 100%; min-height: 220px; display: flex; justify-content: center; align-items: center; }
.mod-revision_puertos .evidencia-img { max-width: 100%; max-height: 500px; border-radius: 10px; }
.mod-revision_puertos .evidencia-video { width: 100%; max-height: 500px; border-radius: 10px; }

/* Modales */
.mod-revision_puertos .ia-modal .modal-content { border-radius: 12px; border: none; }
.mod-revision_puertos .modal-xl { max-width: 1250px; }
.mod-revision_puertos textarea { resize: vertical; }
.mod-revision_puertos .badge { font-size: 12px; }

/* Bloque de OT destacada */
.mod-revision_puertos .ot-destacada {
    border: 2px solid var(--ia-accent) !important;
    box-shadow: 0 0 0 1px rgb(var(--ia-accent-rgb) / .10), var(--ia-shadow);
}
.mod-revision_puertos .ot-destacada .card-header {
    background: rgb(var(--ia-accent-rgb) / .14); color: var(--ia-text); border-bottom: 1px solid var(--ia-accent);
}
.mod-revision_puertos .ot-icono {
    width: 42px; height: 42px; border-radius: 50%; background: var(--ia-accent); color: var(--ia-accent-d);
    display: flex; align-items: center; justify-content: center; margin-right: 12px; font-size: 18px;
}
.mod-revision_puertos .ot-subtitulo { font-size: 12px; color: var(--ia-muted); margin-top: 2px; }
.mod-revision_puertos .ot-mensaje { background: rgb(var(--ia-accent-rgb) / .10); border: 1px solid var(--ia-accent); color: var(--ia-text); }

/* Ancho fijo del selector de año (antes style="width:200px") */
.mod-revision_puertos .rp-ancho-200 { width: 200px; }
.mod-revision_puertos .rp-oculto { display: none; }

/* Select2 con colores del tema (el desplegable se agrega al <body>) */
.mod-revision_puertos .select2-container--bootstrap4 { width: 100% !important; }
.mod-revision_puertos .select2-container--bootstrap4 .select2-selection {
    background-color: var(--ia-input-bg) !important; border: 1px solid var(--ia-line) !important;
    border-radius: 6px !important; color: var(--ia-text) !important; min-height: 38px;
}
.mod-revision_puertos .select2-container--bootstrap4 .select2-selection--single { height: 38px !important; padding: 7px 8px !important; }
.mod-revision_puertos .select2-container--bootstrap4 .select2-selection__rendered { color: var(--ia-text) !important; line-height: 21px !important; }
.mod-revision_puertos .select2-container--bootstrap4 .select2-selection__arrow { height: 36px !important; }
.mod-revision_puertos .select2-container--bootstrap4 .select2-dropdown {
    background-color: var(--ia-panel) !important; border: 1px solid var(--ia-line) !important; color: var(--ia-text) !important;
}
.mod-revision_puertos .select2-container--bootstrap4 .select2-search--dropdown .select2-search__field {
    background-color: var(--ia-input-bg) !important; color: var(--ia-text) !important;
    border: 1px solid var(--ia-line) !important; border-radius: 5px !important;
}
.mod-revision_puertos .select2-container--bootstrap4 .select2-results__option { color: var(--ia-text) !important; padding: 8px 10px; }
.mod-revision_puertos .select2-container--bootstrap4 .select2-results__option--highlighted { background-color: var(--ia-accent) !important; color: var(--ia-accent-d) !important; }
.mod-revision_puertos .select2-container--bootstrap4 .select2-results__option[aria-selected="true"] { background-color: rgb(var(--ia-accent-rgb) / .2) !important; color: var(--ia-text) !important; }
.mod-revision_puertos #modalRevision .select2-container { width: 100% !important; }
.mod-revision_puertos .select2-container--bootstrap4 .select2-dropdown { z-index: 1060 !important; }
.mod-revision_puertos #modalRevision .select2-search--dropdown { padding: 8px; }
.mod-revision_puertos #modalRevision .select2-results__options { max-height: 300px; overflow-y: auto; }

/* Gráfico */
.mod-revision_puertos .grafico-resumen { position: relative; width: 100%; height: 350px; }
.mod-revision_puertos #graficoResumenMensual { width: 100% !important; height: 100% !important; }
/* ============================================================================
   PÁGINAS PÚBLICAS (sin menú): aprobación de OT por correo, formularios
   por enlace. <body class="sc-publico …">, tema claro fijo.
   ============================================================================ */
body.sc-publico {
    background: var(--ia-bg);
    color: var(--ia-text);
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}
.sc-publico .sc-publico-cab {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 24px;
    background: var(--ia-panel);
    border-bottom: 1px solid var(--ia-line);
    box-shadow: var(--ia-shadow);
}
.sc-publico .sc-publico-logo { height: 44px; width: auto; border-radius: var(--ia-radius-sm); }
.sc-publico .sc-publico-empresa { font-size: .78rem; color: var(--ia-muted); text-transform: uppercase; letter-spacing: .06em; }
.sc-publico .sc-publico-titulo { font-size: 1.15rem; font-weight: 600; color: var(--ia-text); }
.sc-publico .sc-publico-main { flex: 1; width: 100%; max-width: 1100px; margin: 24px auto; padding: 0 16px; }
.sc-publico .sc-publico-pie { text-align: center; color: var(--ia-muted); font-size: .8rem; padding: 16px; }
.sc-publico .sc-publico-caja {
    background: var(--ia-panel);
    border: 1px solid var(--ia-line);
    border-radius: var(--ia-radius);
    box-shadow: var(--ia-shadow);
    padding: 20px 22px;
    margin-bottom: 18px;
}
.sc-publico .sc-publico-ot {
    display: flex; flex-wrap: wrap; gap: 8px 28px;
    padding-bottom: 14px; margin-bottom: 14px;
    border-bottom: 1px solid var(--ia-line);
}
.sc-publico .sc-publico-ot .etq { color: var(--ia-muted); font-size: .75rem; text-transform: uppercase; letter-spacing: .04em; margin-right: 4px; }
.sc-publico .sc-publico-pdf iframe {
    width: 100%; height: 70vh; min-height: 420px;
    border: 1px solid var(--ia-line); border-radius: var(--ia-radius-sm);
    background: var(--ia-panel2);
}
.sc-publico .sc-publico-pdf a { display: inline-block; margin-top: 6px; }
.sc-publico .sc-publico-form { max-width: 460px; margin: 18px auto 0; }
.sc-publico .form-control {
    background: var(--ia-input-bg); color: var(--ia-text); border-color: var(--ia-line);
}
.sc-publico .form-control:focus { border-color: var(--ia-accent); box-shadow: 0 0 0 .2rem rgb(var(--ia-accent-rgb) / .2); }
.sc-publico label { font-weight: 600; color: var(--ia-text); }
.sc-publico .btn-primary { background: var(--ia-accent); border-color: var(--ia-accent); color: var(--ia-accent-d); }
.sc-publico .btn-primary:hover { background: var(--ia-accent-h); border-color: var(--ia-accent-h); }
@media (max-width: 576px) {
    .sc-publico .sc-publico-cab { padding: 10px 14px; }
    .sc-publico .sc-publico-caja { padding: 14px; }
}
/* ============================================================================
   FORMULARIOS (gestor_form/) — plantillas, ligar OT, llenar y ver respuestas.
   Antes: <style> en cada página con colores fijos claros.
   ============================================================================ */
.mod-gestor_form #toastAlerta { position: fixed; top: 1rem; right: 1rem; z-index: 1055; }
.mod-gestor_form .form-check-input:disabled { accent-color: var(--ia-accent); }

/* Listas desplegables del gestor de plantillas */
.mod-gestor_form #content select:not(.form-control):not(.custom-select) {
    width: 100%; padding: 10px; margin-bottom: 15px; font-size: 14px;
    border: 1px solid var(--ia-line); border-radius: 8px;
    background-color: var(--ia-input-bg); color: var(--ia-text);
}

/* Ligar OT a formulario */
.mod-gestor_form .container_B { padding: 30px; background: var(--ia-panel); border: 1px solid var(--ia-line); border-radius: 10px; margin-top: 20px; }
.mod-gestor_form .nav-tabs { border-bottom-color: var(--ia-line); }
.mod-gestor_form .nav-tabs .nav-link { color: var(--ia-muted); }
.mod-gestor_form .nav-tabs .nav-link.active { background: var(--ia-accent); color: var(--ia-accent-d); border-color: var(--ia-accent); }
.mod-gestor_form .btn-outline-light { color: var(--ia-text); border-color: var(--ia-line); }
.mod-gestor_form .btn-outline-light:hover { background: var(--ia-accent); color: var(--ia-accent-d); border-color: var(--ia-accent); }
.mod-gestor_form .table th, .mod-gestor_form .table td { vertical-align: middle; }

/* Plantillas activas */
.mod-gestor_form .formulario-item {
    display: flex; justify-content: space-between; align-items: center; gap: 8px;
    padding: .75rem 1rem; border-bottom: 1px solid var(--ia-line);
    background: var(--ia-panel); color: var(--ia-text); font-size: .95rem;
}
.mod-gestor_form .formulario-nombre { font-weight: bold; margin-right: 1rem; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mod-gestor_form .formulario-ordenes { flex-wrap: wrap; display: flex; gap: .25rem; flex: 2; }
.mod-gestor_form .orden-badge { background: var(--ia-chip); color: var(--ia-text); font-size: .8rem; padding: .3em .6em; border-radius: 15px; }
.mod-gestor_form .formulario-acciones { text-align: right; flex-shrink: 0; }
.mod-gestor_form .btn-enlazar { padding: .25rem .6rem; font-size: .8rem; }

/* Llenar formulario / ver respuesta */
.mod-gestor_form .fila { display: flex; align-items: center; margin-bottom: 8px; gap: 10px; }
.mod-gestor_form .fila.fila-grid {
    display: grid; grid-template-columns: 50px 200px repeat(auto-fit, minmax(150px, 1fr));
    align-items: start; border-bottom: 1px solid var(--ia-line); padding-bottom: 10px; margin-bottom: 10px;
}
.mod-gestor_form .identificador-fila { font-weight: bold; background: var(--ia-panel2); color: var(--ia-text); padding: 6px; text-align: center; border-radius: 4px; }
.mod-gestor_form .titulo-fila { font-style: italic; padding: 6px; background: var(--ia-panel2); color: var(--ia-text); width: 200px; border-radius: 4px; }
.mod-gestor_form .campo {
    display: flex; flex-direction: column; flex: 1;
    background: var(--ia-panel2); border: 1px solid var(--ia-line); padding: 6px; border-radius: 6px; color: var(--ia-text);
}
.mod-gestor_form .campo label { font-weight: bold; font-size: .9em; margin-bottom: 4px; }
.mod-gestor_form .respuesta { padding: 4px 6px; background: var(--ia-input-bg); color: var(--ia-text); border: 1px solid var(--ia-line); border-radius: 4px; min-height: 30px; }
.mod-gestor_form .campo-checkbox { display: flex; flex-direction: column; justify-content: center; align-items: center; }

.mod-gestor_form .tabla-encabezado { width: 100%; border-collapse: collapse; margin-bottom: 30px; table-layout: fixed; }
.mod-gestor_form .tabla-encabezado td { border: 1px solid var(--ia-line); padding: 15px; vertical-align: middle; }
.mod-gestor_form .celda-titulo-subtitulo { width: 50%; background: var(--ia-panel2); text-align: center; }
.mod-gestor_form .contenedor-titulo-subtitulo { display: inline-block; }
.mod-gestor_form .celda-info-orden { background: rgb(var(--ia-info-rgb) / .08); border-left: 4px solid var(--ia-info); border-radius: 10px; color: var(--ia-text); }
.mod-gestor_form .celda-info-orden h5 { color: var(--ia-info); font-size: 1.1rem; margin-bottom: 10px; }
.mod-gestor_form .celda-info-orden div { margin-bottom: 6px; font-size: 15px; }
.mod-gestor_form .celda-info-orden div::before { content: "• "; color: var(--ia-info); font-weight: bold; }
.mod-gestor_form .pl-13p { padding-left: 13%; }

.mod-gestor_form .is-blocked { background: var(--ia-panel2) !important; color: var(--ia-muted) !important; pointer-events: none; }

/* Constructor de plantillas y llenado (ex gestor_form/public/css/estilos.css) */
.mod-gestor_form .titulo-formulario { color: var(--ia-text); font-weight: 700; }
.mod-gestor_form .subtitulo-formulario { color: var(--ia-muted); }
.mod-gestor_form .modulo { border: 1px solid var(--ia-line); background: var(--ia-panel); padding: 1rem; margin-bottom: 1rem; border-radius: 8px; color: var(--ia-text); }
.mod-gestor_form .titulo-modulo { background: var(--ia-accent); color: var(--ia-accent-d); padding: 6px 12px; font-weight: bold; border-radius: 4px; margin-bottom: 10px; }
.mod-gestor_form .modulo .identificador-fila { font-size: .75rem; line-height: 1; padding: 2px 6px; display: inline-flex; align-items: center; justify-content: center; margin-right: 4px; }
.mod-gestor_form .modulo .titulo-fila { border-left: 4px solid var(--ia-accent); font-weight: 600; font-style: normal; display: inline-flex; align-items: center; font-size: .9rem; }
.mod-gestor_form .campo label { color: var(--ia-accent); font-size: .75rem; }
.mod-gestor_form .campo input[type="text"],
.mod-gestor_form .campo input[type="number"],
.mod-gestor_form .campo select,
.mod-gestor_form .campo textarea {
    padding: 4px 6px; font-size: .85rem; border: 1px solid var(--ia-line); border-radius: 4px; width: 100%;
    background: var(--ia-input-bg); color: var(--ia-text);
}
.mod-gestor_form .campo input[type="text"], .mod-gestor_form .campo input[type="number"], .mod-gestor_form .campo select { height: 38px; }
.mod-gestor_form .campo textarea { min-height: 60px; resize: vertical; }
.mod-gestor_form .campo input[type="checkbox"] { margin-top: 5px; transform: scale(1.2); accent-color: var(--ia-accent); }
.mod-gestor_form .fila-container { display: flex; align-items: center; gap: 15px; margin-bottom: 10px; }
.mod-gestor_form .fila-container .campo { flex: 1; }
.mod-gestor_form .fila-container .titulo-fila { min-width: 150px; }
.mod-gestor_form .fila-container .btn-eliminar {
    margin-left: 10px; padding: 6px 12px; font-size: .85rem; background: var(--ia-danger); border: 1px solid var(--ia-danger);
    color: #fff; border-radius: 4px; cursor: pointer;
}
.mod-gestor_form #toastAlerta { display: flex; flex-direction: column; align-items: flex-end; gap: .5rem; }
.mod-gestor_form #toastAlerta .alert { border-radius: .5rem; box-shadow: var(--ia-shadow); margin-top: .5rem; width: 100%; }
.mod-gestor_form .container-center { display: flex; justify-content: center; align-items: center; min-height: 60vh; padding: 1rem; }
.mod-gestor_form .button-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; max-width: 400px; margin: 0 auto; }
.mod-gestor_form .toast.text-bg-success { background: var(--ia-success) !important; color: #fff; }
.mod-gestor_form .toast.text-bg-danger  { background: var(--ia-danger) !important; color: #fff; }
.mod-gestor_form .toast.text-bg-warning { background: var(--ia-warn) !important; color: #1b2631; }
.mod-gestor_form .toast.text-bg-info    { background: var(--ia-info) !important; color: #fff; }
.mod-gestor_form .toast.show { opacity: 1 !important; transform: translateY(0) !important; }
.mod-gestor_form .toast-expandido { max-width: 600px; width: 100%; margin-left: auto; margin-right: auto; }

/* Filas marcadas (vinculada / aprobada) legibles en los tres temas */
.mod-gestor_form .table tr.table-success > td, .mod-gestor_form .table tr.table-success > th { background: rgb(var(--ia-success-rgb) / .16) !important; color: var(--ia-text) !important; }
.mod-gestor_form .table tr.table-warning > td, .mod-gestor_form .table tr.table-warning > th { background: rgb(var(--ia-warn-rgb) / .16) !important; color: var(--ia-text) !important; }
.mod-gestor_form .table tr.table-danger > td,  .mod-gestor_form .table tr.table-danger > th  { background: rgb(var(--ia-danger-rgb) / .16) !important; color: var(--ia-text) !important; }
.mod-gestor_form .table tr.table-info > td,    .mod-gestor_form .table tr.table-info > th    { background: rgb(var(--ia-info-rgb) / .16) !important; color: var(--ia-text) !important; }
/* ============================================================================
   IA (ia_acantilada/) — consultas, clasificación, diccionario.
   Los estilos principales de #ia-app / #clt-app ya están en la base (§20);
   aquí van los que estaban escritos dentro de las páginas.
   ============================================================================ */
.mod-ia_acantilada .ia-debug { margin-top: 10px; cursor: pointer; font-size: .78rem; color: var(--ia-muted); }
.mod-ia_acantilada .ia-debug pre {
    margin-top: 6px; padding: 8px; background: var(--ia-panel2); border: 1px solid var(--ia-line);
    border-radius: 4px; white-space: pre-wrap; word-break: break-word; font-size: .72rem; line-height: 1.4;
    max-height: 200px; overflow: auto; color: var(--ia-text);
}

/* Diccionario de componentes (ex <style> de ia_acantilada/diccionario.php) */
/* CSS ENCAPSULADO en .mod-ia_acantilada #dic-app para no chocar con Bootstrap del sistema */
  .mod-ia_acantilada #dic-app {
    --bg: var(--ia-bg); --panel: var(--ia-panel); --panel2: var(--ia-panel2); --line: var(--ia-line);
    --text: var(--ia-text); --muted: var(--ia-muted); --accent: var(--ia-accent); --accent2: var(--ia-accent2);
    --danger: var(--ia-danger);
    font-family: var(--ia-font);
    background: var(--bg); color: var(--text);
    padding: 24px; border-radius: 8px; margin: 14px 0;
    line-height: 1.55;
  }
  .mod-ia_acantilada #dic-app * { box-sizing: border-box; }
  .mod-ia_acantilada #dic-app h1 { color: var(--accent); font-size: 1.3rem; margin-bottom: 6px; }
  .mod-ia_acantilada #dic-app h2 { color: var(--accent); font-size: 1rem; margin: 18px 0 10px; }
  .mod-ia_acantilada #dic-app .sub { color: var(--muted); font-size: .9rem; margin-bottom: 18px; }

  .mod-ia_acantilada #dic-app .box {
    background: var(--panel); border: 1px solid var(--line);
    border-radius: 8px; padding: 16px; margin: 14px 0;
  }

  .mod-ia_acantilada #dic-app .ok {
    background: rgb(var(--ia-accent-rgb) / .08); border: 1px solid var(--accent);
    border-left: 4px solid var(--accent); color: var(--accent);
    padding: 12px 16px; border-radius: 6px; margin-bottom: 14px;
  }
  .mod-ia_acantilada #dic-app .err {
    background: rgb(var(--ia-danger-rgb) / .08); border: 1px solid var(--danger);
    border-left: 4px solid var(--danger); color: var(--danger);
    padding: 12px 16px; border-radius: 6px; margin-bottom: 14px;
  }

  .mod-ia_acantilada #dic-app table { width: 100%; border-collapse: collapse; font-size: .86rem; }
  .mod-ia_acantilada #dic-app th, .mod-ia_acantilada #dic-app td {
    text-align: left; padding: 7px 10px;
    border-bottom: 1px solid var(--line); vertical-align: top;
    color: var(--text);
  }
  .mod-ia_acantilada #dic-app th {
    color: var(--accent); font-size: .72rem;
    text-transform: uppercase; letter-spacing: .3px;
    background: var(--panel2);
  }
  .mod-ia_acantilada #dic-app tr:hover td { background: rgb(var(--ia-accent-rgb) / .05); }

  .mod-ia_acantilada #dic-app form.inline { display: inline; }
  .mod-ia_acantilada #dic-app .btn, .mod-ia_acantilada #dic-app button {
    display: inline-block; background: var(--accent); color: var(--ia-accent-d);
    padding: 8px 14px; border-radius: 5px; text-decoration: none;
    font-weight: 600; font-size: .82rem; border: none; cursor: pointer; margin: 2px;
    font-family: inherit;
  }
  .mod-ia_acantilada #dic-app .btn:hover, .mod-ia_acantilada #dic-app button:hover { background: var(--ia-accent-h); }
  .mod-ia_acantilada #dic-app .btn.sec, .mod-ia_acantilada #dic-app button.sec {
    background: var(--panel2); color: var(--accent); border: 1px solid var(--accent);
  }
  .mod-ia_acantilada #dic-app .btn.sec:hover, .mod-ia_acantilada #dic-app button.sec:hover { background: var(--line); }
  .mod-ia_acantilada #dic-app .btn.warn, .mod-ia_acantilada #dic-app button.warn {
    background: var(--accent2); color: #1b1300;
  }
  .mod-ia_acantilada #dic-app .btn.warn:hover, .mod-ia_acantilada #dic-app button.warn:hover { filter: brightness(1.1); }
  .mod-ia_acantilada #dic-app .btn.danger, .mod-ia_acantilada #dic-app button.danger {
    background: var(--danger); color: #fff;
  }
  .mod-ia_acantilada #dic-app .btn.danger:hover, .mod-ia_acantilada #dic-app button.danger:hover { filter: brightness(1.1); }
  .mod-ia_acantilada #dic-app .btn.lg { padding: 10px 18px; font-size: .9rem; }

  .mod-ia_acantilada #dic-app input[type=text], .mod-ia_acantilada #dic-app textarea, .mod-ia_acantilada #dic-app select {
    width: 100%; padding: 8px 10px; background: var(--panel2);
    border: 1px solid var(--line); color: var(--text);
    border-radius: 6px; font-family: inherit; font-size: .9rem;
  }
  .mod-ia_acantilada #dic-app input[type=text]:focus, .mod-ia_acantilada #dic-app textarea:focus, .mod-ia_acantilada #dic-app select:focus {
    outline: none; border-color: var(--accent);
  }
  .mod-ia_acantilada #dic-app textarea { min-height: 60px; resize: vertical; }
  .mod-ia_acantilada #dic-app label {
    display: block; font-size: .78rem; color: var(--muted);
    margin-bottom: 4px; text-transform: uppercase;
    letter-spacing: .3px; margin-top: 10px;
  }
  .mod-ia_acantilada #dic-app label.cb {
    display: inline; text-transform: none; color: var(--text);
    font-size: .88rem; letter-spacing: normal;
  }
  .mod-ia_acantilada #dic-app input[type=checkbox] { margin-right: 6px; }

  .mod-ia_acantilada #dic-app .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
  .mod-ia_acantilada #dic-app .tag {
    padding: 2px 9px; border-radius: 10px;
    font-size: .72rem; display: inline-block; font-weight: 600;
  }
  .mod-ia_acantilada #dic-app .tag-sis { background: rgb(var(--ia-accent2-rgb) / .18); color: var(--accent2); }
  .mod-ia_acantilada #dic-app .tag-comp { background: rgb(var(--ia-accent-rgb) / .16); color: var(--accent); }
  .mod-ia_acantilada #dic-app .tag-acc { background: rgb(var(--ia-info-rgb) / .16); color: var(--ia-info); }
  .mod-ia_acantilada #dic-app .inactivo { opacity: .45; }
  .mod-ia_acantilada #dic-app .filtros { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }
  .mod-ia_acantilada #dic-app small { color: var(--muted); font-size: .78rem; }
  .mod-ia_acantilada #dic-app .barra-acciones {
    display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 18px; align-items: center;
  }

  /* Tabla scrolleable horizontalmente */
  .mod-ia_acantilada #dic-app .tabla-wrap { overflow-x: auto; }

/* ---- v2.1: contexto de la respuesta (filtro, caché, modo simulado) ---- */
.mod-ia_acantilada #ia-app .ia-meta { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 12px; }
.mod-ia_acantilada #ia-app .ia-meta-inicio { margin: -8px 0 16px; }
.mod-ia_acantilada #ia-app .ia-chip {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 3px 10px; border-radius: 999px; font-size: .74rem; line-height: 1.4;
    background: var(--ia-chip, var(--ia-panel2)); color: var(--ia-muted);
    border: 1px solid var(--ia-line);
}
.mod-ia_acantilada #ia-app .ia-chip.ok   { color: var(--ia-success); border-color: rgb(var(--ia-success-rgb) / .45); background: rgb(var(--ia-success-rgb) / .08); }
.mod-ia_acantilada #ia-app .ia-chip.warn { color: var(--ia-warn);    border-color: rgb(var(--ia-warn-rgb) / .5);     background: rgb(var(--ia-warn-rgb) / .10); }

/* ---- v2.1: "¿de dónde salen los datos?" (consulta usada) ---- */
.mod-ia_acantilada #ia-app .ia-fuente {
    margin-top: 10px; border: 1px solid var(--ia-line); border-radius: 6px;
    background: var(--ia-panel2); font-size: .78rem; color: var(--ia-muted);
}
.mod-ia_acantilada #ia-app .ia-fuente > summary {
    cursor: pointer; padding: 6px 10px; list-style: none; display: flex; gap: 8px;
    align-items: center; justify-content: space-between; user-select: none;
}
.mod-ia_acantilada #ia-app .ia-fuente > summary::-webkit-details-marker { display: none; }
.mod-ia_acantilada #ia-app .ia-fuente-ver { color: var(--ia-accent); font-weight: 600; white-space: nowrap; }
.mod-ia_acantilada #ia-app .ia-fuente[open] .ia-fuente-ver { opacity: .7; }
.mod-ia_acantilada #ia-app .ia-fuente.rechazado { border-color: rgb(var(--ia-danger-rgb) / .5); background: rgb(var(--ia-danger-rgb) / .06); color: var(--ia-danger); }
.mod-ia_acantilada #ia-app .ia-fuente-cuerpo { padding: 0 10px 10px; }
.mod-ia_acantilada #ia-app .ia-fuente-filtro { margin: 2px 0 6px; color: var(--ia-text); }
.mod-ia_acantilada #ia-app .ia-fuente pre {
    margin: 0; padding: 8px 10px; max-height: 220px; overflow: auto;
    background: var(--ia-input-bg, var(--ia-panel)); color: var(--ia-text);
    border: 1px solid var(--ia-line); border-radius: 4px;
    white-space: pre-wrap; word-break: break-word; font-size: .74rem; line-height: 1.45;
}
.mod-ia_acantilada #ia-app .ia-fuente-nota { margin-top: 6px; font-size: .72rem; color: var(--ia-muted); }

/* ---- v2.1: pie de la respuesta ---- */
.mod-ia_acantilada #ia-app .ia-pie { display: flex; justify-content: flex-end; margin-top: 12px; }
.mod-ia_acantilada #ia-app .btn-recalcular {
    background: transparent; color: var(--ia-muted); border: 1px solid var(--ia-line);
    border-radius: 6px; padding: 4px 10px; font-size: .76rem; cursor: pointer;
}
.mod-ia_acantilada #ia-app .btn-recalcular:hover { color: var(--ia-accent); border-color: var(--ia-accent); }
/* ============================================================
   §70 — MÓDULOS GENERALES (clientes, supervisores, parámetros,
   usuarios, técnicos, bitácora, manuales, calendario, empresa,
   respaldo). Selectores acotados por .mod-<carpeta>.
   ============================================================ */

/* Alias de variables que usan reglas antiguas de .ia-tema (.form-control…):
   sin esto los campos quedan sin borde en el tema claro. */
:is(.mod-clientes, .mod-supervisores, .mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-plantillas, .mod-config_email, .mod-correos_clientes, .mod-correcciones, .mod-palabras_tecnicas, .mod-dato_economico, .mod-calendario, .mod-empresa, .mod-registrar, .mod-menus, .mod-log_usuario, .mod-vitacora, .mod-trabajadores, .mod-manuales, .mod-backup, .mod-mantenimiento) {
    --bg: var(--ia-input-bg); --panel: var(--ia-panel); --panel2: var(--ia-panel2); --line: var(--ia-line);
    --text: var(--ia-text); --muted: var(--ia-muted); --accent: var(--ia-accent);
}
:is(.mod-clientes, .mod-supervisores, .mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-plantillas, .mod-config_email, .mod-correos_clientes, .mod-correcciones, .mod-palabras_tecnicas, .mod-dato_economico, .mod-calendario, .mod-empresa, .mod-registrar, .mod-menus, .mod-log_usuario, .mod-vitacora, .mod-trabajadores, .mod-manuales, .mod-backup, .mod-mantenimiento) .ia-tema textarea.form-control { min-height: 90px; }

/* ---------- Cabecera de página ---------- */
:is(.mod-clientes, .mod-supervisores, .mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-plantillas, .mod-config_email, .mod-correos_clientes, .mod-correcciones, .mod-palabras_tecnicas, .mod-dato_economico, .mod-calendario, .mod-empresa, .mod-registrar, .mod-menus, .mod-log_usuario, .mod-vitacora, .mod-trabajadores, .mod-manuales, .mod-backup, .mod-mantenimiento) .mg-cabecera {
    display: flex; justify-content: space-between; align-items: flex-start;
    flex-wrap: wrap; gap: 12px; margin-bottom: 4px;
}
:is(.mod-clientes, .mod-supervisores, .mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-plantillas, .mod-config_email, .mod-correos_clientes, .mod-correcciones, .mod-palabras_tecnicas, .mod-dato_economico, .mod-calendario, .mod-empresa, .mod-registrar, .mod-menus, .mod-log_usuario, .mod-vitacora, .mod-trabajadores, .mod-manuales, .mod-backup, .mod-mantenimiento) .mg-cabecera .sub { margin-bottom: 6px; max-width: 760px; }
:is(.mod-clientes, .mod-supervisores, .mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-plantillas, .mod-config_email, .mod-correos_clientes, .mod-correcciones, .mod-palabras_tecnicas, .mod-dato_economico, .mod-calendario, .mod-empresa, .mod-registrar, .mod-menus, .mod-log_usuario, .mod-vitacora, .mod-trabajadores, .mod-manuales, .mod-backup, .mod-mantenimiento) .mg-acciones {
    display: flex; flex-wrap: wrap; gap: 8px; align-items: center;
}
:is(.mod-clientes, .mod-supervisores, .mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-plantillas, .mod-config_email, .mod-correos_clientes, .mod-correcciones, .mod-palabras_tecnicas, .mod-dato_economico, .mod-calendario, .mod-empresa, .mod-registrar, .mod-menus, .mod-log_usuario, .mod-vitacora, .mod-trabajadores, .mod-manuales, .mod-backup, .mod-mantenimiento) .mg-contexto {
    margin: 0 0 4px; color: var(--ia-text); font-size: .95rem;
}
:is(.mod-clientes, .mod-supervisores, .mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-plantillas, .mod-config_email, .mod-correos_clientes, .mod-correcciones, .mod-palabras_tecnicas, .mod-dato_economico, .mod-calendario, .mod-empresa, .mod-registrar, .mod-menus, .mod-log_usuario, .mod-vitacora, .mod-trabajadores, .mod-manuales, .mod-backup, .mod-mantenimiento) .mg-contexto strong { color: var(--ia-accent); }
:is(.mod-clientes, .mod-supervisores, .mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-plantillas, .mod-config_email, .mod-correos_clientes, .mod-correcciones, .mod-palabras_tecnicas, .mod-dato_economico, .mod-calendario, .mod-empresa, .mod-registrar, .mod-menus, .mod-log_usuario, .mod-vitacora, .mod-trabajadores, .mod-manuales, .mod-backup, .mod-mantenimiento) .ia-tema label,
:is(.mod-clientes, .mod-supervisores, .mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-plantillas, .mod-config_email, .mod-correos_clientes, .mod-correcciones, .mod-palabras_tecnicas, .mod-dato_economico, .mod-calendario, .mod-empresa, .mod-registrar, .mod-menus, .mod-log_usuario, .mod-vitacora, .mod-trabajadores, .mod-manuales, .mod-backup, .mod-mantenimiento) .ia-modal label {
    color: var(--ia-muted); font-size: .8rem; font-weight: 600; margin-bottom: 4px;
}
:is(.mod-clientes, .mod-supervisores, .mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-plantillas, .mod-config_email, .mod-correos_clientes, .mod-correcciones, .mod-palabras_tecnicas, .mod-dato_economico, .mod-calendario, .mod-empresa, .mod-registrar, .mod-menus, .mod-log_usuario, .mod-vitacora, .mod-trabajadores, .mod-manuales, .mod-backup, .mod-mantenimiento) .ia-modal .form-check-label { color: var(--ia-text); font-weight: 400; font-size: .88rem; text-transform: none; letter-spacing: 0; }
/* v2.4: las pantallas originales restauradas (clientes, usuarios, bitácora…) usan la disposición original: ver _48_generales_original.css */
:is(.mod-dato_economico, .mod-backup, .mod-mantenimiento) .dataTables_wrapper .dt-buttons { float: none; display: inline-flex; gap: 4px; }
:is(.mod-dato_economico, .mod-backup, .mod-mantenimiento) .dataTables_wrapper .dt-buttons .btn { border-radius: 4px; }
:is(.mod-dato_economico, .mod-backup, .mod-mantenimiento) .dataTables_wrapper .dataTables_filter { float: none; text-align: left; }
:is(.mod-clientes, .mod-supervisores, .mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-plantillas, .mod-config_email, .mod-correos_clientes, .mod-correcciones, .mod-palabras_tecnicas, .mod-dato_economico, .mod-calendario, .mod-empresa, .mod-registrar, .mod-menus, .mod-log_usuario, .mod-vitacora, .mod-trabajadores, .mod-manuales, .mod-backup, .mod-mantenimiento) .table td { vertical-align: middle; }

:is(.mod-clientes, .mod-supervisores, .mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-plantillas, .mod-config_email, .mod-correos_clientes, .mod-correcciones, .mod-palabras_tecnicas, .mod-dato_economico, .mod-calendario, .mod-empresa, .mod-registrar, .mod-menus, .mod-log_usuario, .mod-vitacora, .mod-trabajadores, .mod-manuales, .mod-backup, .mod-mantenimiento) .mg-acciones .btn { font-size: .9rem; padding: 8px 14px; font-weight: 600; }

/* Muestra de color (calendario, tablas) */
:is(.mod-clientes, .mod-supervisores, .mod-ciudades, .mod-zonas, .mod-tipos, .mod-t_servicios, .mod-t_planillas, .mod-plantillas, .mod-config_email, .mod-correos_clientes, .mod-correcciones, .mod-palabras_tecnicas, .mod-dato_economico, .mod-calendario, .mod-empresa, .mod-registrar, .mod-menus, .mod-log_usuario, .mod-vitacora, .mod-trabajadores, .mod-manuales, .mod-backup, .mod-mantenimiento) .mg-color {
    display: inline-block; width: 14px; height: 14px; border-radius: 3px;
    border: 1px solid var(--ia-line); vertical-align: middle;
}

/* ---------- Fotos (usuarios, técnicos, logo de empresa) ---------- */
:is(.mod-registrar, .mod-trabajadores, .mod-empresa) .mg-foto {
    width: 44px; height: 44px; object-fit: cover; border-radius: 50%;
    border: 2px solid var(--ia-line); background: var(--ia-panel2);
}
:is(.mod-registrar, .mod-trabajadores, .mod-empresa) .mg-foto-grande {
    width: 180px; height: 180px; margin: 0 auto; border-radius: 10px; overflow: hidden;
    background: var(--ia-panel2); border: 2px solid var(--ia-line);
    display: flex; align-items: center; justify-content: center;
}
:is(.mod-registrar, .mod-trabajadores, .mod-empresa) .mg-foto-grande img { width: 100%; height: 100%; object-fit: cover; }
.mod-empresa .mg-foto-grande img { object-fit: contain; padding: 8px; }
:is(.mod-registrar, .mod-trabajadores, .mod-empresa) .mg-foto-grande .mg-sin-foto { color: var(--ia-muted); font-size: 3rem; }

/* ---------- Ficha de detalle (lista etiqueta / valor) ---------- */
:is(.mod-registrar, .mod-trabajadores, .mod-vitacora, .mod-empresa) .mg-ficha { list-style: none; padding: 0; margin: 0; }
:is(.mod-registrar, .mod-trabajadores, .mod-vitacora, .mod-empresa) .mg-ficha li {
    display: flex; justify-content: space-between; gap: 12px;
    padding: 8px 0; border-bottom: 1px solid var(--ia-line); font-size: .9rem;
}
:is(.mod-registrar, .mod-trabajadores, .mod-vitacora, .mod-empresa) .mg-ficha li b { color: var(--ia-muted); font-weight: 600; }
:is(.mod-registrar, .mod-trabajadores, .mod-vitacora, .mod-empresa) .mg-ficha li span { color: var(--ia-text); text-align: right; word-break: break-word; }

/* ---------- Usuarios: permisos de menú ---------- */
.mod-menus .mg-permisos { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; align-items: start; }
.mod-menus .mg-grupo { background: var(--ia-panel); border: 1px solid var(--ia-line); border-radius: var(--ia-radius); overflow: hidden; }
.mod-menus .mg-grupo-titulo {
    display: flex; align-items: center; gap: 8px; padding: 10px 14px;
    background: var(--ia-panel2); border-bottom: 1px solid var(--ia-line);
    color: var(--ia-accent); font-weight: 600; cursor: pointer; margin: 0;
}
.mod-menus .mg-grupo-titulo input { margin: 0; }
.mod-menus .mg-grupo ul { list-style: none; margin: 0; padding: 8px 14px 10px; }
.mod-menus .mg-grupo li label { display: flex; align-items: center; gap: 8px; color: var(--ia-text); font-weight: 400; font-size: .88rem; margin: 3px 0; cursor: pointer; }
.mod-menus .mg-pie { position: sticky; bottom: 0; display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap;
    background: var(--ia-panel); border: 1px solid var(--ia-line); border-radius: var(--ia-radius); padding: 10px 14px; margin-top: 16px; box-shadow: var(--ia-shadow); }

/* ---------- Bitácora ---------- */
.mod-vitacora .mg-filtros { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; }
.mod-vitacora .mg-filtros .form-group { margin-bottom: 0; min-width: 160px; }
.mod-vitacora .mg-resumen { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.mod-vitacora .mg-chip {
    display: inline-flex; align-items: center; gap: 6px; padding: 4px 12px; border-radius: 14px;
    background: rgb(var(--ia-accent-rgb) / .12); color: var(--ia-text); font-size: .85rem;
}
.mod-vitacora .mg-chip b { color: var(--ia-accent); }
.mod-vitacora .mg-preview {
    margin-top: 8px; min-height: 120px; border: 1px dashed var(--ia-line); border-radius: 8px;
    background: var(--ia-panel2); display: flex; align-items: center; justify-content: center;
    color: var(--ia-muted); font-size: .85rem; padding: 8px; overflow: hidden;
}
.mod-vitacora .mg-preview img, .mod-vitacora .mg-preview video { max-width: 100%; max-height: 260px; border-radius: 6px; }
.mod-vitacora .mg-evidencia { border: 1px solid var(--ia-line); border-radius: 10px; padding: 12px; margin-bottom: 12px; background: var(--ia-panel2); }
.mod-vitacora .mg-evidencia h6 { color: var(--ia-accent); font-weight: 600; border-bottom: 1px solid var(--ia-line); padding-bottom: 6px; }
.mod-vitacora .mg-evidencia img, .mod-vitacora .mg-evidencia video { display: block; max-width: 100%; max-height: 460px; margin: 0 auto; border-radius: 8px; }
.mod-vitacora .mg-actividad { white-space: pre-wrap; line-height: 1.5; color: var(--ia-text); background: var(--ia-panel2); border: 1px solid var(--ia-line); border-radius: 8px; padding: 10px 12px; }

/* ---------- Manuales ---------- */
.mod-manuales .nav-tabs { border-bottom-color: var(--ia-line); }
.mod-manuales .nav-tabs .nav-link { color: var(--ia-muted); border-color: transparent; background: transparent; }
.mod-manuales .nav-tabs .nav-link:hover { color: var(--ia-accent); border-color: var(--ia-line) var(--ia-line) transparent; }
.mod-manuales .nav-tabs .nav-link.active { color: var(--ia-accent); background: var(--ia-panel); border-color: var(--ia-line) var(--ia-line) var(--ia-panel); }
.mod-manuales .tab-content { padding-top: 14px; }
.mod-manuales .mg-icono-archivo { color: var(--ia-accent); width: 18px; text-align: center; }

/* ---------- Plantillas ---------- */
.mod-plantillas .mg-buscador { position: relative; }
.mod-plantillas .mg-sugerencias {
    position: absolute; z-index: 30; left: 0; right: 0; top: 100%; max-height: 280px; overflow: auto;
    background: var(--ia-panel); border: 1px solid var(--ia-line); border-radius: 6px; box-shadow: var(--ia-shadow-lg);
}
.mod-plantillas .mg-sugerencias button {
    display: block; width: 100%; text-align: left; border: 0; background: transparent; color: var(--ia-text);
    padding: 8px 12px; font-size: .88rem; border-bottom: 1px solid var(--ia-line);
}
.mod-plantillas .mg-sugerencias button:hover, .mod-plantillas .mg-sugerencias button:focus { background: rgb(var(--ia-accent-rgb) / .12); outline: none; }
.mod-plantillas .mg-sugerencias small { color: var(--ia-muted); }

/* ---------- Indicadores económicos ---------- */
.mod-dato_economico .mg-indicadores { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 14px; }
.mod-dato_economico .mg-indicador { background: var(--ia-panel); border: 1px solid var(--ia-line); border-radius: var(--ia-radius); padding: 16px; }
.mod-dato_economico .mg-indicador .n { color: var(--ia-muted); font-size: .8rem; text-transform: uppercase; letter-spacing: .04em; }
.mod-dato_economico .mg-indicador .v { color: var(--ia-accent); font-size: 1.45rem; font-weight: 700; margin-top: 4px; }
.mod-dato_economico .mg-indicador .f { color: var(--ia-muted); font-size: .75rem; }

/* ---------- Calendario (FullCalendar 3) ---------- */
.mod-calendario .fc { color: var(--ia-text); }
.mod-calendario .fc-unthemed th, .mod-calendario .fc-unthemed td, .mod-calendario .fc-unthemed thead,
.mod-calendario .fc-unthemed tbody, .mod-calendario .fc-unthemed .fc-divider, .mod-calendario .fc-unthemed .fc-row,
.mod-calendario .fc-unthemed .fc-content, .mod-calendario .fc-unthemed .fc-popover, .mod-calendario .fc-unthemed .fc-list-view,
.mod-calendario .fc-unthemed .fc-list-heading td { border-color: var(--ia-line); }
.mod-calendario .fc-unthemed .fc-popover, .mod-calendario .fc-unthemed .fc-list-empty { background: var(--ia-panel); }
.mod-calendario .fc-unthemed .fc-popover .fc-header, .mod-calendario .fc-unthemed .fc-divider,
.mod-calendario .fc-unthemed .fc-list-heading td { background: var(--ia-panel2); }
.mod-calendario .fc-unthemed td.fc-today { background: rgb(var(--ia-accent-rgb) / .12); }
.mod-calendario .fc-unthemed .fc-list-item:hover td { background: rgb(var(--ia-accent-rgb) / .08); }
.mod-calendario .fc-day-header { background: var(--ia-panel2); color: var(--ia-accent); padding: 6px 0 !important; font-weight: 600; }
.mod-calendario .fc-day-number, .mod-calendario .fc-week-number { color: var(--ia-muted); }
.mod-calendario .fc-feriado { background: rgb(var(--ia-danger-rgb) / .10); }
.mod-calendario .fc-toolbar h2 { color: var(--ia-accent); font-size: 1.25rem; }
.mod-calendario .fc-button {
    background: var(--ia-panel2); color: var(--ia-text); border: 1px solid var(--ia-line);
    text-shadow: none; box-shadow: none; height: auto; padding: 5px 10px;
}
.mod-calendario .fc-state-hover, .mod-calendario .fc-button:hover { background: var(--ia-line); color: var(--ia-text); }
.mod-calendario .fc-state-active, .mod-calendario .fc-state-down { background: var(--ia-accent); color: var(--ia-accent-d); border-color: var(--ia-accent); }
.mod-calendario .fc-state-disabled { opacity: .5; }
.mod-calendario .fc-event { border-radius: 4px; padding: 1px 4px; font-size: .8rem; cursor: pointer; }
.mod-calendario .fc-highlight { background: rgb(var(--ia-accent-rgb) / .25); }
.mod-calendario .fc-list-item-title a, .mod-calendario .fc-list-heading-main, .mod-calendario .fc-list-heading-alt { color: var(--ia-text); }
.mod-calendario .mg-usuarios { max-height: 200px; overflow: auto; border: 1px solid var(--ia-line); border-radius: 6px; padding: 6px 10px; background: var(--ia-input-bg); columns: 2; }
.mod-calendario .mg-usuarios label { display: block; color: var(--ia-text); font-weight: 400; font-size: .85rem; margin: 2px 0; text-transform: none; letter-spacing: 0; }
@media (max-width: 576px) { .mod-calendario .mg-usuarios { columns: 1; } .mod-calendario .fc-toolbar .fc-left, .mod-calendario .fc-toolbar .fc-right { float: none; margin-bottom: 6px; } }

/* ---------- Respaldo BD ---------- */
.mod-backup .mg-progreso { height: 22px; background: var(--ia-panel2); border: 1px solid var(--ia-line); border-radius: 11px; overflow: hidden; }
.mod-backup .mg-progreso div { height: 100%; width: 0; background: var(--ia-accent); transition: width .2s; }
.mod-backup .mg-log { font-family: var(--ia-mono, monospace); font-size: .78rem; color: var(--ia-muted); max-height: 160px; overflow: auto; background: var(--ia-panel2); border: 1px solid var(--ia-line); border-radius: 6px; padding: 8px 10px; margin-top: 10px; }

/* ---------- Restablecer contraseña (páginas públicas, body.sc-login) ---------- */
.mod-restablecer_password .sc-rp-aviso {
    display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; margin: 0 0 16px;
    border-radius: 6px; font-size: .88rem; line-height: 1.45; color: var(--ia-text);
    background: rgb(var(--ia-info-rgb) / .10); border: 1px solid rgb(var(--ia-info-rgb) / .45);
}
.mod-restablecer_password .sc-rp-aviso i { margin-top: 3px; color: var(--ia-info); }
.mod-restablecer_password .sc-rp-ok { background: rgb(var(--ia-success-rgb) / .10); border-color: rgb(var(--ia-success-rgb) / .5); }
.mod-restablecer_password .sc-rp-ok i { color: var(--ia-success); }
.mod-restablecer_password .sc-rp-error { background: rgb(var(--ia-danger-rgb) / .10); border-color: rgb(var(--ia-danger-rgb) / .5); }
.mod-restablecer_password .sc-rp-error i { color: var(--ia-danger); }
.mod-restablecer_password .sc-login-card .btn-block + .sc-login-olvido { margin-top: 16px; }
.mod-calendario .fc-content-skeleton thead td, .mod-calendario .fc-content-skeleton thead th,
.mod-calendario .fc-bg td, .mod-calendario .fc-content-skeleton td, .mod-calendario .fc-row .fc-content-skeleton td { background: transparent; }
.mod-calendario .fc-bg td.fc-today { background: rgb(var(--ia-accent-rgb) / .12); }
.mod-calendario .fc-bg td.fc-feriado { background: rgb(var(--ia-danger-rgb) / .08); }
.mod-calendario .fc-unthemed td.fc-day, .mod-calendario .fc-view-container { background: var(--ia-panel); }
.mod-calendario .fc-evento-feriado { font-weight: 700; }
:is(.mod-registrar, .mod-trabajadores) #tablaUsuarios .btn-sm, :is(.mod-registrar, .mod-trabajadores) #tablaTecnicos .btn-sm { padding: .2rem .42rem; }
.mod-backup #tabla-respaldos td.dataTables_empty { background: var(--ia-panel2); color: var(--ia-muted); }
/* ============================================================
   §75 — AVISO DE MANTENCIÓN (v2.1)
   · .sc-mant: banner global (bajo la barra superior, en la página
     de ingreso y en páginas públicas). No va acotado a un módulo
     porque aparece en todas las páginas.
   · .sc-mant-bloqueo: página "Sistema en mantención" (503).
   · .mod-mantenimiento: página de administración de avisos.
   ============================================================ */
.sc-mant {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px 12px;
    margin: -.75rem 1.5rem 1.25rem;
    padding: 10px 14px;
    background: rgb(var(--ia-info-rgb) / .10);
    border: 1px solid rgb(var(--ia-info-rgb) / .30);
    border-left: 4px solid var(--ia-info);
    border-radius: var(--ia-radius);
    color: var(--ia-text);
    font-size: .88rem;
    line-height: 1.45;
}
.sc-mant-ico { color: var(--ia-info); font-size: 1rem; flex: 0 0 auto; }
.sc-mant-txt { flex: 1 1 260px; min-width: 0; overflow-wrap: anywhere; }
.sc-mant-cab { color: var(--ia-text); font-weight: 600; }
.sc-mant-titulo { font-weight: 600; }
.sc-mant-nota { color: var(--ia-muted); font-style: italic; }
.sc-mant-cuenta {
    flex: 0 0 auto;
    padding: 2px 10px;
    border-radius: 999px;
    background: var(--ia-panel);
    border: 1px solid var(--ia-line);
    color: var(--ia-text);
    font-size: .78rem;
    font-weight: 600;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.sc-mant:has(.sc-mant-cerrar) { position: relative; padding-right: 44px; }
.sc-mant-cerrar {
    position: absolute; top: 50%; right: 8px; margin-top: -14px;
    width: 28px; height: 28px;
    border: 0; border-radius: 50%;
    background: transparent;
    color: var(--ia-muted);
    cursor: pointer;
    line-height: 1;
}
.sc-mant-cerrar:hover, .sc-mant-cerrar:focus { background: rgb(var(--ia-overlay-rgb) / .08); color: var(--ia-text); outline: none; }

/* Faltan menos de 2 h */
.sc-mant--pronto {
    background: rgb(var(--ia-warn-rgb) / .12);
    border-color: rgb(var(--ia-warn-rgb) / .35);
    border-left-color: var(--ia-warn);
}
.sc-mant--pronto .sc-mant-ico { color: var(--ia-warn); }

/* En curso: color de advertencia, más marcado */
.sc-mant--curso {
    background: rgb(var(--ia-warn-rgb) / .22);
    border-color: rgb(var(--ia-warn-rgb) / .55);
    border-left-color: var(--ia-warn);
}
.sc-mant--curso .sc-mant-ico { color: var(--ia-warn); animation: sc-mant-giro 3s ease-in-out infinite; }
.sc-mant--curso .sc-mant-cab { color: var(--ia-warn); }
.sc-mant--fin { opacity: .65; }
@keyframes sc-mant-giro { 0%, 70%, 100% { transform: rotate(0); } 80% { transform: rotate(-18deg); } 90% { transform: rotate(12deg); } }
@media (prefers-reduced-motion: reduce) { .sc-mant--curso .sc-mant-ico { animation: none; } }

@media (max-width: 767.98px) {
    .sc-mant { margin: -.75rem .75rem 1rem; font-size: .84rem; padding: 9px 12px; }
}

/* Página de ingreso / restablecer clave */
.sc-login-wrap.con-aviso { flex-direction: column; gap: 16px; }
.sc-login-aviso { width: 100%; max-width: 560px; }
.sc-login-aviso .sc-mant { margin: 0; }

/* Páginas públicas */
.sc-publico .sc-mant { margin: 0 0 16px; }

/* ---------- Página "Sistema en mantención" ---------- */
.sc-mant-bloqueo .sc-login-card { border-top-color: var(--ia-warn); text-align: center; }
.sc-mant-bloqueo-ico {
    width: 56px; height: 56px; margin: 0 auto 12px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    background: rgb(var(--ia-warn-rgb) / .15);
    color: var(--ia-warn);
    font-size: 1.5rem;
}
.sc-mant-bloqueo-hora {
    display: flex; flex-direction: column; gap: 2px;
    margin: 0 0 16px; padding: 14px;
    background: var(--ia-panel2);
    border: 1px solid var(--ia-line);
    border-radius: var(--ia-radius);
}
.sc-mant-bloqueo-hora span { color: var(--ia-muted); font-size: .82rem; }
.sc-mant-bloqueo-hora strong { color: var(--ia-text); font-size: 1.15rem; }
.sc-mant-bloqueo-hora .sc-mant-cuenta { align-self: center; margin-top: 4px; }
.sc-mant-bloqueo-msg { text-align: left; margin: 0 0 18px; font-size: .9rem; color: var(--ia-text); }
.sc-mant-bloqueo-msg p { margin: 4px 0 0; color: var(--ia-muted); }

/* ---------- Administración de avisos (mantenimiento/) ---------- */
.mod-mantenimiento .mant-chip {
    display: inline-block; padding: 2px 10px; border-radius: 999px;
    font-size: .76rem; font-weight: 600; white-space: nowrap;
    background: var(--ia-chip); color: var(--ia-muted);
}
.mod-mantenimiento .mant-chip.prog  { background: rgb(var(--ia-info-rgb) / .15); color: var(--ia-info); }
.mod-mantenimiento .mant-chip.curso { background: rgb(var(--ia-warn-rgb) / .20); color: var(--ia-warn); }
.mod-mantenimiento .mant-chip.canc  { background: rgb(var(--ia-danger-rgb) / .12); color: var(--ia-danger); }
.mod-mantenimiento .mant-msg { color: var(--ia-muted); font-size: .8rem; margin-top: 2px; white-space: normal; }
.mod-mantenimiento .mant-bloq { color: var(--ia-warn); font-weight: 600; }
.mod-mantenimiento tr.mant-pasado td { opacity: .7; }
.mod-mantenimiento .mant-ayuda { color: var(--ia-muted); font-size: .84rem; margin: 12px 2px 0; }
.mod-mantenimiento .mant-vista {
    padding: 10px 12px;
    background: rgb(var(--ia-info-rgb) / .08);
    border: 1px dashed rgb(var(--ia-info-rgb) / .40);
    border-radius: var(--ia-radius);
    color: var(--ia-text);
    font-size: .86rem;
}
.mod-mantenimiento .mant-vista > i { color: var(--ia-info); margin-right: 4px; }
.mod-mantenimiento .mant-error { color: var(--ia-danger); }
.mod-mantenimiento .custom-control-label { color: var(--ia-text); }
/* ============================================================
   §76 — INDICADORES ECONÓMICOS (v2.1): franja de tarjetas en
   Inicio y página Datos Económicos. HTML: _comun/indicadores.php
   ============================================================ */
:is(.mod-inicio, .mod-dato_economico) .sc-ind { margin: 0 0 8px; }
:is(.mod-inicio, .mod-dato_economico) .sc-ind-mas {
    font-size: .8rem; font-weight: 500; color: var(--ia-muted);
    text-decoration: none; white-space: nowrap;
}
:is(.mod-inicio, .mod-dato_economico) .sc-ind-mas:hover { color: var(--ia-accent); text-decoration: none; }

:is(.mod-inicio, .mod-dato_economico) .sc-ind-franja {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 10px;
}
:is(.mod-inicio, .mod-dato_economico) .sc-ind-card {
    position: relative;
    display: flex; flex-direction: column;
    min-width: 0;
    padding: 12px 14px 10px;
    background: var(--ia-panel);
    border: 1px solid var(--ia-line);
    border-radius: var(--ia-radius);
    box-shadow: var(--ia-shadow);
}
:is(.mod-inicio, .mod-dato_economico) .sc-ind-n {
    color: var(--ia-muted);
    font-size: .76rem; font-weight: 600;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
:is(.mod-inicio, .mod-dato_economico) .sc-ind-v {
    color: var(--ia-text);
    font-size: 1.18rem; font-weight: 700;
    margin: 2px 0 4px;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
:is(.mod-inicio, .mod-dato_economico) .sc-ind-meta {
    display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 0 6px;
    font-size: .72rem;
}
:is(.mod-inicio, .mod-dato_economico) .sc-ind-var {
    font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums;
}
:is(.mod-inicio, .mod-dato_economico) .sc-ind-var i { font-size: .62rem; }
:is(.mod-inicio, .mod-dato_economico) .sc-ind-var.up   { color: var(--ia-success); }
:is(.mod-inicio, .mod-dato_economico) .sc-ind-var.down { color: var(--ia-danger); }
:is(.mod-inicio, .mod-dato_economico) .sc-ind-var.eq   { color: var(--ia-muted); }
:is(.mod-inicio, .mod-dato_economico) .sc-ind-f { color: var(--ia-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
:is(.mod-inicio, .mod-dato_economico) .sc-ind-spark {
    display: block; width: 100%; height: 26px; margin-top: 8px;
    color: var(--ia-accent); overflow: visible;
}
:is(.mod-inicio, .mod-dato_economico) .sc-ind-spark .l { fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linejoin: round; stroke-linecap: round; }
:is(.mod-inicio, .mod-dato_economico) .sc-ind-spark .a { fill: currentColor; opacity: .10; stroke: none; }
:is(.mod-inicio, .mod-dato_economico) .sc-ind-spark .p { fill: currentColor; }
:is(.mod-inicio, .mod-dato_economico) .sc-ind-pie {
    margin: 8px 2px 0; color: var(--ia-muted); font-size: .74rem;
}
:is(.mod-inicio, .mod-dato_economico) .sc-ind-antiguo { color: var(--ia-warn); }
:is(.mod-inicio, .mod-dato_economico) .sc-ind-vacio {
    display: flex; align-items: center; gap: 12px;
    padding: 16px;
    background: var(--ia-panel);
    border: 1px dashed var(--ia-line);
    border-radius: var(--ia-radius);
    color: var(--ia-muted); font-size: .86rem;
}
:is(.mod-inicio, .mod-dato_economico) .sc-ind-vacio > i { font-size: 1.4rem; opacity: .6; }
:is(.mod-inicio, .mod-dato_economico) .sc-ind-vacio strong { display: block; color: var(--ia-text); }

@media (min-width: 1200px) {
    /* las 7 tarjetas de Inicio en una sola fila */
    .mod-inicio .sc-ind-franja { grid-template-columns: repeat(7, minmax(0, 1fr)); }
    .mod-inicio .sc-ind-v { font-size: clamp(.98rem, 1.05vw, 1.18rem); }
}
@media (max-width: 575.98px) {
    :is(.mod-inicio, .mod-dato_economico) .sc-ind-franja { grid-template-columns: repeat(auto-fill, minmax(132px, 1fr)); gap: 8px; }
    .mod-inicio #inicio-app { padding: 14px 10px; }
    :is(.mod-inicio, .mod-dato_economico) .sc-ind-card { padding: 10px 11px 8px; }
    :is(.mod-inicio, .mod-dato_economico) .sc-ind-v { font-size: 1.02rem; }
    :is(.mod-inicio, .mod-dato_economico) .sc-ind-meta { flex-wrap: wrap; row-gap: 0; }
}

/* ---------- Página Datos Económicos: gráficos ---------- */
.mod-dato_economico .de-graficos {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr));
    gap: 14px; margin-top: 14px;
}
.mod-dato_economico .de-grafico { margin: 0; padding: 14px 16px; }
.mod-dato_economico .de-grafico-cab { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 4px 12px; margin-bottom: 8px; }
.mod-dato_economico .de-grafico-cab h3 { margin: 0; font-size: .95rem; font-weight: 600; color: var(--ia-text); }
.mod-dato_economico .de-grafico-cab span { color: var(--ia-muted); font-size: .76rem; }
.mod-dato_economico .de-lienzo { position: relative; height: 220px; }
.mod-dato_economico .de-rango { display: flex; flex-wrap: wrap; gap: 2px 18px; margin-top: 8px; color: var(--ia-muted); font-size: .78rem; }
.mod-dato_economico .de-rango span { white-space: nowrap; }
.mod-dato_economico .de-rango strong { color: var(--ia-text); font-variant-numeric: tabular-nums; }
/* ============================================================================
   §77 — DATOS GENERALES (home/index.php) — agente datos-generales v2.1
   Todo acotado con .mod-home. Colores solo con variables del tema.
   Series de gráficos: --dg-s1…s4 por tema (paleta categórica validada con el
   validador de la skill dataviz contra la superficie de cada tema:
   contraste ≥ 3:1, separación para daltonismo ΔE ≥ 8 entre vecinos).
     verde  (#1a212b): #0f9f8f #d95926 #9085e9 #c98500
     oscuro (#0d0e10): #3987e5 #d95926 #199e70 #c98500
     claro  (#ffffff): #00899c #eb6834 #6250d6 #c98500
   ============================================================================ */

.mod-home { --dg-s1: #0f9f8f; --dg-s2: #d95926; --dg-s3: #9085e9; --dg-s4: #c98500; }
:root[data-tema="oscuro"] .mod-home { --dg-s1: #3987e5; --dg-s2: #d95926; --dg-s3: #199e70; --dg-s4: #c98500; }
:root[data-tema="claro"]  .mod-home { --dg-s1: #00899c; --dg-s2: #eb6834; --dg-s3: #6250d6; --dg-s4: #c98500; }

/* Modo informe (botón "Informe PDF"): colores claros de impresión */
:root body.mod-home.dg-print {
    --ia-bg: #ffffff; --ia-panel: #ffffff; --ia-panel2: #f4f6f8; --ia-line: #d0d6dc; --ia-text: #111827; --ia-muted: #4b5563;
    --ia-accent: #0b6e7f; --ia-accent-rgb: 11 110 127; --ia-accent-d: #ffffff; --ia-overlay-rgb: 15 23 42;
    --ia-success: #13795b; --ia-danger: #c62828; --ia-warn: #a8620a; --ia-success-rgb: 19 121 91; --ia-danger-rgb: 198 40 40; --ia-warn-rgb: 168 98 10;
    --dg-s1: #00899c; --dg-s2: #eb6834; --dg-s3: #6250d6; --dg-s4: #c98500;
}

.mod-home .dg { max-width: 1680px; margin: 0 auto; padding: 0 4px 24px; color: var(--ia-text); }
.mod-home .dg *, .mod-home .dg *::before, .mod-home .dg *::after { box-sizing: border-box; }

/* ---------- Encabezado ---------- */
.mod-home .dg-cab { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 10px 16px; margin-bottom: 14px; }
.mod-home .dg-cab h1 { font-size: 1.45rem; margin: 0 0 2px; color: var(--ia-text); }
.mod-home .dg-contexto { margin: 0; color: var(--ia-muted); font-size: .9rem; }
.mod-home .dg-cab-a { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.mod-home .dg-generado { color: var(--ia-muted); font-size: .8rem; margin-right: 4px; }
.mod-home .dg-btn {
    background: var(--ia-panel); color: var(--ia-text); border: 1px solid var(--ia-line); border-radius: 6px;
    display: inline-flex; align-items: center; gap: 6px; font-weight: 500;
}
.mod-home .dg-btn:hover, .mod-home .dg-btn:focus-visible { border-color: var(--ia-accent); color: var(--ia-text); background: rgb(var(--ia-accent-rgb) / .08); }
.mod-home .dg-btn-p { background: var(--ia-accent); border-color: var(--ia-accent); color: var(--ia-accent-d); }
.mod-home .dg-btn-p:hover, .mod-home .dg-btn-p:focus-visible { background: var(--ia-accent-h); border-color: var(--ia-accent-h); color: var(--ia-accent-d); }

/* ---------- Filtros ---------- */
.mod-home .dg-filtros { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin-bottom: 4px; }
.mod-home .dg-seg { display: inline-flex; flex-wrap: wrap; background: var(--ia-panel); border: 1px solid var(--ia-line); border-radius: 8px; padding: 3px; gap: 2px; }
.mod-home .dg-seg button {
    border: 0; background: transparent; color: var(--ia-muted); font: inherit; font-size: .85rem; font-weight: 500;
    padding: 5px 11px; border-radius: 6px; cursor: pointer; white-space: nowrap;
}
.mod-home .dg-seg button:hover { color: var(--ia-text); background: rgb(var(--ia-overlay-rgb) / .06); }
.mod-home .dg-seg button[aria-checked="true"] { background: var(--ia-accent); color: var(--ia-accent-d); font-weight: 600; }
.mod-home .dg-seg button:focus-visible { outline: 2px solid var(--ia-accent); outline-offset: 1px; }
.mod-home .dg-rango { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.mod-home .dg-rango[hidden] { display: none; }
.mod-home .dg-rango label, .mod-home .dg-tec { display: inline-flex; align-items: center; gap: 6px; margin: 0; color: var(--ia-muted); font-size: .85rem; }
.mod-home .dg-rango input { width: 150px; }
.mod-home .dg-tec select { min-width: 200px; max-width: 280px; }
.mod-home .dg-filtros .form-control { background: var(--ia-input-bg); color: var(--ia-text); border: 1px solid var(--ia-line); }
.mod-home .dg-periodo { color: var(--ia-muted); font-size: .82rem; margin: 6px 0 4px; min-height: 1.2em; }
.mod-home .dg-error {
    display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 10px 0; padding: 10px 14px; border-radius: 8px;
    background: rgb(var(--ia-danger-rgb) / .10); border: 1px solid rgb(var(--ia-danger-rgb) / .35); color: var(--ia-text);
}
.mod-home .dg-error[hidden] { display: none; }
.mod-home .dg-error i { color: var(--ia-danger); }

/* ---------- Secciones ---------- */
.mod-home .dg-sec { font-size: 1.02rem; font-weight: 600; color: var(--ia-text); margin: 22px 0 10px; display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.mod-home .dg-sec small { color: var(--ia-muted); font-weight: 400; font-size: .8rem; }

/* ---------- KPIs ---------- */
.mod-home .dg-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.mod-home .dg-kpi {
    background: var(--ia-panel); border: 1px solid var(--ia-line); border-radius: var(--ia-radius); padding: 14px 16px;
    min-height: 116px; display: flex; flex-direction: column; gap: 4px; min-width: 0;
}
.mod-home .dg-kpi-etq { color: var(--ia-muted); font-size: .82rem; font-weight: 500; display: flex; align-items: center; gap: 7px; }
.mod-home .dg-kpi-etq i { color: var(--ia-accent); width: 14px; text-align: center; }
.mod-home .dg-kpi-val { font-size: 1.75rem; font-weight: 600; line-height: 1.15; color: var(--ia-text); letter-spacing: -.01em; }
.mod-home .dg-kpi-sub { color: var(--ia-muted); font-size: .78rem; line-height: 1.35; margin-top: auto; }
.mod-home .dg-delta { font-size: .78rem; display: flex; align-items: center; gap: 5px; flex-wrap: wrap; color: var(--ia-muted); }
.mod-home .dg-delta b { font-weight: 600; }
.mod-home .dg-delta span { color: var(--ia-muted); }
.mod-home .dg-delta.bien b, .mod-home .dg-delta.bien i { color: var(--ia-success); }
.mod-home .dg-delta.mal b, .mod-home .dg-delta.mal i { color: var(--ia-danger); }
.mod-home .dg-delta.neutro b, .mod-home .dg-delta.neutro i { color: var(--ia-text); }

/* ---------- Tarjetas ---------- */
.mod-home .dg-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.mod-home .dg-ancho { grid-column: 1 / -1; }
.mod-home .dg-grid-tec { grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); }
.mod-home #dg-ranking td:first-child, .mod-home #dg-ranking td:last-child { white-space: nowrap; }
.mod-home .dg-card {
    background: var(--ia-panel); border: 1px solid var(--ia-line); border-radius: var(--ia-radius);
    display: flex; flex-direction: column; min-width: 0; position: relative;
}
.mod-home .dg-card-h { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; padding: 14px 16px 6px; flex-wrap: wrap; }
.mod-home .dg-card-t { min-width: 0; flex: 1 1 260px; }
.mod-home .dg-card-t h3 { font-size: .98rem; font-weight: 600; margin: 0 0 2px; color: var(--ia-text); }
.mod-home .dg-card-s { margin: 0; color: var(--ia-muted); font-size: .78rem; line-height: 1.35; }
.mod-home .dg-card-a { display: flex; gap: 4px; align-items: center; flex-wrap: wrap; }
.mod-home .dg-ico {
    width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; border-radius: 6px;
    border: 1px solid transparent; background: transparent; color: var(--ia-muted); cursor: pointer;
}
.mod-home .dg-ico:hover, .mod-home .dg-ico:focus-visible { color: var(--ia-text); border-color: var(--ia-line); background: rgb(var(--ia-overlay-rgb) / .05); }
.mod-home .dg-ico[aria-pressed="true"] { color: var(--ia-accent); border-color: rgb(var(--ia-accent-rgb) / .5); background: rgb(var(--ia-accent-rgb) / .10); }
.mod-home .dg-card-b { padding: 6px 16px 14px; position: relative; flex: 1; min-width: 0; transition: opacity .2s; }
.mod-home .dg-lienzo { position: relative; height: var(--dg-alto, 280px); width: 100%; }
.mod-home .dg-print-img { display: none; }
.mod-home .dg-vacio {
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; text-align: center;
    color: var(--ia-muted); font-size: .88rem; padding: 34px 12px; min-height: 140px;
}
.mod-home .dg-vacio[hidden] { display: none; }
.mod-home .dg-vacio i { font-size: 1.5rem; opacity: .6; }
.mod-home .dg-tablaview[hidden] { display: none; }

/* Esqueleto (solo en la primera carga) y recarga (mantiene lo anterior atenuado) */
.mod-home .dg-esqueleto { display: none; }
.mod-home .dg[data-cargando] .dg-esqueleto {
    display: block; position: absolute; inset: 6px 16px 14px; border-radius: 6px; min-height: 120px;
    background: linear-gradient(90deg, rgb(var(--ia-overlay-rgb) / .04) 0%, rgb(var(--ia-overlay-rgb) / .10) 50%, rgb(var(--ia-overlay-rgb) / .04) 100%);
    background-size: 200% 100%; animation: dg-brillo 1.3s ease-in-out infinite;
}
.mod-home .dg[data-cargando] .dg-card-b { min-height: 180px; }
.mod-home .dg[data-cargando] .dg-lienzo, .mod-home .dg[data-cargando] .dg-vacio { visibility: hidden; }
.mod-home .dg-kpi.dg-sk {
    background: linear-gradient(90deg, var(--ia-panel) 0%, rgb(var(--ia-overlay-rgb) / .08) 50%, var(--ia-panel) 100%);
    background-size: 200% 100%; animation: dg-brillo 1.3s ease-in-out infinite;
}
.mod-home .dg[data-fallo] .dg-esqueleto, .mod-home .dg[data-fallo] .dg-kpi.dg-sk { animation: none; }
.mod-home .dg[data-recargando] .dg-card-b, .mod-home .dg[data-recargando] .dg-kpis { opacity: .5; pointer-events: none; }
@keyframes dg-brillo { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } }
@media (prefers-reduced-motion: reduce) {
    .mod-home .dg[data-cargando] .dg-esqueleto, .mod-home .dg-kpi.dg-sk { animation: none; }
}

/* ---------- Tablas ---------- */
.mod-home .dg-tabla-wrap { overflow-x: auto; max-width: 100%; -webkit-overflow-scrolling: touch; }
.mod-home .dg-tabla-alta { max-height: 520px; overflow-y: auto; }
.mod-home .dg-tabla { width: 100%; border-collapse: collapse; font-size: .84rem; color: var(--ia-text); }
.mod-home .dg-tabla th, .mod-home .dg-tabla td { padding: 7px 10px; border-bottom: 1px solid var(--ia-line); text-align: left; vertical-align: middle; }
.mod-home .dg-tabla thead th {
    color: var(--ia-muted); font-weight: 600; font-size: .78rem; background: var(--ia-panel2); white-space: nowrap;
    position: sticky; top: 0; z-index: 1;
}
.mod-home .dg-tabla tbody tr:hover td, .mod-home .dg-tabla tbody tr:hover th { background: rgb(var(--ia-overlay-rgb) / .04); }
.mod-home .dg-tabla .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.mod-home .dg-tabla td:first-child { font-weight: 500; }
.mod-home .dg-dias { display: inline-block; min-width: 34px; text-align: center; padding: 1px 7px; border-radius: 10px; font-weight: 600; font-size: .78rem; }
.mod-home .dg-dias.ok { background: rgb(var(--ia-success-rgb) / .14); color: var(--ia-success); }
.mod-home .dg-dias.warn { background: rgb(var(--ia-warn-rgb) / .16); color: var(--ia-warn); }
.mod-home .dg-dias.mal { background: rgb(var(--ia-danger-rgb) / .14); color: var(--ia-danger); }
.mod-home .dg-puntaje { display: inline-flex; align-items: center; gap: 8px; justify-content: flex-end; width: 100%; min-width: 110px; }
.mod-home .dg-puntaje-b { display: block; height: 8px; border-radius: 0 4px 4px 0; background: var(--dg-s2); max-width: 70px; flex: 0 0 auto; }
.mod-home .dg-puntaje b { min-width: 26px; text-align: right; }
.mod-home .dg-link { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.mod-home .dg-muted { color: var(--ia-muted); }
.mod-home .dg-solo-print { display: none; color: var(--ia-muted); font-size: .78rem; margin: 6px 0 0; }
.mod-home #dg-repetidas td:last-child { min-width: 200px; color: var(--ia-muted); }

/* Mapa de calor (un tono: el acento del tema, más intenso = más OT) */
.mod-home .dg-calor th[scope="row"] { font-weight: 500; white-space: nowrap; max-width: 220px; overflow: hidden; text-overflow: ellipsis; }
.mod-home .dg-calor td.dg-celda { min-width: 44px; text-align: center; background: rgb(var(--ia-accent-rgb) / var(--dg-a, 0)); border: 2px solid var(--ia-panel); border-radius: 4px; font-weight: 600; cursor: default; }
.mod-home .dg-calor td.dg-celda.cero { background: rgb(var(--ia-overlay-rgb) / .035); }
.mod-home .dg-calor td.dg-celda.fuerte { color: var(--ia-accent-d); }
.mod-home .dg-calor td.dg-celda:hover, .mod-home .dg-calor td.dg-celda:focus-visible { outline: 2px solid var(--ia-text); outline-offset: -2px; }
.mod-home .dg-calor td.dg-total { font-weight: 600; }
.mod-home .dg-calor tbody tr:hover td.dg-celda { filter: brightness(1.05); }
.mod-home .dg-escala { display: flex; align-items: center; gap: 8px; justify-content: flex-end; color: var(--ia-muted); font-size: .75rem; margin-top: 8px; }
.mod-home .dg-escala i { display: block; width: 140px; height: 8px; border-radius: 4px; background: linear-gradient(90deg, rgb(var(--ia-accent-rgb) / .12), rgb(var(--ia-accent-rgb) / .9)); }

/* Tooltip propio (mapa de calor) */
.mod-home .dg-tooltip {
    position: fixed; z-index: 1080; pointer-events: none; background: var(--ia-panel2); color: var(--ia-text);
    border: 1px solid var(--ia-line); border-radius: 6px; padding: 7px 10px; box-shadow: var(--ia-shadow); font-size: .8rem;
    display: flex; flex-direction: column; gap: 2px; max-width: 260px;
}
.mod-home .dg-tooltip[hidden] { display: none; }
.mod-home .dg-tooltip b { font-size: .95rem; }
.mod-home .dg-tooltip span { color: var(--ia-muted); }

/* Listas de trabajo (pestañas) */
.mod-home .dg-tabs { display: flex; flex-wrap: wrap; gap: 4px; }
.mod-home .dg-tabs button {
    border: 1px solid transparent; background: transparent; color: var(--ia-muted); font: inherit; font-size: .88rem; font-weight: 500;
    padding: 6px 12px; border-radius: 6px; cursor: pointer; display: inline-flex; align-items: center; gap: 7px;
}
.mod-home .dg-tabs button:hover { color: var(--ia-text); background: rgb(var(--ia-overlay-rgb) / .05); }
.mod-home .dg-tabs button[aria-selected="true"] { color: var(--ia-text); border-color: var(--ia-line); background: var(--ia-panel2); font-weight: 600; }
.mod-home .dg-pill { background: var(--ia-chip); color: var(--ia-text); border-radius: 10px; padding: 0 7px; font-size: .74rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.mod-home .dg-buscar { width: 220px; background: var(--ia-input-bg); color: var(--ia-text); border: 1px solid var(--ia-line); }
.mod-home .dg-notas { color: var(--ia-muted); font-size: .78rem; margin: 18px 2px 0; line-height: 1.5; }

/* ---------- Responsivo ---------- */
@media (max-width: 1199.98px) {
    .mod-home .dg-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .mod-home .dg-kpis-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 991.98px) {
    .mod-home .dg-grid, .mod-home .dg-grid-tec { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 575.98px) {
    .mod-home .dg { padding: 0 12px 16px; }
    .mod-home .dg-tabla { min-width: 600px; }
    .mod-home #dg-ranking .dg-tabla { min-width: 680px; }
    .mod-home .dg-tabla td, .mod-home .dg-tabla th { white-space: nowrap; }
    .mod-home #dg-repetidas td:last-child, .mod-home #dg-lista td { white-space: normal; }
    .mod-home .dg-cab h1 { font-size: 1.25rem; }
    .mod-home .dg-cab-a { width: 100%; }
    .mod-home .dg-generado { width: 100%; }
    .mod-home .dg-kpis { gap: 8px; }
    .mod-home .dg-kpi { padding: 11px 12px; min-height: 104px; }
    .mod-home .dg-kpi-val { font-size: 1.35rem; }
    .mod-home .dg-kpi-etq { font-size: .76rem; }
    .mod-home .dg-delta span { display: none; }
    .mod-home .dg-seg { width: 100%; }
    .mod-home .dg-seg button { flex: 1 1 auto; padding: 5px 8px; font-size: .8rem; }
    .mod-home .dg-tec { width: 100%; }
    .mod-home .dg-tec select { flex: 1; min-width: 0; max-width: none; }
    .mod-home .dg-rango label { flex: 1 1 140px; }
    .mod-home .dg-rango input { width: 100%; }
    .mod-home .dg-card-h { padding: 12px 12px 4px; }
    .mod-home .dg-card-b { padding: 4px 12px 12px; }
    .mod-home .dg[data-cargando] .dg-esqueleto { inset: 4px 12px 12px; }
    .mod-home .dg-buscar { width: 100%; flex: 1 1 160px; }
    .mod-home .dg-listas .dg-card-a { width: 100%; }
}

/* ---------- Impresión (botón "Informe PDF") ---------- */
@media print {
    @page { size: A4 portrait; margin: 12mm; }
    html:has(body.mod-home), body#page-top.mod-home, body.mod-home, .mod-home #wrapper, .mod-home #content-wrapper, .mod-home #content { background: #ffffff !important; }
    html:has(body.mod-home) { color-scheme: light !important; }
    .mod-home .dg-grid.dg-grid-tec { grid-template-columns: minmax(0, 1fr); }
    .mod-home #dg-lista tbody tr:nth-child(n+41) { display: none; }
    .mod-home .dg-solo-print { display: block !important; }
    .mod-home .container-fluid { padding: 0 !important; }
    .mod-home .dg-cab-a, .mod-home .dg-filtros, .mod-home .dg-card-a, .mod-home .dg-error, .mod-home .dg-tooltip, .mod-home .sc-mant-banner { display: none !important; }
    .mod-home .dg { max-width: none; padding: 0; }
    .mod-home .dg-periodo { color: #111827; font-size: 9pt; }
    .mod-home .dg-kpis, .mod-home .dg-kpis-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
    .mod-home .dg-kpi { min-height: 0; padding: 8px 10px; break-inside: avoid; }
    .mod-home .dg-kpi-val { font-size: 15pt; }
    .mod-home .dg-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
    .mod-home .dg-card { break-inside: avoid; box-shadow: none; }
    .mod-home .dg-sec { break-after: avoid; margin-top: 12px; }
    .mod-home.dg-print .dg-lienzo { height: auto !important; }
    .mod-home.dg-print .dg-lienzo canvas { display: none !important; }
    .mod-home.dg-print .dg-print-img { display: block; max-width: 100%; width: auto; height: auto; margin: 0 auto; }
    .mod-home .dg-tabla { font-size: 8pt; }
    .mod-home .dg-tabla thead th { position: static; }
    .mod-home .dg-tabla-alta { max-height: none; overflow: visible; }
    .mod-home .dg-tabla-wrap { overflow: visible; }
    .mod-home .dg-listas { break-before: page; }
    .mod-home .dg-calor td.dg-celda { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
    .mod-home .dg-dias, .mod-home .dg-puntaje-b { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}
/* ============================================================
   §77 — PERFILES, "CAMBIAR MI CLAVE" Y AVISOS DE MEDIOS (v2.1)
   · .mod-perfiles             → perfiles/index.php
   · .mod-registrar (pf-*)     → bloque de perfil en Usuarios
   · #modalMiClave             → modal común de todas las páginas
   · .sc-medios-aviso          → aviso "Foto reducida…" (assets/js/medios.js)
   ============================================================ */

/* ---------- Página Perfiles: base igual a los módulos generales ---------- */
.mod-perfiles {
    --bg: var(--ia-input-bg); --panel: var(--ia-panel); --panel2: var(--ia-panel2); --line: var(--ia-line);
    --text: var(--ia-text); --muted: var(--ia-muted); --accent: var(--ia-accent);
}
.mod-perfiles .mg-cabecera { display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: 12px; margin-bottom: 8px; }
.mod-perfiles .mg-cabecera .sub { margin-bottom: 6px; max-width: 760px; }
.mod-perfiles .mg-acciones { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.mod-perfiles .mg-acciones .btn { font-size: .9rem; padding: 8px 14px; font-weight: 600; }
.mod-perfiles .ia-modal label { color: var(--ia-muted); font-size: .8rem; font-weight: 600; margin-bottom: 4px; }

/* Tarjetas de perfil */
.mod-perfiles .pf-grilla { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; align-items: stretch; }
.mod-perfiles .pf-cargando { color: var(--ia-muted); padding: 20px; }
.mod-perfiles .pf-tarjeta {
    --pf-c: var(--pf-color, var(--ia-accent));
    display: flex; flex-direction: column; gap: 10px;
    background: var(--ia-panel); border: 1px solid var(--ia-line); border-top: 4px solid var(--pf-c);
    border-radius: var(--ia-radius); padding: 16px; box-shadow: var(--ia-shadow);
}
.mod-perfiles .pf-tarjeta.pf-personal { --pf-c: var(--ia-muted); border-top-style: dashed; background: var(--ia-panel2); }
.mod-perfiles .pf-tarjeta header { display: flex; gap: 12px; align-items: center; }
.mod-perfiles .pf-tarjeta h3 { font-size: 1.08rem; margin: 0; color: var(--ia-text); font-weight: 600; }
.mod-perfiles .pf-icono {
    flex: 0 0 auto; width: 42px; height: 42px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center;
    background: color-mix(in srgb, var(--pf-c) 16%, transparent); color: var(--pf-c); font-size: 1.15rem;
}
.mod-perfiles .pf-meta { margin: 2px 0 0; color: var(--ia-muted); font-size: .82rem; }
.mod-perfiles .pf-desc { margin: 0; color: var(--ia-text); font-size: .88rem; line-height: 1.45; }
.mod-perfiles .pf-desc a { color: var(--ia-accent); }
.mod-perfiles .pf-secs { display: flex; flex-wrap: wrap; gap: 6px; }
.mod-perfiles .pf-sec {
    font-size: .78rem; padding: 3px 9px; border-radius: 12px; color: var(--ia-text);
    background: var(--ia-chip, var(--ia-panel2)); border: 1px solid var(--ia-line);
}
.mod-perfiles .pf-sec b { color: var(--ia-muted); font-weight: 500; margin-left: 2px; }
.mod-perfiles .pf-usuarios small { display: block; color: var(--ia-muted); font-size: .74rem; font-weight: 600; margin-bottom: 4px; }
.mod-perfiles .pf-usuarios > div { display: flex; flex-wrap: wrap; gap: 5px; }
.mod-perfiles .pf-chip {
    font-size: .78rem; padding: 2px 8px; border-radius: 10px; color: var(--ia-text);
    background: color-mix(in srgb, var(--pf-c) 12%, transparent); border: 1px solid color-mix(in srgb, var(--pf-c) 35%, transparent);
}
.mod-perfiles .pf-chip.pf-inactivo { opacity: .55; text-decoration: line-through; }
.mod-perfiles .pf-chip.pf-mas { background: var(--ia-panel2); border-color: var(--ia-line); color: var(--ia-muted); }
.mod-perfiles .pf-sin { color: var(--ia-muted); font-size: .82rem; font-style: italic; }
.mod-perfiles .pf-tarjeta footer { margin-top: auto; display: flex; gap: 6px; flex-wrap: wrap; padding-top: 6px; border-top: 1px solid var(--ia-line); }

/* Editor: ícono, color, "todas las páginas" */
.mod-perfiles .pf-iconos { display: flex; flex-wrap: wrap; gap: 4px; }
.mod-perfiles .pf-icono-op {
    width: 34px; height: 34px; border-radius: 8px; border: 1px solid var(--ia-line); background: var(--ia-input-bg);
    color: var(--ia-muted); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; padding: 0;
}
.mod-perfiles .pf-icono-op:hover { color: var(--ia-accent); border-color: var(--ia-accent); }
.mod-perfiles .pf-icono-op.activo { background: var(--ia-accent); border-color: var(--ia-accent); color: var(--ia-accent-d); }
.mod-perfiles .pf-color { padding: 2px 4px; height: 38px; cursor: pointer; }
.mod-perfiles .pf-todos { margin: 4px 0 12px; padding: 10px 12px; border-radius: 8px; background: rgb(var(--ia-accent-rgb) / .08); border: 1px solid rgb(var(--ia-accent-rgb) / .3); }
.mod-perfiles .ia-modal .pf-switch,
.mod-perfiles .pf-switch { display: flex; gap: 10px; align-items: flex-start; margin: 0; cursor: pointer; color: var(--ia-text); font-size: .9rem; font-weight: 400; text-transform: none; letter-spacing: 0; }
.mod-perfiles .pf-switch input { margin-top: 4px; }
.mod-perfiles .pf-switch strong { color: var(--ia-accent); }
.mod-perfiles .pf-deshabilitado { opacity: .45; pointer-events: none; }

/* ---------- Casillas por sección (perfiles + usuarios) ---------- */
:is(.mod-perfiles, .mod-registrar) .pf-barra {
    display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap;
    margin-bottom: 10px; color: var(--ia-muted); font-size: .85rem;
}
:is(.mod-perfiles, .mod-registrar) .pf-barra strong { color: var(--ia-accent); }
:is(.mod-perfiles, .mod-registrar) .pf-barra-acciones { display: inline-flex; gap: 6px; }
:is(.mod-perfiles, .mod-registrar) .pf-secciones { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; align-items: start; }
:is(.mod-perfiles, .mod-registrar) .pf-secciones.pf-compacta { max-height: 360px; overflow: auto; padding-right: 4px; }
:is(.mod-perfiles, .mod-registrar) .pf-seccion { background: var(--ia-panel); border: 1px solid var(--ia-line); border-radius: 8px; overflow: hidden; }
:is(.mod-perfiles, .mod-registrar) .pf-seccion.pf-activa { border-color: rgb(var(--ia-accent-rgb) / .55); }
:is(.mod-perfiles, .mod-registrar) .ia-modal .pf-sec-titulo,
:is(.mod-perfiles, .mod-registrar) .pf-sec-titulo {
    display: flex; align-items: center; gap: 8px; padding: 8px 12px; margin: 0; cursor: pointer;
    background: var(--ia-panel2); color: var(--ia-text); font-weight: 600; font-size: .88rem;
    text-transform: none; letter-spacing: 0;
}
:is(.mod-perfiles, .mod-registrar) .pf-seccion.pf-activa .pf-sec-titulo { color: var(--ia-accent); }
:is(.mod-perfiles, .mod-registrar) .pf-sec-titulo input { margin: 0; }
:is(.mod-perfiles, .mod-registrar) .pf-sec-cuenta { margin-left: auto; color: var(--ia-muted); font-weight: 400; font-size: .74rem; }
:is(.mod-perfiles, .mod-registrar) .pf-seccion ul { list-style: none; margin: 0; padding: 6px 12px 8px; border-top: 1px solid var(--ia-line); }
:is(.mod-perfiles, .mod-registrar) .ia-modal .pf-seccion li label,
:is(.mod-perfiles, .mod-registrar) .pf-seccion li label {
    display: flex; align-items: center; gap: 8px; margin: 3px 0; cursor: pointer;
    color: var(--ia-text); font-weight: 400; font-size: .85rem; text-transform: none; letter-spacing: 0;
}

/* Insignia de perfil (tabla de usuarios y resumen) */
.mod-registrar .pf-insignia {
    --pf-c: var(--pf-color, var(--ia-accent));
    display: inline-flex; align-items: center; gap: 5px; white-space: nowrap;
    font-size: .8rem; font-weight: 600; padding: 2px 9px; border-radius: 12px;
    color: var(--ia-text); background: color-mix(in srgb, var(--pf-c) 14%, transparent); border: 1px solid color-mix(in srgb, var(--pf-c) 40%, transparent);
}
.mod-registrar .pf-insignia i { color: var(--pf-c); }
.mod-registrar .pf-insignia.pf-personal { --pf-c: var(--ia-muted); border-style: dashed; }
.mod-registrar .pf-bloque {
    border: 1px solid var(--ia-line); border-radius: 10px; padding: 12px 14px 6px; margin: 4px 0 14px;
    background: var(--ia-panel2);
}
.mod-registrar .pf-bloque legend {
    width: auto; padding: 0 6px; margin: 0; font-size: .9rem; font-weight: 600; color: var(--ia-accent);
}
.mod-registrar .pf-resumen { margin: -4px 0 10px; font-size: .86rem; color: var(--ia-text); line-height: 1.6; }
.mod-registrar .pf-resumen-txt { color: var(--ia-text); }
.mod-registrar .pf-bloque .pf-secciones { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }

/* ---------- "Cambiar mi clave" (todas las páginas) ---------- */
#modalMiClave .modal-dialog { max-width: 460px; }
#modalMiClave label { color: var(--ia-muted); font-size: .8rem; font-weight: 600; margin-bottom: 4px; }
.mod-perfiles .pf-sec-cuenta { text-transform: none; }
#modalMiClave .form-control { background: var(--ia-input-bg); color: var(--ia-text); border: 1px solid var(--ia-line); }
#modalMiClave .form-control:focus { border-color: var(--ia-accent); box-shadow: 0 0 0 3px rgb(var(--ia-accent-rgb) / .2); }
#modalMiClave .mc-campo { position: relative; }
#modalMiClave .mc-campo .form-control { padding-right: 42px; }
#modalMiClave .mc-ojo {
    position: absolute; top: 0; right: 0; height: 100%; width: 40px; border: 0; background: transparent;
    color: var(--ia-muted); cursor: pointer; display: inline-flex; align-items: center; justify-content: center;
}
#modalMiClave .mc-ojo:hover, #modalMiClave .mc-ojo:focus { color: var(--ia-accent); outline: none; }
#modalMiClave .mc-medidor { display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px; margin: 8px 0 4px; }
#modalMiClave .mc-medidor span { height: 6px; border-radius: 3px; background: var(--ia-line); transition: background .2s; }
#modalMiClave .mc-medidor[data-nivel="1"] span:nth-child(-n+1) { background: var(--ia-danger); }
#modalMiClave .mc-medidor[data-nivel="2"] span:nth-child(-n+2) { background: var(--ia-warn); }
#modalMiClave .mc-medidor[data-nivel="3"] span:nth-child(-n+3) { background: var(--ia-success); }
#modalMiClave .mc-medidor[data-nivel="4"] span { background: var(--ia-success); }
#modalMiClave .mc-nivel { font-size: .82rem; color: var(--ia-muted); min-height: 1.2em; }
#modalMiClave .mc-nivel[data-nivel="1"] { color: var(--ia-danger); }
#modalMiClave .mc-nivel[data-nivel="2"] { color: var(--ia-warn); }
#modalMiClave .mc-nivel[data-nivel="3"], #modalMiClave .mc-nivel[data-nivel="4"] { color: var(--ia-success); }
#modalMiClave .mc-reglas { list-style: none; padding: 0; margin: 6px 0 0; display: grid; grid-template-columns: 1fr 1fr; gap: 2px 10px; }
#modalMiClave .mc-reglas li { font-size: .78rem; color: var(--ia-muted); display: flex; align-items: center; gap: 6px; }
#modalMiClave .mc-reglas li i { font-size: .55rem; }
#modalMiClave .mc-reglas li.ok { color: var(--ia-success); }
#modalMiClave .mc-reglas li.ok i { font-size: .8rem; }
#modalMiClave .mc-igual { font-size: .8rem; min-height: 1.2em; margin-top: 4px; }
#modalMiClave .mc-igual.ok { color: var(--ia-success); }
#modalMiClave .mc-igual.mal { color: var(--ia-danger); }
#modalMiClave .mc-aviso {
    display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; margin-bottom: 14px; border-radius: 8px;
    background: rgb(var(--ia-warn-rgb) / .12); border: 1px solid rgb(var(--ia-warn-rgb) / .45);
}
#modalMiClave .mc-aviso i { color: var(--ia-warn); font-size: 1.1rem; margin-top: 2px; }
#modalMiClave .mc-aviso p { margin: 0; font-size: .86rem; }
#modalMiClave .mc-aviso strong { color: var(--ia-text); }
@media (max-width: 420px) { #modalMiClave .mc-reglas { grid-template-columns: 1fr; } }

/* ---------- Aviso de medios ("Foto reducida de 6,2 MB a 780 KB") ---------- */
.sc-medios-avisos { position: fixed; right: 16px; bottom: 16px; z-index: 2000; display: flex; flex-direction: column; gap: 8px; max-width: min(380px, calc(100vw - 32px)); pointer-events: none; }
.sc-medios-aviso {
    pointer-events: auto; display: flex; gap: 10px; align-items: flex-start; padding: 10px 14px; border-radius: 10px;
    background: var(--ia-panel); color: var(--ia-text); border: 1px solid var(--ia-line); border-left: 4px solid var(--ia-success);
    box-shadow: var(--ia-shadow-lg, var(--ia-shadow)); font-size: .86rem; line-height: 1.4;
    animation: sc-medios-entrar .25s ease-out;
}
.sc-medios-aviso i { color: var(--ia-success); margin-top: 2px; }
.sc-medios-aviso.sc-medios-info { border-left-color: var(--ia-info); }
.sc-medios-aviso.sc-medios-info i { color: var(--ia-info); }
.sc-medios-aviso.sc-medios-error { border-left-color: var(--ia-danger); }
.sc-medios-aviso.sc-medios-error i { color: var(--ia-danger); }
.sc-medios-aviso b { color: var(--ia-text); }
.sc-medios-aviso small { display: block; color: var(--ia-muted); }
.sc-medios-aviso.sc-medios-salir { opacity: 0; transform: translateY(6px); transition: opacity .3s, transform .3s; }
@keyframes sc-medios-entrar { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
/* =============================================================================
   v2.4 — Restauración de pantallas originales (agente auditoria-ordenes)
   Todo acotado con .mod-<carpeta>. Colores del tema salvo los colores de estado
   de fila de Órdenes, que son los del original (fondo pastel + texto oscuro).
   ============================================================================= */

/* ---- Datos Generales: vista original "Control de Servicio Acuícola" ---- */
.mod-home #dash-app { margin-top: 0; }
.mod-home #dash-app .grid-graficos { grid-template-columns: minmax(0, 1fr); }
@media (min-width: 992px) {
  .mod-home #dash-app .grid-graficos { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}
.mod-home #dash-app .grafico-card { min-width: 0; }

.mod-home #dash-app .tabla-wrap { max-height: 520px; overflow: auto; }
.mod-home #dash-app + .dg { margin-top: 26px; }
.mod-home #dash-app .stat .label i { margin-right: 4px; }

/* ---- Órdenes iniciadas / aprobadas: color de fila como el original ----
   ordenes:  0 Iniciada #f2838d · 1 Aprobada #f9cc44 · 2 Cotizada #58ef7b
   ordenes2: 1 Aprobada #59fa59 · 2 Cotizada #4cd1fa
   Se redefinen las variables --ot-* de _62 (leyenda y contadores las usan)
   y la fila se pinta entera con texto oscuro, como en el original.        */
.mod-ordenes {
  --ot-iniciada: #60a5fa; --ot-iniciada-rgb: 96 165 250;
  --ot-aprobada: #eb8720; --ot-aprobada-rgb: 248 113 113;
  --ot-cotizada: #58ef7b; --ot-cotizada-rgb: 235 135 32;
}
.mod-ordenes2 {
  --ot-aprobada: #59fa59; --ot-aprobada-rgb: 89 250 89;
  --ot-cotizada: #4cd1fa; --ot-cotizada-rgb: 76 209 250;
}
:is(.mod-ordenes, .mod-ordenes2) table.dataTable tbody tr:is(.ot-fila-iniciada, .ot-fila-aprobada, .ot-fila-cotizada) > td,
:is(.mod-ordenes, .mod-ordenes2) table.dataTable tbody tr:is(.ot-fila-iniciada, .ot-fila-aprobada, .ot-fila-cotizada) + tr.child > td {
  color: #1b2631 !important;
  box-shadow: none !important;
  border-color: rgb(0 0 0 / .12) !important;
}
:is(.mod-ordenes, .mod-ordenes2) table.dataTable tbody tr.ot-fila-iniciada > td,
:is(.mod-ordenes, .mod-ordenes2) table.dataTable tbody tr.ot-fila-iniciada + tr.child > td { background-color: var(--ot-iniciada) !important; }
:is(.mod-ordenes, .mod-ordenes2) table.dataTable tbody tr.ot-fila-aprobada > td,
:is(.mod-ordenes, .mod-ordenes2) table.dataTable tbody tr.ot-fila-aprobada + tr.child > td { background-color: var(--ot-aprobada) !important; }
:is(.mod-ordenes, .mod-ordenes2) table.dataTable tbody tr.ot-fila-cotizada > td,
:is(.mod-ordenes, .mod-ordenes2) table.dataTable tbody tr.ot-fila-cotizada + tr.child > td { background-color: var(--ot-cotizada) !important; }
/* v2.5: el oscurecido al pasar el mouse se hace con sombra interior. Antes era filter:brightness,
   que convierte la celda en contenedor del menú ⋮ y lo mandaba fuera de la pantalla ("no abre"). */
:is(.mod-ordenes, .mod-ordenes2) table.dataTable tbody tr:is(.ot-fila-iniciada, .ot-fila-aprobada, .ot-fila-cotizada):hover > td { box-shadow: inset 0 0 0 9999px rgba(0,0,0,.06); }
:is(.mod-ordenes, .mod-ordenes2) table.dataTable tbody tr:is(.ot-fila-iniciada, .ot-fila-aprobada, .ot-fila-cotizada) > td :is(.ot-trigger, .btn-transparent-dark, .btn-datatable, .btn-transparent-dark i, .btn-datatable i, .btn-datatable svg) { color: #1b2631 !important; }
:is(.mod-ordenes, .mod-ordenes2) table.dataTable tbody tr:is(.ot-fila-iniciada, .ot-fila-aprobada, .ot-fila-cotizada) > td .dropdown-menu :is(a, a i, a svg) { color: var(--ia-text) !important; }
:is(.mod-ordenes, .mod-ordenes2) table.dataTable tbody tr:is(.ot-fila-iniciada, .ot-fila-aprobada, .ot-fila-cotizada) > td .dropdown-menu a.text-danger { color: var(--ia-danger) !important; }
:is(.mod-ordenes, .mod-ordenes2) .ley-muestra:is(.iniciada, .aprobada, .cotizada) { border-left-width: 0 !important; }
.mod-ordenes .ley-muestra.iniciada, .mod-ordenes2 .ley-muestra.iniciada { background: var(--ot-iniciada) !important; }
:is(.mod-ordenes, .mod-ordenes2) .ley-muestra.aprobada { background: var(--ot-aprobada) !important; }
:is(.mod-ordenes, .mod-ordenes2) .ley-muestra.cotizada { background: var(--ot-cotizada) !important; }

/* ---- Inicio: la franja suma IVP y Desempleo (estaban en la cinta original) ---- */
@media (min-width: 1200px) {
  .mod-inicio .sc-ind-franja { grid-template-columns: repeat(auto-fill, minmax(145px, 1fr)); }
}
@media (min-width: 1700px) {
  .mod-inicio .sc-ind-franja { grid-template-columns: repeat(9, minmax(0, 1fr)); }
}
/* Insignias (Activa, Sitio con pendientes…) legibles sobre la fila pintada */
:is(.mod-ordenes, .mod-ordenes2) table.dataTable tbody tr:is(.ot-fila-iniciada, .ot-fila-aprobada, .ot-fila-cotizada) > td .badge:is(.badge-success, .badge-secondary, .badge-light) {
  background: rgb(0 0 0 / .16) !important; color: #10231c !important; border-color: transparent !important;
}
.mod-home #dash-app .grafico-canvas-wrap { height: auto; min-height: 0; max-height: 560px; overflow-y: auto; }
.mod-home #dash-app .rs-lienzo { position: relative; height: 340px; }
/* ============================================================================
   ORTOGRAFÍA (v2.1) — componente común del corrector (assets/js/ortografia.js)
   Se usa en cualquier módulo con data-ortografia="revisar"; todos los
   selectores van bajo .sc-orto. Solo variables del tema.
   ============================================================================ */
.sc-orto { margin-top: .4rem; font-size: .84rem; }
.sc-orto-barra { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; }

/* Botón "Revisar ortografía" y estado: píldoras discretas */
.sc-orto .sc-orto-btn,
.sc-orto .sc-orto-estado {
    display: inline-flex; align-items: center; gap: .4rem;
    min-height: 28px; padding: .15rem .7rem;
    border-radius: 999px; border: 1px solid var(--ia-line);
    background: transparent; color: var(--ia-muted);
    font: inherit; font-size: .78rem; font-weight: 500; line-height: 1.2;
    cursor: pointer; transition: color .15s, border-color .15s, background-color .15s;
}
.sc-orto .sc-orto-btn i, .sc-orto .sc-orto-estado i { font-size: .85em; color: inherit; }
.sc-orto .sc-orto-btn:hover { color: var(--ia-accent); border-color: var(--ia-accent); background: rgb(var(--ia-accent-rgb) / .06); }
.sc-orto .sc-orto-btn:focus-visible, .sc-orto button:focus-visible { outline: 2px solid var(--ia-accent); outline-offset: 2px; }
.sc-orto .sc-orto-estado[disabled] { cursor: default; }
.sc-orto .sc-orto-estado.es-neutro { color: var(--ia-muted); border-style: dashed; }
.sc-orto .sc-orto-estado.es-ok     { color: var(--ia-success); border-color: rgb(var(--ia-success-rgb) / .45); background: rgb(var(--ia-success-rgb) / .08); }
.sc-orto .sc-orto-estado.es-aviso  { color: var(--ia-warn); border-color: rgb(var(--ia-warn-rgb) / .55); background: rgb(var(--ia-warn-rgb) / .12); font-weight: 600; }
.sc-orto .sc-orto-estado.es-aviso:hover { background: rgb(var(--ia-warn-rgb) / .2); }
.sc-orto .sc-orto-estado.es-error  { color: var(--ia-danger); border-color: rgb(var(--ia-danger-rgb) / .45); background: rgb(var(--ia-danger-rgb) / .08); }

/* Panel de sugerencias */
.sc-orto-panel {
    margin-top: .45rem;
    border: 1px solid var(--ia-line); border-radius: 10px;
    background: var(--ia-panel2); color: var(--ia-text);
    box-shadow: var(--ia-shadow);
    max-height: 340px; overflow: auto; overscroll-behavior: contain;
}
.sc-orto-panel[hidden] { display: none; }
.sc-orto-cab {
    position: sticky; top: 0; z-index: 1;
    display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .4rem;
    padding: .5rem .5rem .5rem .8rem;
    background: var(--ia-panel2); border-bottom: 1px solid var(--ia-line);
}
.sc-orto-cab strong { font-size: .84rem; font-weight: 600; color: var(--ia-text); }
.sc-orto-cab-acc { display: inline-flex; align-items: center; gap: .35rem; margin-left: auto; }
.sc-orto .sc-orto-todo {
    display: inline-flex; align-items: center; gap: .4rem;
    min-height: 30px; padding: .2rem .75rem; border-radius: 7px;
    border: 1px solid rgb(var(--ia-accent-rgb) / .4); background: rgb(var(--ia-accent-rgb) / .12);
    color: var(--ia-accent); font: inherit; font-size: .8rem; font-weight: 600; cursor: pointer;
}
.sc-orto .sc-orto-todo:hover { background: var(--ia-accent); color: var(--ia-accent-d); border-color: var(--ia-accent); }
.sc-orto .sc-orto-todo i { color: inherit; }
.sc-orto .sc-orto-cerrar {
    width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center;
    border: 0; border-radius: 7px; background: transparent; color: var(--ia-muted); cursor: pointer;
}
.sc-orto .sc-orto-cerrar:hover { background: rgb(var(--ia-overlay-rgb) / .08); color: var(--ia-text); }

.sc-orto-aviso {
    display: flex; gap: .45rem; align-items: flex-start;
    margin: .5rem .7rem 0; padding: .45rem .6rem; border-radius: 7px;
    background: rgb(var(--ia-info-rgb) / .12); color: var(--ia-text); font-size: .78rem;
}
.sc-orto-aviso i { color: var(--ia-info); margin-top: .15em; }

.sc-orto-lista { list-style: none; margin: 0; padding: .3rem 0; }
.sc-orto-item {
    margin: .3rem .5rem; padding: .5rem .65rem;
    border-radius: 8px; border-left: 3px solid var(--ia-danger);
    background: var(--ia-panel);
}
.sc-orto-item.t-mayuscula  { border-left-color: var(--ia-info); }
.sc-orto-item.t-gramatica  { border-left-color: var(--ia-warn); }
.sc-orto-item.t-puntuacion { border-left-color: var(--ia-muted); }
.sc-orto-item.t-propia     { border-left-color: var(--ia-accent); }
.sc-orto-ctx { font-size: .86rem; line-height: 1.55; color: var(--ia-text); overflow-wrap: anywhere; }
.sc-orto-ctx .sc-orto-mal {
    padding: 0 .1em; border-radius: 3px;
    background: rgb(var(--ia-danger-rgb) / .12); color: inherit;
    text-decoration: underline wavy var(--ia-danger); text-decoration-thickness: 1px; text-underline-offset: 3px;
}
.sc-orto-msg { margin-top: .2rem; font-size: .76rem; color: var(--ia-muted); display: flex; flex-wrap: wrap; gap: .1rem .45rem; align-items: baseline; }
.sc-orto-tipo { font-weight: 600; color: var(--ia-text); opacity: .8; }
.sc-orto-acciones { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; margin-top: .45rem; }
.sc-orto .sc-orto-sug {
    min-height: 30px; padding: .15rem .65rem; border-radius: 7px;
    border: 1px solid var(--ia-accent); background: var(--ia-accent); color: var(--ia-accent-d);
    font: inherit; font-size: .84rem; font-weight: 600; cursor: pointer;
}
.sc-orto .sc-orto-sug:hover { background: var(--ia-accent-h); border-color: var(--ia-accent-h); }
.sc-orto .sc-orto-sug + .sc-orto-sug { background: transparent; color: var(--ia-accent); }
.sc-orto .sc-orto-sug + .sc-orto-sug:hover { background: rgb(var(--ia-accent-rgb) / .12); }
.sc-orto .sc-orto-link {
    display: inline-flex; align-items: center; gap: .35rem;
    min-height: 30px; padding: .15rem .55rem; border-radius: 7px;
    border: 1px solid transparent; background: transparent; color: var(--ia-muted);
    font: inherit; font-size: .78rem; cursor: pointer;
}
.sc-orto .sc-orto-link i { color: inherit; }
.sc-orto .sc-orto-link:hover { color: var(--ia-text); border-color: var(--ia-line); background: rgb(var(--ia-overlay-rgb) / .05); }
.sc-orto .sc-orto-link[disabled] { opacity: .5; cursor: wait; }
.sc-orto-sin { font-size: .78rem; color: var(--ia-muted); font-style: italic; }

.sc-orto-toast {
    display: flex; gap: .45rem; align-items: center;
    margin-top: .4rem; padding: .4rem .65rem; border-radius: 7px; font-size: .8rem;
    animation: sc-orto-entra .2s ease-out;
}
.sc-orto-toast.es-ok    { background: rgb(var(--ia-success-rgb) / .14); color: var(--ia-text); }
.sc-orto-toast.es-ok i  { color: var(--ia-success); }
.sc-orto-toast.es-error { background: rgb(var(--ia-danger-rgb) / .14); color: var(--ia-text); }
.sc-orto-toast.es-error i { color: var(--ia-danger); }
@keyframes sc-orto-entra { from { opacity: 0; transform: translateY(-3px); } to { opacity: 1; transform: none; } }

/* Celular: botones más grandes para el dedo */
@media (max-width: 575.98px) {
    .sc-orto .sc-orto-btn, .sc-orto .sc-orto-estado { min-height: 34px; font-size: .8rem; }
    .sc-orto .sc-orto-sug, .sc-orto .sc-orto-link, .sc-orto .sc-orto-todo { min-height: 38px; }
    .sc-orto-panel { max-height: 55vh; }
    .sc-orto-cab-acc { margin-left: 0; width: 100%; justify-content: space-between; }
}
@media (prefers-reduced-motion: reduce) { .sc-orto-toast { animation: none; } }

/* Aviso "Hay N posibles errores" (SweetAlert2 v5 usa .swal2-modal, sin tema global) */
.swal2-modal.sc-orto-swal, .swal2-popup.sc-orto-swal {
    background: var(--ia-panel) !important; color: var(--ia-text) !important;
    border: 1px solid var(--ia-line); border-radius: 12px !important; box-shadow: var(--ia-shadow-lg);
}
.sc-orto-swal .swal2-title, .sc-orto-swal h2 { color: var(--ia-text) !important; font-size: 1.35rem !important; font-weight: 600 !important; }
.sc-orto-swal .swal2-content, .sc-orto-swal .swal2-html-container { color: var(--ia-muted) !important; font-size: .98rem !important; }
.sc-orto-swal .swal2-icon.swal2-warning { border-color: var(--ia-warn) !important; color: var(--ia-warn) !important; }
.sc-orto-swal .swal2-styled, .sc-orto-swal .swal2-confirm, .sc-orto-swal .swal2-cancel { border-radius: 8px !important; font-size: .95rem !important; font-weight: 600 !important; padding: .55rem 1.2rem !important; }
.sc-orto-swal .swal2-confirm { background-color: var(--ia-accent) !important; color: var(--ia-accent-d) !important; }
.sc-orto-swal .swal2-cancel { background-color: transparent !important; color: var(--ia-text) !important; border: 1px solid var(--ia-line) !important; }
.sc-orto-swal .swal2-cancel:hover { background-color: rgb(var(--ia-overlay-rgb) / .06) !important; }
/* ============================================================================
   METEOROLOGÍA Y MAR — meteorologia/inicio.php
   Todo acotado con .mod-meteorologia y colores solo desde variables del tema.
   ============================================================================ */
.mod-meteorologia .meteo { padding-top: 6px; padding-bottom: 24px; color: var(--ia-text); }
.mod-meteorologia .meteo *, .mod-meteorologia .meteo *::before, .mod-meteorologia .meteo *::after { box-sizing: border-box; }
.mod-meteorologia .meteo a { color: var(--ia-accent); }
.mod-meteorologia .meteo a:hover { color: var(--ia-accent-h); }
.mod-meteorologia .meteo-muted { color: var(--ia-muted); }

/* Encabezado */
.mod-meteorologia .meteo-cab { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 10px 16px; margin: 4px 0 14px; }
.mod-meteorologia .meteo-cab h1 { font-size: 1.35rem; font-weight: 600; color: var(--ia-text); margin: 0 0 2px; }
.mod-meteorologia .meteo-cab h1 i { color: var(--ia-accent); margin-right: 4px; }
.mod-meteorologia .meteo-cab p { margin: 0; color: var(--ia-muted); font-size: .9rem; }
.mod-meteorologia .meteo-cab-acc { display: flex; align-items: center; gap: 10px; font-size: .82rem; flex-wrap: wrap; }
.mod-meteorologia .meteo-btn { background: var(--ia-panel2); color: var(--ia-text); border: 1px solid var(--ia-line); border-radius: 6px; }
.mod-meteorologia .meteo-btn:hover { border-color: var(--ia-accent); color: var(--ia-accent); }
.mod-meteorologia .meteo.meteo-cargando-todo #meteoActualizar i { animation: meteo-girar 1s linear infinite; }
@keyframes meteo-girar { to { transform: rotate(360deg); } }

/* Selector de sitio */
.mod-meteorologia .meteo-sitios { display: flex; gap: 6px; overflow-x: auto; padding: 2px 2px 8px; margin-bottom: 10px; scrollbar-width: thin; -webkit-overflow-scrolling: touch; }
.mod-meteorologia .meteo-sitio {
    flex: 0 0 auto; border: 1px solid var(--ia-line); background: var(--ia-panel); color: var(--ia-muted);
    border-radius: 999px; padding: 7px 14px; font-size: .86rem; font-weight: 500; white-space: nowrap; cursor: pointer;
    transition: background .15s, color .15s, border-color .15s;
}
.mod-meteorologia .meteo-sitio i { opacity: .7; margin-right: 3px; }
.mod-meteorologia .meteo-sitio:hover { color: var(--ia-text); border-color: var(--ia-accent); }
.mod-meteorologia .meteo-sitio.activo { background: var(--ia-accent); border-color: var(--ia-accent); color: var(--ia-accent-d); }
.mod-meteorologia .meteo-sitio:focus-visible { outline: 2px solid var(--ia-accent-h); outline-offset: 2px; }

/* Avisos */
.mod-meteorologia .meteo-aviso { border-radius: var(--ia-radius); padding: 9px 12px; font-size: .86rem; margin-bottom: 12px; border: 1px solid; }
.mod-meteorologia .meteo-aviso-demo { background: rgb(var(--ia-warn-rgb) / .12); border-color: rgb(var(--ia-warn-rgb) / .5); color: var(--ia-text); }
.mod-meteorologia .meteo-aviso-demo i { color: var(--ia-warn); }
.mod-meteorologia .meteo-aviso-error { background: rgb(var(--ia-danger-rgb) / .10); border-color: rgb(var(--ia-danger-rgb) / .45); color: var(--ia-text); }
.mod-meteorologia .meteo-aviso-error i { color: var(--ia-danger); }
.mod-meteorologia .meteo-aviso-shoa { background: rgb(var(--ia-info-rgb) / .08); border-color: rgb(var(--ia-info-rgb) / .35); color: var(--ia-muted); margin: 10px 0 0; font-size: .8rem; }
.mod-meteorologia .meteo-aviso-shoa i { color: var(--ia-info); }

/* Rejillas */
.mod-meteorologia .meteo-grid { display: grid; gap: 14px; margin-bottom: 14px; grid-template-columns: 1fr; }
@media (min-width: 992px) {
    .mod-meteorologia .meteo-grid-a { grid-template-columns: minmax(300px, 5fr) 7fr; }
    .mod-meteorologia .meteo-grid-b { grid-template-columns: 5fr 7fr; }
    .mod-meteorologia .meteo-grid-c { grid-template-columns: 4fr 8fr; }
}
.mod-meteorologia .meteo-grid > .mc { margin-bottom: 0; }

/* Tarjeta */
.mod-meteorologia .mc {
    background: var(--ia-panel); border: 1px solid var(--ia-line); border-radius: var(--ia-radius);
    box-shadow: var(--ia-shadow); padding: 14px 16px; margin-bottom: 14px; display: flex; flex-direction: column; min-width: 0;
}
.mod-meteorologia .mc-cab { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 6px 10px; margin-bottom: 10px; }
.mod-meteorologia .mc-cab h2 { font-size: .98rem; font-weight: 600; margin: 0; color: var(--ia-text); }
.mod-meteorologia .mc-cab h2 i { color: var(--ia-accent); width: 18px; text-align: center; margin-right: 4px; }
.mod-meteorologia .mc-chip { font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; font-weight: 600; color: var(--ia-muted); background: var(--ia-panel2); border: 1px solid var(--ia-line); border-radius: 999px; padding: 2px 9px; }
.mod-meteorologia .mc-enlace { font-size: .8rem; font-weight: 600; }
.mod-meteorologia .mc-cuerpo { flex: 1 1 auto; min-width: 0; }
.mod-meteorologia .mc-pie { margin-top: 10px; padding-top: 8px; border-top: 1px solid var(--ia-line); font-size: .74rem; color: var(--ia-muted); }
.mod-meteorologia .mc-pie i { margin-right: 2px; }
.mod-meteorologia .mc-pie .fa-check-circle { color: var(--ia-success); }
.mod-meteorologia .meteo-pie-viejo { color: var(--ia-warn); font-weight: 600; }
.mod-meteorologia .meteo-pie-mal { color: var(--ia-danger); font-weight: 600; }
.mod-meteorologia .mc-nota { font-size: .76rem; color: var(--ia-muted); margin: 12px 0 0; line-height: 1.45; }
.mod-meteorologia .mc-nota strong { color: var(--ia-text); }
.mod-meteorologia .meteo-cargando { color: var(--ia-muted); font-size: .85rem; padding: 18px 0; }
.mod-meteorologia .meteo-vacio { color: var(--ia-muted); font-size: .85rem; margin: 6px 0; }
.mod-meteorologia .meteo-sub { font-size: .78rem; text-transform: uppercase; letter-spacing: .05em; color: var(--ia-muted); font-weight: 600; margin: 16px 0 8px; }

/* Semáforo */
.mod-meteorologia .sem-principal { display: flex; align-items: center; gap: 16px; padding: 12px; border-radius: var(--ia-radius); background: var(--ia-panel2); border: 1px solid var(--ia-line); }
.mod-meteorologia .sem-luz { display: inline-flex; flex-direction: column; gap: 5px; padding: 7px 6px; border-radius: 12px; background: rgb(var(--ia-bg-rgb) / .9); border: 1px solid var(--ia-line); flex: 0 0 auto; }
.mod-meteorologia .sem-luz i { width: 18px; height: 18px; border-radius: 50%; background: rgb(var(--ia-overlay-rgb) / .08); }
.mod-meteorologia .sem-n2 .sem-luz i:nth-child(1) { background: var(--ia-danger); box-shadow: 0 0 10px rgb(var(--ia-danger-rgb) / .7); }
.mod-meteorologia .sem-n1 .sem-luz i:nth-child(2) { background: var(--ia-warn);   box-shadow: 0 0 10px rgb(var(--ia-warn-rgb) / .7); }
.mod-meteorologia .sem-n0 .sem-luz i:nth-child(3) { background: var(--ia-success); box-shadow: 0 0 10px rgb(var(--ia-success-rgb) / .7); }
.mod-meteorologia .sem-principal.sem-n0 { border-left: 4px solid var(--ia-success); }
.mod-meteorologia .sem-principal.sem-n1 { border-left: 4px solid var(--ia-warn); background: rgb(var(--ia-warn-rgb) / .08); }
.mod-meteorologia .sem-principal.sem-n2 { border-left: 4px solid var(--ia-danger); background: rgb(var(--ia-danger-rgb) / .08); }
.mod-meteorologia .sem-etq { font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; color: var(--ia-muted); }
.mod-meteorologia .sem-titulo { font-size: 1.45rem; font-weight: 700; line-height: 1.15; }
.mod-meteorologia .sem-n0 .sem-titulo { color: var(--ia-success); }
.mod-meteorologia .sem-n1 .sem-titulo { color: var(--ia-warn); }
.mod-meteorologia .sem-n2 .sem-titulo { color: var(--ia-danger); }
.mod-meteorologia .sem-motivo { font-size: .86rem; color: var(--ia-text); }
.mod-meteorologia .sem-desde { font-size: .78rem; color: var(--ia-muted); }
.mod-meteorologia .sem-tramos { list-style: none; padding: 0; margin: 10px 0 0; }
.mod-meteorologia .sem-tramos li { display: grid; grid-template-columns: 12px 92px 78px 1fr; align-items: center; gap: 8px; padding: 6px 2px; border-bottom: 1px solid var(--ia-line); font-size: .82rem; }
.mod-meteorologia .sem-tramos li:last-child { border-bottom: 0; }
.mod-meteorologia .sem-t { color: var(--ia-muted); }
.mod-meteorologia .sem-v { font-weight: 600; }
.mod-meteorologia .sem-d { color: var(--ia-muted); font-size: .76rem; text-align: right; }
.mod-meteorologia .sem-punto { width: 11px; height: 11px; border-radius: 50%; display: inline-block; background: var(--ia-chip); }
.mod-meteorologia .sem-punto.sem-n0 { background: var(--ia-success); }
.mod-meteorologia .sem-punto.sem-n1 { background: var(--ia-warn); }
.mod-meteorologia .sem-punto.sem-n2 { background: var(--ia-danger); }

/* Condición actual */
.mod-meteorologia .meteo-ahora { display: flex; align-items: center; gap: 16px; margin-bottom: 12px; }
.mod-meteorologia .meteo-ahora-ico { font-size: 2.8rem; color: var(--ia-accent); width: 64px; text-align: center; }
.mod-meteorologia .meteo-ahora-temp { font-size: 2.3rem; font-weight: 600; line-height: 1; }
.mod-meteorologia .meteo-ahora-temp small { font-size: 1rem; color: var(--ia-muted); margin-left: 2px; font-weight: 500; }
.mod-meteorologia .meteo-ahora-cielo { color: var(--ia-muted); font-size: .9rem; margin-top: 4px; }
.mod-meteorologia .meteo-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 8px; }
.mod-meteorologia .meteo-tile { background: var(--ia-panel2); border: 1px solid var(--ia-line); border-radius: 6px; padding: 8px 10px; display: flex; flex-direction: column; min-width: 0; }
.mod-meteorologia .meteo-tile-etq { font-size: .72rem; color: var(--ia-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mod-meteorologia .meteo-tile-etq i { width: 14px; color: var(--ia-accent); opacity: .85; }
.mod-meteorologia .meteo-tile-val { font-size: 1.3rem; font-weight: 600; line-height: 1.25; font-variant-numeric: tabular-nums; }
.mod-meteorologia .meteo-tile-val small { font-size: .75rem; font-weight: 500; color: var(--ia-muted); margin-left: 3px; }
.mod-meteorologia .meteo-tile-extra { font-size: .74rem; color: var(--ia-muted); }
.mod-meteorologia .meteo-flecha { color: var(--ia-accent); display: inline-block; margin-right: 4px; transition: transform .3s; }

/* Próximos días */
.mod-meteorologia .meteo-dias { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.mod-meteorologia .meteo-dia { background: var(--ia-panel2); border: 1px solid var(--ia-line); border-radius: 6px; padding: 10px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 3px; min-width: 0; }
.mod-meteorologia .meteo-dia-nom { font-weight: 600; font-size: .9rem; }
.mod-meteorologia .meteo-dia-nom small { color: var(--ia-muted); font-weight: 400; }
.mod-meteorologia .meteo-dia-ico { font-size: 1.7rem; color: var(--ia-accent); margin: 4px 0; }
.mod-meteorologia .meteo-dia-temp { font-size: .9rem; color: var(--ia-muted); }
.mod-meteorologia .meteo-dia-temp b { color: var(--ia-text); font-size: 1.05rem; }
.mod-meteorologia .meteo-dia-det { font-size: .8rem; color: var(--ia-text); }
.mod-meteorologia .meteo-dia-det i { color: var(--ia-muted); width: 14px; }
.mod-meteorologia .meteo-dia-det span { color: var(--ia-muted); }
.mod-meteorologia .meteo-dia-sem { font-size: .76rem; font-weight: 600; display: flex; align-items: center; gap: 5px; margin-top: 3px; }

/* Gráficos */
.mod-meteorologia .meteo-graf { position: relative; height: 210px; margin-top: 4px; }
.mod-meteorologia .meteo-graf-alto { height: 260px; }
.mod-meteorologia .meteo-graf[hidden] { display: none; }
.mod-meteorologia .meteo-leyenda { display: flex; gap: 12px; flex-wrap: wrap; font-size: .76rem; color: var(--ia-muted); }
.mod-meteorologia .ley { display: inline-block; width: 14px; height: 3px; vertical-align: middle; margin-right: 5px; border-radius: 2px; }
.mod-meteorologia .ley-viento { background: var(--ia-accent); }
.mod-meteorologia .ley-rafaga { background: repeating-linear-gradient(90deg, var(--ia-warn) 0 4px, transparent 4px 7px); }
.mod-meteorologia .ley-lluvia { background: rgb(var(--ia-info-rgb) / .6); height: 9px; }

/* Franja del semáforo por hora */
.mod-meteorologia .meteo-franja { display: flex; height: 10px; margin: 8px 0 0; border-radius: 3px; overflow: hidden; gap: 1px; }
.mod-meteorologia .meteo-franja .sem { flex: 1 1 0; }
.mod-meteorologia .sem { display: inline-block; background: var(--ia-chip); }
.mod-meteorologia .sem.sem-0 { background: rgb(var(--ia-success-rgb) / .75); }
.mod-meteorologia .sem.sem-1 { background: var(--ia-warn); }
.mod-meteorologia .sem.sem-2 { background: var(--ia-danger); }
.mod-meteorologia .meteo-franja .sem.corte { box-shadow: inset 2px 0 0 var(--ia-text); }
.mod-meteorologia .meteo-franja-ley { display: flex; gap: 14px; font-size: .72rem; color: var(--ia-muted); margin-top: 5px; }
.mod-meteorologia .meteo-franja-ley .sem { width: 10px; height: 10px; border-radius: 2px; margin-right: 4px; vertical-align: -1px; }

/* Próximas horas (tira horizontal) */
.mod-meteorologia .meteo-horas { display: flex; overflow-x: auto; gap: 0; margin-top: 12px; border: 1px solid var(--ia-line); border-radius: 6px; scrollbar-width: thin; -webkit-overflow-scrolling: touch; }
.mod-meteorologia .meteo-horas:empty { display: none; }
.mod-meteorologia .meteo-hora { flex: 0 0 64px; display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 7px 2px; border-right: 1px solid var(--ia-line); font-size: .78rem; font-variant-numeric: tabular-nums; }
.mod-meteorologia .meteo-hora:last-child { border-right: 0; }
.mod-meteorologia .meteo-hora > span, .mod-meteorologia .meteo-hora > i { height: 20px; line-height: 20px; }
.mod-meteorologia .meteo-hora > i { font-size: 1.05rem; color: var(--ia-accent); }
.mod-meteorologia .meteo-hora-h { color: var(--ia-muted); font-weight: 600; white-space: nowrap; }
.mod-meteorologia .meteo-hora-t { font-weight: 600; }
.mod-meteorologia .meteo-hora-v small { color: var(--ia-muted); font-size: .66rem; margin-left: 1px; }
.mod-meteorologia .meteo-hora-r { color: var(--ia-warn); }
.mod-meteorologia .meteo-hora-p { color: var(--ia-muted); }
.mod-meteorologia .meteo-hora-p.con { color: var(--ia-info); font-weight: 600; }
.mod-meteorologia .meteo-hora-ley { flex-basis: 58px; position: sticky; left: 0; z-index: 1; background: var(--ia-panel2); color: var(--ia-muted); font-size: .68rem; align-items: flex-start; padding-left: 8px; }
.mod-meteorologia .meteo-hora-ley .meteo-hora-i { height: 20px; }

/* Tablas */
.mod-meteorologia .meteo-tabla-scroll { overflow-x: auto; max-height: 360px; overflow-y: auto; border: 1px solid var(--ia-line); border-radius: 6px; }
.mod-meteorologia .meteo-tabla { width: 100%; border-collapse: collapse; font-size: .82rem; color: var(--ia-text); }
.mod-meteorologia .meteo-tabla th { position: sticky; top: 0; background: var(--ia-panel2); color: var(--ia-muted); font-weight: 600; font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; text-align: left; padding: 7px 10px; border-bottom: 1px solid var(--ia-line); }
.mod-meteorologia .meteo-tabla td { padding: 7px 10px; border-bottom: 1px solid var(--ia-line); vertical-align: top; }
.mod-meteorologia .meteo-tabla tbody tr:last-child td { border-bottom: 0; }
.mod-meteorologia .meteo-tabla tbody tr:hover { background: rgb(var(--ia-accent-rgb) / .05); }
.mod-meteorologia .meteo-tabla .der { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.mod-meteorologia .meteo-tabla .nw { white-space: nowrap; }
.mod-meteorologia .meteo-tabla td small { display: block; color: var(--ia-muted); }
.mod-meteorologia .meteo-tabla-mareas { margin-top: 10px; border: 1px solid var(--ia-line); border-radius: 6px; border-collapse: separate; border-spacing: 0; overflow: hidden; }
.mod-meteorologia .meteo-marea { font-weight: 600; white-space: nowrap; }
.mod-meteorologia .meteo-marea.alta { color: var(--ia-accent); }
.mod-meteorologia .meteo-marea.baja { color: var(--ia-accent2); }
.mod-meteorologia .meteo-centro { display: inline-block; font-weight: 600; margin-right: 4px; }
.mod-meteorologia .meteo-centro::after { content: " ·"; color: var(--ia-muted); font-weight: 400; }
.mod-meteorologia .meteo-tag { display: inline-block; font-size: .68rem; font-weight: 600; padding: 1px 7px; border-radius: 999px; margin-left: 4px; background: rgb(var(--ia-warn-rgb) / .15); color: var(--ia-warn); border: 1px solid rgb(var(--ia-warn-rgb) / .4); }
.mod-meteorologia .meteo-tag.ok { background: rgb(var(--ia-success-rgb) / .15); color: var(--ia-success); border-color: rgb(var(--ia-success-rgb) / .4); }

/* Puertos */
.mod-meteorologia .mc-oficial .mc-cuerpo p { font-size: .88rem; color: var(--ia-text); }
.mod-meteorologia .meteo-btn-grande {
    display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%;
    background: var(--ia-accent); color: var(--ia-accent-d) !important; border: 0; border-radius: var(--ia-radius);
    padding: 13px 14px; font-weight: 700; font-size: .98rem; text-decoration: none;
}
.mod-meteorologia .meteo-btn-grande:hover { background: var(--ia-accent-h); text-decoration: none; }
.mod-meteorologia .meteo-apps { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; margin-top: 12px; font-size: .84rem; }
.mod-meteorologia .meteo-apps a { border: 1px solid var(--ia-line); border-radius: 6px; padding: 5px 10px; background: var(--ia-panel2); }
.mod-meteorologia .meteo-kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.mod-meteorologia .meteo-kpis > div { background: var(--ia-panel2); border: 1px solid var(--ia-line); border-radius: 6px; padding: 8px 10px; }
.mod-meteorologia .meteo-kpis b { display: block; font-size: 1.5rem; line-height: 1.1; color: var(--ia-text); }
.mod-meteorologia .meteo-kpis span { font-size: .72rem; color: var(--ia-muted); line-height: 1.25; display: block; }
.mod-meteorologia .meteo-meses { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 6px; height: 120px; }
.mod-meteorologia .meteo-mes { display: flex; flex-direction: column; align-items: center; min-width: 0; }
.mod-meteorologia .meteo-mes-n { font-size: .78rem; font-weight: 600; }
.mod-meteorologia .meteo-mes-barra { flex: 1 1 auto; width: 100%; max-width: 38px; display: flex; align-items: flex-end; background: rgb(var(--ia-overlay-rgb) / .04); border-radius: 3px; }
.mod-meteorologia .meteo-mes-barra i { display: block; width: 100%; min-height: 2px; background: var(--ia-accent2); border-radius: 3px 3px 0 0; }
.mod-meteorologia .meteo-mes-t { font-size: .68rem; color: var(--ia-muted); white-space: nowrap; margin-top: 3px; }

/* Externos (Windy / Meteored) */
.mod-meteorologia .meteo-externos { display: grid; gap: 14px; grid-template-columns: 1fr; }
@media (min-width: 992px) { .mod-meteorologia .meteo-externos { grid-template-columns: 3fr 2fr; } }
.mod-meteorologia .meteo-ext { border: 1px solid var(--ia-line); border-radius: 6px; overflow: hidden; background: var(--ia-panel2); min-width: 0; }
.mod-meteorologia .meteo-ext-tit { display: flex; justify-content: space-between; align-items: center; padding: 8px 12px; font-size: .84rem; font-weight: 600; border-bottom: 1px solid var(--ia-line); }
.mod-meteorologia .meteo-ext-tit i { color: var(--ia-accent); }
.mod-meteorologia .meteo-ext-tit a { font-size: .78rem; font-weight: 500; }
.mod-meteorologia .meteo-ext-marco iframe { display: block; width: 100%; height: 420px; border: 0; }
.mod-meteorologia .meteo-ext-meteored { padding: 10px; min-height: 200px; overflow-x: auto; }

/* Celular */
@media (max-width: 575.98px) {
    .mod-meteorologia .meteo { padding-left: 8px; padding-right: 8px; }
    .mod-meteorologia .meteo-cab h1 { font-size: 1.15rem; }
    .mod-meteorologia .mc { padding: 12px; }
    .mod-meteorologia .meteo-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .mod-meteorologia .meteo-dias { gap: 6px; }
    .mod-meteorologia .meteo-dia { padding: 8px 4px; }
    .mod-meteorologia .meteo-dia-det { font-size: .72rem; }
    .mod-meteorologia .meteo-dia-det span { display: block; }
    .mod-meteorologia .sem-tramos li { grid-template-columns: 12px 1fr auto; }
    .mod-meteorologia .sem-tramos .sem-d { grid-column: 2 / 4; text-align: left; margin-top: -4px; }
    .mod-meteorologia .meteo-graf-alto { height: 230px; }
    .mod-meteorologia .meteo-ext-marco iframe { height: 340px; }
    .mod-meteorologia .meteo-tabla th, .mod-meteorologia .meteo-tabla td { padding: 6px 7px; }
}

/* Ajustes de alto: el gráfico de olas ocupa el espacio libre de su tarjeta */
.mod-meteorologia #meteoMar .mc-cuerpo { flex: 0 0 auto; }
.mod-meteorologia #meteoMar .meteo-graf { flex: 1 1 auto; min-height: 210px; margin-top: 12px; }
.mod-meteorologia .meteo-grid-c { align-items: start; }
@media (max-width: 575.98px) {
    .mod-meteorologia .col-cambio { display: none; }
    /* Puertos cerrados: cada registro como bloque */
    .mod-meteorologia .meteo-tabla-puertos thead { display: none; }
    .mod-meteorologia .meteo-tabla-puertos tr { display: grid; grid-template-columns: auto 1fr; gap: 2px 10px; padding: 8px 10px; border-bottom: 1px solid var(--ia-line); }
    .mod-meteorologia .meteo-tabla-puertos td { display: block; padding: 0; border: 0; }
    .mod-meteorologia .meteo-tabla-puertos td small { display: inline; margin-left: 4px; }
    .mod-meteorologia .meteo-tabla-puertos td:nth-child(2) { font-weight: 600; }
    .mod-meteorologia .meteo-tabla-puertos td:nth-child(3) { grid-column: 1 / -1; color: var(--ia-muted); }
}

/* ============================================================
   §90 — REFINAMIENTO VISUAL (v2.1)
   Tipografía, botones, íconos, insignias y menú más sobrios y
   consistentes en todo el sistema. Va al final para mandar sobre
   estilos antiguos de los módulos.
   ============================================================ */

/* ---------- Tipografía ---------- */
html { font-size: 15px; }
body, body#page-top {
    font-family: var(--ia-font);
    font-size: .94rem;
    line-height: 1.5;
    letter-spacing: .002em;
    font-feature-settings: "kern" 1, "liga" 1;
    text-rendering: optimizeLegibility;
}
h1, .h1 { font-size: 1.45rem; font-weight: 600; letter-spacing: -.012em; }
h2, .h2 { font-size: 1.2rem;  font-weight: 600; letter-spacing: -.008em; }
h3, .h3 { font-size: 1.08rem; font-weight: 600; }
h4, .h4, h5, .h5 { font-size: .98rem; font-weight: 600; }
small, .small { font-size: .82em; }
b, strong { font-weight: 600; }

/* Encabezados de tabla: sin mayúsculas forzadas, más legibles */
.table thead th, table.dataTable thead th, table.dataTable thead td,
.ia-tema table thead th, .ia-tema .table thead th {
    text-transform: none !important;
    letter-spacing: .01em !important;
    font-size: .8rem !important;
    font-weight: 600 !important;
    color: var(--ia-muted) !important;
    white-space: nowrap;
}
.table td, table.dataTable tbody td { font-size: .88rem; }
.navbar.topbar .text-gray-500, .navbar.topbar .text-gray-600, .navbar.topbar .text-gray-100 {
    text-transform: none !important;
    letter-spacing: 0 !important;
    font-weight: 500 !important;
    font-size: .8rem !important;
}
.sidebar .sidebar-heading { text-transform: none !important; letter-spacing: .02em !important; font-size: .72rem !important; font-weight: 600; color: var(--ia-muted) !important; }

/* ---------- Íconos ---------- */
.fa, .fas, .far, .fab, .fa-solid, .fa-regular, .fa-brands { line-height: 1; vertical-align: -.08em; }
.btn > i, .btn > .fa, .btn > .fas, .btn > .far { font-size: .92em; }

/* ---------- Botones ---------- */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .45rem;
    min-height: 34px;
    padding: .38rem .9rem;
    font-size: .875rem;
    font-weight: 500;
    letter-spacing: .005em;
    border-radius: 7px;
    box-shadow: none !important;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease, transform .08s ease;
}
.btn:active { transform: translateY(1px); }
.btn:focus-visible { outline: 2px solid var(--ia-accent); outline-offset: 2px; }
.btn-sm, .btn-group-sm > .btn { min-height: 30px; padding: .25rem .65rem; font-size: .8rem; border-radius: 6px; gap: .35rem; }
.btn-lg { min-height: 42px; padding: .55rem 1.2rem; font-size: .95rem; }
.btn-block { display: flex; width: 100%; }
.btn > i.mr-1, .btn > i.mr-2, .btn > .fas.mr-1, .btn > .fas.mr-2 { margin-right: 0 !important; }
.btn-link { box-shadow: none; }
/* "Contorno" para acciones secundarias */
.btn-outline-secondary { color: var(--ia-text); border-color: var(--ia-line); background: transparent; }
.btn-outline-secondary:hover { background: var(--ia-panel2); color: var(--ia-text); border-color: var(--ia-line); }
.btn-outline-danger { color: var(--ia-danger); border-color: rgb(var(--ia-danger-rgb) / .5); }
.btn-outline-danger:hover { background: var(--ia-danger); border-color: var(--ia-danger); color: #fff; }
.btn-outline-success { color: var(--ia-success); border-color: rgb(var(--ia-success-rgb) / .5); }
.btn-outline-success:hover { background: var(--ia-success); border-color: var(--ia-success); color: #fff; }
.btn-outline-info { color: var(--ia-info); border-color: rgb(var(--ia-info-rgb) / .5); }
.btn-outline-info:hover { background: var(--ia-info); border-color: var(--ia-info); color: #fff; }
/* Botones de color: tono un poco más profundo al pasar el mouse */
.btn-primary:hover, .btn-success:hover, .btn-info:hover, .btn-danger:hover, .btn-warning:hover { filter: brightness(.94); }

/* Botones pequeños de acción dentro de tablas: cuadrados, discretos */
table .btn-sm, .dataTable .btn-sm, .btn-tabla, .ia-tema .btn-tabla {
    min-width: 30px;
    min-height: 30px;
    padding: 0 .5rem;
}
table .btn-sm:only-child, .btn-tabla:empty { padding: 0; }

/* Exportar / imprimir de DataTables: mismo lenguaje que el resto */
.dt-buttons .btn, .dt-buttons .dt-button, .ia-tema .dt-buttons .btn {
    background: var(--ia-panel) !important;
    color: var(--ia-text) !important;
    border: 1px solid var(--ia-line) !important;
    background-image: none !important;
    min-height: 30px;
    font-size: .8rem !important;
    font-weight: 500 !important;
    border-radius: 6px !important;
    padding: .25rem .7rem !important;
}
.dt-buttons .btn:hover, .dt-buttons .dt-button:hover { background: var(--ia-panel2) !important; color: var(--ia-accent) !important; }
.dt-buttons .btn i, .dt-buttons .dt-button i, .dt-buttons .btn span i { color: var(--ia-accent) !important; opacity: 1 !important; }

/* ---------- Insignias: tono suave con texto de color (más elegantes que el bloque sólido) ---------- */
.badge { font-weight: 600; font-size: .74rem; padding: .3em .62em; border-radius: 999px; letter-spacing: .01em; }
.badge-success, .ia-tema .badge.badge-success { background: rgb(var(--ia-success-rgb) / .16) !important; color: var(--ia-success) !important; }
.badge-danger,  .ia-tema .badge.badge-danger  { background: rgb(var(--ia-danger-rgb)  / .16) !important; color: var(--ia-danger)  !important; }
.badge-warning, .ia-tema .badge.badge-warning { background: rgb(var(--ia-warn-rgb)    / .18) !important; color: var(--ia-warn)    !important; }
.badge-info,    .ia-tema .badge.badge-info    { background: rgb(var(--ia-info-rgb)    / .16) !important; color: var(--ia-info)    !important; }
.badge-primary, .ia-tema .badge.badge-primary { background: rgb(var(--ia-accent-rgb)  / .16) !important; color: var(--ia-accent)  !important; }
.badge-secondary, .badge-light, .badge-dark   { background: rgb(var(--ia-overlay-rgb) / .08) !important; color: var(--ia-muted) !important; }
.navbar.topbar .badge-counter { background: var(--ia-danger) !important; color: #fff !important; }

/* ---------- Tarjetas y paneles ---------- */
.card, .ia-tema .box { border-radius: 10px; }
.card-header { font-size: .95rem; letter-spacing: -.003em; padding: .85rem 1.15rem; }
.card-header > i, .card-header > span > i, .card-header > h5 > i, .box-head h4 > i { color: var(--ia-accent); }
.card-header .btn i, .box-head .btn i { color: inherit !important; }

/* ---------- Formularios ---------- */
.form-control, .custom-select { min-height: 36px; border-radius: 7px; font-size: .9rem; }
.form-control-sm, .custom-select-sm { min-height: 30px; font-size: .82rem; border-radius: 6px; }
textarea.form-control { min-height: 88px; line-height: 1.5; }
label { font-size: .84rem; margin-bottom: .3rem; }

/* ---------- Modales ---------- */
.modal-content { border-radius: 12px; box-shadow: var(--ia-shadow-lg); overflow: hidden; }
.modal-header { background: var(--ia-panel) !important; padding: 1rem 1.25rem; }
.modal-title { font-weight: 600; font-size: 1.02rem; }
.modal-footer { gap: .5rem; }
.modal-footer > * { margin: 0 !important; }

/* ---------- Paginación y buscador de tablas ---------- */
.page-link { border-radius: 6px !important; margin: 0 2px; min-width: 32px; text-align: center; font-size: .82rem; }
.dataTables_wrapper .dataTables_filter input { min-height: 32px; border-radius: 7px; padding: 0 .7rem; }

/* ============================================================
   Menú lateral: más aire, indicador de sección tipo píldora
   ============================================================ */
.sidebar { width: 15rem !important; }
.sidebar .nav-item .nav-link {
    display: flex !important;
    align-items: center;
    gap: .7rem;
    width: auto !important;
    margin: 1px 10px;
    padding: .6rem .8rem !important;
    border-left: 0 !important;
    border-radius: 8px;
    font-size: .88rem !important;
    font-weight: 500;
}
.sidebar .nav-item .nav-link i { width: 1.15rem !important; margin: 0 !important; text-align: center; font-size: .95rem !important; }
.sidebar .nav-item .nav-link span { flex: 1; }
.sidebar .nav-item .nav-link[data-toggle="collapse"]::after { margin-left: auto; }
.sidebar .nav-item.active > .nav-link { background: rgb(var(--ia-accent-rgb) / .12) !important; }
.sidebar .nav-item .collapse, .sidebar .nav-item .collapsing { margin: 2px 10px 6px !important; border: 0 !important; background: rgb(var(--ia-overlay-rgb) / .03) !important; }
.sidebar .nav-item .collapse .collapse-item { font-size: .84rem !important; padding: .45rem .75rem !important; border-radius: 6px; white-space: normal; }
.sidebar .sidebar-brand { height: auto !important; padding: 18px 12px !important; }
.sidebar .sidebar-brand img { max-height: 46px; width: auto; }

/* ============================================================
   Menú oculto completo (botón ☰ o tecla M)
   ============================================================ */
.sc-menu-btn {
    width: 38px; height: 38px;
    display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid var(--ia-line);
    border-radius: 9px;
    background: var(--ia-panel2);
    color: var(--ia-text);
    font-size: 1rem;
    cursor: pointer;
    transition: background .15s, color .15s, border-color .15s;
}
.sc-menu-btn:hover { color: var(--ia-accent); border-color: var(--ia-accent); }
.sc-menu-btn:focus-visible { outline: 2px solid var(--ia-accent); outline-offset: 2px; }

#accordionSidebar { transition: margin-left .22s ease; }
html.sc-menu-oculto #accordionSidebar { display: none !important; }
html.sc-menu-oculto #content-wrapper { width: 100%; }
.sc-menu-fondo { display: none; }

@media (max-width: 767.98px) {
    /* el menú se abre encima del contenido, con fondo oscurecido */
    #accordionSidebar {
        position: fixed !important;
        top: 0; left: 0; bottom: 0;
        z-index: 1040;
        overflow-y: auto;
        width: 16rem !important;
        box-shadow: var(--ia-shadow-lg);
    }
    #accordionSidebar.toggled { width: 16rem !important; overflow-y: auto !important; }
    html:not(.sc-menu-oculto) .sc-menu-fondo {
        display: block;
        position: fixed; inset: 0;
        z-index: 1035;
        background: rgb(0 0 0 / .45);
    }
}
@media (prefers-reduced-motion: reduce) { #accordionSidebar { transition: none; } }

/* ============================================================
   Barra superior
   ============================================================ */
.navbar.topbar { min-height: 60px; height: auto !important; padding: .4rem 1rem !important; }
.navbar.topbar .nav-link { padding: 0 .6rem !important; height: 44px !important; display: flex; align-items: center; gap: .35rem; }
.navbar.topbar .img-profile { width: 34px !important; height: 34px !important; object-fit: cover; }
.topbar-divider { height: 1.8rem !important; align-self: center; }
/* Imprimir / Exportar dentro de .ia-tema (reglas antiguas con degradado) */
.ia-tema .dt-buttons .btn, .ia-tema .dt-buttons .buttons-print, .ia-tema .dt-buttons .buttons-collection,
body .dt-buttons .buttons-print, body .dt-buttons .buttons-collection {
    background: var(--ia-panel) !important; background-image: none !important;
    color: var(--ia-text) !important; border: 1px solid var(--ia-line) !important;
}
.ia-tema .dt-buttons .btn i, .ia-tema .dt-buttons .buttons-print i, body .dt-buttons .buttons-print i { color: var(--ia-accent) !important; }
.ia-tema .dt-buttons .btn:hover, body .dt-buttons .buttons-print:hover { background: var(--ia-panel2) !important; color: var(--ia-accent) !important; }
/* ============================================================
   §91 — PULIDO FINAL (v2.1)
   Consistencia entre módulos: títulos de página, contraste en los
   tres temas, botones de una misma acción, insignias y tarjetas de
   indicadores. Va después de §90 (refinamiento) y antes de §99.
   Reglas globales sin módulo; las de un módulo van acotadas .mod-<carpeta>.
   ============================================================ */

/* ---------- Tokens auxiliares por tema ---------- */
:root, :root[data-tema="verde"], :root[data-tema="oscuro"] {
    --sc-on-danger: #3d0707;        /* texto sobre rojo pastel (temas oscuros) */
    --sc-on-info:   #071a33;        /* texto sobre azul pastel */
    --sc-burbuja:   #dc2626;        /* burbuja de avisos de la barra superior */
}
:root[data-tema="claro"] {
    --sc-on-danger: #fff;
    --sc-on-info:   #fff;
    --sc-burbuja:   var(--ia-danger);
}

/* ---------- Título de página estándar ----------
   Mismo aspecto en todas las páginas: ícono + título en color de acento,
   bajada en gris y acciones a la derecha. */
html .sc-page-head { align-items: flex-start; margin: 4px 0 16px; }
html .sc-page-head h1 {
    color: var(--ia-accent); font-size: 1.3rem; font-weight: 600;
    margin: 0 0 4px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
}
html .sc-page-head h1 i { color: var(--ia-accent); }
html .sc-page-head p { color: var(--ia-muted); font-size: .88rem; margin: 0; max-width: 760px; }
html .sc-page-head > div:last-child:not(:first-child) { display: flex; flex-wrap: wrap; gap: 8px; }

/* Páginas con encabezado propio que quedaban en otro tamaño/color */
.mod-home .dg-cab h1,
.mod-meteorologia .meteo-cab h1,
.mod-ia_acantilada #ia-app h1 {
    color: var(--ia-accent); font-size: 1.3rem; font-weight: 600;
    display: flex; align-items: center; gap: 10px;
}
.mod-home .dg-cab h1 i, .mod-meteorologia .meteo-cab h1 i, .mod-ia_acantilada h1 i { color: var(--ia-accent); margin: 0; }
@media (max-width: 576px) {
    .mod-home .dg-cab h1, .mod-meteorologia .meteo-cab h1, .mod-ia_acantilada #ia-app h1, html .sc-page-head h1 { font-size: 1.15rem; }
}

/* Catálogo y Equipos (bodega): título dentro de la cabecera de la tarjeta */
.mod-catalogo .sc-titulo-pagina, .mod-equipos_productos .sc-titulo-pagina {
    color: var(--ia-accent) !important; font-size: 1.3rem !important; font-weight: 600 !important;
    display: flex; align-items: center; gap: 10px; margin-bottom: 2px !important;
}
.mod-catalogo .sc-titulo-pagina i, .mod-equipos_productos .sc-titulo-pagina i { color: var(--ia-accent) !important; }
.mod-catalogo .sc-titulo-pagina + small, .mod-equipos_productos .sc-titulo-pagina + small { color: var(--ia-muted); font-size: .85rem; }

/* ---------- Contraste: rojo sólido en temas oscuros ----------
   En verde/oscuro el rojo es pastel: con texto blanco no se lee (2,5:1). */
.btn-danger, .btn-danger:hover, .btn-danger:focus { color: var(--sc-on-danger) !important; }
.btn-danger i { color: inherit !important; }
.navbar.topbar .badge-counter, .art-contador { background: var(--sc-burbuja) !important; color: #fff !important; }

/* Azul sólido (.btn-info dentro de .ia-tema tenía texto oscuro fijo: ilegible en tema claro) */
.ia-tema .btn-info, .ia-tema .btn-info:hover { color: var(--sc-on-info) !important; }
.ia-tema .btn-info:hover { background: var(--ia-info); border-color: var(--ia-info); filter: brightness(1.08); }

/* Contorno amarillo/azul que faltaban en §90 (en tema claro el amarillo de Bootstrap no se veía) */
.btn-outline-warning { color: var(--ia-warn); border-color: rgb(var(--ia-warn-rgb) / .55); background: transparent; }
.btn-outline-warning:hover, .btn-outline-warning:focus { background: var(--ia-warn); border-color: var(--ia-warn); color: var(--ia-bg); }
.btn-outline-primary { color: var(--ia-accent); border-color: rgb(var(--ia-accent-rgb) / .55); background: transparent; }
.btn-outline-primary:hover, .btn-outline-primary:focus { background: var(--ia-accent); border-color: var(--ia-accent); color: var(--ia-accent-d); }
.btn-dark { background: var(--ia-panel2); border-color: var(--ia-line); color: var(--ia-text); }
.btn-dark:hover { background: var(--ia-line); color: var(--ia-text); }
.btn-default { background: transparent; border: 1px solid var(--ia-line); color: var(--ia-text); }
.btn-default:hover { background: var(--ia-panel2); color: var(--ia-text); }

/* Insignias dentro de pestañas/píldoras activas: no tomar el color del fondo de la pestaña */
.nav-pills .nav-link.active .badge, .nav-tabs .nav-link.active .badge, .btn-ia .badge {
    background: rgb(var(--ia-bg-rgb) / .85) !important; color: var(--ia-text) !important;
}

/* ---------- Tablas: fila vacía y franjas con color fijo ---------- */
#backup-app table.dataTable.table-striped tbody tr.odd td { background: rgb(var(--ia-overlay-rgb) / .025) !important; }
#backup-app table.dataTable tbody td.dataTables_empty { color: var(--ia-muted) !important; background: var(--ia-panel) !important; }

/* ---------- Mapa de calor de Datos generales (tema claro) ---------- */
:root[data-tema="claro"] .mod-home .dg-calor td.dg-celda.fuerte:not(.muy) { color: var(--ia-text); }

/* ---------- IA: etiquetas de componentes/acciones con colores fijos ---------- */
.mod-ia_acantilada #clf-app .tag-comp { background: rgb(var(--ia-accent-rgb) / .14); color: var(--ia-accent); }
.mod-ia_acantilada #clf-app .tag-acc  { background: rgb(var(--ia-info-rgb) / .14);   color: var(--ia-info); }
.mod-ia_acantilada #clf-app .tag i, .mod-ia_acantilada #dic-app .tag i { font-size: .85em; margin-right: 2px; }
.mod-ia_acantilada .asesor-icono i { color: var(--ia-warn); }
.mod-ia_acantilada .ok-msg i, .mod-ia_acantilada .err-msg i, .mod-ia_acantilada .warn-msg i,
.mod-ia_acantilada #dic-app .ok i, .mod-ia_acantilada #dic-app .err i { margin-right: 4px; }
.mod-ia_acantilada #ia-app .ia-chip i { font-size: .9em; opacity: .9; }
.mod-ia_acantilada #ia-app .ia-fuente > summary > span:first-child i { margin-right: 4px; }
.mod-ia_acantilada #ia-app #enviar, .mod-ia_acantilada #ia-app .btn-historial,
.mod-ia_acantilada .btn-exportar, .mod-ia_acantilada #clf-app .btn, .mod-ia_acantilada #clt-app .btn,
.mod-ia_acantilada .btn-descargar, .mod-ia_acantilada .btn-regenerar, .mod-ia_acantilada .btn-recalcular {
    display: inline-flex; align-items: center; gap: .4rem;
}

/* ---------- Catálogo de productos: insignias en tono suave (como el resto) ---------- */
.mod-catalogo .badge-success { background: rgb(var(--ia-success-rgb) / .16) !important; color: var(--ia-success) !important; }
.mod-catalogo .badge-primary { background: rgb(var(--ia-info-rgb) / .16) !important;    color: var(--ia-info) !important; }
.mod-catalogo .badge-danger  { background: rgb(var(--ia-danger-rgb) / .16) !important;  color: var(--ia-danger) !important; }
.mod-catalogo .badge i { color: inherit !important; }

/* ---------- Tarjetas de indicadores (Puertos cerrados, Técnicos/OT) ----------
   Antes: título centrado, número pequeño a la izquierda y mucho espacio vacío. */
:is(.mod-revision_puertos, .mod-contador_ot-tecnicos) .card[class*="border-left-"] > .card-body {
    text-align: left !important; padding: 14px 16px !important;
    display: flex; flex-direction: column; justify-content: center; gap: 2px;
}
:is(.mod-revision_puertos, .mod-contador_ot-tecnicos) .card[class*="border-left-"] > .card-body h6 {
    font-size: .78rem; font-weight: 600; color: var(--ia-muted); margin: 0;
    text-transform: none; letter-spacing: .01em;
}
:is(.mod-revision_puertos, .mod-contador_ot-tecnicos) .card[class*="border-left-"] > .card-body h2 {
    display: block; font-size: 1.75rem; font-weight: 600; line-height: 1.2;
    color: var(--ia-text); margin: 0;
}
:is(.mod-revision_puertos, .mod-contador_ot-tecnicos) .card[class*="border-left-"] > .card-body small { font-size: .78rem; color: var(--ia-muted) !important; }
:is(.mod-revision_puertos, .mod-contador_ot-tecnicos) .card.h-100[class*="border-left-"] { height: auto !important; }

/* ---------- Formularios (gestor_form): listados ---------- */
.mod-gestor_form .gf-pagina { margin-top: 4px; }
.mod-gestor_form .gf-pagina .card { margin-bottom: 1rem; }
.mod-gestor_form .gf-encabezado {
    gap: 12px; padding: 0 1rem 8px; border-bottom: 1px solid var(--ia-line);
    font-size: .8rem; font-weight: 600; color: var(--ia-muted);
}
.mod-gestor_form .gf-encabezado .formulario-nombre { flex: 1; }
.mod-gestor_form .gf-encabezado .formulario-ordenes { flex: 2; }
.mod-gestor_form .gf-encabezado .formulario-acciones { flex-shrink: 0; min-width: 260px; text-align: right; }
.mod-gestor_form .gf-pagina .formulario-item { flex-wrap: wrap; margin: 0; }
.mod-gestor_form .gf-pagina .formulario-item:last-child { border-bottom: 0; }
.mod-gestor_form .gf-pagina .formulario-acciones { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; min-width: 260px; }
.mod-gestor_form .gf-pagina .formulario-acciones form { margin: 0; }
.mod-gestor_form .gf-pagina .orden-badge { background: rgb(var(--ia-info-rgb) / .14) !important; color: var(--ia-info) !important; display: inline-flex; gap: 4px; align-items: center; }
.mod-gestor_form .container_B .sc-page-head { margin-top: 0; }
@media (max-width: 767.98px) {
    .mod-gestor_form .gf-pagina .formulario-nombre { white-space: normal; flex-basis: 100%; }
    .mod-gestor_form .gf-pagina .formulario-acciones { justify-content: flex-start; min-width: 0; }
    .mod-gestor_form .container_B { padding: 16px; }
}

/* ---------- SweetAlert (swal v5): botones con el mismo lenguaje que el sistema ---------- */
.swal2-modal { border-radius: 12px !important; background: var(--ia-panel) !important; box-shadow: var(--ia-shadow-lg); }
.swal2-modal .swal2-styled { border-radius: 7px !important; font-size: .9rem !important; font-weight: 500 !important; padding: .5rem 1.1rem !important; box-shadow: none !important; }
.swal2-modal h2 { font-size: 1.25rem !important; font-weight: 600 !important; }
.swal2-modal .swal2-content { font-size: .95rem !important; color: var(--ia-muted) !important; }

/* ---------- Móvil: tablas que se salían del ancho ---------- */
@media (max-width: 576px) {
    .card-header { flex-wrap: wrap; gap: 8px; }
    .dataTables_wrapper .dt-buttons { display: flex; flex-wrap: wrap; gap: 4px; }
}

/* ---------- Modales de Catálogo y Equipos (bodega): misma cabecera que el resto ---------- */
.mod-catalogo .modal-header, .mod-catalogo .modal-header.bg-primary,
.mod-equipos_productos .modal-header {
    background: var(--ia-panel) !important; color: var(--ia-text) !important;
    border-bottom: 1px solid var(--ia-line) !important;
}
.mod-catalogo .modal-header .modal-title, .mod-equipos_productos .modal-header .modal-title { color: var(--ia-accent) !important; font-weight: 600; }
.mod-catalogo .modal-header .modal-title i, .mod-equipos_productos .modal-header .modal-title i { color: var(--ia-accent) !important; }
.mod-catalogo .modal-header .close, .mod-equipos_productos .modal-header .close,
.mod-catalogo .modal-header .close span, .mod-equipos_productos .modal-header .close span { color: var(--ia-muted) !important; opacity: 1; text-shadow: none; }
.mod-catalogo .modal-header .close:hover, .mod-equipos_productos .modal-header .close:hover { color: var(--ia-text) !important; }

/* Catálogo: en móvil la cabecera (título + selector Tabla/Catálogo + botón) se apila */
@media (max-width: 767.98px) {
    .mod-catalogo .card > .card-header > .d-flex { flex-wrap: wrap; gap: 10px; }
    .mod-catalogo .card > .card-header > .d-flex > div:first-child { flex-basis: 100%; }
}
/* ============================================================
   §92 — SISTEMA DE BOTONES (v2.3)
   Un solo lenguaje de botones para TODOS los módulos (incluidas las
   pantallas de bodega restauradas) y los 3 temas.

   Cómo funciona
   - Todas las reglas de aspecto van dentro de @layer sc-botones y con
     !important. Una declaración !important dentro de una capa (layer)
     gana a cualquier !important fuera de capas, sin importar la
     especificidad: así los CSS antiguos de cada módulo (degradados,
     colores fijos, tamaños de Bootstrap del original) ya no compiten.
   - NUNCA se fija aquí display, visibility, width, float ni márgenes con
     !important (romperían .d-none, .hide() de jQuery, .btn-block…).
   - Para una excepción de un módulo, agréguela en ESTE archivo, dentro
     de la capa y acotada con .mod-<carpeta>.

   Jerarquía
     primario   .btn-primary, .btn-ia, .swal2-confirm   acción principal
     neutro     .btn-secondary/-light/-default/-dark, .btn-outline-secondary,
                .btn-ia.sec, botones sin color           filtros, limpiar, volver
     éxito      .btn-success                              confirmar / agregar
     peligro    .btn-danger, .btn-outline-danger          eliminar / anular
     aviso/info .btn-warning, .btn-info
     contorno   .btn-outline-*                            secundaria con color
     ícono      botones .btn-sm en tablas, .btn-icon, .btn-datatable
     exportar   .dt-buttons (Excel / PDF / CSV / Imprimir)
   Tamaños: normal 36px · pequeño (.btn-sm) 30px · grande (.btn-lg) 42px
   ============================================================ */

/* ---------- Tokens ---------- */
:root, :root[data-tema="verde"], :root[data-tema="oscuro"] {
    --sc-btn-h: 36px;
    --sc-btn-h-sm: 30px;
    --sc-btn-h-lg: 42px;
    --sc-btn-r: 8px;
    --sc-btn-r-sm: 7px;
    --sc-btn-line: rgb(var(--ia-overlay-rgb) / .16);
    --sc-btn-line-h: rgb(var(--ia-overlay-rgb) / .30);
    --sc-btn-neutro-bg: rgb(var(--ia-overlay-rgb) / .03);
    --sc-btn-neutro-h: rgb(var(--ia-overlay-rgb) / .08);
    --sc-on-success: #04261a;
    --sc-on-warn: #2b1a00;
}
:root[data-tema="claro"] {
    --sc-btn-line: rgb(var(--ia-overlay-rgb) / .18);
    --sc-btn-line-h: rgb(var(--ia-overlay-rgb) / .34);
    --sc-btn-neutro-bg: var(--ia-panel);
    --sc-btn-neutro-h: rgb(var(--ia-overlay-rgb) / .05);
    --sc-on-success: #fff;
    --sc-on-warn: #fff;
}

/* ---------- Disposición (fuera de la capa, sin !important) ----------
   Las pantallas restauradas volvían a inline-block (Bootstrap 4). */
html body .btn, html body .btn-ia,
:is(.mod-traspaso, .mod-catalogo_ot, .mod-recepcion, .mod-kardex_bodegas, .mod-catalogo, .mod-equipos_productos, .mod-ia_acantilada) :is(.btn, .btn-ia, button.btn) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    vertical-align: middle;
}
html body .btn-block { display: flex; }
table .dropdown-menu .dropdown-item, .dataTable .dropdown-menu .dropdown-item { display: flex; align-items: center; }
.dt-buttons { display: inline-flex; flex-wrap: wrap; align-items: center; }
html body .page-link, html body .dataTables_wrapper .dataTables_paginate a.paginate_button:not(.page-link) {
    display: inline-flex; align-items: center; justify-content: center;
}
html .mod-ia_acantilada #dic-app :is(.btn, button) { display: inline-flex; align-items: center; justify-content: center; vertical-align: middle; }
html body :is(table, .dataTable) .btn-group { display: inline-flex; gap: 4px; flex-wrap: nowrap; }

@layer sc-botones {

/* ============================================================
   1. BASE (forma, tipografía, estados comunes)
   ============================================================ */
.btn, .btn-ia, .swal2-confirm, .swal2-cancel, .swal2-deny, .fc-button,
.mod-ia_acantilada :is(#dash-app, #clf-app, #clt-app) :is(.btn, button.sec, button.warn, button.danger),
.mod-ia_acantilada #dic-app :is(.btn, button) {
    min-height: var(--sc-btn-h) !important;
    height: auto !important;
    padding: 0 1rem !important;
    gap: .5rem !important;
    font-family: var(--ia-font) !important;
    font-size: .875rem !important;
    font-weight: 500 !important;
    line-height: 1.2 !important;
    letter-spacing: .005em !important;
    text-transform: none !important;
    text-shadow: none !important;
    text-decoration: none !important;
    border-width: 1px !important;
    border-style: solid !important;
    border-radius: var(--sc-btn-r) !important;
    background-image: none !important;
    box-shadow: none !important;
    filter: none !important;
    transform: none !important;
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease !important;
}
.btn > :is(i, .fa, .fas, .far, .fab, .fa-solid, .fa-regular, svg),
.btn-ia > :is(i, svg), :is(.swal2-confirm, .swal2-cancel) > i {
    font-size: 1em !important;
    line-height: 1 !important;
    margin: 0 !important;
    flex-shrink: 0;
}
.btn > :is(i, .fa, .fas, .far, svg), .btn-ia > :is(i, svg) { opacity: 1 !important; }
.btn > :is(i, .fa, .fas, .far).mr-1, .btn > :is(i, .fa, .fas, .far).mr-2 { margin-right: 0 !important; }
.btn > i.ml-1, .btn > i.ml-2 { margin-left: 0 !important; }
.btn > svg { width: 1em !important; height: 1em !important; }

.btn-sm, .btn-group-sm > .btn, .btn-ia.sm {
    min-height: var(--sc-btn-h-sm) !important;
    padding: 0 .7rem !important;
    gap: .4rem !important;
    font-size: .8125rem !important;
    border-radius: var(--sc-btn-r-sm) !important;
}
.btn-lg, .btn-group-lg > .btn, .btn-ia.lg {
    min-height: var(--sc-btn-h-lg) !important;
    padding: 0 1.3rem !important;
    font-size: .95rem !important;
}

/* foco visible: anillo del color de acento (no al hacer clic con el mouse) */
.btn:focus, .btn.focus, .btn-ia:focus, .swal2-confirm:focus, .swal2-cancel:focus { box-shadow: none !important; outline: none !important; }
.btn:focus-visible, .btn-ia:focus-visible, .swal2-confirm:focus-visible, .swal2-cancel:focus-visible, .fc-button:focus-visible {
    box-shadow: 0 0 0 3px rgb(var(--ia-accent-rgb) / .35) !important;
    outline: none !important;
}
/* deshabilitado */
.btn:disabled, .btn.disabled, .btn-ia:disabled, .btn-ia.disabled, fieldset:disabled .btn, .swal2-confirm:disabled, .swal2-cancel:disabled {
    opacity: .5 !important;
    cursor: not-allowed !important;
    pointer-events: none;
}

/* ============================================================
   2. VARIANTES DE COLOR
   ============================================================ */
/* --- Neutro (secundario / contorno gris) --- */
.btn-secondary, .btn-light, .btn-default, .btn-dark, .btn-outline-secondary, .btn-outline-light, .btn-outline-dark,
.btn:not([class*="btn-"]), .btn-ia.sec, .fc-button, .swal2-cancel,
.mod-ia_acantilada :is(#dash-app, #clf-app, #clt-app, #dic-app) :is(.btn.sec, button.sec) {
    background-color: var(--sc-btn-neutro-bg) !important;
    border-color: var(--sc-btn-line) !important;
    color: var(--ia-text) !important;
}
:is(.btn-secondary, .btn-light, .btn-default, .btn-dark, .btn-outline-secondary, .btn-outline-light, .btn-outline-dark, .btn:not([class*="btn-"]), .btn-ia.sec, .fc-button, .swal2-cancel) > :is(i, svg) {
    color: var(--ia-muted) !important;
}
:is(.btn-secondary, .btn-light, .btn-default, .btn-dark, .btn-outline-secondary, .btn-outline-light, .btn-outline-dark, .btn:not([class*="btn-"]), .btn-ia.sec, .fc-button, .swal2-cancel):hover,
.mod-ia_acantilada :is(#dash-app, #clf-app, #clt-app, #dic-app) :is(.btn.sec, button.sec):hover {
    background-color: var(--sc-btn-neutro-h) !important;
    border-color: var(--sc-btn-line-h) !important;
    color: var(--ia-text) !important;
}
:is(.btn-secondary, .btn-light, .btn-default, .btn-dark, .btn-outline-secondary, .btn-outline-light, .btn-outline-dark, .btn:not([class*="btn-"]), .btn-ia.sec, .fc-button, .swal2-cancel):hover > :is(i, svg) {
    color: var(--ia-text) !important;
}
/* Neutro "activo" (toggles, pestañas de período, Mes/Semana del calendario) */
:is(.btn-secondary, .btn-light, .btn-default, .btn-dark, .btn-outline-secondary, .btn-outline-light, .btn-outline-dark, .btn:not([class*="btn-"]), .btn-ia.sec, .fc-button):is(.active, .activo, .fc-state-active, [aria-pressed="true"]),
.btn-group-toggle > .btn.active {
    background-color: rgb(var(--ia-accent-rgb) / .14) !important;
    border-color: rgb(var(--ia-accent-rgb) / .55) !important;
    color: var(--ia-accent) !important;
}
:is(.btn-secondary, .btn-light, .btn-default, .btn-dark, .btn-outline-secondary, .btn:not([class*="btn-"]), .fc-button):is(.active, .activo, .fc-state-active, [aria-pressed="true"]) > :is(i, svg) { color: var(--ia-accent) !important; }

/* --- Primario (acento del tema) --- */
.btn-primary, .btn-ia:not(.sec):not(.danger):not(.warn), .swal2-confirm,
.mod-ia_acantilada :is(#dash-app, #clf-app, #clt-app, #dic-app) .btn:not(.sec):not(.warn):not(.danger) {
    background-color: var(--ia-accent) !important;
    border-color: var(--ia-accent) !important;
    color: var(--ia-accent-d) !important;
}
:is(.btn-primary, .btn-ia:not(.sec):not(.danger):not(.warn), .swal2-confirm) > :is(i, svg),
.mod-ia_acantilada :is(#dash-app, #clf-app, #clt-app, #dic-app) .btn:not(.sec):not(.warn):not(.danger) > :is(i, svg) { color: inherit !important; }
:is(.btn-primary, .btn-ia:not(.sec):not(.danger):not(.warn), .swal2-confirm):hover,
.mod-ia_acantilada :is(#dash-app, #clf-app, #clt-app, #dic-app) .btn:not(.sec):not(.warn):not(.danger):hover {
    background-color: var(--ia-accent-h) !important;
    border-color: var(--ia-accent-h) !important;
    color: var(--ia-accent-d) !important;
}
:root[data-tema="claro"] :is(.btn-primary, .btn-ia:not(.sec):not(.danger):not(.warn), .swal2-confirm):hover { background-color: var(--ia-accent-h) !important; }

/* --- Éxito --- */
.btn-success {
    background-color: var(--ia-success) !important;
    border-color: var(--ia-success) !important;
    color: var(--sc-on-success) !important;
}
.btn-success:hover { background-color: color-mix(in srgb, var(--ia-success) 86%, var(--ia-text)) !important; border-color: color-mix(in srgb, var(--ia-success) 86%, var(--ia-text)) !important; color: var(--sc-on-success) !important; }
:root[data-tema="claro"] .btn-success:hover { background-color: color-mix(in srgb, var(--ia-success) 85%, #000) !important; border-color: color-mix(in srgb, var(--ia-success) 85%, #000) !important; }

/* --- Peligro --- */
.btn-danger, .btn-ia.danger, .mod-ia_acantilada :is(#dic-app) :is(.btn.danger, button.danger),
.swal2-confirm:is([style*="192, 57, 43"], [style*="248, 113, 113"], [style*="221, 51, 51"], [style*="220, 53, 69"]) {
    background-color: var(--ia-danger) !important;
    border-color: var(--ia-danger) !important;
    color: var(--sc-on-danger) !important;
}
:is(.btn-danger, .btn-ia.danger) > :is(i, svg) { color: inherit !important; }
:is(.btn-danger, .btn-ia.danger, .swal2-confirm:is([style*="192, 57, 43"], [style*="248, 113, 113"], [style*="221, 51, 51"], [style*="220, 53, 69"])):hover {
    background-color: color-mix(in srgb, var(--ia-danger) 86%, var(--ia-text)) !important;
    border-color: color-mix(in srgb, var(--ia-danger) 86%, var(--ia-text)) !important;
    color: var(--sc-on-danger) !important;
}
:root[data-tema="claro"] :is(.btn-danger, .btn-ia.danger):hover { background-color: color-mix(in srgb, var(--ia-danger) 85%, #000) !important; border-color: color-mix(in srgb, var(--ia-danger) 85%, #000) !important; }

/* --- Aviso --- */
.btn-warning, .btn-ia.warn, .mod-ia_acantilada #dic-app :is(.btn.warn, button.warn) {
    background-color: var(--ia-warn) !important;
    border-color: var(--ia-warn) !important;
    color: var(--sc-on-warn) !important;
}
.btn-warning:hover, .btn-ia.warn:hover { background-color: color-mix(in srgb, var(--ia-warn) 86%, var(--ia-text)) !important; color: var(--sc-on-warn) !important; }

/* --- Info --- */
.btn-info {
    background-color: var(--ia-info) !important;
    border-color: var(--ia-info) !important;
    color: var(--sc-on-info) !important;
}
.btn-info:hover { background-color: color-mix(in srgb, var(--ia-info) 86%, var(--ia-text)) !important; border-color: color-mix(in srgb, var(--ia-info) 86%, var(--ia-text)) !important; color: var(--sc-on-info) !important; }
:is(.btn-success, .btn-warning, .btn-info) > :is(i, svg) { color: inherit !important; }

/* --- Contorno con color (fondo transparente; al pasar el mouse, tono suave) --- */
.btn-outline-primary { background-color: transparent !important; color: var(--ia-accent) !important;  border-color: rgb(var(--ia-accent-rgb) / .5) !important; }
.btn-outline-success { background-color: transparent !important; color: var(--ia-success) !important; border-color: rgb(var(--ia-success-rgb) / .5) !important; }
.btn-outline-danger  { background-color: transparent !important; color: var(--ia-danger) !important;  border-color: rgb(var(--ia-danger-rgb) / .5) !important; }
.btn-outline-warning { background-color: transparent !important; color: var(--ia-warn) !important;    border-color: rgb(var(--ia-warn-rgb) / .55) !important; }
.btn-outline-info    { background-color: transparent !important; color: var(--ia-info) !important;    border-color: rgb(var(--ia-info-rgb) / .5) !important; }
.btn-outline-primary:hover, .btn-outline-primary.active { background-color: rgb(var(--ia-accent-rgb) / .12) !important;  border-color: var(--ia-accent) !important;  color: var(--ia-accent) !important; }
.btn-outline-success:hover, .btn-outline-success.active { background-color: rgb(var(--ia-success-rgb) / .12) !important; border-color: var(--ia-success) !important; color: var(--ia-success) !important; }
.btn-outline-danger:hover,  .btn-outline-danger.active  { background-color: rgb(var(--ia-danger-rgb) / .12) !important;  border-color: var(--ia-danger) !important;  color: var(--ia-danger) !important; }
.btn-outline-warning:hover, .btn-outline-warning.active { background-color: rgb(var(--ia-warn-rgb) / .14) !important;    border-color: var(--ia-warn) !important;    color: var(--ia-warn) !important; }
.btn-outline-info:hover,    .btn-outline-info.active    { background-color: rgb(var(--ia-info-rgb) / .12) !important;    border-color: var(--ia-info) !important;    color: var(--ia-info) !important; }
:is(.btn-outline-primary, .btn-outline-success, .btn-outline-danger, .btn-outline-warning, .btn-outline-info) > :is(i, svg) { color: inherit !important; }

/* --- Enlace --- */
.btn-link {
    background: transparent !important; border-color: transparent !important;
    color: var(--ia-accent) !important; padding-left: .4rem !important; padding-right: .4rem !important;
}
.btn-link:hover { color: var(--ia-accent-h) !important; text-decoration: underline !important; }

/* --- Grupos: botones unidos (segmentados), salvo Exportar y las acciones de tablas --- */
.btn-group:not(.dt-buttons) > .btn:not(:last-child):not(.dropdown-toggle),
.btn-group:not(.dt-buttons) > .btn-group:not(:last-child) > .btn { border-top-right-radius: 0 !important; border-bottom-right-radius: 0 !important; }
.btn-group:not(.dt-buttons) > .btn:not(:first-child),
.btn-group:not(.dt-buttons) > .btn-group:not(:first-child) > .btn { border-top-left-radius: 0 !important; border-bottom-left-radius: 0 !important; }
:is(table, .dataTable) .btn-group > .btn { margin-left: 0 !important; border-radius: var(--sc-btn-r-sm) !important; }
.fc-button-group > .fc-button:not(.fc-corner-left), .fc-button-group > .fc-button:not(:first-child) { border-top-left-radius: 0 !important; border-bottom-left-radius: 0 !important; }
.fc-button-group > .fc-button:not(.fc-corner-right), .fc-button-group > .fc-button:not(:last-child) { border-top-right-radius: 0 !important; border-bottom-right-radius: 0 !important; }

/* ============================================================
   3. BOTONES DE ÍCONO (acciones en tablas, tarjetas y listas)
   Cuadrados de 30px, discretos: fondo transparente, borde suave y el
   ícono con el color de la acción. Al pasar el mouse, tono suave.
   ============================================================ */
:is(table, .dataTable, .catalogo-acciones, .formulario-acciones, .art-acciones) .btn-sm,
.btn-icon, .btn-datatable, .btn-transparent-dark, .btn-tabla {
    min-width: var(--sc-btn-h-sm) !important;
    min-height: var(--sc-btn-h-sm) !important;
    padding: 0 .55rem !important;
    border-radius: var(--sc-btn-r-sm) !important;
    font-size: .8125rem !important;
}
.btn-icon, .btn-datatable, .btn-transparent-dark:not(.email) {
    width: var(--sc-btn-h-sm) !important;
    height: var(--sc-btn-h-sm) !important;
    padding: 0 !important;
}
.btn-datatable svg, .btn-transparent-dark svg, .btn-icon svg { width: 15px !important; height: 15px !important; }
.btn-transparent-dark.email { width: auto !important; height: var(--sc-btn-h-sm) !important; padding: 0 .5rem !important; gap: .3rem !important; }
/* color por acción (neutro por defecto) */
:is(table, .dataTable, .catalogo-acciones) .btn-sm:is(.btn-secondary, .btn-light, .btn-default, .btn-dark, .btn-outline-secondary, .btn-outline-dark, .btn-outline-light),
.btn-datatable, .btn-transparent-dark, .btn-icon:not([class*="btn-outline"]):not(.btn-primary):not(.btn-success):not(.btn-danger) {
    background-color: transparent !important;
    border-color: var(--sc-btn-line) !important;
    color: var(--ia-muted) !important;
}
:is(table, .dataTable, .catalogo-acciones) .btn-sm:is(.btn-secondary, .btn-light, .btn-default, .btn-dark, .btn-outline-secondary, .btn-outline-dark, .btn-outline-light):hover,
.btn-datatable:hover, .btn-transparent-dark:hover, .btn-datatable[aria-expanded="true"],
.btn-icon:not([class*="btn-outline"]):not(.btn-primary):not(.btn-success):not(.btn-danger):hover {
    background-color: var(--sc-btn-neutro-h) !important;
    border-color: var(--sc-btn-line-h) !important;
    color: var(--ia-text) !important;
}
:is(.btn-datatable, .btn-transparent-dark) :is(i, svg) { color: inherit !important; }
/* sólidos dentro de tablas → versión suave del mismo color */
:is(table, .dataTable, .catalogo-acciones) .btn-sm.btn-primary, .btn-icon.btn-primary  { background-color: rgb(var(--ia-accent-rgb) / .10) !important;  border-color: rgb(var(--ia-accent-rgb) / .45) !important;  color: var(--ia-accent) !important; }
:is(table, .dataTable, .catalogo-acciones) .btn-sm.btn-success, .btn-icon.btn-success  { background-color: rgb(var(--ia-success-rgb) / .10) !important; border-color: rgb(var(--ia-success-rgb) / .45) !important; color: var(--ia-success) !important; }
:is(table, .dataTable, .catalogo-acciones) .btn-sm.btn-danger, .btn-icon.btn-danger    { background-color: rgb(var(--ia-danger-rgb) / .10) !important;  border-color: rgb(var(--ia-danger-rgb) / .45) !important;  color: var(--ia-danger) !important; }
:is(table, .dataTable, .catalogo-acciones) .btn-sm.btn-warning                          { background-color: rgb(var(--ia-warn-rgb) / .12) !important;    border-color: rgb(var(--ia-warn-rgb) / .5) !important;     color: var(--ia-warn) !important; }
:is(table, .dataTable, .catalogo-acciones) .btn-sm.btn-info                             { background-color: rgb(var(--ia-info-rgb) / .10) !important;    border-color: rgb(var(--ia-info-rgb) / .45) !important;    color: var(--ia-info) !important; }
:is(table, .dataTable, .catalogo-acciones) .btn-sm.btn-primary:hover, .btn-icon.btn-primary:hover { background-color: rgb(var(--ia-accent-rgb) / .2) !important;  border-color: var(--ia-accent) !important; }
:is(table, .dataTable, .catalogo-acciones) .btn-sm.btn-success:hover, .btn-icon.btn-success:hover { background-color: rgb(var(--ia-success-rgb) / .2) !important; border-color: var(--ia-success) !important; }
:is(table, .dataTable, .catalogo-acciones) .btn-sm.btn-danger:hover, .btn-icon.btn-danger:hover   { background-color: rgb(var(--ia-danger-rgb) / .2) !important;  border-color: var(--ia-danger) !important; }
:is(table, .dataTable, .catalogo-acciones) .btn-sm.btn-warning:hover { background-color: rgb(var(--ia-warn-rgb) / .22) !important; border-color: var(--ia-warn) !important; }
:is(table, .dataTable, .catalogo-acciones) .btn-sm.btn-info:hover    { background-color: rgb(var(--ia-info-rgb) / .2) !important;  border-color: var(--ia-info) !important; }
:is(table, .dataTable, .catalogo-acciones) .btn-sm:is(.btn-primary, .btn-success, .btn-danger, .btn-warning, .btn-info) > :is(i, svg) { color: inherit !important; }
/* "Eliminar" dentro de tablas en rojo aunque use la clase neutra */
:is(.btn-datatable, .btn-transparent-dark).btnBorrar.btnBorrar.btnBorrar.btnBorrar { color: var(--ia-danger) !important; }
:is(.btn-datatable, .btn-transparent-dark).btnBorrar.btnBorrar.btnBorrar.btnBorrar:hover { background-color: rgb(var(--ia-danger-rgb) / .12) !important; border-color: rgb(var(--ia-danger-rgb) / .5) !important; color: var(--ia-danger) !important; }

/* ============================================================
   4. EXPORTAR / IMPRIMIR (DataTables Buttons)
   Grupo uniforme: botones neutros pequeños, el ícono indica el formato.
   ============================================================ */
.dt-buttons { gap: 6px !important; }
.dt-buttons > .btn, .dt-buttons > .dt-button, .dt-buttons .btn-group > .btn {
    margin: 0 !important;
    min-height: var(--sc-btn-h-sm) !important;
    padding: 0 .75rem !important;
    gap: .4rem !important;
    font-size: .8125rem !important;
    font-weight: 500 !important;
    line-height: 1.2 !important;
    border-radius: var(--sc-btn-r-sm) !important;
    background-color: var(--sc-btn-neutro-bg) !important;
    border: 1px solid var(--sc-btn-line) !important;
    color: var(--ia-text) !important;
}
.dt-buttons > .btn:hover, .dt-buttons > .dt-button:hover, .dt-buttons > .btn.dt-button-active {
    background-color: var(--sc-btn-neutro-h) !important;
    border-color: var(--sc-btn-line-h) !important;
    color: var(--ia-text) !important;
}
.dt-buttons > :is(.btn, .dt-button) :is(i, svg) { color: var(--ia-accent) !important; opacity: 1 !important; font-size: 1em !important; margin: 0 !important; }
.dt-buttons > :is(.btn, .dt-button).buttons-excel :is(i, svg) { color: var(--ia-success) !important; }
.dt-buttons > :is(.btn, .dt-button).buttons-pdf :is(i, svg)   { color: var(--ia-danger) !important; }
.dt-buttons > :is(.btn, .dt-button).buttons-csv :is(i, svg)   { color: var(--ia-info) !important; }
.dt-buttons > :is(.btn, .dt-button) > span { display: inline-flex; align-items: center; gap: .4rem; }
.dt-buttons > .buttons-collection.dropdown-toggle::after { margin-left: .15rem !important; opacity: .7; }

/* Menú de la colección "Exportar": sin emojis, con ícono del formato */
div.dt-button-collection { border-radius: 10px !important; box-shadow: var(--ia-shadow-lg) !important; padding: 5px !important; min-width: 170px; }
div.dt-button-collection .dt-button, div.dt-button-collection .dropdown-item {
    min-height: 34px !important; padding: 0 .75rem !important; border-radius: 6px !important;
    font-size: .85rem !important; font-weight: 500 !important; gap: .55rem !important;
    background: transparent !important; color: var(--ia-text) !important; border: 0 !important;
}
div.dt-button-collection .dt-button:hover, div.dt-button-collection .dropdown-item:hover { background: var(--sc-btn-neutro-h) !important; color: var(--ia-text) !important; }
div.dt-button-collection .dt-button::before {
    content: "\f15b" !important;
    font-family: "Font Awesome 6 Free" !important; font-weight: 900 !important;
    font-size: .95em !important; width: 1.1em; text-align: center; margin: 0 !important;
    color: var(--ia-muted);
}
div.dt-button-collection .dt-button.buttons-excel::before { content: "\f1c3" !important; color: var(--ia-success); }
div.dt-button-collection .dt-button.buttons-pdf::before   { content: "\f1c1" !important; color: var(--ia-danger); }
div.dt-button-collection .dt-button.buttons-csv::before   { content: "\f6dd" !important; color: var(--ia-info); }
div.dt-button-collection .dt-button.buttons-copy::before  { content: "\f0c5" !important; }
div.dt-button-collection .dt-button.buttons-print::before { content: "\f02f" !important; color: var(--ia-accent); }
div.dt-button-collection .dt-button.dt-button:has(i)::before { content: none !important; }
div.dt-button-collection .dt-button i { color: var(--ia-accent) !important; width: 1.1em; text-align: center; }
div.dt-button-collection .dt-button.buttons-excel i { color: var(--ia-success) !important; }
div.dt-button-collection .dt-button.buttons-pdf i   { color: var(--ia-danger) !important; }
div.dt-button-collection .dt-button.buttons-csv i   { color: var(--ia-info) !important; }
/* Menús de acciones (⋮) de las tablas: ítems alineados, íconos del mismo tamaño */
table .dropdown-menu .dropdown-item, .dataTable .dropdown-menu .dropdown-item {
    gap: .55rem !important; padding: .4rem .9rem !important; font-size: .85rem !important; line-height: 1.3 !important;
}
table .dropdown-menu .dropdown-item :is(svg, i), .dataTable .dropdown-menu .dropdown-item :is(svg, i) {
    width: 14px !important; height: 14px !important; font-size: 14px !important; margin: 0 !important; flex-shrink: 0; text-align: center;
}
table .dropdown-menu .dropdown-item.btnBorrar :is(svg, i) { color: var(--ia-danger) !important; }

/* ============================================================
   5. PAGINACIÓN (DataTables, Bootstrap y estilo propio)
   ============================================================ */
.page-link, .dataTables_wrapper .dataTables_paginate a.paginate_button:not(.page-link) {
    min-width: 32px !important; height: 32px !important;
    display: inline-flex; align-items: center; justify-content: center;
    padding: 0 .6rem !important; margin: 0 2px !important;
    border-radius: var(--sc-btn-r-sm) !important;
    border: 1px solid var(--sc-btn-line) !important;
    background: transparent !important; background-image: none !important;
    color: var(--ia-text) !important;
    font-size: .8125rem !important; font-weight: 500 !important; line-height: 1 !important;
    box-shadow: none !important;
}
.page-link:hover, .dataTables_wrapper .dataTables_paginate a.paginate_button:not(.page-link):not(.current):not(.disabled):hover {
    background: var(--sc-btn-neutro-h) !important; border-color: var(--sc-btn-line-h) !important; color: var(--ia-text) !important;
}
.page-item.active .page-link, .dataTables_wrapper .dataTables_paginate a.paginate_button.current {
    background: var(--ia-accent) !important; border-color: var(--ia-accent) !important; color: var(--ia-accent-d) !important;
}
.page-item.disabled .page-link, .dataTables_wrapper .dataTables_paginate a.paginate_button.disabled {
    background: transparent !important; color: var(--ia-muted) !important; opacity: .5 !important; border-color: var(--sc-btn-line) !important;
}
.page-item:first-child .page-link, .page-item:last-child .page-link { border-radius: var(--sc-btn-r-sm) !important; }

/* ============================================================
   6. SWEETALERT (v5 y v11): Confirmar = primario (o peligro), Cancelar = neutro
   ============================================================ */
.swal2-actions, .swal2-buttonswrapper { gap: .5rem; }
:is(.swal2-confirm, .swal2-cancel) { margin: .3rem !important; min-width: 104px; }
.swal2-cancel > :is(i, svg) { color: inherit !important; }

/* ============================================================
   7. CASOS POR MÓDULO
   ============================================================ */
/* Órdenes: contadores Iniciados / Pendientes / Aprobados / Cotizados
   (filtros con número): mismo alto y radio, tono suave del estado. */
:is(.btn-cont-iniciada, .btn-cont-aprobada, .btn-cont-cotizada, .btn-iniciados, .btn-pendientes, .btn-aprobados) {
    min-height: var(--sc-btn-h) !important;
    padding: 0 .9rem !important;
    border-radius: var(--sc-btn-r) !important;
    font-size: .84rem !important; font-weight: 600 !important;
    color: var(--ia-text) !important;
}
.btn-cont-iniciada, .btn-iniciados   { background-color: rgb(var(--ot-iniciada-rgb, var(--ia-danger-rgb)) / .14) !important; border-color: rgb(var(--ot-iniciada-rgb, var(--ia-danger-rgb)) / .6) !important; }
.btn-cont-aprobada, .btn-pendientes  { background-color: rgb(var(--ot-aprobada-rgb, var(--ia-warn-rgb)) / .14) !important;  border-color: rgb(var(--ot-aprobada-rgb, var(--ia-warn-rgb)) / .6) !important; }
.btn-cont-cotizada, .btn-aprobados   { background-color: rgb(var(--ot-cotizada-rgb, var(--ia-success-rgb)) / .14) !important; border-color: rgb(var(--ot-cotizada-rgb, var(--ia-success-rgb)) / .6) !important; }
.btn-cont-iniciada:hover, .btn-iniciados:hover   { background-color: rgb(var(--ot-iniciada-rgb, var(--ia-danger-rgb)) / .24) !important; }
.btn-cont-aprobada:hover, .btn-pendientes:hover  { background-color: rgb(var(--ot-aprobada-rgb, var(--ia-warn-rgb)) / .24) !important; }
.btn-cont-cotizada:hover, .btn-aprobados:hover   { background-color: rgb(var(--ot-cotizada-rgb, var(--ia-success-rgb)) / .24) !important; }

/* Órdenes: "Limpiar" de los filtros es secundario (era rojo sólido) */
:is(.mod-ordenes, .mod-ordenes2) .btn-ia.danger {
    background-color: var(--sc-btn-neutro-bg) !important; border-color: var(--sc-btn-line) !important; color: var(--ia-text) !important;
}
:is(.mod-ordenes, .mod-ordenes2) .btn-ia.danger:hover { background-color: var(--sc-btn-neutro-h) !important; border-color: var(--sc-btn-line-h) !important; color: var(--ia-text) !important; }
:is(.mod-ordenes, .mod-ordenes2) .btn-ia.danger > i { color: var(--ia-muted) !important; }

/* Órdenes (v2.4): filas pintadas con el color de estado del original (pastel):
   los íconos de acción van en texto oscuro sobre un fondo blanco translúcido. */
/* v2.5: .btn.btn sube la especificidad sobre ".btn-icon:not(...)" (antes ganaba y el ⋮ quedaba gris casi invisible);
   también cubre la fila hija (pantallas angostas, botón +). */
:is(.mod-ordenes, .mod-ordenes2) table.dataTable tbody :is(tr:is(.ot-fila-iniciada, .ot-fila-aprobada, .ot-fila-cotizada), tr:is(.ot-fila-iniciada, .ot-fila-aprobada, .ot-fila-cotizada) + tr.child) :is(.btn-datatable, .btn-transparent-dark).btn.btn {
    background-color: rgb(255 255 255 / .35) !important; border-color: rgb(0 0 0 / .25) !important; color: #1b2631 !important;
}
:is(.mod-ordenes, .mod-ordenes2) table.dataTable tbody :is(tr:is(.ot-fila-iniciada, .ot-fila-aprobada, .ot-fila-cotizada), tr:is(.ot-fila-iniciada, .ot-fila-aprobada, .ot-fila-cotizada) + tr.child) :is(.btn-datatable, .btn-transparent-dark).btn.btn:hover {
    background-color: rgb(255 255 255 / .6) !important; border-color: rgb(0 0 0 / .4) !important; color: #000 !important;
}
:is(.mod-ordenes, .mod-ordenes2) table.dataTable tbody :is(tr:is(.ot-fila-iniciada, .ot-fila-aprobada, .ot-fila-cotizada), tr:is(.ot-fila-iniciada, .ot-fila-aprobada, .ot-fila-cotizada) + tr.child) .ot-email-enviado.btn.btn { color: #0b5d55 !important; }

/* IA: selector de tipo de gráfico (Dona/Torta/Barras) y Exportar como toggles pequeños */
:is(.tipo-btn, .btn-exportar, .btn-historial, .btn-recalcular, .btn-descargar, .btn-regenerar) {
    min-height: var(--sc-btn-h-sm) !important;
    padding: 0 .7rem !important;
    border-radius: var(--sc-btn-r-sm) !important;
    font-size: .8125rem !important; font-weight: 500 !important;
    background-image: none !important; box-shadow: none !important; transform: none !important;
    background-color: var(--sc-btn-neutro-bg) !important; border: 1px solid var(--sc-btn-line) !important; color: var(--ia-text) !important;
    display: inline-flex; align-items: center; gap: .4rem;
}
:is(.tipo-btn, .btn-exportar, .btn-historial, .btn-recalcular, .btn-descargar, .btn-regenerar):hover { background-color: var(--sc-btn-neutro-h) !important; border-color: var(--sc-btn-line-h) !important; color: var(--ia-text) !important; }
.tipo-btn.activo, .tipo-btn.activo:hover { background-color: rgb(var(--ia-accent-rgb) / .14) !important; border-color: rgb(var(--ia-accent-rgb) / .55) !important; color: var(--ia-accent) !important; }
.mod-ia_acantilada #ia-app .btn-historial { min-height: var(--sc-btn-h) !important; padding: 0 1rem !important; border-radius: var(--sc-btn-r) !important; font-size: .875rem !important; }

/* IA › Diccionario: botones sin clase de Bootstrap */
.mod-ia_acantilada #dic-app button:not(.sec):not(.warn):not(.danger) { background-color: var(--ia-accent) !important; border-color: var(--ia-accent) !important; color: var(--ia-accent-d) !important; }
.mod-ia_acantilada #dic-app button:not(.sec):not(.warn):not(.danger):hover { background-color: var(--ia-accent-h) !important; border-color: var(--ia-accent-h) !important; }
.mod-ia_acantilada #dic-app :is(.btn, button) > i { color: inherit !important; }
.mod-ia_acantilada #dic-app :is(.btn.sec, button.sec) > i { color: var(--ia-muted) !important; }
/* "Volver" es secundario; los filtros Todos/Sistemas/… son un selector (activo en tono suave) */
.mod-ia_acantilada #dic-app a.btn[href="clasificar_componentes.php"]:not(.sec):not(.warn):not(.danger) { background-color: var(--sc-btn-neutro-bg) !important; border-color: var(--sc-btn-line) !important; color: var(--ia-text) !important; }
.mod-ia_acantilada #dic-app a.btn[href="clasificar_componentes.php"]:not(.sec):not(.warn):not(.danger):hover { background-color: var(--sc-btn-neutro-h) !important; border-color: var(--sc-btn-line-h) !important; }
.mod-ia_acantilada #dic-app a.btn[href="clasificar_componentes.php"]:not(.sec):not(.warn):not(.danger) > i { color: var(--ia-muted) !important; }
.mod-ia_acantilada #dic-app a.btn:is([href^="?cat="], [href="diccionario.php"]):not(.sec):not(.warn):not(.danger) { background-color: rgb(var(--ia-accent-rgb) / .14) !important; border-color: rgb(var(--ia-accent-rgb) / .55) !important; color: var(--ia-accent) !important; }

/* Puertos cerrados: "Excel" igual que los demás botones de exportar */
.mod-revision_puertos #btnExportar { background-color: var(--sc-btn-neutro-bg) !important; border-color: var(--sc-btn-line) !important; color: var(--ia-text) !important; }
.mod-revision_puertos #btnExportar:hover { background-color: var(--sc-btn-neutro-h) !important; border-color: var(--sc-btn-line-h) !important; }
.mod-revision_puertos #btnExportar > i { color: var(--ia-success) !important; }

/* Datos generales: botones de período (Este mes, 3 meses…) */
.mod-home .dg-btn { min-height: var(--sc-btn-h-sm) !important; }
.mod-home .dg-btn.dg-btn-p { background-color: var(--ia-accent) !important; border-color: var(--ia-accent) !important; color: var(--ia-accent-d) !important; }
.mod-home .dg-btn.dg-btn-p > i { color: inherit !important; }

/* Meteorología: botón Actualizar y "ver más" */
.mod-meteorologia :is(.meteo-btn, .meteo-btn-grande) { border-radius: var(--sc-btn-r) !important; min-height: var(--sc-btn-h-sm) !important; font-weight: 500 !important; }

/* ---------- Bodega restaurada: Traspaso, Insumos de OT, Recepción ----------
   Se conserva el significado del original: "+" (agregar) verde, "Limpiar"
   rojo, "Generar traspaso" / "Guardar productos" / "Aprobar recepción"
   como acción principal. */
:is(.mod-traspaso, .mod-catalogo_ot) .btn-limpiar {
    min-height: 28px !important; padding: 0 .6rem !important; font-size: .78rem !important;
    border-radius: var(--sc-btn-r-sm) !important;
    background-color: transparent !important; color: var(--ia-danger) !important; border-color: rgb(var(--ia-danger-rgb) / .5) !important;
}
:is(.mod-traspaso, .mod-catalogo_ot) .btn-limpiar:hover { background-color: rgb(var(--ia-danger-rgb) / .12) !important; border-color: var(--ia-danger) !important; color: var(--ia-danger) !important; }
:is(.mod-traspaso, .mod-catalogo_ot) .btn-limpiar > i { color: inherit !important; }
:is(.mod-traspaso, .mod-catalogo_ot) :is(.btn-guardar, .btn-confirmar), .mod-recepcion .btn-confirmar {
    background-color: var(--ia-accent) !important; border-color: var(--ia-accent) !important; color: var(--ia-accent-d) !important;
    font-weight: 600 !important;
}
:is(.mod-traspaso, .mod-catalogo_ot) .btn-guardar:hover, .mod-recepcion .btn-confirmar:hover { background-color: var(--ia-accent-h) !important; border-color: var(--ia-accent-h) !important; color: var(--ia-accent-d) !important; }
:is(.mod-traspaso, .mod-catalogo_ot) .btn-guardar > i, .mod-recepcion .btn-confirmar > i { color: inherit !important; }
.mod-catalogo_ot .btn-recepcion {
    background-color: var(--sc-btn-neutro-bg) !important; border-color: rgb(var(--ia-accent-rgb) / .5) !important; color: var(--ia-accent) !important;
}
.mod-catalogo_ot .btn-recepcion:hover { background-color: rgb(var(--ia-accent-rgb) / .12) !important; border-color: var(--ia-accent) !important; }
.mod-catalogo_ot .btn-recepcion > i { color: inherit !important; }
/* "+" agregar al carrito: verde suave, cuadrado */
:is(.mod-traspaso, .mod-catalogo_ot) .catalogo-table .btn-sm.btn-success {
    min-width: 32px !important; min-height: 32px !important; padding: 0 !important;
}
:is(.mod-traspaso, .mod-catalogo_ot) .catalogo-table .btn-sm.btn-success:disabled { opacity: .35 !important; }
/* Modal "Traspaso generado" */
.mod-traspaso #modalQRTraspaso #btnCopiarQR { min-height: 36px !important; }
.mod-traspaso #modalQRTraspaso #btnNuevoTraspaso {
    background-color: var(--ia-accent) !important; border-color: var(--ia-accent) !important; color: var(--ia-accent-d) !important; font-weight: 500 !important;
}
.mod-traspaso #modalQRTraspaso #btnNuevoTraspaso:hover { background-color: var(--ia-accent-h) !important; border-color: var(--ia-accent-h) !important; }
:is(.mod-traspaso, .mod-catalogo_ot) :is(#modalQRTraspaso, #modalRecepcion) .modal-footer .btn { font-size: .875rem !important; font-weight: 500 !important; }

/* ---------- Bodega restaurada: Kardex ---------- */
.mod-kardex_bodegas .container_B .dt-buttons .btn { background-color: var(--sc-btn-neutro-bg) !important; color: var(--ia-text) !important; border-radius: var(--sc-btn-r-sm) !important; }
.mod-kardex_bodegas .container_B .dt-buttons .btn:hover { background-color: var(--sc-btn-neutro-h) !important; color: var(--ia-text) !important; }
.mod-kardex_bodegas .container_B :is(#btnLimpiarKardex, #btnLimpiarTraspasos, #btnLimpiarAlertas) { font-size: .875rem !important; }
.mod-kardex_bodegas .container_B :is(.btn-traspaso-accion, .btn-traspaso-ver, .btn-traspaso-qr) {
    min-width: var(--sc-btn-h-sm) !important; min-height: var(--sc-btn-h-sm) !important; padding: 0 .55rem !important;
    border-radius: var(--sc-btn-r-sm) !important; background-image: none !important; box-shadow: none !important; transform: none !important;
    background-color: transparent !important; border: 1px solid var(--sc-btn-line) !important; color: var(--ia-muted) !important;
}
.mod-kardex_bodegas .container_B .btn-traspaso-ver { color: var(--ia-info) !important; border-color: rgb(var(--ia-info-rgb) / .45) !important; }
.mod-kardex_bodegas .container_B .btn-traspaso-qr  { color: var(--ia-accent) !important; border-color: rgb(var(--ia-accent-rgb) / .45) !important; }
.mod-kardex_bodegas .container_B :is(.btn-traspaso-ver, .btn-traspaso-qr):hover { background-color: var(--sc-btn-neutro-h) !important; }
.mod-kardex_bodegas .container_B .btn-imprimir-etiqueta {
    min-height: var(--sc-btn-h-sm) !important; padding: 0 .75rem !important; border-radius: var(--sc-btn-r-sm) !important;
    background-image: none !important; box-shadow: none !important;
    background-color: var(--ia-accent) !important; border: 1px solid var(--ia-accent) !important; color: var(--ia-accent-d) !important;
}

/* ---------- Bodega restaurada: maestros "container_B" (Movimiento Bodega, Estado, Tipo Doc., Proveedores…)
   La columna Acción del original es angosta: íconos de 26px para que no se apilen. */
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-bodegas, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores, .mod-marcas) .container_B :is(.btn-datatable, .btn-transparent-dark, .btn-icon) {
    width: 26px !important; height: 26px !important; min-width: 26px !important; min-height: 26px !important;
}
:is(.mod-c_bodegas, .mod-consumos_bodega, .mod-bodegas, .mod-estado_equipos, .mod-tipo_documento_bodega, .mod-proveedores, .mod-marcas) .container_B :is(.btn-datatable, .btn-transparent-dark, .btn-icon) svg { width: 14px !important; height: 14px !important; }

/* ---------- Bodega restaurada: Bodegas (botones del original) ---------- */
.mod-bodegas .btn-bodega-verde { background-color: transparent !important; border-color: rgb(var(--ia-accent-rgb) / .45) !important; color: var(--ia-accent) !important; }
.mod-bodegas .btn-bodega-verde:hover { background-color: rgb(var(--ia-accent-rgb) / .12) !important; }
.mod-bodegas .btn-bodega-verde.btnBorrar { border-color: rgb(var(--ia-danger-rgb) / .45) !important; color: var(--ia-danger) !important; }
.mod-bodegas .btn-bodega-verde.btnBorrar:hover { background-color: rgb(var(--ia-danger-rgb) / .12) !important; }
.mod-bodegas .btn-bodega-verde :is(i, svg) { color: inherit !important; }

/* ---------- Catálogo de productos y Equipos ---------- */
.mod-catalogo :is(.btn-catalogo-ver, .btn-catalogo-editar) {
    min-height: var(--sc-btn-h-sm) !important; border-radius: var(--sc-btn-r-sm) !important; background-image: none !important; box-shadow: none !important; transform: none !important;
}
.mod-catalogo .btn-catalogo-ver    { background-color: transparent !important; border: 1px solid rgb(var(--ia-info-rgb) / .45) !important;   color: var(--ia-info) !important; }
.mod-catalogo .btn-catalogo-editar { background-color: transparent !important; border: 1px solid rgb(var(--ia-accent-rgb) / .45) !important; color: var(--ia-accent) !important; }
.mod-catalogo :is(.btn-catalogo-ver, .btn-catalogo-editar):hover { background-color: var(--sc-btn-neutro-h) !important; }
.mod-catalogo #btnNuevoProducto i, .mod-equipos_productos .container_B .btn-primary i { color: inherit !important; }
.mod-equipos_productos :is(.btn-quitar-producto, .btn-desvincular-producto) {
    min-width: var(--sc-btn-h-sm) !important; min-height: var(--sc-btn-h-sm) !important; border-radius: var(--sc-btn-r-sm) !important;
    background-image: none !important; box-shadow: none !important; transform: none !important;
    background-color: transparent !important; border: 1px solid rgb(var(--ia-danger-rgb) / .45) !important; color: var(--ia-danger) !important;
}
.mod-equipos_productos :is(.btn-quitar-producto, .btn-desvincular-producto):hover { background-color: rgb(var(--ia-danger-rgb) / .12) !important; }

} /* fin @layer sc-botones */
/* =============================================================================
   v2.5 — SALVAGUARDAS GENERALES
   Un "filter", "transform" o "will-change" en una fila/celda convierte esa celda en
   el contenedor del menú ⋮ (Bootstrap/Popper) y el menú se dibuja fuera de la
   pantalla: "el botón se ve pero no abre". Mientras un menú está abierto, se anulan.
   ============================================================================= */
table tbody :is(tr, td):has(.dropdown-menu.show),
table tbody :is(tr, td):has(> .show) {
    filter: none !important;
    transform: none !important;
    will-change: auto !important;
    backdrop-filter: none !important;
}
/* ============================================================
   §Z — SELECTOR DE TEMA (Día / Noche / Verde) y utilidades
   ============================================================ */
.sc-tema-switch {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    padding: 3px;
    border-radius: 999px;
    background: var(--ia-panel2);
    border: 1px solid var(--ia-line);
    margin: 0 6px;
}
.sc-tema-switch button {
    appearance: none;
    border: 0;
    background: transparent;
    color: var(--ia-muted);
    width: 32px;
    height: 28px;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background .15s, color .15s;
    font-size: .85rem;
}
.sc-tema-switch button:hover { color: var(--ia-text); }
.sc-tema-switch button[aria-pressed="true"] {
    background: var(--ia-accent);
    color: var(--ia-accent-d);
}
.sc-tema-switch .sc-hoja { font-size: .8rem; }

/* Transición suave SOLO al cambiar de tema (la clase se pone ~300 ms) */
html.sc-cambiando-tema,
html.sc-cambiando-tema *,
html.sc-cambiando-tema *::before,
html.sc-cambiando-tema *::after {
    transition: background-color .25s ease, border-color .25s ease, color .2s ease !important;
}
@media (prefers-reduced-motion: reduce) {
    html.sc-cambiando-tema * { transition: none !important; }
}

/* Encabezado de página estándar para módulos (opcional) */
.sc-page-head {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: 12px;
    margin: 4px 0 18px;
}
.sc-page-head h1 {
    font-size: 1.35rem;
    margin: 0;
    color: var(--ia-text);
    display: flex; align-items: center; gap: 10px;
}
.sc-page-head h1 i { color: var(--ia-accent); }
.sc-page-head p { margin: 4px 0 0; color: var(--ia-muted); font-size: .88rem; }

/* Estado vacío */
.sc-vacio {
    text-align: center;
    color: var(--ia-muted);
    padding: 36px 16px;
    border: 1px dashed var(--ia-line);
    border-radius: var(--ia-radius);
    background: var(--ia-panel);
}
.sc-vacio i { font-size: 1.6rem; color: var(--ia-accent); display: block; margin-bottom: 8px; }

/* Topbar compacta en móvil */
@media (max-width: 576px) {
    .navbar.topbar .navbar-search .input-group > span { display: none; }
    .navbar.topbar select.form-control-sm { min-width: 96px !important; max-width: 120px; }
    .sc-tema-switch button { width: 28px; }
}

/* Impresión: siempre blanco, sin menús */
@media print {
    :root { --ia-bg:#fff; --ia-panel:#fff; --ia-panel2:#fff; --ia-text:#000; --ia-muted:#333; --ia-line:#bbb; }
    #accordionSidebar, .navbar.topbar, footer.footer-tools, .scroll-to-top, .dt-buttons, .sc-tema-switch, .no-print { display: none !important; }
    body, #content-wrapper, #content { background: #fff !important; color: #000 !important; }
}
