/* =====================================================================
   ArteConta - theme.css  (UNICA FUENTE DE LA VERDAD del diseno)
   ---------------------------------------------------------------------
   Cambiar la fuente, un color o el radio = editar UNA linea aqui (:root)
   y se aplica a TODO el programa. Cargado globalmente en general.php y
   nouser.php DESPUES de main.css/bootstrap para ganar la cascada.
   Diseno aprobado por Yasmina (estilo_propuesta.html, 2026-06).
   ===================================================================== */

/* ---------- 1. Source Sans 3 legacy: no se usa como fuente global ---------- */
@font-face{
  font-family:'Source Sans 3';
  font-style:normal;
  font-weight:400 700;            /* fuente variable: cubre 400/500/600/700 */
  font-display:swap;
  src:url('../fonts/source-sans/source-sans-3-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Source Sans 3';
  font-style:normal;
  font-weight:400 700;
  font-display:swap;
  src:url('../fonts/source-sans/source-sans-3-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ============================ 2. TOKENS ============================ */
/* === EDITA AQUI: una linea cambia todo el programa === */
:root{
  --app-fuente:'Montserrat','Segoe UI',Tahoma,Arial,sans-serif;  /* <- fuente global: paridad con nuevaapp */
  --azul:#0290fb;            /* primario / marca               <- color de marca */
  --azul-oscuro:#0277d6;
  --azul-claro-bg:#e6f3ff;   /* fondo cabecera de tabla */
  --naranja:#ff7825;         /* acento + pestana activa */
  --rojo:#d9534f;            /* peligro / borrar */
  --verde:#2e9e5b;           /* exito / exportar */
  /* Accessible action colors; corporate blue/orange remain unchanged. */
  --btn-danger-fill:#b73531;
  --btn-danger-text:#b73531;
  --btn-success-fill:#218044;
  --btn-success-text:#146b35;
  --btn-accent-fill:var(--azul-oscuro);
  --btn-icon-size:16px;
  --texto:#2c3e50;
  --texto-suave:#637083;
  --borde:#bfd1df;           /* borde de inputs */
  --borde-suave:#e6ebf1;     /* borde de paneles */
  --fondo:#f5f7fb;           /* fondo area de trabajo */
  --panel:#ffffff;           /* panel canonico claro */
  --panel-2:#f3f6f9;         /* panel secundario claro */
  --panel-3:#e5ebf2;         /* panel terciario claro */
  --text:var(--texto);       /* alias canonico para modulos nuevos */
  --muted:var(--texto-suave);
  --line:var(--borde);
  --ac-panel:var(--panel);   /* alias ac-* para formularios/mantenimientos */
  --ac-panel-muted:var(--panel-2);
  --ac-text:var(--text);
  --ac-muted:var(--muted);
  --radio:8px;               /* radio global             <- radio de todo */
  --radio-input:7px;
  --titulo-size:20px;        /* tamano UNICO del titulo de pantalla <- titulo */
  --titulo-peso:700;         /* peso UNICO del titulo de pantalla */
  --titulo-color:#102039;    /* color UNICO del titulo (azul-marino, paridad nuevaapp rgb(16,32,57)) */
  --bs-heading-color:var(--titulo-color);
  --btn-size:12px;           /* tamano UNICO de boton (densidad 2026-06-15: 12.5->12) */
  --btn-peso:600;            /* peso UNICO de boton */
  /* --- Escala de TIPOGRAFIA de CAMPOS por TIPO de elemento (familia: --app-fuente = Montserrat) ---
     Cambiar el tamano/peso de un TIPO de campo en todo el programa = editar
     aqui. Ver seccion 15 (aplicacion) y _AUDIT_TIPOGRAFIA.md. */
  --fs-label:11.5px;  --fw-label:600;   /* etiqueta de campo */
  --fs-value:12px;    --fw-value:400;   /* valor de campo (lectura, NO negrita) (densidad: 13->12) */
  --fs-section:12px;  --fw-section:600; /* cabecera de panel/seccion (densidad: 13->12) */
  --fs-cell:11px;     --fw-cell:400;    /* celda de tabla (td) (densidad: 12->11) */
  --fs-th:11px;       --fw-th:700;      /* cabecera de tabla (th) (densidad: 12->11) */
  --fs-help:11.5px;   --fw-help:400;    /* texto secundario / ayuda */
}

/* ============================ 3. BASE ============================ */
/* Generic headings share the theme token, including Bootstrap form headings. */
h1,h2,h3,h4,h5,h6{color:var(--bs-heading-color);}

/* Pantalla embebida en iframe (layout general con 'embedded'): sin menu lateral, todo el ancho. */
body.ac-embedded{grid-template-columns:minmax(0,1fr);}

body,
.shell, .workspace, .selection, .main-content,
.btn, button, input, select, textarea,
.field, .field label, .field input, .field select,
table, th, td,
h1,h2,h3,h4,h5,h6,
.title,.subtitle,.panel-head,.panel-body,.badge,.tab,.btn-accion{
  font-family:var(--app-fuente) !important;
}

/* ====================================================================
   4. BOTONES CANONICOS (.btn-primario / -secundario / -peligro /
      -exito / -naranja). Un estilo por tipo, identico en toda la app.
   ==================================================================== */
.btn-primario,.btn-secundario,.btn-peligro,.btn-exito,.btn-naranja{
  font-family:var(--app-fuente) !important;
  font-size:13px;font-weight:600;line-height:1;
  border-radius:var(--radio) !important;
  padding:6px 12px;border:1px solid transparent;cursor:pointer;  /* densidad 2026-06-15: 9px 16px -> 6px 12px */
  display:inline-flex;align-items:center;gap:7px;transition:.12s;
}
.btn-primario{background:var(--azul) !important;color:#fff !important;border-color:var(--azul) !important;}
.btn-primario:hover{background:var(--azul-oscuro) !important;border-color:var(--azul-oscuro) !important;}
.btn-secundario{background:#fff !important;color:var(--texto) !important;border-color:var(--borde) !important;}
.btn-secundario:hover{background:#f3f7fb !important;}
.btn-peligro{background:#fff !important;color:var(--btn-danger-text) !important;border-color:#e7b4b2 !important;}
.btn-peligro:hover{background:#fdf3f3 !important;}
.btn-exito{background:var(--btn-success-fill) !important;color:#fff !important;border-color:var(--btn-success-fill) !important;}
.btn-exito:hover{filter:brightness(.95);}
.btn-naranja{background:var(--naranja) !important;color:#fff !important;border-color:var(--naranja) !important;}
.btn-naranja:hover{filter:brightness(.95);}

/* ====================================================================
   5. NORMALIZACION CENTRAL de TODAS las familias de boton que conviven
      en final (auditoria _AUDIT_ESTILOS_GLOBAL.md). Sin tocar el markup
      de los modulos: aqui colapsan a la fuente/tamano/radio/color unicos.
   ==================================================================== */

/* --- 5.0 Anulamos el truco ::before transparente de main.css que dejaba
       los .btn sin fondo (causa raiz de "botones transparentes"). --- */
.btn::before{display:none !important;content:none !important;}

/* --- 5.1 .btn base de final + familias bespoke -> tipografia/forma unica --- */
.btn,
.ac-btn,.ac-btn--export,.ac-btn--success,.ac-btn--danger,.ac-btn--primary,
.bank-btn,.c43-btn,.cards-btn,.summary-btn,.mini-btn,
.btn-accion,.toolbar-btn,.filter-btn,.operational-action,.export-action,
.btn-primario,.btn-secundario,.btn-peligro,.btn-exito,.btn-naranja,
.ac-btn__label-hide,.ac-btn__label-search,
.invoice-party-preset-btn,.portfolio-sort-button,
.cert-btn-danger,.cert-btn-primary,.cert-reload-btn,.coti-config-btn,.coti-nif-action,
.iva-mod-button,.iva-mod-mini,.legalia-button,
.lroe140-gsf-button-control,.lroe140-gsf-grid-filter-button,.lroe140-isf-grid-filter-button,
.mi-mini-btn,.prevalidate-top-btn,.process-btn,.quick-btn,.rc-btn,
.ac-maintenance--accounting-controls .rc-btn,
.rental-btn,.rental-mini,.ret-button,.ret-button-back,.ret-mini-btn,.rm-button,
.row-btn,.sinc-masiva-btn,.chart-import-btn,.diary-import-btn,.reclass-btn,
button.btn-primary,button.btn-save,.btn-primary,.btn-save{
  font-family:var(--app-fuente) !important;
  font-size:var(--btn-size) !important;
  font-weight:600 !important;
  border-radius:var(--radio) !important;
}

/* 5.1 Icons/lookups: preserve the module's width, height and padding. */
.btn-icon,.bulk-account-lookup-btn,.invoice-line-delete-btn,.line-validate-btn,
.ck-icon-btn,.company-cnae-lookup-btn,.company-postal-lookup-btn,
.icon-btn,.icon-button,.iva-mod-button-icon,.lookup-btn,.coti-icon-action,
.lroe140-agru-date-button,.lroe140-biaf-date-button,.lroe140-isf-date-button,
.plan-icon-btn,.ret-180-delete-button,.ret-button-icon,.rm-button-icon,.rm-icon-button{
  font-family:var(--app-fuente) !important;
  font-size:var(--btn-icon-size) !important;
  border-radius:var(--radio) !important;
}

/* --- 5.2 SECUNDARIO unificado: blanco + borde gris (estado neutro) --- */
.btn,
.ac-btn,.bank-btn,.c43-btn,.cards-btn,.summary-btn,.mini-btn,.btn-accion{
  background:#fff !important;
  background-image:none !important;
  color:var(--texto) !important;
  border:1px solid var(--borde) !important;
}
.btn:hover,
.ac-btn:hover,.bank-btn:hover,.c43-btn:hover,.cards-btn:hover,
.summary-btn:hover,.mini-btn:hover,.btn-accion:hover{
  background:#f3f7fb !important;
  color:var(--texto) !important;
}

/* --- 5.3 PRIMARIO unificado: TODO azul de marca, fundiendo los azules
       divergentes #0b7fbd/#0b65a3/#0d6efd/#2f72d5/#246fae -> var(--azul) --- */
.btn.primary,.btn.success,.btn.toolbar-btn.top-action,
.btn.active,.btn-accion.activo,.btn-accion.active,
.ac-btn--primary,.ac-btn--success,
.bank-btn.primary,.c43-btn.primary,.cards-btn.primary,
button.btn-primary,.btn-primary,button.btn-save,.btn-save{
  background:var(--azul) !important;
  background-image:none !important;
  color:#fff !important;
  border:1px solid var(--azul) !important;
}
.btn.primary:hover,.btn.success:hover,
.btn-accion.activo:hover,.btn-accion.active:hover,
.ac-btn--primary:hover,.ac-btn--success:hover,
.bank-btn.primary:hover,.c43-btn.primary:hover,.cards-btn.primary:hover,
button.btn-primary:hover,.btn-primary:hover,button.btn-save:hover,.btn-save:hover{
  background:var(--azul-oscuro) !important;
  border-color:var(--azul-oscuro) !important;
  color:#fff !important;
}

/* --- 5.3b PRIMARIO en banca/cuaderno43/tarjetas (A2 hallazgo 0.4/sec.4.4):
       el boton "Guardar" (y demas ACCIONES PRINCIPALES) de estas pantallas
       salia BLANCO/secundario porque su markup NO lleva clase .primary: la
       jerarquia se marca por la AUSENCIA de .secondary (las neutras llevan
       .secondary, las de borrado .danger). En nuevaapp esos botones son AZUL
       SOLIDO. Aqui promovemos a PRIMARIO toda .bank-btn/.c43-btn/.cards-btn que
       NO sea secundaria ni de peligro (incluye Guardar, Subir y procesar,
       Contabilizar, Guardar regla, Proponer, Subir e importar...). Mayor
       especificidad (3 clases) que la regla secundaria de 5.2 (1 clase). --- */
#bank-save,
.bank-btn:not(.secondary):not(.danger),
.c43-btn:not(.secondary):not(.danger),
.cards-btn:not(.secondary):not(.danger){
  background:var(--azul) !important;
  background-image:none !important;
  color:#fff !important;
  border:1px solid var(--azul) !important;
}
#bank-save:hover,
.bank-btn:not(.secondary):not(.danger):hover,
.c43-btn:not(.secondary):not(.danger):hover,
.cards-btn:not(.secondary):not(.danger):hover{
  background:var(--azul-oscuro) !important;
  border-color:var(--azul-oscuro) !important;
  color:#fff !important;
}

/* --- 5.4 PELIGRO unificado --- */
.btn.danger,.ac-btn--danger,.bank-btn.danger,.c43-btn.danger,.cards-btn.danger{
  background:#fff !important;
  background-image:none !important;
  color:var(--btn-danger-text) !important;
  border:1px solid #e7b4b2 !important;
}
.btn.danger:hover,.ac-btn--danger:hover,.bank-btn.danger:hover,
.c43-btn.danger:hover,.cards-btn.danger:hover{ background:#fdf3f3 !important; }

/* --- 5.5 EXITO / exportadores (CSV verde) unificado --- */
.btn.success.export,.btn.export-csv,.ac-btn--export{
  background:var(--btn-success-fill) !important;
  background-image:none !important;
  color:#fff !important;
  border:1px solid var(--btn-success-fill) !important;
}

.btn[disabled],button[disabled]{opacity:.5 !important;cursor:not-allowed;}

/* ====================================================================
   6. BARRA DE ACCIONES (pill arriba)
   ==================================================================== */
.action-bar,.toolbar.work-head,.ac-toolbar{
  display:flex;flex-wrap:wrap;gap:8px;
  background:#fbfdff;border:1px solid var(--borde-suave);
  border-radius:10px;padding:10px 12px;
}

/* ====================================================================
   7. PESTANAS - activa con borde inferior NARANJA
   ==================================================================== */
.tabs,.ac-tabs{display:flex;gap:2px;border-bottom:2px solid var(--borde-suave);}
.tab,.ac-tab,.c43-tab{
  padding:8px 18px;font-family:var(--app-fuente) !important;
  font-weight:600;font-size:13px;color:var(--texto-suave) !important;
  border:none !important;background:none !important;cursor:pointer;
  border-bottom:3px solid transparent !important;margin-bottom:-2px;border-radius:0 !important;
}
.tab.activa,.tab.active,.ac-tab.active,.ac-tab.activa,.c43-tab.active{
  color:var(--naranja) !important;
  border-bottom:3px solid var(--naranja) !important;
  background:none !important;
}

/* ====================================================================
   8. TABLAS - cabecera azul ordenable
   ==================================================================== */
table.ac thead th,.grid-header,.grid thead th,table.grid thead th{
  background:var(--azul-claro-bg) !important;
  color:var(--azul) !important;
  font-weight:700 !important;
}

/* ====================================================================
   9. INPUTS / FILTROS  +  base .field/.check-field que faltaba en
      pantallas como vat_books (las daba conceptos.css en nuevaapp).
   ==================================================================== */
/* FIX 10-jun: min-width:180px desbordaba las barras de filtro en grid
   (vat_books 150px/40px, liquidacion 110px, lroe 70px...) -> los .field se
   montaban unos sobre otros. En grid/flex el ancho lo da el track/contenedor;
   el .field NO debe imponer 180px (min-width:0 = comportamiento correcto de
   grid/flex item). Donde se quiera ancho minimo se fija en el grid-template. */
.field{display:flex;flex-direction:column;gap:2px;min-width:0;}
.field label,.field > span{font-size:11.5px;color:var(--texto-suave);font-weight:600;}
.field input,.field select,.field textarea{
  font-family:var(--app-fuente);font-size:12px;padding:1px 6px;
  border:1px solid var(--borde);border-radius:var(--radio-input);
  background:#fff;color:var(--texto);
}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--azul);
  box-shadow:0 0 0 3px rgba(2,144,251,.14);
}
.ac-date-control{display:flex;align-items:stretch;gap:4px;width:100%;}
.ac-date-control > input{min-width:0;flex:1 1 auto;}
.ac-date-picker-btn{
  width:30px;min-width:30px;height:30px;padding:0;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--input-bg);color:var(--texto);border:1px solid var(--borde);
  border-radius:var(--radio-input);cursor:pointer;line-height:1;
}
.ac-date-picker-btn:hover{background:var(--panel-2);color:var(--azul);}
.ac-date-picker-btn:focus{outline:none;border-color:var(--azul);box-shadow:0 0 0 3px rgba(2,144,251,.14);}
.ac-date-native-picker{
  position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;
  border:0;padding:0;margin:0;
}
.check-field{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--texto);}
.check-field input[type="checkbox"]{width:14px;height:14px;flex:0 0 14px;margin:0;}
/* Casilla incluida por otra (marcada y bloqueada): el navegador pinta gris claro una casilla disabled aunque este
   marcada y parece vacia; esta la dibuja marcada con el azul de marca. PHP decide quien la lleva. */
input[type="checkbox"].ac-check-incluido{
  appearance:none;-webkit-appearance:none;position:relative;flex:0 0 auto;
  width:13px;height:13px;margin:0;border:1px solid var(--azul);border-radius:2px;background:var(--azul);cursor:not-allowed;
}
input[type="checkbox"].ac-check-incluido::after{
  content:"";position:absolute;left:3px;top:0;width:5px;height:9px;
  border:solid var(--panel);border-width:0 2px 2px 0;transform:rotate(45deg);
}
/* Valor literal que se compara (datos de origen frente a destino): conserva los espacios tal cual (el HTML los junta) y
   se subraya para ver donde empieza y acaba. PHP marca con ␣ los espacios que no se verian. */
.ac-valor-literal{white-space:pre-wrap;border-bottom:1px dotted var(--borde);}
.ac-espacio-visible{background:var(--naranja);color:var(--panel);font-weight:700;}

/* ====================================================================
   10. PANELES / EDITOR-PANEL (base que faltaba en vat_books)
   ==================================================================== */
.editor-panel{
  background:#fff;border:1px solid var(--borde-suave);
  border-radius:var(--radio);padding:18px 20px;
}
.editor-panel h1{font-size:20px;font-weight:700;margin:0 0 16px;}
.panel{border:1px solid var(--borde-suave);border-radius:10px;overflow:hidden;background:#fff;}
.panel-head{background:#f3f6f9;padding:6px 10px;font-weight:700;color:var(--texto);
  display:flex;justify-content:space-between;align-items:center;font-size:13px;}
.panel-body{padding:14px;}
/* <fieldset> de vat_books y similares: caja con borde y leyenda normal */
fieldset.vat-box,fieldset.editor-fieldset{
  border:1px solid var(--borde-suave);border-radius:var(--radio);padding:10px 12px 12px;
}
fieldset.vat-box > legend,fieldset.editor-fieldset > legend{
  font-size:12.5px;font-weight:700;color:var(--texto-suave);padding:0 8px;
}

/* ====================================================================
   11b. OVERRIDES de alta especificidad para modulos con .scope .btn !important
        (no se pueden vencer con .btn.primary; aqui igualamos su scope).
   ==================================================================== */
/* vat_books: el "primario" (Visualizar/lupa) usa #2f72d5; lo llevamos al azul
   de marca SIN tocar el azul de Word (que es legitimamente #2f72d5). */
.vat-books-page .vat-actions .btn.primary,
.vat-books-page .vat-company-search.primary,
.vat-books-page .vat-company-search.btn.primary{
  background-color:var(--azul) !important;background-image:none !important;
  border-color:var(--azul) !important;color:#fff !important;
}
/* fiscal_models / cualquier modulo con tabs .tab.active de fondo solido:
   pestana activa = subrayado NARANJA, sin caja de color. */
.ac-fiscal-models .tabs .tab.active,
.ac-plancuentas .tabs .tab.active,
.tabs .tab.active,.tabs .tab.activa{
  background:transparent !important;
  color:var(--naranja) !important;
  border:none !important;border-bottom:3px solid var(--naranja) !important;
}

/* ====================================================================
   12. BADGES (estados)
   ==================================================================== */
.badge-ok{background:#e3f6ea !important;color:#1f8a4c !important;}
.badge-warn{background:#fdf2dc !important;color:#a9770f !important;}
.badge-err{background:#fde6e6 !important;color:#c0392b !important;}
.badge-info{background:var(--azul-claro-bg) !important;color:var(--azul) !important;}

/* ====================================================================
   13. TITULO DE PANTALLA UNICO (canonico, identico en TODAS las vistas)
       Cambiar el titulo de todo el programa = editar --titulo-size /
       --titulo-peso en :root (arriba). Cada modulo usaba su propio
       elemento/clase (h1, .plan-head-title, .work-head-title,
       .ac-toolbar__title, .bank-title, #ivaTitle, etc.) con tamanos y
       hasta fuentes distintas (plan_cuentas iba en Montserrat). Aqui se
       fuerzan TODOS al mismo estilo. Mayor especificidad + !important
       para vencer a los CSS de modulo (.ac-plancuentas, .ac-estructuras,
       .ac-fiscal-models, etc.).
   ==================================================================== */
.plan-head-title,#maintenanceTitle,
.ac-plancuentas .plan-head-title,
.work-head-title,
.ac-estructuras .work-head-title,
.ac-fiscal-models .work-head-title,
.ac-claves .work-head-title,
.ac-toolbar__title,
.bank-title,
#ivaTitle,.vat-books-page > .editor-panel > h1,
.diary-title-block > h1,
.compact-head > h1,
.main-content > h1,.main-content > h2,
#ajax-content > h1,#ajax-content > h2,
.main-content header h1,.main-content header h2,
#ajax-content header h1,#ajax-content header h2,
.selection > h1,.selection > h2,
.selection header h1,.selection header h2,
.lroe-comm-header h1{
  font-family:var(--app-fuente) !important;
  font-size:var(--titulo-size) !important;
  font-weight:var(--titulo-peso) !important;
  line-height:1.25 !important;
  color:var(--titulo-color) !important;
}

.main-content header p,
#ajax-content header p,
.selection header p,
.lroe-comm-header p{
  color:var(--texto-suave) !important;
}

/* ====================================================================
   14. BOTONES - REMATE FINAL de las familias scoped que aun divergian
       (.ac-estructuras / .ac-fiscal-models / .ac-claves usaban
       border-radius:9px !important + 12px/700 + "primario" transparente
       o en degradado). Se igualan al boton canonico: radio var(--radio)
       (8px), tamano/peso unicos (--btn-size/--btn-peso) y PRIMARIO azul
       relleno. Mayor especificidad (.scope .btn) + !important para
       vencer a su propio CSS de modulo.
   ==================================================================== */
/* 14.1 Forma/tipografia unica (mata el radio 9px y el 12px/700) */
.ac-estructuras .btn,.ac-estructuras .mini-btn,.ac-estructuras .dialog-actions button,
.ac-fiscal-models .btn,.ac-fiscal-models .dialog-actions button,
.ac-claves .btn{
  border-radius:var(--radio) !important;
  font-size:var(--btn-size) !important;
  font-weight:var(--btn-peso) !important;
  font-family:var(--app-fuente) !important;
}

/* 14.2 SECUNDARIO/neutro: blanco + borde gris (incluye los transparentes
       "Confirmar"/"Cancelar" del modal y los .btn pelados de estructuras) */
.ac-estructuras .btn,.ac-estructuras .dialog-actions button,
.ac-fiscal-models .btn,.ac-fiscal-models .dialog-actions button,
.ac-claves .btn{
  background:#fff !important;
  background-image:none !important;
  color:var(--texto) !important;
  border:1px solid var(--borde) !important;
}

/* 14.3 PRIMARIO siempre AZUL RELLENO (Grabar/Confirmar/primary/active).
       Arregla los "Grabar"/"Confirmar" que salian transparentes o en
       degradado azul-verdoso en balance_structures/catalog_keys. */
.ac-estructuras .btn.success,.ac-estructuras .btn.primary,.ac-estructuras .btn.active,
.ac-estructuras .dialog-actions button[type="submit"],
.ac-fiscal-models .btn.primary,.ac-fiscal-models .btn.success,
.ac-fiscal-models .dialog-actions button[type="submit"],
.ac-claves .btn.success,.ac-claves .btn.primary{
  background:var(--azul) !important;
  background-image:none !important;
  color:#fff !important;
  border:1px solid var(--azul) !important;
}
.ac-estructuras .btn.success:hover,.ac-estructuras .btn.primary:hover,
.ac-estructuras .dialog-actions button[type="submit"]:hover,
.ac-fiscal-models .btn.primary:hover,.ac-fiscal-models .btn.success:hover,
.ac-claves .btn.success:hover,.ac-claves .btn.primary:hover{
  background:var(--azul-oscuro) !important;border-color:var(--azul-oscuro) !important;color:#fff !important;
}

/* 14.4 PELIGRO/borrar: blanco + texto rojo (coherente con familia .btn.danger) */
.ac-estructuras .btn.danger,.ac-fiscal-models .btn.danger,.ac-claves .btn.danger{
  background:var(--panel) !important;color:var(--btn-danger-text) !important;border:1px solid #e7b4b2 !important;
}

/* 14.5 Pestana activa de fiscal_models = subrayado NARANJA (no caja azul
       solida). La regla .ac-fiscal-models .btn.primary de arriba NO toca
       .tab.active porque aqui se reafirma el criterio de pestanas (sec.7/11b). */
.ac-fiscal-models .tabs .tab.active,.ac-fiscal-models .tabs .tab.activa{
  background:transparent !important;color:var(--naranja) !important;
  border:none !important;border-bottom:3px solid var(--naranja) !important;
}

/* ====================================================================
   15. TIPOGRAFIA DE CAMPOS UNIFICADA (Montserrat unica, escala por TIPO)
       Gobierna desde aqui la fuente/tamano/peso de TODOS los campos,
       etiquetas, valores, cabeceras de panel, celdas y th del programa.
       Tokens en :root (--fs-* / --fw-*). Auditoria: _AUDIT_TIPOGRAFIA.md.
       Cada modulo redefinia --font-base: Montserrat (o font-family:Arial/
       Verdana) en su contenedor, y theme.css no cubria .detail-*/.report-*
       /contenedores bank-c43-cards/balances -> se escapaban. Aqui:
         15.1 neutralizamos --font-base de los modulos a var(--app-fuente)
         15.2 forzamos font-family en los selectores/contenedores que se
              escapan (Arial/Verdana) -> todo Montserrat desde un sitio
         15.3 aplicamos la escala por tipo a los selectores de cada modulo.
   ==================================================================== */

/* --- 15.1 NEUTRALIZAR --font-base de los modulos.
       Redefinir la variable en el mismo contenedor que la fija hace que
       todo lo que herede var(--font-base) pase a la fuente global. --- */
.ac-facturas,.ac-lroe,.bank-page,.c43-page,.cards-page,.reclass-page,
.ac-report,.diary-workspace,
.ac-plancuentas,.ac-vat-groups,.ac-fixed-assets,.ac-portfolio,
.ac-sincronizacion,.ac-conceptos,.ac-estructuras,
.historical-update-page,.historical-renumber-page,.recover-structures-page{
  --font-base:var(--app-fuente) !important;
}

/* --- 15.2 FORZAR font-family global en TODOS los contenedores de
       modulo y SUS DESCENDIENTES. Los modulos ponen font-family:var(--font-base)
       (Montserrat) o font-family:Arial/Verdana directamente en el contenedor;
       sus hijos lo heredan. Aqui forzamos la fuente unica en contenedor + `*`
       de forma que nada (ni etiquetas, ni valores, ni texto suelto) se escape.
       Esto sustituye al truco de --font-base (que no vence si el modulo carga
       despues): vencemos por font-family directo !important. --- */
.ac-facturas,.ac-facturas *,
.ac-lroe,.ac-lroe *,
.bank-page,.bank-page *,
.c43-page,.c43-page *,
.cards-page,.cards-page *,
.reclass-page,.reclass-page *,
.ac-report,.ac-report *,
.diary-workspace,.diary-workspace *,
.ac-plancuentas,.ac-plancuentas *,
.ac-vat-groups,.ac-vat-groups *,
.ac-fixed-assets,.ac-fixed-assets *,
.ac-portfolio,.ac-portfolio *,
.ac-sincronizacion,.ac-sincronizacion *,
.ac-conceptos,.ac-conceptos *,
.ac-estructuras,.ac-estructuras *,        /* incluye .tree-pane (Verdana) */
.maintenance,.maintenance *,
.invoice-maintenance,.invoice-maintenance *,
.historical-update-page,.historical-update-page *,
.historical-renumber-page,.historical-renumber-page *,
.recover-structures-page,.recover-structures-page *,
.detail-label,.detail-value,.detail-section-title,
.report-check,.report-check *,
.cards-inline-check{
  font-family:var(--app-fuente) !important;
}

/* --- 15.3 ESCALA POR TIPO (la fuente ya es unica; aqui tamano+peso) --- */

/* 15.3a ETIQUETA de campo: 11.5px / 600 */
.field label,.field > span,.form-label,.field-label,
.detail-label,
.ac-facturas .detail-label,.ac-lroe .detail-label,
.grid-filter label,
.field.small label,.field.code-field label{
  font-family:var(--app-fuente) !important;
  font-size:var(--fs-label) !important;
  font-weight:var(--fw-label) !important;
  color:var(--texto-suave);
}

/* 15.3b VALOR de campo (lectura): 13px / 400, NO negrita.
       Pisa el Montserrat 12px/700 de facturas/lroe. El <b>/<strong>
       dentro del valor tampoco va en negrita doble. */
.detail-value,.field-value,.form-control-plaintext,
.ac-facturas .detail-value,.ac-lroe .detail-value{
  font-family:var(--app-fuente) !important;
  font-size:var(--fs-value) !important;
  font-weight:var(--fw-value) !important;
  color:var(--texto);
}
.detail-value b,.detail-value strong,
.ac-facturas .detail-value b,.ac-facturas .detail-value strong,
.ac-lroe .detail-value b,.ac-lroe .detail-value strong{
  font-weight:var(--fw-value) !important;
}

/* 15.3c CABECERA de panel/seccion: 13px / 600 */
.card-title,.ac-panel-header,.detail-section-title,
.detail-group-title,.trace-section h3,
.card-title.ac-panel-header{
  font-family:var(--app-fuente) !important;
  font-size:var(--fs-section) !important;
  font-weight:var(--fw-section) !important;
  color:var(--texto);
}

/* 15.3d CELDA de tabla (td): 12px / 400.
       Cubre .grid (facturas) y .ac-grid (catalogos/conceptos, con su
       scope .ac-maintenance--* de specificity 0,3,1 -> igualamos). */
.grid tbody td,.trace-table tbody td,
.ac-facturas .grid tbody td,
.ac-grid tbody td,.ac-grid td,
[class*="ac-maintenance"] .ac-grid td,
[class*="ac-maintenance"] .ac-grid tbody td{
  font-size:var(--fs-cell) !important;
  font-weight:var(--fw-cell) !important;
}

/* 15.3e CABECERA de tabla (th): 12px / 700.
       OJO: el color de th lo fija la seccion 8 (azul ordenable); aqui
       solo tamano/peso para no pisar ese criterio. */
.grid-header,.th-label,.bank-sort,.cart-sort,
.grid thead th,table.grid thead th,
.ac-facturas .grid-header,
.ac-grid thead th,
[class*="ac-maintenance"] .ac-grid thead th,
[class*="ac-maintenance"] .ac-grid thead th .th-label{
  font-size:var(--fs-th) !important;
  font-weight:var(--fw-th) !important;
}

/* 15.3f TEXTO secundario / ayuda: 11.5px / 400 */
.hint,small,.text-muted,.form-text{
  font-family:var(--app-fuente) !important;
  font-size:var(--fs-help) !important;
  font-weight:var(--fw-help) !important;
}

/* 15.3g .report-check (checkbox de informes contables) + sus cabeceras:
       texto de check = 13px/400 (como .check-field), label interna 11.5/600.
       Estaban en Montserrat 12px/700; ya forzado a la fuente en 15.2. */
.report-check{
  font-family:var(--app-fuente) !important;
  font-size:13px !important;
  font-weight:400 !important;
  color:var(--texto);
}
.report-check label,.report-check > span{
  font-size:var(--fs-label) !important;
  font-weight:var(--fw-label) !important;
}

/* ====================================================================
   16. FORMULARIO UNIFICADO  (additivo, NO toca lo anterior)
   --------------------------------------------------------------------
   Plantilla UNICA de formulario de mantenimiento (aprobada por Yasmina,
   _tmp/formulario_unificado_propuesta.html). Todas las pantallas de
   mantenimiento/edicion deben verse identicas: barra de acciones, titulo,
   pestanas, paneles colapsables, REJILLA de 12 columnas y subgrid embebido
   con cabecera de tabla AZUL. Se gobierna desde aqui con los tokens de :root
   (mismos colores/tipografia/radio que el resto del programa). Cambiar un
   valor aqui = cambia el formulario en TODAS las pantallas que adopten estas
   clases (`ac-uform`).

   COMO SE USA (markup minimo de una pantalla):
     <div class="ac-uform">
       <?php // barra de acciones via partial views/components/form_toolbar ?>
       <h1 class="ac-uform-title">Titulo de pantalla</h1>
       <div class="ac-tabs"> <button class="ac-tab active">..</button> ... </div>
       <div class="ac-fbody">                <- cuerpo con MARGEN 22px (nada pegado al borde)
         <section class="ac-panel">          <- panel/seccion colapsable
           <div class="ac-panel-head">Titulo seccion</div>
           <div class="ac-panel-body">
             <div class="ac-fgrid">           <- rejilla 12 columnas
               <div class="ac-field c3"><label>Etiqueta</label><input ...></div>
               <div class="ac-field c2 ac-check"><input type=checkbox id=x><label for=x>Activo</label></div>
               ...
             </div>
             <div class="ac-subhead"><span class="ac-subhead-title">Grupos</span>
               <button class="ac-btn-add" ...>+ Anadir</button></div>   <- subcabecera
             <table class="ac-grid"> ... </table>      <- subgrid (cabecera AZUL)
           </div>
         </section>
       </div>
     </div>
   Tokens nuevos: --uf-alto-campo (alto input/select), --uf-pad-cuerpo (margen
   constante del cuerpo). El AZUL de la cabecera de tabla del subgrid
   (--uf-th-bg/--uf-th-fg) es el azul de tabla ACORDADO, constante en los 3
   temas (igual que en el resto del programa).
   ==================================================================== */
:root{
  --uf-alto-campo:26px;       /* alto unico de input/select/checkbox host (densidad: 34->26) */
  --uf-check-size:16px;
  --uf-pad-cuerpo:12px;       /* margen/padding constante del cuerpo (densidad: 22->12) */
  --uf-th-bg:#e7f2f8;         /* cabecera de tabla del subgrid: AZUL (constante 3 temas) */
  --uf-th-fg:#0b65a3;         /* texto cabecera de tabla del subgrid */
  --uf-th-line:#cfe3f0;       /* borde inferior de la cabecera de tabla */
}

/* --- 16.1 Barra de acciones (la pinta el partial form_toolbar.php).
       REUSA los botones canonicos (.btn-primario/-peligro/-exito/-secundario).
       Aqui solo el contenedor, el separador vertical y el empuje a la derecha. */
.ac-form-toolbar{
  display:flex;align-items:center;flex-wrap:wrap;gap:8px;
  background:#fbfdff;border:1px solid var(--borde-suave);
  border-radius:10px;padding:10px 12px;margin-bottom:12px;
}
[data-theme="dark"] .ac-form-toolbar{background:#182131;}
[data-theme="blue"] .ac-form-toolbar{background:#edf6fc;}
.ac-form-toolbar .ac-tb-sep{      /* separador vertical | */
  width:1px;height:24px;background:var(--borde);margin:0 4px;flex:none;
}
.ac-form-toolbar .ac-tb-spacer{margin-left:auto;}  /* empuja Exportar/Volver a la derecha */
/* icono dentro de boton de la barra */
.ac-form-toolbar .ac-tb-ico{width:16px;height:16px;flex:0 0 16px;display:inline-flex;align-items:center;justify-content:center;line-height:0;}
.ac-form-toolbar .ac-tb-ico svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
/* el partial usa los botones canonicos; aseguramos su forma/tamano aunque
   un CSS de modulo intente cambiarla */
.ac-form-toolbar .btn-primario,.ac-form-toolbar .btn-secundario,
.ac-form-toolbar .btn-peligro,.ac-form-toolbar .btn-exito{
  font-size:var(--btn-size) !important;font-weight:var(--btn-peso) !important;
  border-radius:var(--radio) !important;padding:6px 12px;  /* densidad 2026-06-15: 8px 14px -> 6px 12px */
}
.ac-form-toolbar .btn-primario[disabled],.ac-form-toolbar .btn-secundario[disabled],
.ac-form-toolbar .btn-peligro[disabled],.ac-form-toolbar .btn-exito[disabled]{
  opacity:.5;cursor:not-allowed;
}
/* formularios POST inline (Borrar/Duplicar/Exportar) sin romper el flex */
.ac-form-toolbar form{display:inline-flex;margin:0;}
/* Cancelar = ghost: secundario sin borde ni fondo */
.ac-form-toolbar .ac-tb-ghost{background:transparent !important;border-color:transparent !important;}
.ac-form-toolbar .ac-tb-ghost:hover{background:#f3f7fb !important;}

/* --- 16.2 Titulo de pantalla: ya canonico (sec.13). Aqui solo el espaciado
       cuando se usa <h1 class="ac-uform-title">. */
.ac-uform .ac-uform-title{
  font-family:var(--app-fuente) !important;
  font-size:var(--titulo-size) !important;
  font-weight:var(--titulo-peso) !important;
  color:var(--texto) !important;line-height:1.25;margin:0 0 2px;
}

/* --- 16.3 Pestanas: subrayado NARANJA en la activa (mismo criterio sec.7). */
.ac-uform .ac-tabs{display:flex;gap:4px;border-bottom:1px solid var(--borde-suave);margin-bottom:0;}
.ac-uform .ac-tab{
  padding:9px 16px;font-family:var(--app-fuente) !important;
  font-size:13.5px;font-weight:600;color:var(--texto-suave);
  border:none;background:none;cursor:pointer;
  border-bottom:3px solid transparent;margin-bottom:-1px;border-radius:0;
}
.ac-uform .ac-tab.active{color:var(--texto);border-bottom-color:var(--naranja);}

/* --- 16.4 Cuerpo del formulario con MARGEN CONSTANTE (nada pegado al borde). */
.ac-uform .ac-fbody{padding:var(--uf-pad-cuerpo);}

/* fila de titulo + estado (modo Altas/Modificaciones/Consultas) */
.ac-uform .ac-uform-titlerow{display:flex;align-items:baseline;gap:14px;padding:2px 0 12px;}
.ac-uform .ac-uform-status{color:var(--texto-suave);font-size:12.5px;font-weight:600;}
/* fila clave del editor (Estructura/Codigo/modo) y fila de busqueda superior */
.ac-uform .ac-uform-keyrow,.ac-uform .ac-uform-editorkey{margin-bottom:16px;}
.ac-uform .ac-uform-mode{justify-content:flex-end;}
.ac-uform .ac-uform-mode .mode{
  font-size:13px;font-weight:600;color:var(--texto-suave);
  display:inline-flex;align-items:center;min-height:var(--uf-alto-campo);
}
/* el campo de solo lectura (Estructura) se distingue suave */
.ac-uform input[readonly]{background:#f3f6f9 !important;color:var(--texto-suave);}
[data-theme="dark"] .ac-uform input[readonly]{background:#0b1422 !important;}

/* --- 16.5 Panel/seccion colapsable: cabecera azul clara, cuerpo con padding. */
.ac-uform .ac-panel{
  border:1px solid var(--borde-suave);border-radius:var(--radio);
  background:#fff;overflow:hidden;margin-bottom:10px;
}
[data-theme="dark"] .ac-uform .ac-panel{background:#182131;}
[data-theme="blue"] .ac-uform .ac-panel{background:#edf6fc;}
.ac-uform .ac-panel-head{
  display:flex;align-items:center;gap:9px;
  padding:10px 14px;background:var(--azul-claro-bg);
  font-size:var(--fs-section) !important;font-weight:var(--fw-section) !important;
  color:var(--azul-oscuro);cursor:default;
}
.ac-uform .ac-panel-head .ac-chev{margin-left:auto;color:var(--azul);font-size:12px;}
.ac-uform .ac-panel-body{padding:10px 12px;}

/* --- 16.6 REJILLA de 12 columnas: etiqueta arriba + control, gaps iguales. */
.ac-uform .ac-fgrid{display:grid;grid-template-columns:repeat(12,1fr);gap:8px 10px;}
.ac-uform .ac-field{display:flex;flex-direction:column;gap:5px;min-width:0;}
.ac-uform .ac-field.c1{grid-column:span 1;}
.ac-uform .ac-field.c2{grid-column:span 2;}
.ac-uform .ac-field.c3{grid-column:span 3;}
.ac-uform .ac-field.c4{grid-column:span 4;}
.ac-uform .ac-field.c5{grid-column:span 5;}
.ac-uform .ac-field.c6{grid-column:span 6;}
.ac-uform .ac-field.c7{grid-column:span 7;}
.ac-uform .ac-field.c8{grid-column:span 8;}
.ac-uform .ac-field.c9{grid-column:span 9;}
.ac-uform .ac-field.c10{grid-column:span 10;}
.ac-uform .ac-field.c11{grid-column:span 11;}
.ac-uform .ac-field.c12{grid-column:span 12;}
.ac-uform .ac-field > label{
  font-size:var(--fs-label) !important;font-weight:var(--fw-label) !important;
  color:var(--texto-suave);text-transform:uppercase;letter-spacing:.03em;
}
.ac-uform .ac-field .ac-req{color:var(--rojo);}

/* --- 16.7 Inputs/selects/textarea UNIFORMES: alto 34px, radio 6px, foco azul. */
.ac-uform .ac-field input[type="text"],
.ac-uform .ac-field input[type="search"],
.ac-uform .ac-field input[type="number"],
.ac-uform .ac-field input:not([type]),
.ac-uform .ac-field select,
.ac-uform .ac-grid input[type="text"],
.ac-uform .ac-grid input:not([type]){
  font-family:var(--app-fuente) !important;font-size:var(--fs-value) !important;
  height:var(--uf-alto-campo);border:1px solid var(--borde);border-radius:6px;
  padding:0 10px;color:var(--texto);background:#fff;width:100%;
}
.ac-uform .ac-field textarea{
  font-family:var(--app-fuente) !important;font-size:var(--fs-value) !important;
  min-height:var(--uf-alto-campo);border:1px solid var(--borde);border-radius:6px;
  padding:8px 10px;color:var(--texto);background:#fff;width:100%;resize:vertical;
}
[data-theme="dark"] .ac-uform .ac-field input,
[data-theme="dark"] .ac-uform .ac-field select,
[data-theme="dark"] .ac-uform .ac-field textarea,
[data-theme="dark"] .ac-uform .ac-grid input{background:#0f1c2e;color:#edf4ff;}
.ac-uform .ac-field input:focus,
.ac-uform .ac-field select:focus,
.ac-uform .ac-field textarea:focus,
.ac-uform .ac-grid input:focus{
  outline:none;border-color:var(--azul);box-shadow:0 0 0 3px rgba(2,144,251,.15);
}
.ac-uform .ac-field select{
  appearance:none;-webkit-appearance:none;
  background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6'><path d='M0 0l5 6 5-6z' fill='%236a7785'/></svg>") no-repeat right 10px center;
}
/* Checkbox inline (16px) - el .ac-field.ac-check pone label al lado del check */
.ac-uform .ac-field.ac-check{flex-direction:row;align-items:center;gap:8px;}
.ac-uform .ac-field.ac-check input[type="checkbox"]{width:var(--uf-check-size);height:var(--uf-check-size);min-width:var(--uf-check-size);min-height:var(--uf-check-size);max-height:var(--uf-check-size);flex:none;margin:0;}
.ac-uform .ac-field.ac-check label{
  text-transform:none;letter-spacing:0;font-weight:500;color:var(--texto);
  font-size:13px !important;
}
/* check S/N con texto (Si)/(No) en linea -> ocupa toda la fila del .ac-field */
.ac-uform .ac-field.ac-check .sn-check{
  display:inline-flex;align-items:center;gap:8px;cursor:pointer;width:100%;
}
.ac-uform .ac-field.ac-check .sn-check .ac-check-label{font-weight:600;color:var(--texto);}
.ac-uform .ac-field.ac-check .sn-check .sn-check-text{color:var(--texto-suave);}

/* --- 16.8 Subgrid embebido: subcabecera (titulo + boton "Anadir") + tabla. */
.ac-uform .ac-subhead{display:flex;align-items:center;gap:10px;margin:6px 0 10px;}
.ac-uform .ac-subhead-title{font-size:var(--fs-section) !important;font-weight:var(--fw-section) !important;color:var(--texto);}
.ac-uform .ac-subhead .ac-tb-spacer{margin-left:auto;}
/* boton "Anadir" estandar = primario azul (reusa .btn-primario) */
.ac-uform .ac-btn-add{
  font-family:var(--app-fuente) !important;font-size:var(--btn-size) !important;
  font-weight:var(--btn-peso) !important;border-radius:var(--radio) !important;
  background:var(--azul) !important;color:#fff !important;border:1px solid var(--azul) !important;
  display:inline-flex;align-items:center;gap:7px;padding:6px 12px;cursor:pointer;line-height:1;
}
.ac-uform .ac-btn-add:hover{background:var(--azul-oscuro) !important;border-color:var(--azul-oscuro) !important;}
.ac-uform .ac-btn-add svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}

/* tabla del subgrid: CABECERA AZUL (acordado), th 12/700, td 12/400, filas borde fino */
.ac-uform table.ac-grid{width:100%;border-collapse:separate;border-spacing:0;border:1px solid var(--borde);border-radius:var(--radio);overflow:hidden;}
.ac-uform table.ac-grid th{
  font-size:var(--fs-th) !important;font-weight:var(--fw-th) !important;text-align:left;
  background:var(--uf-th-bg) !important;color:var(--uf-th-fg) !important;
  padding:4px 8px;border-bottom:1px solid var(--uf-th-line);  /* densidad: 9px 12px -> 4px 8px */
}
.ac-uform table.ac-grid td{
  font-size:var(--fs-cell) !important;font-weight:var(--fw-cell) !important;
  padding:3px 8px;border-bottom:1px solid var(--linea,#eef2f6);vertical-align:middle;  /* densidad: 7px 10px -> 3px 8px */
}
[data-theme="dark"] .ac-uform table.ac-grid td{border-bottom-color:#2c3a50;}
.ac-uform table.ac-grid tr:last-child td{border-bottom:none;}
/* boton de borrar fila del subgrid */
.ac-uform table.ac-grid .ac-row-del{
  width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--borde);border-radius:var(--radio);background:var(--panel);color:var(--btn-danger-text);cursor:pointer;
}
.ac-uform table.ac-grid .ac-row-del:hover{background:var(--panel-2);}
.ac-uform table.ac-grid .ac-row-del svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.ac-uform table.ac-grid .ac-col-action{width:48px;text-align:center;}

/* FIX 09-jun: etiquetas de formulario UNIFORMES en .ac-uform (caja normal, mismo tamano/tipografia/color; sin mayusculas forzadas). */
.ac-uform .ac-field > label,
.ac-uform .ac-field.ac-check label{text-transform:none !important;letter-spacing:normal !important;font-size:12px !important;font-weight:600 !important;color:var(--texto-suave) !important;font-family:var(--app-fuente) !important;}

/* ====================================================================
   17. REMATE TRANSVERSAL (additivo, 2026-06-09)  -- Yasmina
   --------------------------------------------------------------------
   Tres incoherencias detectadas pantalla a pantalla y rematadas DE FORMA
   CENTRAL (aplican a TODO el programa). Cargado al final de theme.css, que
   se sirve el ultimo: gana la cascada. EXCLUYE topbar/sidebar/dashboard.
     17.1  Campos EDITABLES con fondo gris -> fondo del tema (--panel/blanco).
           Solo readonly/disabled quedan en gris.
     17.2  Titulo de pantalla UNIFORME: 20px / 700 + separacion inferior,
           cubriendo los selectores de titulo que faltaban (informes .ac-report
           h2, cabeceras de modulo) y dando margen a los que iban pegados.
     17.3  Cabeceras de TABLA todas AZULES (#e7f2f8 / #0b65a3); se eliminan
           los grises residuales (p.ej. la tabla del buscador de cuentas).
   ==================================================================== */

/* -------- 17.1  INPUTS EDITABLES: nunca gris por defecto --------
   Causa raiz: varios modulos pintan el fondo por defecto de input/select/
   textarea con var(--panel-3) (gris #e5ebf2) o var(--panel-2): .ac-cartera,
   .ac-plancuentas, .ac-grupos-iva .filter-field, etc. Eso hace que un campo
   EDITABLE parezca solo-lectura. Aqui forzamos el fondo del PANEL del tema
   (blanco en claro, --panel en oscuro/azul) a los campos editables, y dejamos
   el gris SOLO para [readonly]/[disabled] (que siguen distinguibles). */
.ac-cartera input:not([readonly]):not([disabled]):not([type="checkbox"]):not([type="radio"]),
.ac-cartera select:not([disabled]),
.ac-cartera textarea:not([readonly]):not([disabled]),
.ac-plancuentas input:not([readonly]):not([disabled]):not([type="checkbox"]):not([type="radio"]),
.ac-plancuentas select:not([disabled]),
.ac-plancuentas textarea:not([readonly]):not([disabled]),
.ac-report input:not([readonly]):not([disabled]):not([type="checkbox"]):not([type="radio"]),
.ac-report select:not([disabled]),
.ac-report textarea:not([readonly]):not([disabled]),
.ac-grupos-iva input:not([readonly]):not([disabled]):not([type="checkbox"]):not([type="radio"]),
.ac-grupos-iva select:not([disabled]),
.ac-grupos-iva textarea:not([readonly]):not([disabled]),
.ac-inmovilizado input:not([readonly]):not([disabled]):not([type="checkbox"]):not([type="radio"]),
.ac-inmovilizado select:not([disabled]),
.ac-fixed-assets input:not([readonly]):not([disabled]):not([type="checkbox"]):not([type="radio"]),
.ac-claves input:not([readonly]):not([disabled]):not([type="checkbox"]):not([type="radio"]),
.ac-claves select:not([disabled]),
.ac-claves textarea:not([readonly]):not([disabled]),
.ac-estructuras input:not([readonly]):not([disabled]):not([type="checkbox"]):not([type="radio"]),
.ac-estructuras select:not([disabled]),
.ac-estructuras textarea:not([readonly]):not([disabled]),
.diary-workspace input:not([readonly]):not([disabled]):not([type="checkbox"]):not([type="radio"]),
.diary-workspace select:not([disabled]),
.diary-workspace textarea:not([readonly]):not([disabled]),
.ac-facturas input:not([readonly]):not([disabled]):not([type="checkbox"]):not([type="radio"]),
.ac-facturas select:not([disabled]),
.ac-lroe input:not([readonly]):not([disabled]):not([type="checkbox"]):not([type="radio"]),
.ac-lroe select:not([disabled]),
.reclass-page input:not([readonly]):not([disabled]):not([type="checkbox"]):not([type="radio"]),
.reclass-page select:not([disabled]),
.reclass-page textarea:not([readonly]):not([disabled]){
  background-color:var(--panel,#fff) !important;
  background-image:none !important;
}
/* el buscador de cuentas (modal) tambien debe traer sus inputs en blanco */
.account-lookup-overlay input:not([readonly]):not([disabled]):not([type="checkbox"]):not([type="radio"]),
.account-lookup input:not([readonly]):not([disabled]):not([type="checkbox"]):not([type="radio"]){
  background-color:var(--panel,#fff) !important; background-image:none !important;
}

/* -------- 17.2  TITULO de pantalla UNIFORME (20/700 + separacion) --------
   Completa la seccion 13: faltaban los titulos de los INFORMES (.ac-report
   pinta el titulo como <h2> dentro de .balance-dialog/.report-dialog con
   font-weight:500 -> "Mayor de contabilidad", "Sumas y saldos"... salian SIN
   negrita) y faltaba la SEPARACION inferior en los titulos que iban pegados
   (work-head-title, cartera-title, plan-head-title, reclass-title, tab-title).
   Aqui: peso 700, tamano unico y un margen inferior comun para separarlos del
   formulario. Se respeta el TEXTO (incluido "...de la empresa X, ejercicio Y"). */
.ac-report .balance-dialog > h2,
.ac-report .report-dialog > h2,
.ac-report > .balance-dialog > h2,
.ac-report > .report-dialog > h2,
.balance-dialog > h2[id$="ReportTitle"],
.report-dialog > h2[id$="ReportTitle"]{
  font-family:var(--app-fuente) !important;
  font-size:var(--titulo-size) !important;
  font-weight:var(--titulo-peso) !important;
  line-height:1.25 !important;
  color:var(--titulo-color) !important;
  margin:0 0 16px !important;
}
/* Separacion inferior comun para TODOS los titulos de pantalla (los que
   tenian margin-bottom:0 quedaban pegados al formulario). No cambia tamano/
   peso (ya canonicos en sec.13/16), solo asegura el aire de separacion. */
.work-head-title,
.cartera-title,
.bank-title,
.c43-title,
.cards-title,
.plan-head-title,
.reclass-title,
.ac-toolbar__title,
.ac-maintenance .tab-title,
.ac-maintenance .company-workarea .tab-title,
.diary-title-block > h1,
.compact-head > h1{
  margin-bottom:14px !important;
}

/* -------- 17.3  CABECERAS de TABLA todas AZULES (0 grises residuales) --------
   Convive azul (#e7f2f8/#0b65a3) con grises sueltos. El gris residual mas
   visible es la tabla del buscador de cuentas (.account-lookup-table th usa
   var(--panel-2)+var(--muted)). Aqui forzamos AZUL constante (igual en los 3
   temas, como el resto del programa) a TODA cabecera de tabla de los modulos,
   neutralizando los thead grises/oscuros (table-dark de Bootstrap, --panel-2,
   #f...). NO toca la cabecera del shell/topbar ni el dashboard. */
.account-lookup-table thead th,
.account-lookup-table th,
.ac-report table thead th,
.ac-report .report-table thead th,
.ac-cartera table thead th,
.ac-plancuentas table thead th,
.ac-inmovilizado table thead th,
.ac-fixed-assets table thead th,
.ac-grupos-iva table thead th,
.ac-claves table thead th,
.ac-estructuras table thead th,
.diary-workspace table thead th,
table.table thead.table-light th,
table thead.table-light th{
  background-color:#e7f2f8 !important;
  background-image:none !important;
  color:#0b65a3 !important;
  border-bottom-color:#cfe3f0 !important;
}
/* el buscador de cuentas pintaba la columna impar con un velo del brand;
   lo neutralizamos para que toda la cabecera quede del azul plano acordado. */
.account-lookup-table th:nth-child(odd),
.account-lookup-table thead th:nth-child(odd){
  background-image:none !important;
  background-color:#e7f2f8 !important;
}
.account-lookup-table thead th a,
.account-lookup-table th a{ color:#0b65a3 !important; }

/* -------- 17.3b  CABECERAS DE TABLA: AZUL UNICO en TODO el area de contenido
   (paridad nuevaapp + A2 hallazgo 0.3/sec.4.3). La 17.3 cubria una lista
   enumerada de scopes; quedaban outliers que pintaban el th con
   var(--azul)=rgb(2,144,251) (sec.8: facturas, issued/received_invoices,
   fiscal_models, bank/c43/cards, reclass, deducibilidad...) o incluso NEGRO
   (accounting_controls / Registro Control). Aqui forzamos el AZUL acordado
   (#e7f2f8 fondo / #0b65a3 texto) a TODA cabecera de tabla de datos dentro de
   #ajax-content/.main-content, de forma uniforme. NO toca: topbar/sidebar/
   dashboard (fuera de .main-content), ni las cabeceras de SECCION/PANEL
   (.panel-head/.ac-panel-head, que NO son thead th y siguen en gris suave).
   El tratamiento DARK lo fija sec.21.1 (azul oscuro) y por eso aqui scope
   EXPLICITO a los temas CLARO/AZUL ([data-theme="light"|"blue"]) -> esta regla
   NO se aplica en oscuro (asi su id-specificity no pisa al th oscuro).
   El subgrid del formulario (.ac-uform table.ac-grid th) usa --uf-th-bg/fg. */
[data-theme="light"] #ajax-content table thead th,
[data-theme="light"] #ajax-content .ac-grid thead th,
[data-theme="light"] .main-content table thead th,
[data-theme="light"] .main-content .ac-grid thead th,
[data-theme="blue"] #ajax-content table thead th,
[data-theme="blue"] #ajax-content .ac-grid thead th,
[data-theme="blue"] .main-content table thead th,
[data-theme="blue"] .main-content .ac-grid thead th{
  background-color:#e7f2f8 !important;
  background-image:none !important;
  color:#0b65a3 !important;
  border-bottom-color:#cfe3f0 !important;
}
/* enlaces ordenables y flechas dentro del th, al mismo azul de texto */
[data-theme="light"] #ajax-content table thead th a,
[data-theme="light"] #ajax-content table thead th .arrow,
[data-theme="light"] #ajax-content table thead th .th-label,
[data-theme="light"] .main-content table thead th a,
[data-theme="blue"] #ajax-content table thead th a,
[data-theme="blue"] .main-content table thead th a{
  color:#0b65a3 !important;
}
/* La FILA DE FILTROS de la cabecera (inputs de busqueda bajo los titulos) NO
   debe ir azul de cabecera: transparente para no tapar inputs. */
[data-theme="light"] #ajax-content table thead tr.filters th,
[data-theme="light"] #ajax-content table thead tr.filter th,
[data-theme="light"] #ajax-content table thead .filter-row th,
[data-theme="light"] .main-content table thead tr.filters th,
[data-theme="blue"] #ajax-content table thead tr.filters th,
[data-theme="blue"] .main-content table thead tr.filters th{
  background-color:transparent !important;
}

/* -------- 17.3c  CABECERAS DE TABLA en OSCURO: AZUL OSCURO UNICO.
   Contrapartida dark de 17.3b. Sec.21.1 ([data-theme="dark"] table thead th,
   especificidad 0,1,3) NO vencia a la lista enumerada de 17.3 cuando esta
   añadia un scope de modulo + tabla (p.ej. .ac-cartera table thead th, 0,1,2,
   pero servida ANTES; y a igualdad practica la enumerada de modulo ganaba en
   varias pantallas -> portfolio/bank/c43/cards/deducibilidad/reclass salian con
   el AZUL CLARO en modo oscuro). Aqui forzamos el azul OSCURO acordado
   (#13314a/#5cb6ec) con id-specificity (#ajax-content/.main-content) para que
   gane sin ambiguedad, igual que hace 17.3b en claro. */
[data-theme="dark"] #ajax-content table thead th,
[data-theme="dark"] #ajax-content .ac-grid thead th,
[data-theme="dark"] .main-content table thead th,
[data-theme="dark"] .main-content .ac-grid thead th{
  background-color:#13314a !important;
  background-image:none !important;
  color:#5cb6ec !important;
  border-bottom-color:#244763 !important;
}
[data-theme="dark"] #ajax-content table thead th a,
[data-theme="dark"] #ajax-content table thead th .arrow,
[data-theme="dark"] #ajax-content table thead th .th-label,
[data-theme="dark"] .main-content table thead th a{
  color:#5cb6ec !important;
}
[data-theme="dark"] #ajax-content table thead tr.filters th,
[data-theme="dark"] #ajax-content table thead tr.filter th,
[data-theme="dark"] #ajax-content table thead .filter-row th,
[data-theme="dark"] .main-content table thead tr.filters th{
  background-color:#13314a !important;
}

/* -------- 17.4  RESPONSIVE / ANTI-SOLAPAMIENTO (frente H) --------
   La fila de filtros de Reclasificacion (.reclass-grid: grid de columnas en
   px fijos sin envolver) desbordaba ~42px por la derecha a 1280px (el ultimo
   campo "Texto" se clipaba contra el borde del area de contenido). El CSS de
   esta pantalla esta embebido (no en public/css), asi que aqui, de forma
   defensiva, dejamos que el grid de filtros ENVUELVA y que sus campos se
   ENCOJAN dentro de su celda (min-width:0). No cambia el aspecto en anchos
   amplios (cabe en una linea); solo evita el clip al estrecharse. */
.reclass-grid{
  grid-template-columns:repeat(auto-fill,minmax(120px,1fr)) !important;
  align-items:end !important;
}
.reclass-grid > .reclass-field{ min-width:0 !important; }
.reclass-grid .reclass-field input,
.reclass-grid .reclass-field select{
  width:100% !important; min-width:0 !important; box-sizing:border-box !important; max-width:100% !important;
}
/* la fila de filtros bajo la rejilla (Filtrar/Cuenta destino/Motivo + boton
   "Reclasificar seleccionados") tampoco envolvia: el boton ancho se salia ~9px
   a 1280px. Permitimos wrap y que los campos/inputs internos encojan (los
   inputs en flexbox no bajan de su min-content sin min-width:0). */
.reclass-actions{ flex-wrap:wrap !important; }
.reclass-actions > *{ min-width:0 !important; }
.reclass-actions .reclass-field,
.reclass-actions .reclass-field input,
.reclass-actions .reclass-field select,
.reclass-actions input,
.reclass-actions select{ min-width:0 !important; }
/* La fila "Filtrar/Cuenta destino/Motivo/[Reclasificar seleccionados]" usa un
   grid de columnas en px fijos (220px 220px 38px 260px 187px ~= 925px+gaps) que
   a 1280px deja la ultima celda (el boton) ~9px fuera del area. Lo flexibilizamos:
   las columnas de campo se encogen (minmax 0) y la del boton se ajusta a su
   contenido, de modo que todo el grid quepa dentro del area de contenido. */
.reclass-action-grid{
  grid-template-columns:minmax(0,1.4fr) minmax(0,1.4fr) auto minmax(0,1.6fr) max-content !important;
}
.reclass-action-grid > *{ min-width:0 !important; }

/* ====================================================================
   18. MODELO DE CONTENEDOR UNICO (margen exterior uniforme)
   --------------------------------------------------------------------
   PROBLEMA: cada pantalla quedaba a distinta distancia del borde del
   area de contenido (HOME pegada a 0px, otras a 12/18/22px) porque el
   margen lo ponia cada wrapper por su cuenta (o nadie).
   SOLUCION: el margen exterior lo pone UNA sola fuente: .main-content
   (#ajax-content). Todo lo que se pinta dentro hereda ese mismo aire.
   Los wrappers de primer nivel que anadian su PROPIO padding/margin
   exterior se neutralizan aqui para que NO se duplique. El padding
   INTERNO de paneles/tarjetas/toolbars se conserva intacto.
   NO afecta a topbar/sidebar/selector de empresa (van fuera de
   .main-content) ni al diario (hereda el padding igual).
   ==================================================================== */
.main-content,
#ajax-content {
  padding: 22px 24px !important;
}

/* Neutralizar el padding EXTERIOR redundante de wrappers raiz que ya
   traian el suyo (si no, quedarian a 24+22=46px, doble margen).
   Solo el OUTER: conservamos su gap/flex interno. */
#ajax-content > .bank-page,
#ajax-content > .c43-page,
#ajax-content > .cards-page {
  padding: 0 !important;
}
/* El wrapper generico .maintenance (p.ej. sincronizacion) traia 3px. */
#ajax-content > .maintenance {
  padding: 0 !important;
}

/* El min-height de las paginas de banca/c43/tarjetas estaba calculado
   contra el viewport completo (100vh - 36px); con el nuevo padding
   exterior eso provocaba scroll vertical de mas. Lo relajamos para que
   ocupen el alto disponible sin forzar scroll. */
#ajax-content > .bank-page,
#ajax-content > .c43-page,
#ajax-content > .cards-page {
  min-height: 0 !important;
}

/* ====================================================================
   19. MODO OSCURO COHERENTE  (additivo, 2026-06-09) -- Yasmina
   --------------------------------------------------------------------
   PROBLEMA: en [data-theme="dark"] el AREA DE CONTENIDO se veia en CLARO
   (tablas con fondo blanco, cabeceras de tabla en azul claro fijo
   #e7f2f8/#0b65a3 que chirria, formularios/inputs blancos, paneles blancos).
   CAUSA RAIZ: theme.css y cada modulo definen sus colores con literales
   claros (#fff) o con tokens propios fijados a claro EN SU SCOPE
   (.ac-facturas{--panel:#fff}, .ac-cartera, .ac-plancuentas, .ac-report,
   concepts{--acn-panel:#fff}, etc.). Esos tokens locales ganaban al tema.
   REFERENCIA: el modo oscuro de NUEVAAPP (panel ~#182131, cabecera de tabla
   AZUL OSCURO ~#13314a con texto azul-claro ~#5cb6ec, filas oscuras, inputs
   ~#0f1c2e, texto #edf4ff).
   SOLUCION CENTRAL (aqui, al final de theme.css que se sirve el ultimo):
     19.0  Redefinimos en DARK los TOKENS (globales, de theme.css y de cada
           scope de modulo) a la paleta oscura -> todo lo que use var(--..)
           se invierte automaticamente.
     19.1  Cabeceras de TABLA theme-aware: azul oscuro + texto azul claro
           (matando los literales #e7f2f8/#0b65a3/#0290fb de sec.8 y 17.3).
     19.2  Cuerpo de tabla / filas / zebra / hover / bordes en tonos oscuros.
     19.3  Inputs/selects/textarea/forms y los #fff literales -> panel oscuro.
     19.4  Paneles / cabeceras de panel / toolbars / fieldset / cards oscuros.
     19.5  Remates puntuales (buscador de cuentas, badges legibles).
   NO toca topbar/sidebar/selector de empresa/dashboard (van fuera y ya
   tienen su tratamiento). El tema CLARO y AZUL no se ven afectados (todo
   bajo [data-theme="dark"]).
   ==================================================================== */

/* -------- 19.0  TOKENS en oscuro -------- */
/* 19.0a  Tokens propios de theme.css (los usan sus secciones 8/9/10/16...) */
[data-theme="dark"]{
  --texto:#edf4ff;
  --btn-danger-text:#ff9b9b;
  --btn-success-text:#6fe39a;
  --texto-suave:#aab7c8;
  --titulo-color:#edf4ff;         /* titulo legible sobre fondo oscuro */
  --bs-heading-color:var(--titulo-color);
  --borde:#2c3a50;
  --borde-suave:#22344a;
  --fondo:#0b1828;
  --panel:#182131;
  --panel-2:#11202f;
  --panel-3:#0f1c2e;
  --text:var(--texto);
  --muted:var(--texto-suave);
  --line:var(--borde);
  --ac-panel:var(--panel);
  --ac-panel-muted:var(--panel-2);
  --ac-text:var(--text);
  --ac-muted:var(--muted);
  --azul-claro-bg:#13314a;        /* fondo cabecera tabla -> azul oscuro */
  --uf-th-bg:#13314a;             /* subgrid: cabecera azul oscuro */
  --uf-th-fg:#5cb6ec;             /* subgrid: texto cabecera azul claro */
  --uf-th-line:#244763;
}
/* 19.0b  Tokens de los modulos .ac-* (panel/text/line/selected fijados a claro
   en su CSS). Re-fijados a oscuro EN DARK: ganan por carga posterior. */
[data-theme="dark"] .ac-facturas,
[data-theme="dark"] .ac-lroe,
[data-theme="dark"] .ac-cartera,
[data-theme="dark"] .ac-plancuentas,
[data-theme="dark"] .ac-report,
[data-theme="dark"] .ac-grupos-iva,
[data-theme="dark"] .ac-inmovilizado,
[data-theme="dark"] .ac-fixed-assets,
[data-theme="dark"] .ac-deducibilidad,
[data-theme="dark"] .ac-fiscal-models,
[data-theme="dark"] .diary-workspace{
  --bg:#0b1828;
  --panel:#182131;
  --panel-2:#11202f;
  --panel-3:#0f1c2e;
  --text:#edf4ff;
  --muted:#aab7c8;
  --line:#2c3a50;
  --selected:#1d3a52;
}
/* 19.0c  Tokens de concepts (familia --acn-*) y base de mantenimientos */
[data-theme="dark"] .ac-maintenance--concepts{
  --acn-text:#edf4ff;
  --acn-muted:#aab7c8;
  --acn-line:#2c3a50;
  --acn-panel:#182131;
  --acn-panel-muted:#11202f;
  --acn-th-bg:#13314a;
}
[data-theme="dark"] .ac-maintenance{ --ac-panel:#182131; }

/* -------- 19.1  CABECERAS DE TABLA theme-aware (azul OSCURO + texto claro) --
   Mata los literales claros: sec.8 (--azul-claro-bg / var(--azul)),
   sec.17.3 (#e7f2f8/#0b65a3) y las cabeceras de modulo. */
[data-theme="dark"] table.ac thead th,
[data-theme="dark"] .grid-header,
[data-theme="dark"] .grid thead th,
[data-theme="dark"] table.grid thead th,
[data-theme="dark"] .ac-facturas .grid thead th,
[data-theme="dark"] .ac-grid thead th,
[data-theme="dark"] .ac-uform table.ac-grid th,
[data-theme="dark"] .account-lookup-table thead th,
[data-theme="dark"] .account-lookup-table th,
[data-theme="dark"] .account-lookup-table th:nth-child(odd),
[data-theme="dark"] .account-lookup-table thead th:nth-child(odd),
[data-theme="dark"] .ac-report table thead th,
[data-theme="dark"] .ac-report .report-table thead th,
[data-theme="dark"] .ac-cartera table thead th,
[data-theme="dark"] .ac-plancuentas table thead th,
[data-theme="dark"] .ac-inmovilizado table thead th,
[data-theme="dark"] .ac-fixed-assets table thead th,
[data-theme="dark"] .ac-grupos-iva table thead th,
[data-theme="dark"] .ac-claves table thead th,
[data-theme="dark"] .ac-estructuras table thead th,
[data-theme="dark"] .diary-workspace table thead th,
[data-theme="dark"] table.table thead.table-light th,
[data-theme="dark"] table thead.table-light th,
[data-theme="dark"] .ac-maintenance--concepts table thead th{
  background-color:#13314a !important;
  background-image:none !important;
  color:#5cb6ec !important;
  border-bottom-color:#244763 !important;
}
[data-theme="dark"] .account-lookup-table thead th a,
[data-theme="dark"] .account-lookup-table th a,
[data-theme="dark"] table thead th a{ color:#5cb6ec !important; }

/* -------- 19.2  CUERPO DE TABLA: filas/zebra/hover/bordes oscuros -------- */
[data-theme="dark"] .grid,
[data-theme="dark"] table.grid,
[data-theme="dark"] table.ac,
[data-theme="dark"] .ac-grid,
[data-theme="dark"] .ac-report table,
[data-theme="dark"] .ac-cartera table,
[data-theme="dark"] .ac-plancuentas table,
[data-theme="dark"] .ac-facturas table,
[data-theme="dark"] .ac-grupos-iva table,
[data-theme="dark"] .ac-inmovilizado table,
[data-theme="dark"] .diary-workspace table,
[data-theme="dark"] .ac-maintenance--concepts table{
  background-color:#182131 !important;
  color:#edf4ff !important;
}
[data-theme="dark"] .grid tbody td,
[data-theme="dark"] table.grid tbody td,
[data-theme="dark"] .ac-grid tbody td,
[data-theme="dark"] .ac-report table tbody td,
[data-theme="dark"] .ac-cartera table tbody td,
[data-theme="dark"] .ac-plancuentas table tbody td,
[data-theme="dark"] .ac-facturas table tbody td,
[data-theme="dark"] .ac-grupos-iva table tbody td,
[data-theme="dark"] .ac-inmovilizado table tbody td,
[data-theme="dark"] .diary-workspace table tbody td,
[data-theme="dark"] .ac-maintenance--concepts table tbody td{
  background-color:#182131 !important;
  color:#edf4ff !important;
  border-bottom-color:#2c3a50 !important;
}
/* zebra (filas pares) y hover: tonos oscuros */
[data-theme="dark"] .grid tbody tr:nth-child(even) td,
[data-theme="dark"] table.grid tbody tr:nth-child(even) td,
[data-theme="dark"] .ac-grid tbody tr:nth-child(even) td,
[data-theme="dark"] .ac-report table tbody tr:nth-child(even) td,
[data-theme="dark"] .ac-cartera table tbody tr:nth-child(even) td,
[data-theme="dark"] .ac-plancuentas table tbody tr:nth-child(even) td,
[data-theme="dark"] .ac-facturas table tbody tr:nth-child(even) td,
[data-theme="dark"] .diary-workspace table tbody tr:nth-child(even) td,
[data-theme="dark"] .ac-maintenance--concepts table tbody tr:nth-child(even) td{
  background-color:#15202f !important;
}
[data-theme="dark"] .grid tbody tr:hover td,
[data-theme="dark"] table.grid tbody tr:hover td,
[data-theme="dark"] .ac-grid tbody tr:hover td,
[data-theme="dark"] .ac-report table tbody tr:hover td,
[data-theme="dark"] .ac-cartera table tbody tr:hover td,
[data-theme="dark"] .ac-plancuentas table tbody tr:hover td,
[data-theme="dark"] .ac-facturas table tbody tr:hover td,
[data-theme="dark"] .diary-workspace table tbody tr:hover td,
[data-theme="dark"] .ac-maintenance--concepts table tbody tr:hover td{
  background-color:#21324a !important;
}
/* fila seleccionada */
[data-theme="dark"] .ac-facturas tr.selected td,
[data-theme="dark"] .ac-cartera tr.selected td,
[data-theme="dark"] .ac-plancuentas tr.selected td,
[data-theme="dark"] tr.selected td,
[data-theme="dark"] tr.is-selected td{
  background-color:#1d3a52 !important;
}

/* -------- 19.3  INPUTS / SELECTS / TEXTAREA y #fff literales -> oscuro ----
   Editables: panel oscuro + texto claro + borde tenue. Solo readonly/disabled
   un punto mas oscuro (siguen distinguibles). Placeholders legibles. */
[data-theme="dark"] .field input,
[data-theme="dark"] .field select,
[data-theme="dark"] .field textarea,
[data-theme="dark"] .ac-uform .ac-field input,
[data-theme="dark"] .ac-uform .ac-field select,
[data-theme="dark"] .ac-uform .ac-field textarea,
[data-theme="dark"] .ac-uform .ac-grid input,
[data-theme="dark"] .main-content input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),
[data-theme="dark"] .main-content select,
[data-theme="dark"] .main-content textarea,
[data-theme="dark"] #ajax-content input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),
[data-theme="dark"] #ajax-content select,
[data-theme="dark"] #ajax-content textarea{
  background-color:#0f1c2e !important;
  background-image:none !important;
  color:#edf4ff !important;
  border-color:#2c3a50 !important;
}
[data-theme="dark"] .main-content input::placeholder,
[data-theme="dark"] #ajax-content input::placeholder,
[data-theme="dark"] .main-content textarea::placeholder,
[data-theme="dark"] #ajax-content textarea::placeholder{ color:#7d8ca0 !important; opacity:1; }
/* select con flecha custom (sec.16): rehacer el data-uri sobre fondo oscuro */
[data-theme="dark"] .ac-uform .ac-field select{
  background:#0f1c2e url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6'><path d='M0 0l5 6 5-6z' fill='%237d8ca0'/></svg>") no-repeat right 10px center !important;
}
/* readonly/disabled = un poco mas oscuro (no editable) */
[data-theme="dark"] .main-content input[readonly],
[data-theme="dark"] .main-content input[disabled],
[data-theme="dark"] #ajax-content input[readonly],
[data-theme="dark"] #ajax-content input[disabled],
[data-theme="dark"] .ac-uform input[readonly]{
  background-color:#0a1422 !important; color:#aab7c8 !important;
}

/* -------- 19.4  PANELES / TOOLBARS / FIELDSET / CARDS oscuros -------- */
[data-theme="dark"] .panel,
[data-theme="dark"] .editor-panel,
[data-theme="dark"] .ac-uform .ac-panel,
[data-theme="dark"] .main-content .card,
[data-theme="dark"] #ajax-content .card,
[data-theme="dark"] .ac-facturas .panel,
[data-theme="dark"] .ac-cartera .panel,
[data-theme="dark"] .ac-plancuentas .panel,
[data-theme="dark"] .ac-report .panel,
[data-theme="dark"] section.panel,
[data-theme="dark"] .list-panel,
[data-theme="dark"] fieldset.vat-box,
[data-theme="dark"] fieldset.editor-fieldset{
  background-color:#182131 !important;
  border-color:#22344a !important;
  color:#edf4ff !important;
}
/* cabecera de panel/seccion: azul oscuro como la cabecera de tabla */
[data-theme="dark"] .panel-head,
[data-theme="dark"] .ac-uform .ac-panel-head,
[data-theme="dark"] .main-content .card-header,
[data-theme="dark"] #ajax-content .card-header{
  background-color:#13314a !important;
  color:#cfe6fb !important;
  border-color:#244763 !important;
}
[data-theme="dark"] .main-content .card-header h1,
[data-theme="dark"] .main-content .card-header h2,
[data-theme="dark"] .main-content .card-header h3,
[data-theme="dark"] .main-content .card-header h4,
[data-theme="dark"] .main-content .card-header h5,
[data-theme="dark"] .main-content .card-header h6,
[data-theme="dark"] #ajax-content .card-header h1,
[data-theme="dark"] #ajax-content .card-header h2,
[data-theme="dark"] #ajax-content .card-header h3,
[data-theme="dark"] #ajax-content .card-header h4,
[data-theme="dark"] #ajax-content .card-header h5,
[data-theme="dark"] #ajax-content .card-header h6{
  color:#cfe6fb !important;
}
[data-theme="dark"] .ac-uform .ac-panel-head .ac-chev{ color:#5cb6ec !important; }
/* barras de acciones (toolbars) y wrappers blancos -> oscuro */
[data-theme="dark"] .action-bar,
[data-theme="dark"] .toolbar.work-head,
[data-theme="dark"] .ac-toolbar,
[data-theme="dark"] .ac-form-toolbar,
[data-theme="dark"] section.toolbar,
[data-theme="dark"] .work-head,
[data-theme="dark"] .filters,
[data-theme="dark"] section.filters,
[data-theme="dark"] .cartera-head,
[data-theme="dark"] .plan-work-head,
[data-theme="dark"] .selection{
  background-color:#182131 !important;
  border-color:#22344a !important;
  color:#edf4ff !important;
}
/* botones secundarios/neutros (.btn blanco) y peligro -> base oscura */
[data-theme="dark"] .btn,
[data-theme="dark"] .btn-secundario,
[data-theme="dark"] .btn-peligro,
[data-theme="dark"] .ac-btn,
[data-theme="dark"] .btn,
[data-theme="dark"] .bank-btn,
[data-theme="dark"] .c43-btn,
[data-theme="dark"] .cards-btn,
[data-theme="dark"] .summary-btn,
[data-theme="dark"] .mini-btn,
[data-theme="dark"] .btn-accion{
  background-color:#1b2738 !important;
  color:#edf4ff !important;
  border-color:#2c3a50 !important;
}
[data-theme="dark"] .btn:hover,
[data-theme="dark"] .btn-secundario:hover,
[data-theme="dark"] .ac-btn:hover,
[data-theme="dark"] .btn-accion:hover{ background-color:#243248 !important; }
/* PRIMARIO/EXITO/NARANJA siguen siendo de marca (no se oscurecen): re-afirmamos
   por si la regla generica anterior los toco. */
[data-theme="dark"] .btn.primary,[data-theme="dark"] .btn-primario,
[data-theme="dark"] button.btn-primary,[data-theme="dark"] .btn-primary,
[data-theme="dark"] .ac-btn--primary,[data-theme="dark"] .btn.active,
[data-theme="dark"] .ac-uform .ac-btn-add{
  background-color:var(--azul) !important;color:#fff !important;border-color:var(--azul) !important;
}
[data-theme="dark"] .btn.success,[data-theme="dark"] .btn-exito,[data-theme="dark"] .ac-btn--success{
  background-color:var(--btn-success-fill) !important;color:#fff !important;border-color:var(--btn-success-fill) !important;
}
[data-theme="dark"] .btn.danger,[data-theme="dark"] .btn-peligro{
  color:#ff9b9b !important;border-color:#5a2e2e !important;background-color:#2a1a1d !important;
}

/* -------- 19.5  REMATES: badges legibles + buscador de cuentas -------- */
[data-theme="dark"] .badge-info{ background-color:#13314a !important; color:#5cb6ec !important; }
[data-theme="dark"] .badge-ok{ background-color:#14321f !important; color:#6fe39a !important; }
[data-theme="dark"] .badge-warn{ background-color:#3a3014 !important; color:#f0c64a !important; }
[data-theme="dark"] .badge-err{ background-color:#3a1c1c !important; color:#ff9b9b !important; }
[data-theme="dark"] .account-lookup-overlay .panel,
[data-theme="dark"] .account-lookup{ background-color:#182131 !important; border-color:#22344a !important; color:#edf4ff !important; }

/* ========================================================================
   20.  UNIFICACION CENTRAL de CABECERAS DE SECCION/PANEL y PESTANAS
        (additivo, 2026-06-09) -- Yasmina
   ------------------------------------------------------------------------
   REFERENCIA: Plan de cuentas (.ac-plancuentas):
     - Cabecera de SECCION ("Descripcion", "Predeterminados") = GRIS SUAVE
       (.account-section-title usa color-mix(panel-2 78%, panel)), NO azul.
     - PESTANAS (Cuenta/Saldos/Mayor) LIMPIAS: sin fondo, la activa con
       subrayado NARANJA (--naranja), sin caja azul.
   PROBLEMA: convivian estilos AZULES de cabecera-de-seccion y de pestanas:
     - .ac-panel-head / .ac-panel-header (maintenance.css y theme.css 16.5)
       pintaban la cabecera de BLOQUE de formulario con var(--azul-claro-bg)
       -> Certificado asesoria ("Certificado actual"/"Subir nuevo certificado"),
          Registro Control (.card-title.mb-3.ac-panel-header "Cuentas de ...",
          "Amortizacion Acumulada"...), Conceptos ("Detalle conceptos"),
          Estructuras ("Mantenimiento de estructuras").
     - .ac-maintenance .ac-tabs .nav-link.active (maintenance.css) pintaba la
       PESTANA activa con var(--azul) solido -> Registro Control.
   SOLUCION: aqui, al final de theme.css (se sirve EL ULTIMO, gana la cascada),
   forzamos de forma CENTRAL:
     20.1  CABECERAS DE SECCION/PANEL -> GRIS SUAVE (token --seccion-bg/-fg),
           identico al "Descripcion" de Plan de cuentas, en los 3 temas.
     20.2  PESTANAS .ac-tabs .nav-link -> LIMPIAS (transparente) + activa
           subrayado NARANJA (mismo criterio que sec.7/11b/16.3).
   NO toca: CABECERAS DE TABLA DE DATOS (thead th) que siguen AZULES
   (#e7f2f8/#0b65a3 claro, #13314a/#5cb6ec oscuro) -- eso lo fijan sec.8/17.3/19.1
   y NO se modifica aqui. Cabecera de TABLA = azul; cabecera de SECCION = gris.
   ======================================================================== */
:root{
    --seccion-bg: #eef2f7;      /* gris suave de cabecera de seccion/panel (claro/azul) */
    --seccion-fg: var(--texto); /* texto de la cabecera de seccion */
    --seccion-line: var(--borde-suave);
}
[data-theme="dark"]{
    --seccion-bg: #11202f;      /* tono panel-2 oscuro (como .account-section-title de plancuentas en dark) */
    --seccion-fg: #e7eefb;
    --seccion-line: #22344a;
}
[data-theme="blue"]{
    --panel:#ffffff;
    --panel-2:#edf6fc;
    --panel-3:#dff0ff;
    --text:var(--texto);
    --muted:var(--texto-suave);
    --line:var(--borde);
    --ac-panel:var(--panel);
    --ac-panel-muted:var(--panel-2);
    --ac-text:var(--text);
    --ac-muted:var(--muted);
    --seccion-bg: #eef2f7;      /* gris suave neutro (igual que la referencia plancuentas en tema azul) */
    --seccion-fg: var(--texto);
    --seccion-line: #cfe0ee;
}

/* ---- 20.1  CABECERAS DE SECCION/PANEL -> GRIS SUAVE (no azul) ----
   Vence a maintenance.css ".ac-maintenance .ac-panel-header { ...azul-claro-bg !important }"
   y a theme.css 16.5 ".ac-uform .ac-panel-head { ...azul-claro-bg }" por:
   (a) mayor/igual especificidad con scope .ac-maintenance/.ac-uform, (b) !important,
   (c) orden de carga (theme.css va el ultimo). NO incluye .panel-head de listados
   que ya iban en gris (facturas/cartera/deducibilidad) -- esos no cambian de color. */
.ac-maintenance .ac-panel-head,
.ac-maintenance .ac-panel-header,
.main-content .card-header,
#ajax-content .card-header,
.ac-uform .ac-panel-head,
.ac-uform .ac-panel-header,
.cert-panel__head,
.ac-account-card__title.ac-panel-header,
.ac-panel-head.cert-panel__head,
.ac-conceptos .ac-panel-head,
.ac-estructuras .ac-panel-head{
    background: var(--seccion-bg) !important;
    background-image: none !important;
    color: var(--seccion-fg) !important;
    border-bottom: 1px solid var(--seccion-line) !important;
}
.main-content .card-header h1,
.main-content .card-header h2,
.main-content .card-header h3,
.main-content .card-header h4,
.main-content .card-header h5,
.main-content .card-header h6,
#ajax-content .card-header h1,
#ajax-content .card-header h2,
#ajax-content .card-header h3,
#ajax-content .card-header h4,
#ajax-content .card-header h5,
#ajax-content .card-header h6{
    color: var(--seccion-fg) !important;
}
/* el chevron / estado a la derecha de la cabecera hereda el color del texto de seccion */
.ac-uform .ac-panel-head .ac-chev,
.ac-maintenance .ac-panel-head .ac-chev{ color: var(--texto-suave) !important; }

/* ---- 20.2  PESTANAS .ac-tabs .nav-link -> LIMPIAS + activa NARANJA ----
   Vence a maintenance.css ".ac-maintenance .ac-tabs .nav-link.active { ...azul !important }"
   y a su .ac-tabs { background:--ac-panel-muted }. Mismo criterio que las .tab
   canonicas (sec.7): sin fondo, activa = subrayado naranja, sin caja de color. */
.ac-maintenance .ac-tabs,
.nav-tabs.ac-tabs{
    background: transparent !important;
    border-bottom: 1px solid var(--borde-suave) !important;
}
.ac-maintenance .ac-tabs .nav-link,
.nav-tabs.ac-tabs .nav-link{
    background: transparent !important;
    background-image: none !important;
    border: none !important;
    border-bottom: 3px solid transparent !important;
    border-radius: 0 !important;
    color: var(--texto-suave) !important;
    margin-bottom: -1px;
}
.ac-maintenance .ac-tabs .nav-link.active,
.ac-maintenance .ac-tabs .nav-link.active:focus,
.nav-tabs.ac-tabs .nav-link.active{
    background: transparent !important;
    background-image: none !important;
    border: none !important;
    border-bottom: 3px solid var(--naranja) !important;
    color: var(--naranja) !important;
}

/* ====================================================================
   20.3  PESTANAS del modulo SINCRONIZACION (.sinc-tabs > a.btn)
   ----------------------------------------------------------------
   El modulo sincronizacion (Facturas, Pendientes) maqueta sus pestanas
   "Emitidas/Recibidas" y "Bandeja/Historico" como .sinc-tabs > a.btn /
   a.btn.active, markup propio que NO casaba con las .tabs/.tab canonicas
   (sec.7) ni con .ac-tabs .nav-link (sec.20.2). Por eso salian como pildoras
   azules solidas (en oscuro, caja azul brillante; activa sin el criterio
   naranja) y desalineadas a la izquierda. Aqui se les da el MISMO tratamiento
   canonico que al resto del programa: pestana limpia, sin caja, activa con
   subrayado NARANJA, legible en claro/oscuro/azul, y CENTRADAS en la toolbar.
   Vence a sincronizacion.css ".maintenance .btn[.active]" (misma especificidad,
   con !important; theme.css carga el ULTIMO -> gana la cascada).
   ==================================================================== */
.sinc-tabs{
    flex: 1 1 auto;
    justify-content: center;
    gap: 2px;
    border-bottom: none;
}
.sinc-tabs .btn,
.maintenance .sinc-tabs .btn,
.maintenance .sinc-tabs .btn:link,
.maintenance .sinc-tabs .btn:visited{
    width: auto !important;
    min-width: 0 !important;
    min-height: 0 !important;
    padding: 8px 18px !important;
    background: none !important;
    background-image: none !important;
    border: none !important;
    border-bottom: 3px solid transparent !important;
    border-radius: 0 !important;
    margin-bottom: -1px;
    font-weight: 600 !important;
    font-size: 13px;
    color: var(--texto-suave) !important;
    box-shadow: none !important;
}
.sinc-tabs .btn:hover,
.maintenance .sinc-tabs .btn:hover{
    color: var(--texto) !important;
    background: none !important;
}
.sinc-tabs .btn.active,
.maintenance .sinc-tabs .btn.active{
    background: none !important;
    background-image: none !important;
    border: none !important;
    border-bottom: 3px solid var(--naranja) !important;
    border-radius: 0 !important;
    color: var(--naranja) !important;
    box-shadow: none !important;
}

/* ========================================================================
   21.  TABLAS DE DATOS - COBERTURA GENERICA EN OSCURO (additivo, 2026-06-09)
   ------------------------------------------------------------------------
   PROBLEMA: las secciones 19.1/19.2 fijaban cabecera+cuerpo de tabla en
   oscuro con una LISTA ENUMERADA de clases (.grid, .ac-cartera, ...). Toda
   tabla cuya clase NO estaba en la lista quedaba sin tematizar:
     - Cabecera con texto oscuro sobre fondo oscuro (ILEGIBLE), p.ej.
       "Modelos fiscales por empresa".
     - CUERPO con fondo BLANCO de bootstrap (.table) y texto claro encima
       -> filas blancas ilegibles, p.ej. "Empresas/Datos fiscales"
       (table.ac-dense-table) en tema oscuro.
   SOLUCION ROBUSTA: reglas GENERICAS que cubren CUALQUIER <table> bajo
   [data-theme="dark"] (cabecera, fila de filtros, cuerpo, zebra, bordes y
   los inputs de filtro). Usa los MISMOS tonos que la lista enumerada
   (#13314a/#5cb6ec cabecera, #182131/#edf4ff cuerpo) para no introducir
   variaciones. Las reglas de fila SELECCIONADA / HOVER / RESULTADO / zebra
   especificas (sec.19.2 y modulos) tienen mayor especificidad y siguen
   ganando, por lo que su aspecto no cambia.
   NO toca claro/azul (todo va bajo [data-theme="dark"]).
   NO toca cabeceras de SECCION/PANEL (.panel-head / .ac-panel-head, que son
   <div>, no thead) ni PESTANAS -> solo thead/th/td de tablas de datos.
   ======================================================================== */

/* 21.1  CABECERA GENERICA (cualquier tabla) -> azul oscuro + texto azul claro */
[data-theme="dark"] table thead th,
[data-theme="dark"] table thead td,
[data-theme="dark"] table th{
  background-color:#13314a !important;
  background-image:none !important;
  color:#5cb6ec !important;
  border-bottom-color:#244763 !important;
}
[data-theme="dark"] table thead th a,
[data-theme="dark"] table thead th .arrow{ color:#5cb6ec !important; }

/* 21.2  FILA DE FILTROS por columna (thead tr.filters / inputs/selects en thead) */
[data-theme="dark"] table thead tr.filters th,
[data-theme="dark"] table thead tr.filter th,
[data-theme="dark"] table thead .filter-row th{
  background-color:#13314a !important;
  background-image:none !important;
}
[data-theme="dark"] table thead input,
[data-theme="dark"] table thead select,
[data-theme="dark"] table thead textarea{
  background-color:#0f1c2e !important;
  background-image:none !important;
  color:#edf4ff !important;
  border-color:#2c3a50 !important;
}
[data-theme="dark"] table thead input::placeholder{ color:#7d8ca0 !important; opacity:1; }

/* 21.3  CUERPO GENERICO (cualquier tabla) -> panel oscuro + texto claro.
   Especificidad baja a proposito: las reglas de zebra/hover/selected/result
   (mas especificas, ya existentes) la vencen y conservan su aspecto. */
[data-theme="dark"] table tbody td,
[data-theme="dark"] table tbody th{
  background-color:#182131 !important;
  color:#edf4ff !important;
  border-bottom-color:#2c3a50 !important;
}
/* zebra generica para tablas no enumeradas (filas pares) */
[data-theme="dark"] table tbody tr:nth-child(even) td{
  background-color:#152030 !important;
}
/* bootstrap .table fija --bs-table-bg/-color en blanco: neutralizar en oscuro */
[data-theme="dark"] table.table,
[data-theme="dark"] table.ac-dense-table{
  --bs-table-bg:#182131 !important;
  --bs-table-color:#edf4ff !important;
  --bs-table-striped-bg:#152030 !important;
  --bs-table-striped-color:#edf4ff !important;
  --bs-table-hover-bg:#21324a !important;
  --bs-table-hover-color:#edf4ff !important;
  --bs-table-border-color:#2c3a50 !important;
  background-color:#182131 !important;
  color:#edf4ff !important;
}

/* 21.4  CABECERAS STICKY: z-index (anti-solape).
   Varias cabeceras position:sticky tenian z-index:auto, por lo que al hacer
   scroll las filas del cuerpo podian "montarse" sobre la cabecera. Se les da
   un z-index > cuerpo (las cabeceras de estas tablas YA son sticky con fondo
   opaco; solo faltaba el z-index). No se cambia su position ni su fondo. */
.grid thead th,
.c43-table thead th,
.reclass-table thead th,
.account-lookup-table thead th,
.bank-table thead th,
.cards-table thead th,
.ac-print-table thead th,
.ac-dense-table thead th{
  z-index:2;
}
/* la fila de filtros (sticky top:24px) va por DEBAJO de la cabecera principal */
.grid thead tr.filters th{ z-index:1; }

/* 21.5  "VISTA IMPRESO" de borradores de modelos (.ac-fiscal-models .impreso):
   la cabecera .box-line.head no tiene fondo; se le da fondo OPACO del tema y
   z-index para que, si el contenedor scrollea, no se solape con las filas. */
.ac-fiscal-models .impreso{ position:relative; }
.ac-fiscal-models .impreso .box-line.head{
  position:sticky;
  top:0;
  z-index:2;
  background:var(--panel,#fff);
}
[data-theme="dark"] .ac-fiscal-models .impreso .box-line.head{
  background:#182131 !important;
  color:#5cb6ec !important;
}
[data-theme="blue"] .ac-fiscal-models .impreso .box-line.head{
  background:#ffffff;
}

/* ========================================================================
   22.  BOTONES DE ACCION DE COLOR (Excel/CSV, Word, PDF, Imprimir, Cancelar)
   ------------------------------------------------------------------------
   UNIFICACION CENTRAL (FASE 2 limpieza CSS). Estos colores macizos los
   repetian con !important CUATRO ficheros de modulo (contab_report.css,
   accounting_ledger_report.css, accounting_diary_report.css y vat-books.css)
   solo para vencer a `main.css .btn{background-color:transparent !important}`.
   Eso era una "guerra" de !important duplicada en cada modulo.

   Aqui quedan en UN solo sitio. theme.css se sirve EL ULTIMO de la cascada
   (ver views/layouts/general.php), asi que estas reglas ganan por ORDEN DE
   CARGA frente a los modulos sin necesitar mas que el !important imprescindible
   para batir el `transparent !important` de main.css (inevitable mientras
   main.css lo declare). Se mantienen los DOS contextos (.ac-report informes vs
   .vat-books-page libros de IVA) porque su aspecto difiere de forma legitima
   (informes: radio 9px + texto blanco + borde de color; IVA: radio 8px del
   tema + borde/texto del tema). Replica EXACTA de lo que ya computaba cada
   modulo -> 0 cambio visual; lo unico que cambia es DONDE vive la regla.
   ======================================================================== */

/* ---- 22.1  INFORMES (.ac-report .balance-actions) ----
   Solo las VARIANTES DE COLOR especificas (csv/word/pdf/print/cancel), que tienen
   selector unico (clase de export o id) y por tanto NO compiten con las reglas
   genericas .btn.primary del tema oscuro. Las reglas genericas .ac-report .btn /
   .btn.primary / .btn:hover NO se mueven aqui (se quedan en su modulo) porque su
   resultado depende del orden frente al bloque oscuro generico de theme.css. */
.ac-report .balance-actions .export-csv { background-color: var(--btn-success-fill) !important; border-color: var(--btn-success-fill); color: #fff !important; }
.ac-report .balance-actions .export-word { background-color: #0290fb !important; border-color: #0290fb; color: #fff !important; }
.ac-report .balance-actions #pdfBtn { background-color: #c91f1f !important; border-color: #c91f1f; color: #fff !important; }
.ac-report .balance-actions #printBtn { background-color: #fff !important; border-color: #d7dde7; color: #111827 !important; }
.ac-report .balance-actions #cancelBtn { background-color: var(--panel) !important; color: var(--text) !important; }
.ac-report .balance-actions #printBtn:hover { color: #111827 !important; }
.ac-report .balance-actions #cancelBtn:hover { color: var(--text) !important; }

/* ---- 22.2  LIBROS DE IVA (.vat-books-page .vat-actions) ---- */
.vat-books-page .vat-actions .export-csv {
    background-color: var(--btn-success-fill) !important;
    background-image: none !important;
    border-color: var(--btn-success-fill);
    color: #fff !important;
}
.vat-books-page .vat-actions .export-word {
    background-color: #2f72d5 !important;
    background-image: none !important;
    border-color: #2f72d5;
    color: #fff !important;
}
.vat-books-page .vat-actions .vat-pdf {
    background-color: #c91f1f !important;
    background-image: none !important;
    border-color: #c91f1f;
    color: #fff !important;
}
.vat-books-page .vat-actions .vat-print {
    background-color: #fff !important;
    background-image: none !important;
    border-color: #d7dde7;
    color: #111827 !important;
}
.vat-books-page .vat-actions .vat-print:hover {
    color: #111827 !important;
}
.vat-books-page .vat-company-search {
    background-color: var(--panel) !important;
    background-image: none !important;
    border: 1px solid var(--line);
    border-radius: 8px;
    color: var(--text);
}
.vat-books-page .vat-company-search:hover {
    border-color: var(--brand);
    color: var(--brand);
}

/* ====================================================================
   FIX 10-jun: ICONOS DE FUENTE no deben heredar la tipografia unificada.
   La seccion 15.2 fuerza la fuente global !important con `*` en
   TODOS los descendientes de los contenedores de modulo (.ac-report *,
   .diary-workspace *, .maintenance *, ...). Eso tapaba el glyph de los
   iconos remixicon (<i class="ri-...">) y de Font Awesome, que salian como
   cuadrados/vacios. Restauramos la familia del icono con especificidad
   superior ([class][class*=...] = 0,2,0 > la 0,1,1 de `.contenedor *`).
   ==================================================================== */
[class][class^="ri-"],[class][class*=" ri-"]{
  font-family:"remixicon" !important;
  font-style:normal !important;
  -webkit-font-smoothing:antialiased;
}
[class][class^="ri-"]::before,[class][class*=" ri-"]::before{
  font-family:"remixicon" !important;
}
/* Font Awesome (por si algun modulo aun lo usa): respetar su familia */
[class][class*="fa-"]:not(.fab):not(.fa-brands),
[class][class*="fa-"]:not(.fab):not(.fa-brands)::before{
  font-family:var(--fa-style-family,"Font Awesome 6 Free") !important;
}
[class].fab,[class].fa-brands,
[class].fab::before,[class].fa-brands::before{
  font-family:"Font Awesome 6 Brands" !important;
}

/* FIX 10-jun: cabecera de las pantallas de comunicacion LROE (faltaba titulo
   para saber en que seccion se esta: Recibidas/Emitidas + Altas/Consultas/Anulaciones). */
.lroe-comm-header{margin:0 0 14px;}
.lroe-comm-header h1{margin:0 0 2px;}
.lroe-comm-header p{margin:0;color:var(--texto-suave);font-size:12.5px;}

/* =========================================================================
 * XML VIEWERS GLOBALES
 * Cualquier visor/formulario XML debe leerse como documento: fondo blanco,
 * etiquetas azul navy y datos en negro, con independencia del tema del modulo.
 * ========================================================================= */
.xml-view,
textarea.xml-source {
    background: #fff !important;
    color: #000 !important;
}
.xml-view .xml-tag,
.xml-view .xml-name,
.xml-view .xml-attr {
    color: #003366 !important;
}
.xml-view .xml-value {
    color: #000 !important;
}
.xml-view .xml-comment {
    color: #555 !important;
}

/* =========================================================================
 * [ATAJOS 2026-06-11] Rejillas redimensionables GENERICAS (ui-grid.js).
 * Generaliza el grip de catalog_keys (.ac-grid) a cualquier tabla que opte por
 * data-grid-enhance (estructuras: .grid.master-grid; LROE emitidas: .grid).
 * Aditivo: el grip solo se inyecta en tablas con data-grid-enhance, no en el
 * resto. Respeta los 3 temas (color heredado, sin fondos fijos).
 * ========================================================================= */
table[data-grid-enhance] thead th { position: sticky; }
table[data-grid-enhance] .ac-col-resizer {
    position: absolute;
    top: 0;
    right: -3px;
    width: 7px;
    height: 100%;
    cursor: col-resize;
    user-select: none;
    z-index: 2;
}
table[data-grid-enhance] .ac-col-resizer:hover {
    background: rgba(67, 199, 232, 0.35);
}
body.ac-col-resizing,
body.ac-col-resizing * {
    cursor: col-resize !important;
    user-select: none !important;
}

/* =========================================================================
 * TRATAMIENTO PLANES CONTABLES - CONTRASTE OSCURO GLOBAL
 * La pantalla accounting_plan_treatment usa la familia .apt-* y debe heredar
 * la misma paleta oscura comun que el resto de mantenimientos.
 * ========================================================================= */
[data-theme="dark"] .apt-page {
    --apt-border: #2c3a50;
    --apt-muted: #aab7c8;
    --apt-surface: #182131;
    background-color: #0b1828 !important;
    color: #edf4ff !important;
}

[data-theme="dark"] .apt-header h1,
[data-theme="dark"] .apt-section-head h2,
[data-theme="dark"] .apt-apply-form h3,
[data-theme="dark"] .apt-subhead,
[data-theme="dark"] .apt-details summary,
[data-theme="dark"] .apt-process strong {
    color: #edf4ff !important;
}

[data-theme="dark"] .apt-header p,
[data-theme="dark"] .apt-intro,
[data-theme="dark"] .apt-process span,
[data-theme="dark"] .apt-field > span,
[data-theme="dark"] .apt-confirm,
[data-theme="dark"] .apt-checks label,
[data-theme="dark"] .apt-process label,
[data-theme="dark"] .apt-empty {
    color: #aab7c8 !important;
}

[data-theme="dark"] .apt-tabs {
    border-bottom-color: #2c3a50 !important;
}

[data-theme="dark"] .apt-tabs a {
    color: #aab7c8 !important;
}

[data-theme="dark"] .apt-tabs a:hover,
[data-theme="dark"] .apt-tabs a.is-active {
    color: var(--naranja) !important;
    border-bottom-color: var(--naranja) !important;
}

[data-theme="dark"] .apt-band,
[data-theme="dark"] .apt-process,
[data-theme="dark"] .apt-details,
[data-theme="dark"] .apt-subhead,
[data-theme="dark"] .apt-table-wrap,
[data-theme="dark"] .apt-apply-form,
[data-theme="dark"] .apt-metrics span {
    border-color: #2c3a50 !important;
}

[data-theme="dark"] .apt-apply-form,
[data-theme="dark"] .apt-message {
    background-color: #182131 !important;
    color: #edf4ff !important;
}

[data-theme="dark"] .apt-table a {
    color: #5cb6ec !important;
}

[data-theme="dark"] .apt-field input,
[data-theme="dark"] .apt-field select,
[data-theme="dark"] .apt-field textarea,
[data-theme="dark"] .apt-search input,
[data-theme="dark"] .apt-process input:not([type="checkbox"]):not([type="radio"]),
[data-theme="dark"] .apt-process select {
    background-color: #0f1c2e !important;
    color: #edf4ff !important;
    border-color: #2c3a50 !important;
}

[data-theme="dark"] .apt-process input[type="file"]::file-selector-button {
    background-color: #1b2738;
    color: #edf4ff;
    border: 1px solid #2c3a50;
    border-radius: 6px;
}

.apt-page .apt-checks input[type="checkbox"],
.apt-page .apt-process input[type="checkbox"],
.apt-page .apt-confirm input[type="checkbox"] {
    width: 14px !important;
    min-width: 14px !important;
    height: 14px !important;
    min-height: 14px !important;
    flex: 0 0 14px !important;
    padding: 0 !important;
    margin: 0 !important;
}

.apt-page .apt-checks label,
.apt-page .apt-process label,
.apt-page .apt-confirm {
    align-items: center;
    gap: 7px;
}

/* Fiscal maintenance uses the same field scale as Concepts, not print typography. */
.ac-fiscal-maintenance {
    --titulo-size:15px;
    --fs-label:12px;
    --fs-cell:12px;
    --fs-th:12px;
    --titulo-color:var(--texto);
    --bs-heading-color:var(--texto);
    color:var(--texto);
    font-family:var(--app-fuente);
    font-size:var(--fs-value);
    line-height:1.35;
    letter-spacing:0;
}
.ac-fiscal-maintenance :is(label,span,div,td,th,output,legend) {
    font-family:var(--app-fuente);
    letter-spacing:0;
}
.ac-fiscal-maintenance :is(input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]),select,textarea,output) {
    box-sizing:border-box;
    height:var(--uf-alto-campo);
    min-height:var(--uf-alto-campo);
    min-width:0;
    padding:0 8px;
    border:1px solid var(--borde);
    border-radius:6px;
    font-size:var(--fs-value);
    font-weight:var(--fw-value);
    color:var(--texto);
    background:var(--panel);
    font-variant-numeric:tabular-nums;
}
.ac-fiscal-maintenance textarea { height:auto; padding:5px 8px; }
.ac-fiscal-maintenance output { display:inline-block; line-height:24px; }
.ac-fiscal-maintenance input:is([type="checkbox"],[type="radio"]),
.ac-fiscal-maintenance :is(.modelo347-edit-grid,.modelo349-edit-grid) :is(.modelo347-check,.modelo349-check) input[type="checkbox"] {
    box-sizing:border-box;
    width:var(--uf-check-size);
    height:var(--uf-check-size);
    min-width:var(--uf-check-size);
    min-height:var(--uf-check-size);
    max-width:var(--uf-check-size);
    max-height:var(--uf-check-size);
    flex:0 0 var(--uf-check-size);
    margin:0;
    padding:0;
    vertical-align:middle;
    accent-color:var(--azul);
}
.ac-fiscal-maintenance .iva-310-period-field > input.iva-box-check {
    margin-left:10px;
    margin-right:8px;
}
.ac-fiscal-maintenance :is(label,legend,.b303-plain > span,.b303-option > span,.b303-dates span,.b303-prorata-options > span,.ret-delphi-form td > span,.ret-180-label,.iva-mod-key-grid label > span,.iva-mod-summary-grid label > span,.iva-310-period-field > span,.iva-391-mark > span,.iva-391-wide-mark > span,.iva-391-dates span),
.ac-fiscal-maintenance :is(.modelo347-edit-grid,.modelo349-edit-grid) :is(label,label > span,.modelo347-quarter-heading,.modelo349-quarter-heading,.modelo347-quarter-row-label,.modelo349-quarter-row-label) {
    font-size:var(--fs-label);
    font-weight:var(--fw-label);
    color:var(--texto-suave);
    line-height:1.35;
}
.ac-fiscal-maintenance :is(.b303-title h1,.ret-maint-title,.iva-mod-window-title h1,.mi-title,.b303-sheet-title > strong,.b303-sheet-title > div,.b303-sheet-title > b,.iva-310-model) {
    font-size:var(--titulo-size);
    font-weight:var(--titulo-peso);
    color:var(--texto);
    line-height:1.25;
}
.ac-fiscal-maintenance :is(h2,h3,h4,.ret-window-title,.ret-panel-head,.ret-115-title,.ret-115-section,.iva-mod-panel-head,.mi-panel-head,.panel-head,.b303-band,.iva-310-title,.iva-310-subtitle,.iva-310-dev-title,.iva-310-real-estate-title,.iva-391-title,.iva-391-subtitle,.iva-391-group-title,.ret-subtitle,.b303-page2-head) {
    --titulo-size:var(--fs-section);
    --titulo-peso:var(--fw-section);
    font-size:var(--fs-section);
    font-weight:var(--fw-section);
    color:var(--texto);
    line-height:1.35;
}
.ac-fiscal-maintenance :is(.ret-window-title,.ret-panel-head,.iva-mod-panel-head,.mi-panel-head,.panel-head,.b303-page2-head) :is(h1,h2,h3,strong) {
    font-size:var(--fs-section);
    font-weight:var(--fw-section);
    color:var(--texto);
}
.ac-fiscal-maintenance :is(table,td,output,.ret-115-value,.ret-180-value) { font-size:var(--fs-value); }
.ac-fiscal-maintenance :is(th,.iva-310-real-estate-head,.iva-310-real-estate-rate-head) {
    font-size:var(--fs-th);
    font-weight:var(--fw-label);
    color:var(--azul-oscuro);
}
[data-theme="dark"] .ac-fiscal-maintenance :is(th,.iva-310-real-estate-head,.iva-310-real-estate-rate-head) { color:var(--azul); }
.ac-fiscal-maintenance :is(.b303-code,.iva-box-code,.ret-115-code,.ret-180-code) {
    box-sizing:border-box;
    height:var(--uf-alto-campo);
    line-height:24px;
    font-size:var(--fs-value);
    font-weight:var(--fw-value);
    color:var(--texto-suave);
}
.ac-fiscal-maintenance :is(.b303-sheet-title span,.b303-title > span,.iva-310-official-head span,.iva-mod-window-title span) {
    font-size:var(--fs-value);
    font-weight:var(--fw-value);
    color:var(--texto-suave);
}
[data-theme] .ac-fiscal-maintenance { --muted:var(--texto-suave); --text:var(--texto); }
.ac-fiscal-maintenance .iva-391-sheet { min-width:1245px; }
.ac-fiscal-maintenance .iva-391-top { grid-template-columns:minmax(600px,2fr) minmax(280px,1fr); }
.ac-fiscal-maintenance .iva-391-top > div:nth-child(2) { border-right:0; }
.ac-fiscal-maintenance .iva-391-concursal-block { display:grid;gap:8px; }
.ac-fiscal-maintenance fieldset.iva-391-dates { border:0;margin:0;padding:0;min-width:0; }
.ac-fiscal-maintenance .iva-391-dates label { display:grid;gap:2px; }
.ac-fiscal-maintenance .iva-391-dates label > span { flex:none; }
.ac-fiscal-maintenance .iva-391-dates input { width:100%;min-width:0; }
.ac-fiscal-maintenance :is(.ret-115-grid,.ret-123-grid,.ret-130-grid,.iva-391-liquidation,.iva-310-liquidation,.b303-sheet table) td:not(:has(input,output)):not([rowspan]):not(.num):not([class*="rate"]):not([class*="title"]):not(.ret-115-section):not(.b303-unused) {
    font-size:var(--fs-label);
    font-weight:var(--fw-label);
    color:var(--texto-suave);
}
.ac-fiscal-maintenance :is(.mi-mini-link,.modelo347-close,.modelo349-close) {
    font-size:var(--btn-size);
    font-weight:var(--btn-peso);
    color:var(--texto);
    background:var(--panel);
    border:1px solid var(--borde);
    border-radius:var(--radio);
}
.ac-fiscal-maintenance :is(.mi-mini-link,.modelo347-close,.modelo349-close):hover { background:var(--panel-2); color:var(--texto); }

/* Search dialogs: keep every filter/header row together without fixed offsets.
   Only modal tables with inputs in their head; detail tables are untouched. */
:is([role="dialog"], .modal) table thead:has(input:not([type="checkbox"])) {
    position: sticky !important;
    top: 0 !important;
    z-index: 4;
}
:is([role="dialog"], .modal) table thead:has(input:not([type="checkbox"])) th {
    position: relative !important;
    top: auto !important;
}

/* PROMPT6: PHP-rendered action dialog, using final theme tokens. */
.ac-action-dialog .modal-content{background:var(--panel);color:var(--texto);border:1px solid var(--borde);}
.ac-action-dialog #dynamicModalBody{white-space:pre-line;}
.ac-action-dialog #dynamicModalConfirm.is-danger{background:var(--btn-danger-fill)!important;border-color:var(--btn-danger-fill)!important;color:#fff!important;}
.ac-action-dialog [hidden],#artecontaPageNotice[hidden]{display:none!important;}

/* Elemento que ocupa una fila completa dentro de una rejilla de campos (p. ej. avisos). */
.ac-grid-row-full{grid-column:1/-1;margin:0;}
.ac-grid-row-full[hidden]{display:none!important;}
/* Aviso en linea junto a un campo (componente inline_notice): no bloquea ni flota. */
.ac-inline-notice{margin:0;padding:4px 8px;border-left:3px solid var(--naranja);background:var(--panel-2);color:var(--texto);font-size:var(--fs-help);font-weight:600;}

/* ====================================================================
   18. CAPTURA COMPACTA (.ac-capture) Y PANEL MODAL (.ac-panel-modal)  2026-10-12
   --------------------------------------------------------------------
   Altas rapidas dentro de .ac-uform: filas de campos en linea, rejilla
   densa de lineas y paneles modales (los pinta PHP dentro del formulario)
   con los datos que solo se rellenan a veces. El boton que abre un panel
   lleva .is-filled (asterisco naranja) cuando el panel contiene datos.
   Primer consumidor: captura rapida de recibidas LROE 140.
   ==================================================================== */
:root{
  --ac-overlay-bg:rgba(2,8,18,.55);           /* fondo tras un panel modal */
  --ac-modal-shadow:0 20px 60px rgba(0,0,0,.35);
  --ac-capture-gap:6px;
}
.ac-capture .ac-uform-titlerow{padding:0 0 6px;}
.ac-capture .ac-form-toolbar{padding:6px 8px;margin-bottom:8px;}

/* Fila de campos en linea: etiqueta encima, control de alto unico. */
.ac-capture-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--ac-capture-gap) 8px;margin-bottom:8px;}
.ac-capture .ac-field{gap:2px;}
.ac-capture .ac-field--xxs{width:52px;}
.ac-capture .ac-field--xs{width:76px;}
.ac-capture .ac-field--amount{width:104px;}
.ac-capture .ac-field--sm{width:110px;}
.ac-capture .ac-field--date{width:122px;}
.ac-capture .ac-field--md{width:150px;}
.ac-capture .ac-field--lg{width:200px;}
.ac-capture .ac-field--grow{flex:1 1 220px;min-width:180px;}
.ac-capture .ac-field input[type="date"],
.ac-capture .ac-capture-subgrid input[type="date"],
.ac-capture .ac-capture-grid select,
.ac-capture .ac-capture-subgrid select{
  font-family:var(--app-fuente) !important;font-size:var(--fs-value) !important;
  height:var(--uf-alto-campo);border:1px solid var(--borde);border-radius:6px;
  padding:0 6px;color:var(--texto);background:var(--panel);width:100%;
}
.ac-capture .ac-field select{padding-right:22px;}
.ac-capture .ac-field.ac-check{min-height:var(--uf-alto-campo);}
.ac-capture input[inputmode="decimal"]{text-align:right;}
.ac-capture-actions{display:flex;align-items:flex-end;gap:6px;}
.ac-capture-sep{align-self:stretch;width:1px;margin:0 4px;background:var(--borde);}
.ac-capture-inline{display:flex;align-items:center;gap:4px;}
.ac-capture-inline input{flex:1 1 auto;min-width:0;}
.ac-capture-row .btn-primario,.ac-capture-row .btn-secundario,
.ac-capture-grid-wrap .btn-secundario,.ac-capture .ac-capture-inline .btn-secundario,
.ac-panel-modal .btn-primario,.ac-panel-modal .btn-secundario{
  height:var(--uf-alto-campo);padding:0 10px;font-size:var(--btn-size);gap:4px;
}
.ac-capture .ac-capture-icon{
  width:var(--uf-alto-campo);min-width:var(--uf-alto-campo);padding:0;
  justify-content:center;font-weight:700;
}
.ac-capture-note{margin:0 0 6px;color:var(--texto-suave);font-size:var(--fs-help);}

/* Aviso de validacion (NIF/NIVA): el JS solo cambia la clase de estado. */
.ac-status-badge{
  display:inline-flex;align-items:center;justify-content:center;
  height:var(--uf-alto-campo);padding:0 8px;border:1px solid var(--borde);border-radius:6px;
  color:var(--texto-suave);font-size:var(--fs-help);font-weight:600;white-space:nowrap;
}
.ac-status-badge.is-valid{border-color:var(--verde);color:var(--verde);}
.ac-status-badge.is-invalid{border-color:var(--rojo);color:var(--rojo);}
.ac-status-badge.is-pending{border-color:var(--azul);color:var(--azul);}

/* Boton que abre un panel: asterisco cuando hay datos dentro. */
.ac-panel-trigger__mark{display:none;margin-left:2px;color:var(--naranja);font-weight:700;}
.ac-panel-trigger.is-filled{border-color:var(--naranja) !important;}
.ac-panel-trigger.is-filled .ac-panel-trigger__mark{display:inline;}

/* Importe calculado por PHP y cambiado a mano (cuota ajustada): naranja; el title dice el calculado.
   Captura rapida (campo) y ficha del mantenimiento de recibidas (celda). */
input.ac-adjusted{border-color:var(--naranja) !important;}
td.ac-adjusted{color:var(--naranja);font-weight:600;}

/* Rejilla densa de lineas: columnas fijas y una fila por linea. */
.ac-capture-grid-wrap{max-height:220px;overflow:auto;margin-bottom:8px;}
.ac-uform table.ac-capture-grid{table-layout:fixed;width:100%;}
.ac-capture-grid .ac-col-num{width:28px;}
.ac-capture-grid .ac-col-code{width:84px;}
.ac-capture-grid .ac-col-amount{width:80px;}
.ac-capture-grid .ac-col-rate{width:54px;}
.ac-capture-grid .ac-col-flag{width:32px;}
.ac-capture-grid .ac-col-ref{width:104px;}
.ac-capture-grid .ac-col-tool{width:34px;}
.ac-uform table.ac-capture-grid th{padding:3px 4px;white-space:normal;overflow-wrap:anywhere;line-height:1.1;}
.ac-uform table.ac-capture-grid td,.ac-uform table.ac-capture-subgrid td{padding:2px 3px;}
.ac-uform .ac-capture-grid input:not([type]),.ac-uform .ac-capture-subgrid input:not([type]){padding:0 4px;}
.ac-capture-grid .line-num{color:var(--texto-suave);text-align:right;}
.ac-capture-flag{display:flex;align-items:center;justify-content:center;height:var(--uf-alto-campo);margin:0;cursor:pointer;}
.ac-capture-flag input{width:var(--uf-check-size);height:var(--uf-check-size);margin:0;}
.ac-capture-add{margin-top:4px;}
.ac-capture-scroll{max-height:420px;overflow:auto;}
.ac-capture-lookup tbody tr[data-lroe-bien-row]{cursor:pointer;}
.ac-capture-lookup tbody tr[data-lroe-bien-row]:hover,
.ac-capture-lookup tbody tr[data-lroe-bien-row].is-selected{background:var(--azul-claro-bg);}

/* Panel modal: capa fija con caja centrada; [hidden] lo oculta del todo. */
.ac-panel-modal{
  position:fixed;inset:0;z-index:1050;display:flex;align-items:center;justify-content:center;
  padding:16px;background:var(--ac-overlay-bg);
}
.ac-panel-modal[hidden]{display:none !important;}
.ac-capture [hidden]{display:none !important;}
.ac-panel-modal__box{
  width:520px;max-width:100%;max-height:calc(100vh - 32px);display:flex;flex-direction:column;
  background:var(--panel);color:var(--texto);border:1px solid var(--borde);
  border-radius:var(--radio);box-shadow:var(--ac-modal-shadow);
}
.ac-panel-modal__box--md{width:600px;}
.ac-panel-modal__box--lg{width:780px;}
.ac-panel-modal__box--xl{width:1000px;}
.ac-panel-modal__head{padding:10px 14px;border-bottom:1px solid var(--borde-suave);background:var(--azul-claro-bg);border-radius:var(--radio) var(--radio) 0 0;}
.ac-panel-modal__head h2{margin:0;font-size:var(--fs-section);font-weight:var(--fw-section);color:var(--texto);}
.ac-panel-modal__body{padding:12px 14px;overflow:auto;font-size:var(--fs-value);}
.ac-panel-modal__actions{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid var(--borde-suave);}

/* Descripcion de la actividad y de la cuenta bajo cada linea (la pinta PHP; el JS copia el texto de la opcion). */
.ac-uform table.ac-capture-grid tr[data-quick-line] td{border-bottom:none;}
.ac-uform table.ac-capture-grid tr.ac-capture-line-desc td{
  padding:0 4px 3px;border-bottom:1px solid var(--borde-suave);color:var(--texto-suave);
  font-size:var(--fs-help) !important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.ac-capture-line-desc__label{font-weight:600;}
/* Ultimas lineas del proveedor (pie de la captura): filas que se aplican con doble clic o Intro. */
.ac-capture-recent{margin-top:8px;}
.ac-capture-recent__head{display:flex;align-items:baseline;gap:12px;margin-bottom:4px;}
.ac-capture-recent .ac-capture-scroll{max-height:190px;}
.ac-capture-recent tbody tr[data-recent-line]{cursor:copy;}
.ac-capture-recent tbody tr[data-recent-line]:hover td,
.ac-capture-recent tbody tr[data-recent-line]:focus td{background:var(--azul-claro-bg);}
.ac-capture-recent tbody tr[data-recent-line]:focus{outline:none;}

/* Fila marcada como linea de ajuste en una rejilla de lineas (asiento manual): reborde naranja que convive con la
   fila seleccionada (azul); se mantiene hasta que se marca otra o se vuelve a marcar la misma. */
.grid tbody tr.ac-row-adjustment,.ac-grid tbody tr.ac-row-adjustment{outline:2px solid var(--naranja);outline-offset:-2px;}
.grid tbody tr.ac-row-adjustment td,.ac-grid tbody tr.ac-row-adjustment td{background:color-mix(in srgb,var(--naranja) 12%,var(--panel));}
.grid tbody tr.ac-row-adjustment.selected td,.ac-grid tbody tr.ac-row-adjustment.selected td{background:color-mix(in srgb,var(--naranja) 12%,color-mix(in srgb,var(--azul) 24%,var(--panel)));}
