/*
 * Patrón Oro — Sistema de Diseño (vicor2)
 * Ver PATRON_ORO_DESIGN_SYSTEM.md para el porqué de cada decisión.
 * No pisa clases legadas (.btn, .well, etc.) — todo prefijado con `vc-`.
 */
:root{
  /* marca — del logo */
  --primary:#31859C;
  --primary-dark:#236070;
  --primary-tint:#EAF3F6;
  --accent:#47AAC5;
  --neutral-brand:#A6A6A6;

  /* semántico — estable, no depende de la marca */
  --success:#16A34A;
  --success-dark:#15803D;
  --danger:#BF0000;
  --danger-dark:#8F0000;
  --warning:#C2620A;
  --warning-dark:#9A4D08;

  /* admin/infraestructura — deliberadamente FUERA de la paleta de marca y de los
     semánticos de arriba (no es success/danger/warning de un dato) — grafito frío,
     para que "esto toca el esquema de la base" no se confunda visualmente con
     "esto borra un registro". Ver §13.1 en PATRON_ORO_DESIGN_SYSTEM.md. */
  --admin:#4A5561;
  --admin-dark:#37404A;

  /* neutrales de interfaz */
  --ink:#16232A;
  --ink-muted:#5B6772;
  --ink-faint:#8894A0;
  --bg:#F6F8F9;
  --surface:#FFFFFF;
  --surface-2:#EEF2F4;
  --border:#DCE3E7;

  /* fondos de estado (24/10): el color de estado mezclado 92 % con blanco, igual que --primary-tint.
     Para filas y avisos: reemplazan los rosas, verdes claros y amarillos que cada pantalla inventaba. */
  --success-tint:#ECF8F0;
  --warning-tint:#FAF2EB;
  --danger-tint:#FAEBEB;

  /* letra (24/10): siete tamaños y nada más (había 40). Ver PATRON_ORO_DESIGN_SYSTEM.md, «Letra». */
  --fs-xs:10px;    /* notas chicas y aclaraciones */
  --fs-s:11px;     /* títulos de columna, rótulos de la barra, etiquetas */
  --fs-m:12px;     /* celdas de tabla (la base), botones chicos, controles de la barra */
  --fs-base:13px;  /* texto común y formularios */
  --fs-l:14px;     /* título de una subpantalla */
  --fs-xl:16px;    /* un dato destacado */
  --fs-xxl:20px;   /* un número grande, muy de vez en cuando */

  /* forma */
  --radius-control:4px;   /* botones e inputs — opción "Plano" */
  --radius-surface:8px;   /* cards — opción "Franja lateral" */
}

/* ============ SCAFFOLDING — reset/tipografía base de Bootstrap 2.3 (Fase C, 2026-07-29) ============
   La pieza que faltó en el primer intento de retirar Bootstrap (revertido de emergencia en
   producción el mismo día, ver PATRON_ORO_DESIGN_SYSTEM.md §15.12/§15.13 y PENDIENTES.md §13):
   todo el shim de Fase C hasta ahora cubría COMPONENTES (.btn, .modal, .nav-tabs, .table...) pero
   nunca el reset global que Bootstrap pone sobre elementos sin clase (body, a, h1-h6, p, ul, hr).
   Sin esto, sacar bootstrap-combined.min.css hacía caer la tipografía a los defaults nativos del
   navegador (Times New Roman en vez de Helvetica/Arial) y descuadraba cualquier layout que
   dependiera de los márgenes/line-height por defecto de Bootstrap. Valores extraídos tal cual de
   bootstrap-combined.min.css (no inventados) para que el aspecto visual no cambie en absoluto —
   solo cambia qué hoja de estilos los produce. */
html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
body{
  margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
  font-size:var(--fs-base);line-height:20px;color:var(--ink,#16232A);background-color:#fff;
}
a{color:var(--primary,#31859C);text-decoration:none;}
a:hover, a:focus{color:var(--primary-dark,#236070);text-decoration:underline;}
p{margin:0 0 10px;}
small{font-size:85%;}
strong{font-weight:bold;}
h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;}
/* 24/10: los títulos van a la escala de letra (eran los de Bootstrap: 38,5 / 31,5 / 24,5 / 17,5 / 14 / 11,9 px). En la app
   casi todos los <h3> son títulos de subpantalla (.modal-header). */
h1,h2,h3{line-height:1.3;}
h1{font-size:var(--fs-xxl);}
h2{font-size:var(--fs-xl);}
h3{font-size:var(--fs-l);}
h4{font-size:var(--fs-l);}
h5{font-size:var(--fs-base);}
h6{font-size:var(--fs-s);}
h1 small, h2 small, h3 small, h4 small, h5 small, h6 small{font-weight:normal;line-height:1;color:var(--ink-faint,#8894A0);}
ul, ol{padding:0;margin:0 0 10px 25px;}
dl{margin-bottom:20px;}
dt, dd{line-height:20px;}
dd{margin-left:10px;}
hr{margin:20px 0;border:0;border-top:1px solid var(--border,#DCE3E7);border-bottom:1px solid #fff;}
address{display:block;margin-bottom:20px;font-style:normal;line-height:20px;}
code, pre{
  padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;
  font-size:var(--fs-m);color:var(--ink,#16232A);border-radius:3px;
}
blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid var(--border,#DCE3E7);}
.show{display:block;}
.invisible{visibility:hidden;}
/* .hide ya está definido más abajo, junto al shim de modal (mismo valor) */

/* ============ BASE DE LA APP — lo que vivía en vicor_sys.css y vicor_spa_core.css (24/10/2026) ============
   Esas dos hojas eran anteriores al patrón y le ganaban por !important (la barra azul, las pestañas, las barras
   de herramientas, el relleno de las tablas). Se pasó acá sólo lo vivo, con el valor que de verdad se veía, y se
   borraron (DIAGNOSTICO_PATRON_ORO_2026-10-24.md). A propósito cambian: la barra de arriba va con --primary (antes
   #2f96b4), los colores sueltos van a la paleta y los controles de la barra de herramientas miden 28px como los
   botones (antes 30). Los !important que quedan son los que ya estaban: hay vistas con estilos propios contados
   contra ellos. */
html, body{margin:0 !important;padding:0 !important;}
body{background-color:var(--surface) !important;background-image:none !important;}
body, .table th, .table td, .table, strong, b, h1, h2, h3, h4, h5, h6{text-shadow:none !important;}
[class^="icon-"], [class*=" icon-"]{
  text-shadow:none !important;background-image:none !important;box-shadow:none !important;border:none !important;
  vertical-align:middle !important;margin-top:0 !important;
}
[x-cloak]{display:none !important;}
.content{border:none !important;box-shadow:none !important;}
.header{margin-bottom:10px;}
.label-inline{font-weight:bold;margin-right:5px;white-space:nowrap;}
.spa-link{color:var(--primary) !important;font-weight:bold;}

/* Tablas: relleno, columna de acciones y cabecera fija. Van ANTES de .vc-table: con el mismo peso gana la regla
   que está más abajo, y .vc-table tiene que ganarle a ésta. */
.table th, .table td{padding:6px 8px !important;vertical-align:middle !important;}
.table th:last-child, .table td:last-child, .table th.acciones, .table td.acciones{
  white-space:nowrap !important;width:1% !important;min-width:120px !important;text-align:center !important;
}
.table thead th{
  position:sticky;top:0 !important;z-index:10;
  background-color:var(--bg) !important;box-shadow:0 1px 1px rgba(0,0,0,.1);
}
.modal-body:has(.table){padding-top:0 !important;}
.modal-body:has(.table) > *:first-child{margin-top:15px !important;}
.tabulator-row .tabulator-cell{
  padding:4px 8px !important;height:auto !important;min-height:22px !important;
  display:inline-flex !important;align-items:center !important;
}
.tabulator-row .tabulator-cell.tabulator-col-hidden,
.tabulator-row .tabulator-cell[style*="display: none"],
.tabulator-row .tabulator-cell[style*="display:none"]{display:none !important;}
#iga_pat_table .tabulator-cell{padding:4px 4px !important;}
#iga_pat_table .tabulator-row{min-height:28px !important;}

/* Contenedores planos: pestañas, contenido de pestañas, .well, .box y .block van sin borde, sin sombra,
   transparentes y con 10px arriba y abajo. Las reglas de .nav-tabs/.tab-content/.tab-pane de más abajo afinan
   el borde y el relleno de arriba. */
.tab-content, .tab-pane, .well, .box, .box-content, .nav-tabs, .block{
  border:none !important;box-shadow:none !important;padding:10px 0 !important;background:transparent !important;
}

/* Barra de herramientas: los hijos en fila y los controles de 28px, como .vc-btn--sm. Va ANTES del bloque
   TOOLBAR de más abajo, que tiene que ganarle a «.toolbar-container > *» en .toolbar-left/.toolbar-right. */
.toolbar-container > *{display:inline-block !important;vertical-align:middle !important;margin:0 !important;float:none !important;}
.toolbar-container .label-inline,
.toolbar-container span[style*="font-weight: bold"],
.toolbar-container span[style*="font-weight:bold"]{
  font-size:var(--fs-base) !important;font-weight:bold !important;margin-right:4px !important;white-space:nowrap !important;
  display:inline-block !important;line-height:28px !important;vertical-align:middle !important;
}
.toolbar-container input, .toolbar-container select{
  margin:0 !important;vertical-align:middle !important;display:inline-block !important;
  height:28px !important;box-sizing:border-box !important;
}
.toolbar-alineado{display:flex;align-items:center !important;flex-wrap:wrap;gap:8px;min-height:28px;}
.toolbar-alineado > div, .toolbar-alineado > span{display:flex !important;align-items:center !important;}
.toolbar-alineado .form-inline{display:flex !important;align-items:center !important;flex-wrap:wrap;gap:6px;}
.toolbar-alineado label{margin-bottom:0 !important;display:inline-block !important;white-space:nowrap;}
.toolbar-alineado .pagination ul{height:28px;display:flex;align-items:stretch;margin:0;box-shadow:none;}
.toolbar-alineado .pagination ul > li > a, .toolbar-alineado .pagination ul > li > span{
  height:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:0 12px;line-height:normal;
}
.toolbar-alineado select{
  height:28px !important;box-sizing:border-box !important;margin:0 !important;cursor:pointer;
  padding:2px 4px;font-size:var(--fs-base);line-height:normal;
}
.toolbar-alineado input[type="text"]{
  height:28px !important;box-sizing:border-box !important;margin:0 !important;border-radius:4px;
  padding:2px 6px;font-size:var(--fs-base);line-height:normal;
}
.paginator-container, [id^="paginador-tab"]{
  display:inline-flex !important;align-items:center !important;gap:8px !important;
  margin:0 !important;padding:0 !important;vertical-align:middle !important;
}
.pagination button{margin:0 2px;}

/* Menú lateral (el encabezado de cada grupo lo pinta layouts/app.blade.php) */
.sidebar-nav .nav-list > li > a, .sidebar-nav .nav-header{color:var(--ink) !important;text-shadow:none !important;}
.sidebar-nav .nav-list > li.active > a, .sidebar-nav .nav-list > li > a:hover{
  color:var(--ink) !important;background-color:var(--surface-2) !important;
}
.sidebar-nav{padding-top:0 !important;}
.sidebar-nav .nav-list{padding-top:0 !important;overflow:visible !important;}
.sidebar-nav .nav-list > li:first-child{margin-top:0 !important;}
@media (min-width:980px){
  body:not(.sidebar-hidden) > .container-fluid > .row-fluid{display:flex !important;align-items:stretch !important;}
  .sidebar-nav{
    position:sticky !important;top:60px !important;max-height:calc(100vh - 80px) !important;
    overflow-y:auto !important;overflow-x:hidden !important;
    scrollbar-width:thin;scrollbar-color:var(--border) transparent;
  }
  .sidebar-nav::-webkit-scrollbar{width:5px;}
  .sidebar-nav::-webkit-scrollbar-track{background:transparent;}
  .sidebar-nav::-webkit-scrollbar-thumb{background-color:var(--border);border-radius:3px;}
}

/* ============ BOTONES — opción "Plano" ============ */
.vc-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  font-weight:600;line-height:1;white-space:nowrap;cursor:pointer;
  border:none;border-radius:var(--radius-control);
  transition:background .12s ease, color .12s ease;
}
.vc-btn:disabled{opacity:.45;cursor:not-allowed;}
.vc-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px;}
/* .active agregado 2026-07-27 -- hueco real encontrado migrando reportes/reportes.blade.php:
   Bootstrap 2 usa .active para marcar el botón seleccionado en un grupo tipo radio
   (data-toggle="buttons", ej. toggle SI/NO). vc-btn no tenía NINGÚN estilo para .active,
   así que un toggle migrado quedaba sin indicador visual de cuál está seleccionado.
   Reusa el mismo tono "dark" de cada variante (mismo criterio que :hover) + un inset
   shadow para que se lea como "presionado", no solo como hover. */
.vc-btn.active{box-shadow:inset 0 2px 5px rgba(0,0,0,.3) !important;}
.vc-btn--primary.active{background:var(--primary-dark);}
.vc-btn--secondary.active{background:var(--ink-faint);color:#fff;}
.vc-btn--success.active{background:var(--success-dark);}
.vc-btn--danger.active{background:var(--danger-dark);}
.vc-btn--warning.active{background:var(--warning-dark);}

.vc-btn--sm{height:28px;padding:0 12px;font-size:var(--fs-m);}
.vc-btn--md{height:36px;padding:0 16px;font-size:var(--fs-base);}
.vc-btn--lg{height:44px;padding:0 22px;font-size:var(--fs-l);}

.vc-btn--primary{background:var(--primary);color:#fff;}
.vc-btn--primary:hover{background:var(--primary-dark);}

.vc-btn--secondary{background:var(--border);color:var(--ink);}
.vc-btn--secondary:hover{background:var(--ink-faint);color:#fff;}

.vc-btn--success{background:var(--success);color:#fff;}
.vc-btn--success:hover{background:var(--success-dark);}

.vc-btn--danger{background:var(--danger);color:#fff;}
.vc-btn--danger:hover{background:var(--danger-dark);}

.vc-btn--warning{background:var(--warning);color:#fff;}
.vc-btn--warning:hover{background:var(--warning-dark);}

.vc-btn--ghost{background:transparent;color:var(--ink-muted);}
.vc-btn--ghost:hover{background:var(--surface-2);color:var(--ink);}

.vc-btn--admin{background:var(--admin);color:#fff;}
.vc-btn--admin:hover{background:var(--admin-dark);}

/* ============ CARDS / TILES — opción "Franja lateral" ============ */
.vc-card{
  display:flex;flex-direction:column;gap:8px;
  background:var(--surface);border:1px solid var(--border);
  border-left:4px solid var(--primary);
  border-radius:var(--radius-surface);
  padding:16px 18px;
  transition:background .15s ease;
}
.vc-card:hover{background:var(--primary-tint);}
.vc-card h4{margin:0;font-size:var(--fs-l);color:var(--ink);}
.vc-card p{margin:0;font-size:var(--fs-m);color:var(--ink-muted);line-height:1.45;}

/* ============ TABLAS COMPACTAS — densidad reducida (aditivo, junto a .table) ============
   «.table thead th» (cabecera fija, en BASE DE LA APP) tiene el mismo peso que «.vc-table thead th»: lo de acá
   abajo lleva !important y está después, por eso gana. Ver PATRON_ORO_DESIGN_SYSTEM.md §12. */
.vc-table th,
.vc-table td{
  padding:3px 8px !important;
  font-size:var(--fs-m) !important;
  line-height:1.3 !important;
  vertical-align:middle !important;
}
.vc-table th{
  font-size:var(--fs-s) !important;
  font-weight:700 !important;
  text-transform:uppercase;
  letter-spacing:.03em;
  color:var(--ink-muted);
}
.vc-table thead th{
  background-color:var(--surface-2) !important;
  box-shadow:none !important;
}
.vc-table.table-bordered,
.vc-table.table-bordered th,
.vc-table.table-bordered td{
  border-color:var(--border);
}
.vc-table.table-striped tbody>tr:nth-child(odd)>td,
.vc-table.table-striped tbody>tr:nth-child(odd)>th{
  background-color:var(--surface-2);
}
/* Tablas con subtabla desplegable (Clases/Unidades en gestion/parametros) meten una
   <tr> hermana OCULTA por cada fila visible, en el mismo tbody -- nth-child(odd) de
   arriba cuenta esa fila oculta también, así que todas las filas visibles terminan
   en posición impar y salen todas grises, nunca alternan. Se fuerza el color acá con
   clases explícitas que pone el JS por índice real de dato, no de posición en el DOM
   (ver vicor_parametros.js, buildParam.clases/unidades). Bug real 2026-07-27, ver §8. */
.vc-table.table-striped tbody>tr.vc-row-even>td,
.vc-table.table-striped tbody>tr.vc-row-even>th{
  background-color:var(--surface-2) !important;
}
.vc-table.table-striped tbody>tr.vc-row-odd>td,
.vc-table.table-striped tbody>tr.vc-row-odd>th{
  background-color:var(--surface) !important;
}

/* ============ TABLA BASE — reemplazo compatible de Bootstrap 2.3 (Fase C, 2026-07-28) ============
   `vc-table` de arriba es ADITIVA -- asume que el `.table` de Bootstrap ya puso el borde/padding
   base y solo lo retoca. Sin este bloque, las 22 tablas de la app que usan `.table`/`.table-striped`/
   `.table-bordered`/`.table-hover`/`.table-condensed` SIN `vc-table` quedarían completamente sin
   estilo (tabla HTML cruda) el día que se saque Bootstrap. No hace falta preocuparse por el orden de
   estas reglas respecto a las `.vc-table.*` de arriba: donde compiten en la misma propiedad, las de
   arriba ya ganan por selector compuesto más específico (`.vc-table.table-striped ...`, 2 clases) o
   por `!important` (`.vc-table th/td`) -- confirmado por grep que ninguna vista usa `<caption>`/
   `<colgroup>` ni `td/th class="spanN"`, así que esos casos de borde de Bootstrap se omiten. */
.table{width:100%;margin-bottom:20px;}
/* el relleno y la alineación vertical de .table th/td están en «BASE DE LA APP» (6px 8px, al medio) */
.table th, .table td{
  line-height:20px;text-align:left;
  border-top:1px solid var(--border);
}
.table th{font-weight:bold;}
.table thead th{vertical-align:bottom;}
.table tbody + tbody{border-top:2px solid var(--border);}
.table-bordered{
  border:1px solid var(--border);border-collapse:separate;border-left:0;border-radius:4px;
}
.table-bordered th, .table-bordered td{border-left:1px solid var(--border);}
.table-bordered thead:first-child tr:first-child > th:first-child,
.table-bordered tbody:first-child tr:first-child > td:first-child,
.table-bordered tbody:first-child tr:first-child > th:first-child{border-top-left-radius:4px;}
.table-bordered thead:first-child tr:first-child > th:last-child,
.table-bordered tbody:first-child tr:first-child > td:last-child,
.table-bordered tbody:first-child tr:first-child > th:last-child{border-top-right-radius:4px;}
.table-bordered tbody:last-child tr:last-child > td:first-child,
.table-bordered tbody:last-child tr:last-child > th:first-child{border-bottom-left-radius:4px;}
.table-bordered tbody:last-child tr:last-child > td:last-child,
.table-bordered tbody:last-child tr:last-child > th:last-child{border-bottom-right-radius:4px;}
.table-striped tbody > tr:nth-child(odd) > td,
.table-striped tbody > tr:nth-child(odd) > th{background-color:var(--surface-2);}
.table-hover tbody tr:hover > td,
.table-hover tbody tr:hover > th{background-color:var(--surface-2);}

/* ============ BOTONES DE ACCIÓN EN FILA — icon-only, compactos ============ */
.vc-btn-icon{
  display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:22px;padding:0;
  border:none;border-radius:var(--radius-control);
  color:#fff;cursor:pointer;
  transition:background .12s ease;
  vertical-align:middle;
}
.vc-btn-icon:disabled{opacity:.45;cursor:not-allowed;}
.vc-btn-icon + .vc-btn-icon{margin-left:4px;}
.vc-btn-icon i{font-size:var(--fs-s);line-height:1;}
.vc-btn-icon--primary{background:var(--primary);}
.vc-btn-icon--primary:hover{background:var(--primary-dark);}
.vc-btn-icon--danger{background:var(--danger);}
.vc-btn-icon--danger:hover{background:var(--danger-dark);}
.vc-btn-icon--warning{background:var(--warning);}
.vc-btn-icon--warning:hover{background:var(--warning-dark);}
/* --success agregada 2026-07-27 (hueco detectado migrando cuentacorriente/index.blade.php +
   vicor_cuentacorriente.js -- toggle "deshacer" de IVA ya impactado). */
.vc-btn-icon--success{background:var(--success);}
.vc-btn-icon--success:hover{background:var(--success-dark);}
/* --secondary agregada 2026-07-27 (hueco detectado migrando agropecuarios/index.blade.php,
   ver §14) -- única variante sin fondo de marca, por eso pisa el color:#fff de la base:
   un ícono blanco sobre --border (gris claro) sería invisible. */
.vc-btn-icon--secondary{background:var(--border);color:var(--ink-muted);}
.vc-btn-icon--secondary:hover{background:var(--ink-faint);color:#fff;}

/* ============ VC-FLAG — semáforo de estado en una celda (2026-08-18) ============
   Hueco real: no había ningún componente para "este registro está bien / está mal"
   dentro de una tabla, y cada pantalla lo venía resolviendo a mano con <i> sueltas
   y color inline (`icon-ok-sign` verde en gestion/bancos.blade.php, `#468847` en
   iga/tango_importacion.blade.php, `.col-flag .icon-ok` en contabilidad/cuentas).
   Primer uso: la columna "Capital" de planes_facilidades (Plan FP), que compara el
   capital consolidado por AFIP contra el capital de las cuotas del plan.

   NO es un botón: no se hace clic, no tiene fondo ni borde. El estado lo dice el
   ícono + el color, nunca una palabra (misma regla que los toggles de fila). El
   detalle numérico va en el `title`, que es donde el operador lo busca.

   Variantes: --ok (coincide), --bad (no coincide), --na (falta el dato: NO es rojo,
   no hay nada mal todavía), --warn (no se pudo consultar). */
.vc-flag{display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:22px;line-height:1;cursor:help;}
.vc-flag i{font-size:var(--fs-l);line-height:1;}
.vc-flag--ok{color:var(--success);}
.vc-flag--bad{color:var(--danger);}
.vc-flag--na{color:var(--ink-faint);}
.vc-flag--warn{color:var(--warning);}
/* ============ NAV-TABS / TAB-CONTENT — ritmo vertical compacto, global ============
   vicor_spa_core.css tiene 3 capas de !important pisándose entre sí sobre estas
   mismas clases Bootstrap (.nav-tabs, .tab-content) de intentos previos de
   "Patrón Oro" no limpiados. Esta es la versión final: pisa a todas por !important
   + ser la última hoja cargada. No se tocan esas reglas viejas (podrían estar en
   uso en pantallas no migradas todavía) — ver §9 en PATRON_ORO_DESIGN_SYSTEM.md. */
/* 2026-07-28 -- ampliado a reemplazo compatible completo de .nav-tabs/.tab-content
   de Bootstrap 2.3 (Fase C, shim de §15.5): antes esta regla solo pisaba margin/
   border/padding encima del .nav-tabs real de Bootstrap; ahora define TODA la
   apariencia (display, float, clearfix, color, borde, estado activo/hover) para
   que .nav-tabs no dependa de bootstrap-combined.min.css. Valores base (color
   #777/#555, bordes #ddd/#eee) tomados tal cual de Bootstrap 2.3 para que no
   cambie el aspecto visual de ninguna vista ya migrada -- solo cambia el motor
   que los produce. JS de data-toggle="tab"/.tab('show') reemplazado aparte en
   public/js/vicor_tabs_shim.js, cargado después de bootstrap.min.js. */
.nav-tabs{
  display:block;margin-left:0;padding-left:0;list-style:none;
  margin-bottom:8px !important;
  border-bottom:1px solid var(--border) !important;
}
.nav-tabs:before, .nav-tabs:after{content:"";display:table;}
.nav-tabs:after{clear:both;}
.nav-tabs > li{float:left;margin-bottom:-1px;}
.nav-tabs > li > a{
  display:block;float:none;
  padding:5px 12px !important;
  margin-right:2px;
  font-size:var(--fs-base) !important;line-height:18px !important;
  color:var(--ink-muted,#5B6772);text-decoration:none;text-shadow:0 1px 0 #fff;
  border:1px solid transparent;border-radius:2px 2px 0 0 !important;
}
.nav-tabs > li > a:hover{
  text-decoration:none;background-color:var(--surface-2,#EEF2F4);
  border-color:var(--border,#DCE3E7) #eee var(--border);
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover{
  color:var(--ink-muted,#5B6772);background-color:#fff;
  border:1px solid var(--border);border-bottom-color:transparent;
  cursor:default;
}
/* .nav-pills: mismo criterio, 3 usos reales (contabilidad/cuentas, gestion/pagos,
   liquidaciones/iga_ibp), todos con switching por onclick propio (no data-toggle),
   por eso no necesitan nada del shim de JS -- solo la apariencia. */
.nav-pills{display:block;margin-left:0;padding-left:0;list-style:none;}
.nav-pills:before, .nav-pills:after{content:"";display:table;}
.nav-pills:after{clear:both;}
.nav-pills > li{float:left;}
.nav-pills > li > a{
  display:block;float:none;
  padding:8px 12px;margin:2px 2px 2px 0;
  text-decoration:none;border-radius:5px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover{
  color:#fff;background-color:var(--primary,#31859C);
}
.tab-content{
  padding-top:0 !important;
}
.tab-content > .tab-pane{display:none;}
.tab-content > .tab-pane.active{display:block;}
/* .tab-pane (hijo de .tab-content) tiene SU PROPIO padding-top:10px y su
   propio div:first-child con margin-top:12px en vicor_spa_core.css -- son
   reglas separadas de .tab-content, pisarlo a él no alcanza. */
.tab-pane{
  padding-top:0 !important;
}
/* 2026-07-29 -- relevamiento real (10 pantallas, Antigravity) confirmó que esta regla en
   margin-top:0 (puesta 2026-07-26 por pedido de compactar ~34px acumulados de entonces)
   quedó demasiado agresiva: en vistas donde el primer hijo del pane es una tabla/div sin
   margen propio (bienes, contabilidad/cuentas, etc.) el contenido queda pegado al borde de
   las tabs, sin ningún colchón. 12px es un punto medio entre "pegado" (0) y lo que se pidió
   sacar en julio (~34px) -- decisión del usuario, no un valor recuperado de Bootstrap. */
.tab-pane > div:first-child{
  margin-top:12px !important;margin-bottom:12px !important;padding-top:0 !important;
}

/* ============ SELECT2 — tema único (2026-07-27), reemplaza 6 copias locales
   (bienes/index, contabilidad/auditoria, contabilidad/herramientas,
   gestion/bancos, liquidaciones/iga_ibp, planes_facilidades/main) que ni
   siquiera coincidían entre sí: 3 usaban 26px de alto, otras 3 usaban 30px,
   sin ningún criterio. Se fijó 28px porque coincide con vc-btn--sm — un
   select2 al lado de un botón chico en el mismo toolbar queda a la misma
   altura sin tener que forzar nada por fuera. */
.select2-container .select2-selection--single{
  height:28px !important;border-radius:var(--radius-control) !important;
  border:1px solid var(--border) !important;
}
.select2-container--default .select2-selection--single .select2-selection__rendered{
  line-height:26px !important;color:var(--ink) !important;font-size:var(--fs-m) !important;
}
.select2-container--default .select2-selection--single .select2-selection__arrow{
  height:26px !important;
}

/* ============ TOOLBAR — converge a .toolbar-container/.toolbar-left/.toolbar-right,
   la convención mayoritaria (~14 pantallas) por sobre row-fluid+pull-left/right (hoy
   solo Tesorería). Decisión 2026-07-27, ver §11 Nivel 3 en PATRON_ORO_DESIGN_SYSTEM.md.
   vicor_spa_core.css tiene 2 definiciones de .toolbar-container peleándose entre sí
   (líneas ~27 y ~82, dos intentos previos de "Patrón Oro" sin limpiar) — no se tocan,
   esta versión pisa a ambas por !important + ser la última hoja cargada, y además
   tensa el ritmo vertical (10px en vez de 15-20px, sin padding extra que ya duplica
   el de .tab-pane). .toolbar-alineado NO es esto — es un combo buscador+botón
   height-aligned, concepto distinto, se mantiene separado. */
.toolbar-container{
  display:flex !important;justify-content:space-between !important;align-items:center !important;
  gap:12px !important;flex-wrap:wrap !important;
  margin-bottom:10px !important;padding:0 !important;
  background:transparent !important;border:none !important;box-shadow:none !important;
  width:100% !important;min-height:32px !important;
}
.toolbar-left, .toolbar-right{
  display:flex !important;align-items:center !important;gap:10px !important;flex-wrap:wrap !important;
}
.toolbar-right{margin-left:auto !important;}
/* .form-inline (Bootstrap 2.3) nunca tiene display:flex por su cuenta -- sus hijos
   (input+botón del buscador) se alineaban por el modelo viejo vertical-align/inline,
   mientras el resto de .toolbar-right (paginador, #pag_listado) ya usa flexbox real
   con align-items:center. Cada caja mide 28px igual (confirmado por DevTools
   2026-07-28) pero terminaban centradas en puntos verticales distintos dentro de la
   misma fila -- causa real del desalineamiento reportado, ver PENDIENTES.md §12. */
.toolbar-left .form-inline, .toolbar-right .form-inline, .toolbar-container .form-inline{
  display:flex !important;align-items:center !important;gap:8px !important;
}

/* ============ PAGINADOR — reemplaza el HTML crudo de Bootstrap 2.3 que arma
   window.vicor_paginator (vicor_legacy_helpers.js), usado globalmente en 7+
   pantallas ============ */
.vc-pagination{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
}
.vc-pagination ul{
  display:flex;align-items:center;gap:2px;margin:0;padding:0;list-style:none;
}
.vc-pagination li{display:flex;}
.vc-pagination li a{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:28px;height:28px;padding:0 6px;
  border-radius:var(--radius-control);
  font-size:var(--fs-m);font-weight:600;color:var(--ink-muted);
  background:transparent;cursor:pointer;text-decoration:none;
  transition:background .12s ease, color .12s ease;
  box-sizing:border-box;
}
.vc-pagination li a:hover{background:var(--surface-2);color:var(--ink);}
.vc-pagination li.active a{background:var(--primary);color:#fff;cursor:default;}
.vc-pagination li.disabled a{color:var(--ink-faint);cursor:default;pointer-events:none;background:transparent;}
.vc-pagination select{
  height:28px;margin:0;padding:0 6px;box-sizing:border-box;
  border:1px solid var(--border);border-radius:var(--radius-control);
  background:var(--surface);color:var(--ink);font-size:var(--fs-m);
  width:auto;min-width:64px;
}
/* Bloque "Ver: N" + contador "2/2 (82 Reg.)" — 2026-08-17. Antes renderPaginator los
   armaba con un .form-inline suelto y un <label>, y como acá label{display:block}
   (Bootstrap ya no está), la etiqueta se apilaba encima del combo y partía la fila del
   toolbar en tres alturas distintas. Ahora son spans dentro del mismo flex. */
.vc-pagination-limit{display:inline-flex;align-items:center;gap:6px;}
.vc-pagination-label{
  font-size:var(--fs-s);font-weight:600;color:var(--ink-muted);
  white-space:nowrap;margin:0;line-height:1;
}
.vc-pagination-count{
  display:inline-flex;align-items:center;height:28px;
  font-size:var(--fs-s);color:var(--ink-muted);white-space:nowrap;padding-left:2px;
}

/* .inputSearch nunca tuvo altura fijada en ningun lado (confirmado por grep en
   app.css/vicor_spa_core.css/bootstrap-combined.min.css) -- quedaba a merced del
   render nativo del navegador para <input type="text">, distinto de los 28px que
   ya usan vc-btn--sm/Select2/vc-pagination select en el mismo toolbar. Causa real
   de la desalineacion reportada 2026-07-28 entre el buscador y el boton "Buscar"
   al lado. Se agrega acá, global, en vez de seguir dependiendo de los overrides
   locales sueltos (.inputSearch{border-radius:4px!important} en varias vistas,
   ahora redundantes pero inofensivos porque coinciden en valor). */
.inputSearch{
  height:28px;padding:0 8px;box-sizing:border-box;
  border:1px solid var(--border);border-radius:var(--radius-control);
  background:var(--surface);color:var(--ink);font-size:var(--fs-m);
}

/* ============ GRID FLUIDO — reemplazo compatible de Bootstrap 2.3 (Fase C, 2026-07-28) ============
   Mismos selectores y nombres de clase que Bootstrap (.row-fluid, .span1..12) a propósito: el
   objetivo es que ninguna de las ~30 vistas que usan este grid necesite cambiar una sola clase.
   app.css carga último en layouts/app.blade.php (después de bootstrap-combined.min.css y
   vicor_spa_core.css), así que estas reglas ganan la cascada por orden de carga sin necesitar
   !important, aunque Bootstrap siga cargado.
   Reemplaza float+% por flexbox — mismos porcentajes exactos que Bootstrap 2.3 (extraídos de
   bootstrap-combined.min.css: gutter 2.127659574468085%, span1..12 tal cual), así que el layout
   resultante es visualmente idéntico al de Bootstrap para cualquier vista ya existente.
   align-items:flex-start (no el default stretch de flexbox) a propósito, para no igualar la
   altura de columnas con contenido de distinto largo — el float original de Bootstrap tampoco lo
   hacía, y estirar columnas cambiaría el aspecto de fondos/bordes en vistas con columnas dispares.
   Alcance: solo la resolución de escritorio (no se replican los breakpoints responsive de
   bootstrap-responsive.css — la app es una herramienta interna de uso de escritorio, ver
   PATRON_ORO_DESIGN_SYSTEM.md §15). No incluye .offsetN (sin uso real detectado en la app). */
.row-fluid{
  display:flex;flex-wrap:wrap;align-items:flex-start;
  width:100%;
}
.row-fluid [class*="span"]{
  box-sizing:border-box;min-height:30px;
  margin-left:2.127659574468085%;
}
.row-fluid [class*="span"]:first-child{margin-left:0;}
.row-fluid .span1{width:6.382978723404255%;}
.row-fluid .span2{width:14.893617021276595%;}
.row-fluid .span3{width:23.404255319148934%;}
.row-fluid .span4{width:31.914893617021278%;}
.row-fluid .span5{width:40.42553191489362%;}
.row-fluid .span6{width:48.93617021276595%;}
.row-fluid .span7{width:57.44680851063829%;}
.row-fluid .span8{width:65.95744680851064%;}
.row-fluid .span9{width:74.46808510638297%;}
.row-fluid .span10{width:82.97872340425532%;}
.row-fluid .span11{width:91.48936170212765%;}
.row-fluid .span12{width:100%;}

/* ============ SUBPANTALLAS (.modal) — 24/10/2026 ============
   Las 160 subpantallas de la app usan esta estructura (.modal/.modal-header/.modal-body/.modal-footer) y las abre y
   cierra public/js/vicor_modal_shim.js. Hasta el 24/10 eran las de Bootstrap 2.3: ancho fijo en píxeles (109 con el suyo,
   40 anchos distintos), cuerpo con tope fijo de 400 px y se cerraban con un clic afuera. El usuario: «el modelo no
   expansible y que se cierra con un click afuera es un perno; encima se deforma entre computadora y computadora».
   Ahora, cuando el programa la abre por primera vez le pone «vc-modal-listo» y uno de tres tamaños según el ancho que
   tenía (hasta 600 px chico, hasta 960 mediano, más grande); el tamaño se acomoda a la pantalla, el cuerpo crece hasta
   abajo con su scroll, se puede agrandar a toda la pantalla y no se cierra con un clic afuera. Los !important son para
   ganarle a los anchos y márgenes que cada vista le escribía en línea para centrarla a mano. */
.hide{display:none;}
.modal-backdrop{
  position:fixed;top:0;right:0;bottom:0;left:0;
  z-index:1040;background-color:var(--ink);
}
.modal-backdrop.fade{opacity:0;transition:opacity .15s linear;}
.modal-backdrop.fade.in{opacity:.45;}
.modal{
  position:fixed;top:10%;left:50%;z-index:1050;
  width:560px;margin-left:-280px;
  background-color:var(--surface);border:1px solid var(--border);border-radius:var(--radius-surface);
  box-shadow:0 18px 50px rgba(22,35,42,.28);
  background-clip:padding-box;outline:none;
}
.modal.vc-modal-listo{
  top:24px !important;left:0 !important;right:0 !important;margin:0 auto !important;
  width:min(560px, calc(100vw - 32px)) !important;max-width:none !important;
  max-height:calc(100vh - 48px) !important;
  flex-direction:column;overflow:auto;
}
.modal.vc-modal-listo.vc-modal--mediano{width:min(900px, calc(100vw - 32px)) !important;}
.modal.vc-modal-listo.vc-modal--grande{width:min(1400px, calc(100vw - 32px)) !important;}
.modal.vc-modal-listo.vc-modal--agrandado{
  top:12px !important;width:calc(100vw - 24px) !important;height:calc(100vh - 24px);max-height:none !important;
}
.modal.vc-modal-listo > .modal-header, .modal.vc-modal-listo > .modal-footer{flex:0 0 auto;}
.modal.vc-modal-listo > form{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;margin:0;}
.modal.vc-modal-listo .modal-body{flex:1 1 auto;min-height:0;max-height:none !important;overflow-y:auto;}
.modal.fade{opacity:0;transition:opacity .15s linear;}
.modal.fade.in{opacity:1;}
.modal-header{padding:9px 15px;border-bottom:1px solid var(--border);background-color:var(--surface-2);border-radius:8px 8px 0 0;}
.modal-header .close{margin-top:2px;}
.modal-header h3{margin:0;line-height:30px;}
.modal-body{position:relative;overflow-y:auto;max-height:400px;padding:15px;}
.modal-footer{
  padding:10px 15px;margin-bottom:0;text-align:right;
  background-color:var(--bg);border-top:1px solid var(--border);border-radius:0 0 8px 8px;
}
.modal-footer:before, .modal-footer:after{content:"";display:table;}
.modal-footer:after{clear:both;}
.modal-footer .btn + .btn{margin-left:5px;margin-bottom:0;}
/* Agrandar / achicar (lo agrega el programa en cada cabecera) y el aviso de «se cierra con la cruz» */
.vc-modal-agrandar{
  float:right;height:24px;margin:3px 10px 0 0;padding:0 7px;box-sizing:border-box;
  border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);
  color:var(--ink-muted);font-size:var(--fs-s);line-height:22px;cursor:pointer;
}
.vc-modal-agrandar:hover{color:var(--ink);border-color:var(--ink-faint);}
.vc-modal-aviso{
  position:absolute;top:8px;left:50%;transform:translateX(-50%);z-index:5;pointer-events:none;
  padding:4px 10px;border-radius:var(--radius-control);font-size:var(--fs-m);white-space:nowrap;
  background:var(--warning-tint);color:var(--warning-dark);border:1px solid var(--warning);
  opacity:0;transition:opacity .2s;
}
.vc-modal-aviso.ver{opacity:1;}
.vc-modal--toque{animation:vc-modal-toque .35s ease;}
@keyframes vc-modal-toque{0%,100%{transform:translateX(0);}30%{transform:translateX(-6px);}60%{transform:translateX(6px);}}
@media (prefers-reduced-motion: reduce){ .vc-modal--toque{animation:none;} }
/* .close (la "×" del header) -- 103 usos reales en la app */
.close{
  float:right;font-size:var(--fs-xxl);font-weight:bold;line-height:20px;
  color:var(--ink);text-shadow:0 1px 0 #fff;opacity:.35;
  text-decoration:none;
}
.close:hover, .close:focus{color:var(--ink);text-decoration:none;cursor:pointer;opacity:.6;}
button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}

/* ============ SUELTOS — well/alert/badge-label/pagination/dropdown-menu
   (Fase C, 2026-07-28). Los últimos 5 sin reemplazo de la tabla de §15.2, todos
   CSS puro -- ninguno usa JS de Bootstrap en esta app (confirmado por grep: sin
   data-dismiss="alert", sin data-toggle="dropdown"; los ~9 dropdown-menu reales
   son autocompletes propios con open/close manual por jQuery .show()/.hide(),
   ya independientes de bootstrap.min.js desde antes de este shim). Valores
   tomados tal cual de bootstrap-combined.min.css, con una simplificación
   deliberada: el degradé de fondo en el hover de .dropdown-menu>li>a se
   reemplaza por un color sólido (#0088cc) -- se pierden los prefijos de
   vendor/filter de IE8 sin ningún cambio visible en un navegador moderno. */
/* .well va plano (ver «Contenedores planos» arriba): de lo de Bootstrap sólo queda lo que se veía. */
.well{min-height:20px;margin-bottom:20px;border-radius:4px;}
.alert{
  padding:8px 35px 8px 14px;margin-bottom:20px;
  text-shadow:0 1px 0 rgba(255,255,255,.5);
  background-color:var(--warning-tint,#FAF2EB);border:1px solid #fbeed5;border-radius:4px;
  color:var(--warning,#C2620A);
}
.alert h4{margin:0;color:inherit;}
.alert .close{position:relative;top:-2px;right:-21px;line-height:20px;}
.alert-success{background-color:var(--success-tint,#ECF8F0);border-color:#d6e9c6;color:var(--success,#16A34A);}
.alert-danger, .alert-error{background-color:var(--danger-tint,#FAEBEB);border-color:#eed3d7;color:var(--danger,#BF0000);}
.alert-info{background-color:var(--primary-tint,#EAF3F6);border-color:#bce8f1;color:var(--primary,#31859C);}
.alert-block{padding-top:14px;padding-bottom:14px;}
.alert-block > p, .alert-block > ul{margin-bottom:0;}
.alert-block p + p{margin-top:5px;}

.label, .badge{
  display:inline-block;padding:2px 4px;
  font-size:var(--fs-s);font-weight:bold;line-height:14px;
  color:#fff;vertical-align:baseline;white-space:nowrap;
  text-shadow:0 -1px 0 rgba(0,0,0,.25);
  background-color:var(--ink-faint,#8894A0);
}
.badge{padding-left:9px;padding-right:9px;border-radius:9px;}
.label:empty, .badge:empty{display:none;}
a.label:hover, a.label:focus, a.badge:hover, a.badge:focus{color:#fff;text-decoration:none;cursor:pointer;}
.label-important, .badge-important{background-color:var(--danger,#BF0000);}
.label-warning, .badge-warning{background-color:var(--warning,#C2620A);}
.label-success, .badge-success{background-color:var(--success,#16A34A);}
.label-info, .badge-info{background-color:var(--primary,#31859C);}
.label-inverse, .badge-inverse{background-color:var(--ink,#16232A);}

.pagination{margin:20px 0;}
.pagination ul{
  display:inline-block;margin-left:0;margin-bottom:0;
  border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.05);
}
.pagination ul > li{display:inline;}
.pagination ul > li > a, .pagination ul > li > span{
  float:left;padding:4px 12px;line-height:20px;text-decoration:none;
  background-color:#fff;border:1px solid var(--border,#DCE3E7);border-left-width:0;
}
.pagination ul > li:first-child > a, .pagination ul > li:first-child > span{
  border-left-width:1px;border-top-left-radius:4px;border-bottom-left-radius:4px;
}
.pagination ul > li:last-child > a, .pagination ul > li:last-child > span{
  border-top-right-radius:4px;border-bottom-right-radius:4px;
}
.pagination ul > li > a:hover, .pagination ul > li > a:focus,
.pagination ul > .active > a, .pagination ul > .active > span{background-color:var(--bg,#F6F8F9);}
.pagination ul > .active > a, .pagination ul > .active > span{color:var(--ink-faint,#8894A0);cursor:default;}
.pagination ul > .disabled > span, .pagination ul > .disabled > a,
.pagination ul > .disabled > a:hover, .pagination ul > .disabled > a:focus{
  color:var(--ink-faint,#8894A0);background-color:transparent;cursor:default;
}

/* .dropdown-menu: en esta app siempre con posición/z-index/display inline
   (autocompletes propios) -- estas reglas solo dan la apariencia de caja, el
   posicionamiento real lo sigue poniendo cada vista igual que antes. */
.dropdown-menu{
  position:absolute;top:100%;left:0;z-index:1000;display:none;
  float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;
  background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:6px;
  box-shadow:0 5px 10px rgba(0,0,0,.2);background-clip:padding-box;
}
.dropdown-menu > li > a{
  display:block;padding:3px 20px;clear:both;font-weight:normal;
  line-height:20px;color:var(--ink,#16232A);white-space:nowrap;text-decoration:none;
}
.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus{
  color:#fff;background-color:var(--primary,#31859C);text-decoration:none;
}
.dropdown-menu > .active > a, .dropdown-menu > .active > a:hover{
  color:#fff;background-color:var(--primary,#31859C);text-decoration:none;outline:0;
}
.dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover{
  color:var(--ink-faint,#8894A0);
}
.dropdown-menu > .disabled > a:hover{
  text-decoration:none;background-color:transparent;cursor:default;
}

/* ============ FORMULARIOS — reemplazo compatible de Bootstrap 2.3 (Fase C, 2026-07-28) ============
   El más grande de los módulos sueltos: .control-group (421 usos), .control-label (361, siempre
   dentro de .form-horizontal -- confirmado por grep, cero archivos usan control-label sin
   form-horizontal en el mismo archivo), .form-horizontal (59), .input-xlarge/large/medium/small/
   mini (varios cientos combinados), .input-block-level (87), .checkbox (11).

   RIESGO REAL encontrado antes de escribir esto, no una teoría: un selector "input[type=\"text\"]"
   (elemento + atributo) tiene MÁS especificidad que una clase sola como ".inputSearch" o
   ".vc-pagination select" -- si esta regla usara ese selector directo, le hubiera ganado en
   silencio al fix de altura de hoy (28px) en el buscador y el paginador. Se envuelve el selector
   compartido en :where(...), que siempre aporta especificidad CERO, así esta regla nunca puede
   ganarle a ninguna clase existente (.inputSearch, .vc-pagination select, Select2, etc.) sin
   importar el orden de carga. Por el mismo motivo se omite "height" acá: el alto real de Bootstrap
   (~30px) sale solo de padding+line-height+border, sin declarar height, para no competir con los
   28px ya fijados en los inputs que sí tienen su propia clase. */
label{display:block;margin-bottom:5px;}
.control-group{margin-bottom:10px;}
legend{
  display:block;width:100%;padding:0;margin-bottom:20px;
  font-size:var(--fs-l);font-weight:bold;line-height:28px;color:var(--ink);border:0;border-bottom:1px solid var(--border);
}

.form-horizontal .control-group{margin-bottom:20px;}
.form-horizontal .control-group:before, .form-horizontal .control-group:after{content:"";display:table;}
.form-horizontal .control-group:after{clear:both;}
.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right;}
.form-horizontal .controls{margin-left:180px;}
.form-horizontal .help-block{margin-bottom:0;}
.form-horizontal .form-actions{padding-left:180px;}

:where(
  input[type="text"], input[type="password"], input[type="date"], input[type="datetime-local"],
  input[type="month"], input[type="time"], input[type="week"], input[type="number"],
  input[type="email"], input[type="url"], input[type="search"], input[type="tel"],
  input[type="color"], textarea, select
){
  display:inline-block;padding:4px 6px;margin-bottom:10px;
  font-size:var(--fs-base);line-height:20px;color:var(--ink);vertical-align:middle;
  background-color:#fff;border:1px solid var(--border);border-radius:4px;
  box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
}
:where(select){width:220px;}
:where(
  input[type="text"]:focus, input[type="password"]:focus, input[type="date"]:focus,
  input[type="datetime-local"]:focus, input[type="month"]:focus, input[type="time"]:focus,
  input[type="week"]:focus, input[type="number"]:focus, input[type="email"]:focus,
  input[type="url"]:focus, input[type="search"]:focus, input[type="tel"]:focus,
  input[type="color"]:focus, textarea:focus, select:focus
){
  border-color:var(--primary);outline:0;
  box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(49,133,156,.4);
}

.input-mini{width:60px;}
.input-small{width:90px;}
.input-medium{width:150px;}
.input-large{width:210px;}
.input-xlarge{width:270px;}
.input-block-level{display:block;width:100%;min-height:30px;box-sizing:border-box;}

.checkbox{min-height:20px;padding-left:20px;}
.checkbox input[type="checkbox"]{float:left;margin-left:-20px;}

.help-block{display:block;margin-bottom:10px;color:var(--ink-muted);}
.help-inline{display:inline-block;vertical-align:middle;padding-left:5px;}

.form-actions{
  padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;
  background-color:var(--surface-2);border-top:1px solid var(--border);
}
.form-actions:before, .form-actions:after{content:"";display:table;}
.form-actions:after{clear:both;}

/* Shim compatible Bootstrap 2.3 - barra de progreso (.progress/.progress-striped/.bar).
   Uso real confirmado (grep, 2026-07-29): contabilidad/auditoria.blade.php y
   liquidaciones/iga_ibp.blade.php, siempre plana (sin bar-danger/success/info/warning). */
.progress{
  overflow:hidden;height:20px;margin-bottom:20px;background-color:var(--surface-2);
  box-shadow:inset 0 1px 2px rgba(0,0,0,.1);border-radius:4px;
}
.progress .bar{
  width:0%;height:100%;color:#fff;float:left;font-size:var(--fs-m);text-align:center;
  text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:var(--primary);
  box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-sizing:border-box;
  transition:width .6s ease;
}
.progress-striped .bar{
  background-image:linear-gradient(45deg, rgba(255,255,255,.15) 25%, transparent 25%,
    transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%,
    transparent 75%, transparent);
  background-size:40px 40px;
}
.progress.active .bar{animation:vc-progress-bar-stripes 2s linear infinite;}
@keyframes vc-progress-bar-stripes{from{background-position:40px 0;}to{background-position:0 0;}}

/* ============ BARRA DE ARRIBA (navbar) + CONTAINER-FLUID ============
   El header fijo de toda la app (y 14 sub-barras de agropecuarios/index.blade.php). La estructura era el shim de
   Bootstrap 2.3 del 29/07 y el color lo ponía vicor_sys.css (#2f96b4, el celeste de Bootstrap). Desde el 24/10
   está todo acá y la barra va con el color del logo (decisión del usuario). */
.navbar{overflow:visible;margin-bottom:0 !important;}
.navbar-inner, .navbar .navbar-inner{
  min-height:40px;padding-left:20px;padding-right:20px;
  background-color:var(--primary) !important;background-image:none !important;
  border:none !important;border-radius:0 !important;box-shadow:none !important;margin-top:0 !important;
}
.navbar .brand{
  float:left;display:block;padding:10px 20px 10px;margin-left:-20px;
  font-family:georgia, serif;font-size:var(--fs-xxl);font-weight:200;line-height:20px !important;
  color:#fff !important;text-shadow:none !important;
}
.brand .first{color:rgba(255,255,255,.8);font-style:italic;}
.brand .second{color:#fff;font-weight:bold;}
.navbar .nav > li > a{text-shadow:none !important;color:#fff !important;}
.navbar .nav > li > a:hover{background-color:rgba(255,255,255,.2) !important;color:#fff !important;}
.navbar-fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030;margin-bottom:0;}

/* .nav base (reset de <ul>, sin -tabs/-pills) + utilidades .pull-left/.pull-right -- usadas dentro
   del navbar (<ul class="nav pull-right">) y sueltas en varias vistas mas. */
.nav{margin-left:0;margin-bottom:20px;list-style:none;}
.pull-left{float:left;}
.pull-right{float:right;}

.container-fluid{padding-left:20px;padding-right:20px;}

/* Utilidades de texto/clearfix de Bootstrap 2.3 -- confirmadas en uso real (incluso via :class
   dinamico de Alpine.js en agropecuarios/index.blade.php, no solo class="" estatico). */
.muted{color:var(--ink-faint,#8894A0);}
.text-error{color:var(--danger,#BF0000);}
.text-warning{color:var(--warning,#C2620A);}
.text-success{color:var(--success,#16A34A);}
.text-info{color:var(--primary,#31859C);}
.clearfix:before, .clearfix:after{content:"";display:table;}
.clearfix:after{clear:both;}

/* .collapse -- estado base, la animacion la maneja vicor_collapse_shim.js (unico uso real:
   iga/tango_importacion.blade.php). */
.collapse{position:relative;height:0;overflow:hidden;}
.collapse.in{height:auto;}

/* Autocomplete/plantillas SPA -- consolidado 2026-07-31, estaba triplicado byte a byte
   (misma regla, mismo comentario) en liquidaciones/iva.blade.php, liquidaciones/iibb.blade.php
   y liquidaciones/iga_ibp.blade.php. El override de altura de inputs de grilla (livasave-*/
   ligaibpsave-*) NO se consolida aca -- son selectores distintos por vista, se queda local. */
.inputLabel{ height:20px; padding:4px 6px; border:1px solid var(--border,#DCE3E7); box-shadow:0 1px 1px rgba(0, 0, 0, 0.075) inset; }
.ui-autocomplete-loading{ background: white url('/img/loading.gif') right center no-repeat; }
@media (max-width: 768px){ .block{ overflow-x: auto; -webkit-overflow-scrolling: touch; } }
.status-rectificar-sap{ background-color: #ffff00; }

/* #iga_pat_table -- paridad de tamano con el ".btn.btn-mini" legacy que reemplazan (ver
   public/css/vicor_spa_core.css:212-232), agregado 2026-07-31 al migrar los 5 botones de la
   columna "Accion" del arbol Tabulator (vicor_iga_ibp_v4.js) a vc-btn/vc-btn-icon. El .tabulator-row
   de esta tabla tiene min-height:28px ajustado a mano para estos botones de 20px -- sin esta
   regla los botones caerian al tamano default de vc-btn-icon (22x22 fijo) y podrian desalinear
   el arbol visual. vc-btn-icon normal es un cuadrado fijo de 22x22; aca se vuelve a ancho
   automatico + 20px de alto, igual que el .btn.btn-mini original (nunca fue un cuadrado). */
#iga_pat_table .vc-btn-icon{ width:auto!important; height:20px!important; min-height:20px!important; padding:0 6px!important; }
#iga_pat_table .vc-btn-icon, #iga_pat_table .vc-btn{ margin:0 0 0 4px!important; }
#iga_pat_table .vc-btn-icon:first-child, #iga_pat_table .vc-btn:first-child{ margin-left:0!important; }
#iga_pat_table .vc-btn-icon i, #iga_pat_table .vc-btn i{ margin-top:0!important; font-size:var(--fs-s)!important; vertical-align:middle!important; display:inline-block!important; }

/* ── Selectores de contexto en el navbar (@yield('navbar_extra')) ──────────────
   Cliente/Ejercicio de Contabilidad > Auditoría y Cliente/Año Fiscal de los P.T.
   I.Ga. (v2 y v3) viven arriba, en la barra celeste: son los dos valores que lee
   TODA la pantalla (sus solapas, sus modales y su barra vertical), así que
   tenerlos en el navbar los deja siempre a la vista y le devuelve un renglón
   entero al contenido.

   El traje es el del botón #btn-toggle-sidebar del propio navbar -- mismo alto
   (28px), mismo fondo translúcido sobre el teal y mismo borde -- para que la
   barra se lea como una sola pieza y no como un control pegado encima. Los
   `!important` son para ganarle a lo que Select2 y Bootstrap 2 ponen inline.

   Estaba escrito adentro de contabilidad/auditoria.blade.php (era `.aud-selector`);
   se centralizó acá el 2026-08-21 al portarlo a los P.T. I.Ga.: es UN traje, no
   tres copias. Los ANCHOS no van acá -- cada pantalla los fija con sus propios
   ids, que es lo único que cambia entre una y otra. */
.nav-selector{ display:inline-flex; align-items:center; gap:7px; height:40px; vertical-align:top; margin-left:14px; }
.nav-selector label{ font-weight:bold; margin:0; font-size:var(--fs-s); color:#ffffff; white-space:nowrap; text-shadow:0 1px 1px rgba(0,0,0,.15); }

.nav-selector select,
.nav-selector input[type="text"],
.nav-selector .select2-container--default .select2-selection--single{
    height:28px !important; line-height:26px; margin:0 !important; box-sizing:border-box;
    background:rgba(0, 0, 0, 0.15) !important;
    border:1px solid rgba(255, 255, 255, 0.2) !important;
    border-radius:4px !important; color:#ffffff !important;
    box-shadow:none !important; text-shadow:none; font-size:var(--fs-s); outline:none;
}
.nav-selector select{ padding:2px 6px; }
.nav-selector input[type="text"]{ padding:2px 7px; }
.nav-selector input[type="text"]::placeholder{ color:rgba(255,255,255,.6); }
.nav-selector select:hover,
.nav-selector input[type="text"]:hover,
.nav-selector input[type="text"]:focus,
.nav-selector .select2-container--default .select2-selection--single:hover{
    background:rgba(255, 255, 255, 0.1) !important;
}
/* El desplegable nativo se dibuja con el tema del sistema: los renglones van
   oscuros sobre blanco o no se leen. */
.nav-selector select option{ color:var(--ink,#16232A); background:#ffffff; }

/* Bloqueado: gris apagado, para que se vea que todavía no se puede tocar.
   El de Ejercicio de Auditoría arranca así hasta que se elige un cliente. */
.nav-selector select:disabled{
    background:rgba(0, 0, 0, 0.07) !important;
    border-color:rgba(255, 255, 255, 0.12) !important;
    color:rgba(255, 255, 255, 0.45) !important;
    cursor:not-allowed;
}

/* Select2 pinta el texto y la flecha en elementos propios. Los `!important`
   del color y del alto no son decorativos: el tema unico de Select2 de mas
   arriba (~linea 400) fija `color:var(--ink) !important` sobre el mismo
   `.select2-selection__rendered`, y un `!important` le gana a cualquier
   especificidad. Sin esto el Cliente se leia en gris oscuro sobre el teal,
   distinto del Ejercicio, que es un <select> nativo y no pasa por esa regla. */
.nav-selector .select2-container--default .select2-selection--single
    .select2-selection__rendered{
    line-height:26px !important; color:#ffffff !important; font-size:var(--fs-s) !important;
    padding-left:7px; padding-right:22px;
}
.nav-selector .select2-container--default .select2-selection--single
    .select2-selection__placeholder{ color:rgba(255,255,255,.65) !important; }
.nav-selector .select2-container--default .select2-selection--single
    .select2-selection__arrow{ height:26px; right:4px; }
.nav-selector .select2-container--default .select2-selection--single
    .select2-selection__arrow b{ border-color:#ffffff transparent transparent transparent; }

/* §330: CUIT de ingreso a AFIP + clave fiscal del cliente elegido (P.T. I.Ga.
   v2 y v3). Mismo traje translúcido que los inputs del selector; cada valor se
   copia al portapapeles con un click. `--vacio` = ficha sin clave cargada. */
.nav-selector .nav-afip-valor{
    display:inline-block; height:28px; line-height:26px; box-sizing:border-box;
    background:rgba(0, 0, 0, 0.15); border:1px solid rgba(255, 255, 255, 0.2);
    border-radius:4px; color:#ffffff; font-size:var(--fs-s); padding:0 7px;
    cursor:pointer; white-space:nowrap; user-select:none;
}
.nav-selector .nav-afip-valor:hover{ background:rgba(255, 255, 255, 0.1); }
.nav-selector .nav-afip-valor--vacio{ color:rgba(255,255,255,.45); cursor:default; }
.nav-selector--inline .nav-afip-valor{ background:#ffffff; border-color:var(--border,#DCE3E7); color:var(--ink,#16232A); }
.nav-selector--inline .nav-afip-valor--vacio{ color:var(--ink-faint,#8894A0); }

/* Abajo de ~1100px el navbar ya no tiene ancho para los rótulos; los controles
   se quedan (el placeholder dice lo mismo que el rótulo). */
@media (max-width: 1100px){ .nav-selector label{ display:none; } }

/* Modo `?iframe=1`: el layout no dibuja el navbar, así que el mismo bloque cae
   adentro de la barra blanca de la pantalla y tiene que volver a leerse en
   oscuro. Sin esto quedaría texto blanco sobre fondo blanco. */
.nav-selector--inline{ margin-left:0; height:auto; }
.nav-selector--inline label{ color:var(--ink,#16232A); text-shadow:none; }
.nav-selector--inline select,
.nav-selector--inline input[type="text"]{
    background:#ffffff !important; border-color:var(--border,#DCE3E7) !important; color:var(--ink,#16232A) !important;
}
.nav-selector--inline input[type="text"]::placeholder{ color:var(--ink-faint,#8894A0); }

/* §1019: la fila (o la celda del anticipo) sobre la que se va a soltar el PDF arrastrado
   (VicorSoltar en vicor_core.js). Con !important: tiene que verse sobre el color de estado
   de la fila (rectificativa, a revisar…). */
.vc-soltar-aqui, .vc-soltar-aqui > td{ background-color:var(--primary-tint) !important; }
.vc-soltar-aqui{ outline:2px dashed var(--primary); outline-offset:-2px; }
