[hidden] { display: none !important; }
/* Sistema Contable — hoja de libro contable */
:root {
  --papel: #F4F7F4;
  --hoja: #FFFFFF;
  --renglon: #E1EAE4;
  --renglon-fuerte: #C9D7CE;
  --tinta: #18212E;
  --tinta-suave: #586577;
  --verde: #1D5A44;
  --verde-hover: #164835;
  --verde-claro: #E4EFE8;
  --rojo: #A8261B;
  --rojo-claro: #FBE9E7;
  --ambar: #845400;
  --ambar-claro: #FBF0D9;
  --radio: 6px;
  --fuente: "Public Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

* { box-sizing: border-box; }
html { font-size: 15px; }
body {
  margin: 0;
  font-family: var(--fuente);
  color: var(--tinta);
  background: var(--papel);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}
a { color: var(--verde); text-underline-offset: 2px; }
a:hover { color: var(--verde-hover); }
:focus-visible { outline: 2px solid var(--verde); outline-offset: 2px; }
h1, h2, h3 { line-height: 1.2; margin: 0; font-weight: 650; letter-spacing: -0.01em; }
h1 { font-size: 1.6rem; }
h2 { font-size: 1.15rem; }
h3 { font-size: 1rem; }
p { margin: 0 0 0.75rem; }

/* ---------- Estructura ---------- */
.marco { display: grid; grid-template-columns: 252px 1fr; min-height: 100vh; }
.lateral {
  background: var(--hoja);
  border-right: 1px solid var(--renglon-fuerte);
  display: flex; flex-direction: column;
  position: sticky; top: 0; height: 100vh; overflow-y: auto;
}
.ir-admin { display: block; margin: 0.9rem 1rem 0; padding: 0.5rem 0.75rem; text-align: center;
  border: 1px solid var(--verde); border-radius: var(--radio); color: var(--verde); font-weight: 600; text-decoration: none; }
.ir-admin:hover { background: var(--verde-claro); color: var(--verde); }
.empresa-activa { padding: 1.25rem 1.25rem 1rem; border-bottom: 1px solid var(--renglon); }
.empresa-activa .nombre { font-weight: 700; font-size: 1.02rem; line-height: 1.3; }
.empresa-activa .ruc { color: var(--tinta-suave); font-size: 0.87rem; font-variant-numeric: tabular-nums; }
.empresa-activa .rol { display: inline-block; margin-top: 0.5rem; font-size: 0.8rem; color: var(--verde);
  background: var(--verde-claro); padding: 0.1rem 0.5rem; border-radius: 99px; }
.empresa-activa .cambiar { display: block; margin-top: 0.6rem; font-size: 0.87rem; }

.menu { padding: 0.75rem 0.75rem 1rem; flex: 1; }
.menu .grupo { color: var(--tinta-suave); font-size: 0.82rem; margin: 1rem 0.5rem 0.25rem; }
.menu-controles { display: flex; gap: 0.25rem; margin: 0 0.1rem 0.4rem; }
.menu-controles button { flex: 1; background: none; border: 1px solid var(--renglon-fuerte); border-radius: var(--radio);
  padding: 0.25rem 0.4rem; font: inherit; font-size: 0.78rem; color: var(--tinta-suave); cursor: pointer; }
.menu-controles button:hover:not(:disabled) { color: var(--verde); border-color: var(--verde); }
.menu-controles button:disabled { opacity: 0.45; cursor: default; }
.grupo-menu { border-bottom: 1px solid var(--renglon); }
.grupo-menu:last-of-type { border-bottom: 0; }
.grupo-menu > summary { list-style: none; display: flex; align-items: center; justify-content: space-between;
  padding: 0.55rem 0.6rem; cursor: pointer; border-radius: var(--radio); user-select: none;
  color: var(--tinta-suave); font-size: 0.8rem; font-weight: 650; letter-spacing: 0.03em; text-transform: uppercase; }
.grupo-menu > summary::-webkit-details-marker { display: none; }
.grupo-menu > summary::after { content: ""; width: 0.45rem; height: 0.45rem; border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor; transform: rotate(-45deg); transition: transform 0.15s; margin-right: 0.2rem; }
.grupo-menu[open] > summary::after { transform: rotate(45deg); }
.grupo-menu > summary:hover { background: var(--papel); color: var(--tinta); }
.grupo-menu > summary:focus-visible { outline: 2px solid var(--verde); outline-offset: 1px; }
.grupo-menu.actual > summary { color: var(--verde); }
.grupo-menu[open] { padding-bottom: 0.4rem; }
.grupo-menu > a { margin-left: 0.35rem; }
@media (prefers-reduced-motion: reduce) { .grupo-menu > summary::after { transition: none; } }
.menu a {
  display: block; padding: 0.4rem 0.6rem; border-radius: var(--radio);
  color: var(--tinta); text-decoration: none;
}
.menu a:hover { background: var(--papel); }
.menu a.activo { background: var(--verde-claro); color: var(--verde); font-weight: 600; }
.usuario { padding: 1rem 1.25rem; border-top: 1px solid var(--renglon); font-size: 0.9rem; color: var(--tinta-suave); }
.usuario form { display: inline; }
.usuario .enlaces { display: flex; gap: 1rem; margin-top: 0.15rem; }
.usuario button { background: none; border: 0; padding: 0; color: var(--verde); font: inherit; cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }

.contenido { padding: 2rem 2.5rem 4rem; max-width: 1180px; width: 100%; min-width: 0; }
.encabezado { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; flex-wrap: wrap; }
.encabezado .sub { color: var(--tinta-suave); margin: 0.3rem 0 0; }
.acciones { display: flex; gap: 0.5rem; flex-wrap: wrap; align-items: center; }

.barra-movil { display: none; }

/* ---------- Mensajes ---------- */
.mensajes { list-style: none; padding: 0; margin: 0 0 1.25rem; display: grid; gap: 0.5rem; }
.mensajes li { padding: 0.65rem 0.9rem; border-radius: var(--radio); border-left: 4px solid var(--verde); background: var(--verde-claro); }
.mensajes .error { border-color: var(--rojo); background: var(--rojo-claro); }
.mensajes .warning { border-color: var(--ambar); background: var(--ambar-claro); }

/* ---------- Botones y formularios ---------- */
.btn {
  display: inline-flex; align-items: center; gap: 0.35rem;
  padding: 0.5rem 0.95rem; border-radius: var(--radio);
  border: 1px solid var(--renglon-fuerte); background: var(--hoja); color: var(--tinta);
  font: inherit; font-weight: 550; text-decoration: none; cursor: pointer; white-space: nowrap;
}
.btn:hover { border-color: var(--tinta-suave); color: var(--tinta); }
.btn.principal { background: var(--verde); border-color: var(--verde); color: #fff; }
.btn.principal:hover { background: var(--verde-hover); color: #fff; }
.btn.peligro { color: var(--rojo); border-color: #E5B5AF; }
.btn.peligro:hover { background: var(--rojo-claro); }
.btn.chico { padding: 0.25rem 0.6rem; font-size: 0.87rem; }

label { display: block; font-size: 0.88rem; color: var(--tinta-suave); margin-bottom: 0.25rem; }
input[type=text], input[type=date], input[type=month], input[type=password], input[type=search], input[type=email], input[type=number], select, textarea {
  width: 100%; padding: 0.5rem 0.6rem; font: inherit; color: var(--tinta);
  border: 1px solid var(--renglon-fuerte); border-radius: var(--radio); background: var(--hoja);
}
input:focus, select:focus { outline: none; border-color: var(--verde); box-shadow: 0 0 0 3px var(--verde-claro); }
input[type=checkbox] { width: 1.05rem; height: 1.05rem; accent-color: var(--verde); vertical-align: -2px; }
.campo { margin-bottom: 1rem; }
.campo .ayuda { font-size: 0.85rem; color: var(--tinta-suave); margin-top: 0.25rem; }
.errorlist { list-style: none; padding: 0; margin: 0.3rem 0 0; color: var(--rojo); font-size: 0.87rem; }
.fila-campos { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.filtros { display: flex; gap: 0.75rem; align-items: flex-end; flex-wrap: wrap; margin-bottom: 1.25rem; }
.filtros .campo { margin: 0; min-width: 150px; }
.filtros .campo.ancho { flex: 1; min-width: 220px; }

/* ---------- Hoja (contenedor) ---------- */
.hoja { background: var(--hoja); border: 1px solid var(--renglon-fuerte); border-radius: var(--radio); }
.hoja.relleno { padding: 1.5rem; }
.hoja + .hoja, .hoja + .seccion, .seccion + .hoja { margin-top: 1.5rem; }
.seccion-titulo { padding: 1rem 1.25rem 0.75rem; display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; }

/* ---------- Tablas tipo libro ---------- */
.libro { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.libro th {
  text-align: left; font-weight: 600; font-size: 0.86rem; color: var(--tinta-suave);
  padding: 0.6rem 0.75rem; border-bottom: 2px solid var(--tinta);
}
.libro td { padding: 0.5rem 0.75rem; border-bottom: 1px solid var(--renglon); vertical-align: top; }
.libro tbody tr:hover td { background: #F8FBF9; }
.libro .num, .libro th.num { text-align: right; white-space: nowrap; }
.libro .codigo { font-variant-numeric: tabular-nums; white-space: nowrap; color: var(--tinta-suave); }
.libro .grupo td { font-weight: 650; }
.libro .apagado td { color: var(--tinta-suave); }
.libro tfoot td, .libro tr.total td { font-weight: 700; border-bottom: 0; }
.libro tfoot td.num, .libro tr.total td.num { border-top: 1px solid var(--tinta); border-bottom: 3px double var(--tinta); }
.libro tr.subtotal td { font-weight: 650; border-top: 1px solid var(--renglon-fuerte); }
.libro tr.subtotal td.num { border-top: 1px solid var(--tinta); }
.libro tr.cabecera-asiento td { background: var(--papel); font-weight: 600; border-bottom: 1px solid var(--renglon-fuerte); }
.libro tr.anulado td { color: var(--tinta-suave); text-decoration: line-through; text-decoration-color: var(--rojo); }
.libro td.acciones-fila { text-align: right; white-space: nowrap; }
.libro .nowrap { white-space: nowrap; }
.enlace { background: none; border: 0; padding: 0; font: inherit; color: var(--verde); text-decoration: underline;
  text-underline-offset: 2px; cursor: pointer; }
.enlace.peligro { color: var(--rojo); }
.planilla.importes td { vertical-align: middle; }
.planilla td.num { text-align: right; padding-right: 1.05rem; }
.libro a.fila { color: inherit; text-decoration: none; }
.libro a.fila:hover { color: var(--verde); text-decoration: underline; }
.haber-sangria { padding-left: 2.25rem !important; }
.neg { color: var(--rojo); }
.vacio { padding: 2.5rem 1.25rem; text-align: center; color: var(--tinta-suave); }
.vacio p { margin-bottom: 1rem; }
.tabla-scroll { overflow-x: auto; }

/* ---------- Estados ---------- */
.estado { display: inline-block; font-size: 0.8rem; font-weight: 600; padding: 0.08rem 0.55rem; border-radius: 99px; white-space: nowrap; }
.estado.BORRADOR { color: var(--ambar); background: var(--ambar-claro); }
.estado.APROBADO, .estado.ABIERTO { color: var(--verde); background: var(--verde-claro); }
.estado.ANULADO { color: var(--rojo); background: var(--rojo-claro); }
.estado.CERRADO { color: var(--tinta-suave); background: #ECEFF2; }
.estado.PUBLICADO { color: #1F4B7A; background: #E3ECF6; }
.estado.VENCIDO { color: #fff; background: var(--rojo); }
.estado.POR_VENCER { color: var(--ambar); background: var(--ambar-claro); }
.estado.AL_DIA { color: var(--verde); background: var(--verde-claro); }
.estado.PAGADO { color: var(--tinta-suave); background: #ECEFF2; }

/* ---------- Pestañas de filtro ---------- */
.pestanas { display: flex; flex-wrap: wrap; gap: 0.25rem; margin-bottom: 1rem; border-bottom: 1px solid var(--renglon-fuerte); }
.pestanas a { padding: 0.5rem 0.85rem; color: var(--tinta-suave); text-decoration: none; border-bottom: 2px solid transparent;
  margin-bottom: -1px; }
.pestanas a span { font-size: 0.8rem; background: #ECEFF2; border-radius: 99px; padding: 0 0.45rem; margin-left: 0.2rem; }
.pestanas a:hover { color: var(--tinta); }
.pestanas a.activa { color: var(--verde); border-bottom-color: var(--verde); font-weight: 600; }

/* ---------- Inicio ---------- */
.cifras { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 0; margin-bottom: 1.5rem; }
.cifras > a { display: flex; flex-direction: column; padding: 1.1rem 1.25rem; border-right: 1px solid var(--renglon);
  color: var(--tinta); text-decoration: none; }
.cifras > a:last-child { border-right: 0; }
.cifras > a:hover { background: #F8FBF9; }
.cifras > a:hover .ir { text-decoration: underline; }
.cifras > a:first-child { border-radius: var(--radio) 0 0 var(--radio); }
.cifras > a:last-child { border-radius: 0 var(--radio) var(--radio) 0; }
.cifras .dato { font-size: 1.35rem; font-weight: 650; font-variant-numeric: tabular-nums; }
.cifras .que { color: var(--tinta-suave); font-size: 0.88rem; }
.cifras .ir { color: var(--verde); font-size: 0.85rem; margin-top: 0.35rem; text-underline-offset: 2px; }
.aviso { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap;
  padding: 0.9rem 1.25rem; border-radius: var(--radio); background: var(--ambar-claro); margin-bottom: 1.5rem; }

/* ---------- Carga de asiento ---------- */
.asiento-cabecera { display: grid; grid-template-columns: 180px 1fr; gap: 1rem; padding: 1.25rem 1.25rem 0.5rem; }
.planilla { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.planilla th { text-align: left; font-size: 0.86rem; font-weight: 600; color: var(--tinta-suave);
  padding: 0.6rem 0.4rem; border-bottom: 2px solid var(--tinta); }
.planilla th:first-child, .planilla td:first-child { padding-left: 1.25rem; }
.planilla th.num { text-align: right; }
.planilla td { padding: 0.3rem 0.4rem; border-bottom: 1px solid var(--renglon); vertical-align: top; }
.planilla td input, .planilla td select { border-color: transparent; background: transparent; }
.planilla td input:hover, .planilla td select:hover { border-color: var(--renglon-fuerte); }
.planilla td input:focus, .planilla td select:focus { background: var(--hoja); }
.planilla input.num { text-align: right; }
.planilla .col-cuenta { width: 34%; }
.planilla .col-monto { width: 15%; }
.planilla .col-quitar { width: 2.5rem; text-align: center; }
.planilla tr.con-error td { background: var(--rojo-claro); }
.quitar { border: 0; background: none; color: var(--tinta-suave); font-size: 1.2rem; line-height: 1; cursor: pointer; padding: 0.4rem; border-radius: var(--radio); }
.quitar:hover { color: var(--rojo); background: var(--rojo-claro); }
.planilla tfoot td { border-bottom: 0; padding-top: 0.6rem; padding-bottom: 0.6rem; }
.planilla tfoot .num { text-align: right; padding-right: 1.05rem; font-weight: 700; }
.planilla tfoot .totales .num { border-top: 1px solid var(--tinta); border-bottom: 3px double var(--tinta); }
.cuadre { font-weight: 600; white-space: nowrap; }
.cuadre.ok { color: var(--verde); }
.cuadre.no { color: var(--rojo); }
.pie-asiento { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap;
  padding: 1rem 1.25rem; border-top: 1px solid var(--renglon-fuerte); background: var(--papel); border-radius: 0 0 var(--radio) var(--radio); }
.atajos { color: var(--tinta-suave); font-size: 0.85rem; }

/* ---------- Detalle ---------- */
.ficha { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 1rem 1.5rem; padding: 1.25rem; border-bottom: 1px solid var(--renglon); }
.ficha dt { color: var(--tinta-suave); font-size: 0.85rem; }
.ficha dd { margin: 0.1rem 0 0; }
.zona-anular { display: flex; gap: 0.5rem; align-items: flex-end; flex-wrap: wrap; }
.zona-anular .campo { margin: 0; flex: 1; min-width: 240px; }

/* ---------- Reportes ---------- */
.membrete { padding: 1.25rem 1.25rem 0.75rem; border-bottom: 1px solid var(--renglon); }
.membrete .titulo { font-size: 1.15rem; font-weight: 700; }
.membrete .datos { color: var(--tinta-suave); font-size: 0.9rem; }
.dos-columnas { display: grid; grid-template-columns: 1fr 1fr; gap: 0; }
.dos-columnas > div:first-child { border-right: 1px solid var(--renglon-fuerte); }
.cuadra-ok { color: var(--verde); padding: 0.75rem 1.25rem; font-size: 0.9rem; }
.cuadra-no { color: var(--rojo); padding: 0.75rem 1.25rem; font-size: 0.9rem; }

/* ---------- Ingreso ---------- */
.pantalla-ingreso { min-height: 100vh; display: grid; place-items: center; padding: 1.5rem;
  background:
    repeating-linear-gradient(to bottom, transparent 0, transparent 31px, var(--renglon) 31px, var(--renglon) 32px),
    var(--papel); }
.tarjeta-ingreso { width: 100%; max-width: 380px; background: var(--hoja); border: 1px solid var(--renglon-fuerte);
  border-radius: var(--radio); padding: 2rem; box-shadow: 0 12px 40px -18px rgba(24, 33, 46, 0.35); }
.tarjeta-ingreso h1 { font-size: 1.4rem; margin-bottom: 0.3rem; }
.tarjeta-ingreso .sub { color: var(--tinta-suave); margin-bottom: 1.5rem; }
.tarjeta-ingreso .btn { width: 100%; justify-content: center; margin-top: 0.5rem; padding: 0.65rem; }
.lista-empresas { list-style: none; padding: 0; margin: 0; }
.lista-empresas li + li { border-top: 1px solid var(--renglon); }
.lista-empresas button { width: 100%; text-align: left; background: none; border: 0; font: inherit; color: inherit;
  padding: 0.85rem 1.25rem; cursor: pointer; display: flex; justify-content: space-between; gap: 1rem; align-items: center; }
.lista-empresas button:hover { background: var(--papel); }
.lista-empresas .ruc { color: var(--tinta-suave); font-size: 0.87rem; }

/* ---------- Dos bloques lado a lado ---------- */
.par { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; margin-top: 1.5rem; align-items: start; }
.par > .hoja { margin: 0; }

/* ---------- Responsivo ---------- */
@media (max-width: 860px) {
  .marco { grid-template-columns: 1fr; }
  .lateral { position: static; height: auto; display: none; }
  .marco.menu-abierto .lateral { display: flex; }
  .barra-movil { display: flex; justify-content: space-between; align-items: center; padding: 0.75rem 1rem;
    background: var(--hoja); border-bottom: 1px solid var(--renglon-fuerte); position: sticky; top: 0; z-index: 5; }
  .barra-movil .nombre { font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .contenido { padding: 1.25rem 1rem 3rem; }
  .asiento-cabecera { grid-template-columns: 1fr; }
  .dos-columnas, .par { grid-template-columns: 1fr; }
  .dos-columnas > div:first-child { border-right: 0; border-bottom: 1px solid var(--renglon-fuerte); }
  .cifras > a { border-right: 0; border-bottom: 1px solid var(--renglon); }
  /* La planilla del asiento se apila en tarjetas */
  .planilla thead { display: none; }
  .planilla, .planilla tbody, .planilla tfoot { display: block; }
  .planilla tr.linea { display: grid; grid-template-columns: 1fr 1fr 2.5rem; gap: 0.4rem; padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--renglon); }
  .planilla tr.linea td { display: block; border: 0; padding: 0 !important; }
  .planilla tr.linea td:nth-child(1) { grid-column: 1 / 3; }
  .planilla tr.linea td:nth-child(2) { grid-column: 1 / 4; grid-row: 2; }
  .planilla tr.linea td:nth-child(5) { grid-column: 3; grid-row: 1; }
  .planilla td input, .planilla td select { border-color: var(--renglon-fuerte); background: var(--hoja); }
  .planilla tfoot tr { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 0.5rem 1rem; padding: 0.5rem 1rem; }
  .planilla tfoot tr td { display: block; padding: 0 !important; }
  .planilla tfoot tr td:first-child { flex: 1 0 100%; }
  .planilla tfoot tr td:empty { display: none; }
  .planilla tfoot .num { min-width: 7rem; }
  .pie-asiento .acciones { width: 100%; }
  .pie-asiento .acciones .btn { flex: 1; justify-content: center; }
}

@media print {
  .lateral, .barra-movil, .filtros, .acciones, .no-imprimir { display: none !important; }
  .marco { display: block; }
  .contenido { padding: 0; max-width: none; }
  body, .hoja { background: #fff; border: 0; }
}

@media (prefers-reduced-motion: reduce) { * { transition: none !important; } }

.planilla ::placeholder { color: #B3BFB7; }

/* ---------- Facturación electrónica ---------- */
.estado.FIRMADO { color: #1F4B7A; background: #E3ECF6; }
.estado.OBSERVADO { color: var(--verde); background: var(--verde-claro); }
.estado.RECHAZADO { color: #fff; background: var(--rojo); }
.estado.CANCELADO { color: var(--tinta-suave); background: #ECEFF2; text-decoration: line-through; }
.ambiente-prueba { display: inline-block; font-size: 0.78rem; font-weight: 700; letter-spacing: .02em; color: #8A5A12;
  background: #FCEFD9; border: 1px solid #E9C98F; border-radius: 99px; padding: 0.05rem 0.6rem; vertical-align: middle; }
.ambiente-prod { display: inline-block; font-size: 0.78rem; font-weight: 700; color: var(--verde); background: var(--verde-claro);
  border-radius: 99px; padding: 0.05rem 0.6rem; vertical-align: middle; }
.cdc { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 0.9rem; word-break: break-all; }
.respuesta-set { margin: 0 1.25rem 1.25rem; padding: 0.8rem 1rem; border-radius: var(--radio); white-space: pre-line; }
.respuesta-set.mal { background: var(--rojo-claro); color: var(--rojo); }
.respuesta-set.bien { background: var(--verde-claro); color: var(--verde); }
.receptor-tipos { display: flex; flex-wrap: wrap; gap: 0.5rem 1.25rem; list-style: none; padding: 0; margin: 0 0 1rem; }
.receptor-tipos label { display: inline-flex; gap: 0.4rem; align-items: center; font-weight: 500; cursor: pointer; }
.items .col-desc { width: 34%; }
.items .col-cant { width: 9%; }
.items .col-uni { width: 11%; }
.items .col-iva { width: 10%; }
.items .col-total { width: 14%; }
.items td.total-item { text-align: right; padding-right: .8rem; padding-top: .55rem; font-variant-numeric: tabular-nums; }
.paso-config { counter-increment: paso; padding: 1.25rem; border-bottom: 1px solid var(--renglon); }
.paso-config h2::before { content: counter(paso) ". "; color: var(--verde); }
.config-sifen { counter-reset: paso; }
.paso-config h2 { margin-bottom: 0.75rem; }

/* ---------- Estados financieros DNIT ---------- */
.libro tr.cabecera td { background: var(--papel); font-weight: 650; }
.libro td.neg { color: var(--rojo); }
.estado-dnit th { white-space: normal; vertical-align: bottom; font-size: 0.8rem; }
.cabecera-dnit { padding: 1.25rem 1.25rem 0.5rem; }
.cabecera-dnit .anexo { text-align: center; font-weight: 700; font-size: 1.15rem; }
.cabecera-dnit .titulo-anexo { text-align: center; font-weight: 700; font-size: 0.9rem; margin-bottom: 0.9rem; }
.cabecera-dnit .banda { width: 100%; border-collapse: collapse; margin-bottom: 0.6rem; table-layout: auto; }
.cabecera-dnit .banda th, .cabecera-dnit .banda td { border: 1px solid #8A949E; padding: 0.25rem 0.5rem; text-align: center; }
.cabecera-dnit .grupo-id { background: #EEF1F3; font-size: 0.72rem; font-weight: 700; }
.cabecera-dnit .col-id { font-size: 0.68rem; color: var(--tinta-suave); }
.cabecera-dnit .dato-id { font-size: 0.9rem; height: 1.9rem; }

/* ---------- Detalle del flujo de efectivo ---------- */
.aviso.neutro { background: var(--verde-claro); }
.renglon-flujo { border-top: 1px solid var(--renglon); }
.renglon-flujo > summary { display: grid; grid-template-columns: 1fr auto auto; gap: 1rem; align-items: baseline;
  padding: 0.7rem 1.25rem; cursor: pointer; list-style: none; }
.renglon-flujo > summary::-webkit-details-marker { display: none; }
.renglon-flujo > summary > span:first-child { display: flex; }
.renglon-flujo > summary > span:first-child::before { content: "▸"; color: var(--tinta-suave); flex: 0 0 1.1rem; }
.renglon-flujo[open] > summary > span:first-child::before { content: "▾"; }
.renglon-flujo > summary:hover { background: var(--papel); }
.renglon-flujo .cant { color: var(--tinta-suave); font-size: 0.85rem; white-space: nowrap; }
.renglon-flujo .monto { font-variant-numeric: tabular-nums; font-weight: 600; min-width: 9rem; text-align: right; }
.renglon-flujo.revisar > summary { background: var(--ambar-claro); }
.grupo-flujo { padding: 1rem 1.25rem 0.4rem; font-size: 0.8rem; font-weight: 650; letter-spacing: .03em;
  text-transform: uppercase; color: var(--tinta-suave); }
@media (max-width: 640px) {
  .renglon-flujo > summary { grid-template-columns: 1fr auto; gap: 0.2rem 1rem; padding: 0.7rem 1rem; }
  .renglon-flujo > summary > span:first-child { grid-column: 1 / -1; }
  .renglon-flujo .cant { padding-left: 1.1rem; }
  .renglon-flujo .monto { min-width: 0; }
}

/* ---------- Panel del estudio ---------- */
.panel td, .panel th { padding-left: 0.55rem; padding-right: 0.55rem; }
.panel td { vertical-align: top; }
.panel .chico { display: block; font-size: 0.8rem; color: var(--tinta-suave); margin-top: 0.15rem; line-height: 1.3; }
.panel td.empresa { min-width: 12rem; border-left: 4px solid transparent; padding-left: 0.9rem; }
.panel tr.fila-problema td.empresa { border-left-color: var(--rojo); }
.panel tr.fila-pendiente td.empresa { border-left-color: #D9A23A; }
.panel tr.fila-ok td.empresa { border-left-color: var(--verde); }
.panel td.control { font-size: 0.9rem; }
.panel td.control a { color: inherit; text-decoration: none; display: block; }

.panel td.control .chico { padding-left: 0.9rem; }
.panel td.control a:hover .texto { text-decoration: underline; }
.panel .linea { display: flex; align-items: baseline; gap: 0.35rem; }
.panel .punto { flex: 0 0 0.55rem; height: 0.55rem; border-radius: 50%; background: #C3CBD3; transform: translateY(-0.05rem); }
.panel .control.ok .punto { background: var(--verde); }
.panel .control.pendiente .punto { background: #D9A23A; }
.panel .control.problema .punto { background: var(--rojo); }
.panel .control.problema .texto { color: var(--rojo); font-weight: 600; }
.panel .control.na { color: var(--tinta-suave); }
.panel .avance { display: flex; align-items: center; gap: 0.5rem; margin-top: 0.35rem; }
.panel .avance .barra { flex: 0 0 4.5rem; height: 6px; border-radius: 99px; background: var(--renglon); overflow: hidden; }
.panel .avance .barra > span { display: block; height: 100%; background: var(--verde); }
.panel .avance .chico { margin: 0; }
@media (max-width: 1180px) {
  .panel thead { display: none; }
  .panel, .panel tbody, .panel tr, .panel td { display: block; width: 100%; }
  .panel tbody tr { display: grid; grid-template-columns: repeat(auto-fill, minmax(10.5rem, 1fr));
    border-bottom: 1px solid var(--renglon-fuerte); padding: 0 0 0.6rem; }
  .panel td { border-bottom: 0; padding: 0.35rem 1rem; }
  .panel td.empresa { grid-column: 1 / -1; padding-top: 0.7rem; border-left: 0; border-top: 4px solid transparent; }
  .panel tr.fila-problema td.empresa { border-top-color: var(--rojo); }
  .panel tr.fila-pendiente td.empresa { border-top-color: #D9A23A; }
  .panel tr.fila-ok td.empresa { border-top-color: var(--verde); }
  .panel td[data-titulo]::before { content: attr(data-titulo); display: block; font-size: 0.72rem; font-weight: 650;
    letter-spacing: .03em; text-transform: uppercase; color: var(--tinta-suave); margin-bottom: 0.1rem; }
  .panel td.num { text-align: left; }
}

/* ---------- Factura electrónica: cómo se cobra ---------- */
.cobro-fe { padding: 1.25rem; border-top: 1px solid var(--renglon-fuerte); }
.cobro-fe h2 { margin-bottom: 0.4rem; }
.cobro-fe .sub { margin: 0 0 0.75rem; }
.fila-pago { display: flex; flex-wrap: wrap; gap: 0.5rem 0.75rem; align-items: flex-end; padding: 0.6rem 0;
  border-bottom: 1px solid var(--renglon); }
.fila-pago .campo { margin: 0; min-width: 150px; flex: 0 1 190px; }
.fila-pago .campo.monto { flex-basis: 150px; }
.fila-pago .campo.corto { min-width: 100px; flex-basis: 110px; }
.fila-pago .campo[hidden] { display: none; }
.fila-pago .quitar { margin-left: auto; align-self: center; }
.fila-pago.con-error { background: var(--rojo-claro); border-radius: var(--radio); padding-left: 0.5rem; padding-right: 0.5rem; }
.fila-pago input.num { text-align: right; }
.pie-filas { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; margin-top: 0.75rem; }
.estado-suma { font-size: 0.9rem; color: var(--tinta-suave); }
.estado-suma.ok { color: var(--verde); }
.estado-suma.mal { color: var(--rojo); font-weight: 600; }
.armar-cuotas { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: flex-end; margin: 0.75rem 0; padding: 0.9rem;
  background: var(--papel); border-radius: var(--radio); }
.armar-cuotas .campo { margin: 0; min-width: 140px; }
.tabla-cuotas { max-width: 560px; }
.tabla-cuotas td.numero { white-space: nowrap; color: var(--tinta-suave); padding-top: 0.75rem; }
#bloque-credito .receptor-tipos { margin-bottom: 0.75rem; }
.libro tr.detalle-cobro td { font-size: 0.86rem; padding-top: 0.25rem; padding-bottom: 0.25rem; }
.libro tr.detalle-cobro td:nth-child(2) { padding-left: 1.75rem; }
.chico-enlace { font-size: 0.8rem; font-weight: 400; }
.libro tr.anulado td .btn, .libro tr.anulado td .estado { text-decoration: none; }

.form-anular { margin-top: .3rem; }
.enlace-accion { background: none; border: 0; padding: 0; font: inherit; font-size: .8rem; color: var(--tinta-suave); text-decoration: underline; cursor: pointer; }
.enlace-accion.peligro { color: var(--rojo); }
.libro tr.anulado td .enlace-accion { text-decoration: underline; }
