/* facturacion.css — Facturacion, Clientes y Fiado (docs/diseno/facturacion-clientes-fiado.md).
   Tres piezas nuevas de dataviz/chrome que el sistema base no tenia: el medidor del CAI (un
   perecedero, F2), la barra de saldo del fiado (neutra, nunca semantica de resultado, F1), y el
   comprobante (marca del tenant al frente, se ve como documento fiscal, no un ticket, F4). */

/* ============================================================ */
/* Fiado: el marco "TE DEBEN" (F1) — nunca el tamano/verbo de "ganaste"                          */
/* ============================================================ */
.fiado-titular__rotulo{ font-size:15px; color:var(--ink-2); margin-bottom:2px; }
.fiado-titular__cifra{
  font-family:var(--font-marca); font-weight:460; font-size:clamp(32px, 6vw, 48px);
  color:var(--neutro-fuerte); line-height:1; font-variant-numeric:tabular-nums;
}
.fiado-titular__meta{ font-size:14px; color:var(--ink-2); margin-top:6px; }
.fiado-titular__frase{
  font-size:13.5px; color:var(--ink-3); margin-top:var(--sp-3); padding-top:var(--sp-3);
  border-top:1px solid var(--line); max-width:56ch;
}

/* Barra de saldo por cliente (4.2): proporcion visual (nunca color semantico de resultado). */
.saldo-fila{ padding:var(--sp-3) 0; border-bottom:1px solid var(--line); cursor:pointer; }
.saldo-fila:last-child{ border-bottom:none; }
.saldo-fila__cabecera{ display:flex; justify-content:space-between; align-items:baseline; gap:var(--sp-2); font-size:14.5px; }
.saldo-fila__nombre{ font-weight:600; }
.saldo-fila__monto{ font-variant-numeric:tabular-nums; font-weight:700; flex:none; }
.saldo-fila__meta{ font-size:12.5px; color:var(--ink-3); margin-top:2px; }
.saldo-fila__meta--vencido{ color:var(--neg); font-weight:600; }
.saldo-fila__pista{
  height:8px; background:var(--paper-2); border:1px solid var(--line-fuerte); border-radius:var(--r-xs);
  overflow:hidden; margin-top:6px;
}
.saldo-fila__barra{ height:100%; background:var(--neutro-medio); }
.saldo-fila--activa{ background:var(--paper-2); margin:0 calc(var(--sp-3) * -1); padding:var(--sp-3); border-radius:var(--r-sm); }

/* Version compacta (fila de lista movil, bajo .lista-riesgo__item): solo la pista, sin cabecera. */
.saldo-mini{ height:5px; background:var(--paper-2); border:1px solid var(--line-fuerte); border-radius:var(--r-xs); overflow:hidden; margin-top:6px; }
.saldo-mini__barra{ height:100%; background:var(--neutro-medio); }

/* ============================================================ */
/* El CAI como perecedero (5.2, F2): dos barras de agotamiento (rango + tiempo)                  */
/* ============================================================ */
.cai-medidor__cifra{
  font-family:var(--font-marca); font-weight:460; font-size:clamp(24px, 4vw, 32px);
  line-height:1.15; margin-bottom:2px;
}
.cai-medidor__bloque{ margin-top:var(--sp-4); }
.cai-medidor__bloque:first-of-type{ margin-top:0; }
/* El medidor del CAI como perecedero (docs/diseno/tema-y-neumorphism-v1.md, 7.1): la pista es un
   well hundido de verdad, el agotamiento se lee como liquido en una canaleta fisica. La barra de
   relleno coloreada (F2, semantica de urgencia) va encima sin sombra propia. */
.cai-medidor__pista{
  height:14px; background:var(--superficie-neu); box-shadow:var(--sombra-neu-inset-suave);
  border:1px solid var(--line-fuerte); border-radius:var(--r-xs);
  overflow:hidden; margin-top:6px;
}
.cai-medidor__barra{ height:100%; transition:width var(--mo-base) var(--e-suave); }
.cai-medidor__nota{ font-size:13px; color:var(--ink-2); margin-top:6px; }
.cai-medidor__pie{ font-size:12px; color:var(--ink-3); margin-top:var(--sp-4); padding-top:var(--sp-3); border-top:1px solid var(--line); }
.cai-medidor--critico .cai-medidor__cifra{ color:var(--urg-vencido); }
.cai-medidor--aviso .cai-medidor__cifra{ color:var(--urg-corto); }

/* Tira de aviso (5.1/5.3): descartable, discreta, solo cuando el estado no es sano. */
.cai-aviso-tira{
  display:flex; align-items:center; justify-content:space-between; gap:var(--sp-3);
  background:var(--marca-tenue); border:1px solid var(--line-fuerte); border-radius:var(--r-sm);
  padding:var(--sp-3) var(--sp-4); margin-bottom:var(--sp-4); font-size:13.5px;
}
.cai-aviso-tira--critico{ border-color:var(--urg-vencido); color:var(--urg-vencido); }
.cai-aviso-tira--aviso{ border-color:var(--urg-corto); }
.cai-aviso-tira button{ border:none; background:none; color:inherit; font-size:16px; cursor:pointer; flex:none; min-width:28px; min-height:28px; }

/* ============================================================ */
/* El comprobante (3.4, F4): marca del tenant al frente, papel = documento, no card              */
/* ============================================================ */
.comprobante{ max-width:440px; margin:0 auto; }
.comprobante__marca{ text-align:center; margin-bottom:var(--sp-4); }
.comprobante__logo{ display:inline-block; width:40px; height:30px; color:var(--marca); margin-bottom:6px; }
.comprobante__logo svg{ width:100%; height:100%; }
/* Fase 3.1.3: logo SUBIDO -> <img> (ver util.js renderLogoTenant), mismo tamano que el SVG. */
.comprobante__logo-img{ width:100%; height:100%; object-fit:contain; display:block; }
.comprobante__nombre{ display:block; font-family:var(--font-marca); font-size:22px; color:var(--ink); }
.comprobante__rtn{ display:block; font-size:12.5px; color:var(--ink-2); margin-top:2px; }
.comprobante__kicker{ display:block; font-size:11px; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--ink-3); margin-top:var(--sp-3); }
.comprobante__filete{ border-top:1px solid var(--line-fuerte); margin:var(--sp-3) 0; }
.comprobante__numero{ font-family:var(--font-marca); font-size:22px; font-variant-numeric:tabular-nums; color:var(--ink); }
.comprobante__meta{ font-size:13px; color:var(--ink-2); margin-top:2px; font-variant-numeric:tabular-nums; }
.comprobante__cliente{ font-size:14px; margin-top:var(--sp-3); }
.comprobante__cliente strong{ display:block; }
.comprobante__linea{ display:flex; justify-content:space-between; font-size:14px; padding:var(--sp-2) 0; }
.comprobante__fila{ display:flex; justify-content:space-between; font-size:14px; padding:4px 0; color:var(--ink-2); }
.comprobante__fila--total{
  display:flex; justify-content:space-between; border-top:2px solid var(--line-fuerte);
  margin-top:6px; padding-top:var(--sp-2); font-family:var(--font-marca); font-size:19px; color:var(--ink);
}
.comprobante__legal{ font-size:11.5px; color:var(--ink-3); margin-top:var(--sp-4); line-height:1.5; }
.comprobante__acciones{ display:flex; gap:var(--sp-2); margin-top:var(--sp-5); }
.comprobante__acciones .boton{ flex:1; }
.comprobante__reveal{ background:var(--paper-2); border-radius:var(--r-sm); padding:var(--sp-4); margin:var(--sp-4) 0; }

/* Anular factura (B.1/B.6): el elemento mas callado del comprobante. Nunca --marca, nunca .boton:
   no compite con las acciones diarias (Compartir/Imprimir). */
.comprobante__anular{
  font-size:12.5px; color:var(--ink-3); text-decoration:underline; text-underline-offset:2px;
}
.comprobante__anular:hover, .comprobante__anular:focus-visible{ color:var(--neg); }

/* El comprobante ya anulado (B.3): mismo documento, con marca de que existe pero no vale. */
.comprobante--anulada{ position:relative; }
.comprobante__sello{
  position:absolute; top:36%; left:50%; transform:translate(-50%,-50%) rotate(-18deg);
  margin:0; font-size:clamp(38px, 11vw, 58px); font-weight:800; letter-spacing:.16em;
  color:var(--neg); opacity:.16; white-space:nowrap; pointer-events:none; user-select:none;
}
.comprobante__anulada-pie{ font-size:12.5px; color:var(--neg); margin-top:var(--sp-4); line-height:1.5; }

/* Reveal previo a emitir (3.2): el numero exacto, protagonista, antes de comprometerse. */
.reveal-venta{ background:var(--paper-2); border-radius:var(--r-sm); padding:var(--sp-3) var(--sp-4); margin:var(--sp-3) 0 var(--sp-4); font-size:14px; }
.reveal-guarda{ font-size:13.5px; color:var(--neg); background:var(--marca-tenue); border-radius:var(--r-sm); padding:var(--sp-3); margin-top:var(--sp-3); }

/* Pie fiscal del comprobante (docs/diseno/exportar-imprimir-v1.md, 1.5/1.7). Fase 3.8 (B):
   rango autorizado del CAI y fecha limite de emision, ambos de factura_json (cai_prefijo/
   cai_desde/cai_hasta/cai_fecha_limite), pintados por facturas.js (comprobanteHTML). Se omite
   entero si la factura no trae esos campos (historicas sin cai_rango_id): nunca un rango a
   medias. En pantalla es secundario (tinta discreta); en print se refuerza (ver @media print,
   mas abajo). */
.comprobante__pie-fiscal{ font-size:12px; color:var(--ink-3); margin-top:var(--sp-3); line-height:1.6; }

/* Reporte de una hoja de La Verdad (docs/diseno/exportar-imprimir-v1.md, seccion 3): "opcional
   pero recomendado". Vive SIEMPRE oculto en pantalla (se arma solo al pedir "Imprimir o guardar
   PDF" desde la mini-hoja Exportar de La Verdad) y se revela por completo en @media print, mas
   abajo. Editorial de reporte, no un calco del workspace: sin neumorphism (se aplana a blanco),
   sin count-up (el papel no anima). */
#reporte-verdad-imprimir{ display:none; }
.reporte-verdad__marca{ text-align:center; margin-bottom:20px; }
.reporte-verdad__logo{ display:inline-block; width:44px; height:34px; color:var(--marca); margin-bottom:6px; }
.reporte-verdad__logo svg{ width:100%; height:100%; }
/* Fase 3.1.3: logo SUBIDO -> <img> (ver util.js renderLogoTenant), mismo tamano que el SVG. */
.reporte-verdad__logo-img{ width:100%; height:100%; object-fit:contain; display:block; }
.reporte-verdad__nombre{ display:block; font-family:var(--font-marca); font-size:20px; color:var(--ink); }
.reporte-verdad__titulo{ font-size:13px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-2); margin-top:4px; }
.reporte-verdad__rango{ font-size:13px; color:var(--ink-2); margin-top:2px; }
.reporte-verdad__rotulo{ font-size:13px; color:var(--ink-2); text-align:center; }
.reporte-verdad__cifra{ font-family:var(--font-marca); font-size:34px; text-align:center; margin:4px 0; font-variant-numeric:tabular-nums; }
.reporte-verdad__waterfall{ margin:20px 0; }
.reporte-verdad__tabla{ width:100%; border-collapse:collapse; margin-top:16px; }
.reporte-verdad__tabla th, .reporte-verdad__tabla td{ padding:6px 8px; font-size:11px; border-bottom:1px solid var(--line-fuerte); }
.reporte-verdad__tabla th{ text-align:left; font-weight:700; color:var(--ink-2); }
.reporte-verdad__tabla th.num, .reporte-verdad__tabla td.num{ text-align:right; font-variant-numeric:tabular-nums; }
.reporte-verdad__fila-total td{ font-weight:700; border-top:2px solid var(--ink); border-bottom:none; }
.reporte-verdad__pie{ font-size:10px; color:var(--ink-3); text-align:center; margin-top:24px; }

/* ================================================================ */
/* Libro de ventas / ISV (Fase 3.17, docs/estrategia/libro-ventas-isv-hn-v1.md): el bloque        */
/* "Libro de ventas" del segmentado de #/facturas (facturas.js + libro-ventas.js). Los totales    */
/* son el protagonista (mismo tratamiento neu que el titular de Hoy/La Verdad); la tabla es        */
/* movil-primero de verdad (colapsa a fila-tarjeta con data-label bajo 700px, sin perder columnas).*/
/* ================================================================ */

/* El mes-stepper: flechas redondas de un solo dedo, mismo lenguaje visual que el toggle de tema. */
.libro-mes{ display:flex; align-items:center; gap:var(--sp-3); margin-top:var(--sp-4); }
.libro-mes__flecha{
  width:36px; height:36px; flex:none; border-radius:var(--r-pill); border:none;
  background:var(--superficie-neu); color:var(--ink); font-size:18px; line-height:1;
  display:flex; align-items:center; justify-content:center; cursor:pointer;
  box-shadow:var(--sombra-neu-media); transition: box-shadow var(--mo-tacto), opacity var(--mo-tacto);
}
.libro-mes__flecha:active{ box-shadow:var(--sombra-neu-inset); }
.libro-mes__flecha:focus-visible{ outline:none; box-shadow:var(--sombra-neu-media), var(--sombra-foco-neu); }
.libro-mes__flecha:disabled{ opacity:.35; cursor:default; box-shadow:var(--sombra-neu-media); }
.libro-mes__etiqueta{ font-family:var(--font-marca); font-size:19px; min-width:11ch; text-align:center; }

/* El rango exacto (desde/hasta a mano): oculto por defecto, se revela con "Elegir un rango". */
.libro-custom{
  margin-top:var(--sp-3); padding:var(--sp-4); border-radius:var(--r-sm); background:var(--paper-2);
  display:flex; gap:var(--sp-3); flex-wrap:wrap; align-items:flex-end;
}
/* Bug real de la MISMA clase que .sidebar__globo[hidden]/.tienda-barra-pedido[hidden] (workspace.
   css/tienda.css): una regla de AUTOR con `display` (arriba) le gana al `[hidden]{display:none}`
   del user-agent. Sin esto el rango exacto queda visible por defecto (nunca deberia, empieza
   plegado hasta que se toca "Elegir un rango de fechas exacto"). */
.libro-custom[hidden]{ display:none; }
.libro-custom .campo{ margin-top:0; flex:1; min-width:140px; }

/* El aviso de "sin configurar" (honestidad no negociable, seccion 4 del doc): reusa el MISMO
   marco ambar de .aviso-legibilidad (Ajustes), solo le agrega layout de bloque y separacion. */
.libro-aviso{ margin:0 0 var(--sp-5); }
.libro-aviso .enlace-profundizar{ display:block; margin-top:var(--sp-2); }

/* Los totales: el mismo tratamiento neu-alto que el titular de "Hoy"/"La Verdad" (regla 3.6, base.
   css: ningun dato vive sobre una superficie con sombra salvo esto, que es lo que se toca/lee). */
.libro-totales{ margin-bottom:var(--sp-5); }
.libro-totales__cifra{
  font-family:var(--font-marca); font-weight:460; font-size:clamp(32px, 6vw, 46px);
  line-height:1.05; margin:var(--sp-2) 0 2px; font-variant-numeric:tabular-nums;
}
.libro-totales__filas{ margin-top:var(--sp-4); padding-top:var(--sp-3); border-top:1px solid var(--line); }
.libro-leyenda{ display:flex; gap:var(--sp-4); flex-wrap:wrap; margin-top:var(--sp-2); font-size:12.5px; color:var(--ink-2); }
.libro-leyenda span{ display:inline-flex; align-items:center; }
.libro-cobertura{ font-size:13.5px; color:var(--ink-2); margin-top:var(--sp-4); padding-top:var(--sp-3); border-top:1px solid var(--line); line-height:1.5; }

.libro-acciones{ display:flex; gap:var(--sp-2); flex-wrap:wrap; margin-bottom:var(--sp-5); }
.libro-acciones .boton{ flex:1; min-width:180px; }

.libro-honestidad{ font-size:13px; color:var(--ink-3); margin-top:var(--sp-5); line-height:1.6; max-width:64ch; }

/* La tabla del Libro (movil primero de verdad, docs/estrategia/libro-ventas-isv-hn-v1.md):        */
/* de 700px para arriba es una tabla clasica; debajo, CADA FILA se vuelve una tarjeta apilada de   */
/* pares etiqueta/valor (tecnica data-label, sin duplicar el DOM ni bifurcar el render en JS). */
.tabla-libro{ width:100%; border-collapse:collapse; font-size:13.5px; }
.tabla-libro thead th{
  text-align:left; font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
  color:var(--ink-3); padding:var(--sp-2); border-bottom:2px solid var(--line-fuerte);
}
.tabla-libro thead th.num, .tabla-libro td.num{ text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.tabla-libro td{ padding:var(--sp-2); border-bottom:1px solid var(--line); vertical-align:top; }
.tabla-libro tbody tr:last-child td{ border-bottom:none; }

@media (max-width:700px){
  .tabla-libro thead{ display:none; }
  .tabla-libro, .tabla-libro tbody, .tabla-libro tr, .tabla-libro td{ display:block; width:100%; }
  .tabla-libro tr{ padding:var(--sp-3) 0; border-bottom:1px solid var(--line); }
  .tabla-libro tbody tr:last-child{ border-bottom:none; }
  .tabla-libro td{
    display:flex; justify-content:space-between; align-items:baseline; gap:var(--sp-3);
    padding:2px 0; border-bottom:none; font-size:13px;
  }
  .tabla-libro td::before{ content:attr(data-label); flex:none; color:var(--ink-3); font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.04em; }
  .tabla-libro td.num{ text-align:right; }
}

/* Reporte de una hoja del Libro de ventas (impreso/PDF): mismo mecanismo EXACTO que
   #reporte-verdad-imprimir (oculto en pantalla, revelado por @media print mas abajo). */
#reporte-libro-imprimir{ display:none; }
.reporte-libro__marca{ text-align:center; margin-bottom:20px; }
.reporte-libro__logo{ display:inline-block; width:44px; height:34px; color:var(--marca); margin-bottom:6px; }
.reporte-libro__logo svg{ width:100%; height:100%; }
.reporte-libro__logo-img{ width:100%; height:100%; object-fit:contain; display:block; }
.reporte-libro__nombre{ display:block; font-family:var(--font-marca); font-size:20px; color:var(--ink); }
.reporte-libro__titulo{ font-size:13px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-2); margin-top:4px; }
.reporte-libro__rango{ font-size:13px; color:var(--ink-2); margin-top:2px; }
.reporte-libro__rotulo{ font-size:13px; color:var(--ink-2); text-align:center; }
.reporte-libro__cifra{ font-family:var(--font-marca); font-size:32px; text-align:center; margin:4px 0 16px; font-variant-numeric:tabular-nums; }
.reporte-libro__resumen{ width:100%; max-width:420px; margin:0 auto 16px; border-collapse:collapse; }
.reporte-libro__resumen td{ padding:4px 6px; font-size:12px; border-bottom:1px solid var(--line-fuerte); }
.reporte-libro__resumen td.num{ text-align:right; font-variant-numeric:tabular-nums; }
.reporte-libro__cobertura{ font-size:11px; color:var(--ink-2); text-align:center; margin-bottom:16px; }
.reporte-libro__tabla{ width:100%; border-collapse:collapse; margin-top:8px; }
.reporte-libro__tabla th, .reporte-libro__tabla td{ padding:5px 6px; font-size:10px; border-bottom:1px solid var(--line-fuerte); }
.reporte-libro__tabla th{ text-align:left; font-weight:700; color:var(--ink-2); }
.reporte-libro__tabla th.num, .reporte-libro__tabla td.num{ text-align:right; font-variant-numeric:tabular-nums; }
.reporte-libro__legal{ font-size:9.5px; color:var(--ink-3); margin-top:16px; line-height:1.5; }
.reporte-libro__pie{ font-size:10px; color:var(--ink-3); text-align:center; margin-top:16px; }

/* ================================================================ */
/* Imprimir (docs/diseno/exportar-imprimir-v1.md, secciones 1 y 3): el documento manda, no el   */
/* tema de pantalla. Dos documentos posibles conviven con la MISMA tecnica de "solo esto se ve": */
/* el comprobante de factura (.comprobante, F4) y el reporte de una hoja de La Verdad            */
/* (#reporte-verdad-imprimir, seccion 3). Nunca los dos a la vez: cada uno solo existe/se arma en */
/* el momento en que su propio boton "Imprimir" lo dispara.                                      */
/* ================================================================ */
@media print{
  @page{ size: letter; margin: 16mm; }

  /* Chrome de la app y caparazon de la hoja modal: colapsa de VERDAD (display:none, no solo
     visibility), para que el papel arranque desde el margen, no desde donde estaba el modal
     (1.2). El resto de la pagina se apaga con visibility (mas abajo) para no romper el layout
     absoluto del documento que SI se imprime. */
  #sidebar, #topbar, .barra-mano, .banda-marca,
  .hoja__asa, .hoja__cabecera,
  .comprobante__acciones, .comprobante__anular{ display:none !important; }

  /* Bug real encontrado validando Fase 3.8 en el navegador: .hoja tiene su propio `transform`
     (el slide-up de abrir/cerrar, base.css) y eso la vuelve el CONTAINING BLOCK de
     `.comprobante` (position:absolute) en vez del viewport. Como .hoja ademas tiene
     overflow-y:auto y su contenido en flujo normal desaparece en print (hoja__asa/hoja__cabecera
     con display:none, arriba), su alto colapsa casi a cero y recorta el comprobante a una
     franja diminuta (solo se alcanzaba a ver el logo). Se neutraliza transform/overflow/alto
     SOLO en print: en pantalla .hoja sigue necesitando su transform para el gesto de abrir. Con
     esto, `.comprobante{ position:absolute; left:0; top:0 }` vuelve a resolver contra
     `.overlay-hoja` (position:fixed, cubre el viewport entero, sin overflow que recorte). */
  .hoja{ transform:none !important; overflow:visible !important; max-height:none !important; }

  /* Solo el documento activo queda visible; toda la app (incluido el fondo oscuro del overlay
     de la hoja) desaparece de verdad. */
  body *{ visibility:hidden; }
  .comprobante, .comprobante *,
  #reporte-verdad-imprimir, #reporte-verdad-imprimir *,
  #reporte-libro-imprimir, #reporte-libro-imprimir *{ visibility:visible; }

  /* La hoja SIEMPRE se imprime en claro, independiente del tema activo (1.1): fondo blanco puro,
     tinta casi-negra (no #000 puro: mas suave al ojo, imprime nitido), fijados explicitos (NO se
     heredan de --paper/--ink: en Noche esas variables son carbon/crema, imprimirian un
     rectangulo negro que se come el toner). */
  html, body{ background:#FFFFFF !important; }
  .comprobante, #reporte-verdad-imprimir, #reporte-libro-imprimir{
    display:block; background:#FFFFFF !important; color:#141018 !important;
    position:absolute; left:0; top:0; width:100%; max-width:none; margin:0; padding:0;
    box-shadow:none !important;
  }
  /* SOLO reinicia sombra/fondo en cada descendiente (limpia cualquier resto de neumorphism o
     superficie coloreada de pantalla). El color de tinta NO se fuerza aca a proposito: se fija
     UNA vez en el contenedor (arriba) y CASCADEA por herencia normal, para que los overrides mas
     especificos de abajo (kicker/meta/fila en tinta secundaria) lleguen tambien a los <span>
     anidados sin que un selector universal se las gane por adelantado. */
  .comprobante *, #reporte-verdad-imprimir *, #reporte-libro-imprimir *{ box-shadow:none !important; background:transparent !important; }

  /* El coral de marca se conserva SOLO en el logo y el nombre del negocio (print-color-adjust:
     exact: si no, algunos motores lo apagan a gris de oficio). Ningun otro dato depende del
     color: se lee igual en blanco y negro (regla de accesibilidad del sistema). */
  .comprobante__logo, .comprobante__nombre,
  .reporte-verdad__logo, .reporte-verdad__nombre,
  .reporte-libro__logo, .reporte-libro__nombre{
    color:#F5382B !important; print-color-adjust:exact; -webkit-print-color-adjust:exact;
  }

  /* Filetes y bordes: 1px, tinta fija (no dependen de color, se leen en B/N). */
  .comprobante__filete, .comprobante__fila--total, .comprobante__pie-fiscal,
  .reporte-verdad__tabla th, .reporte-verdad__tabla td, .reporte-verdad__fila-total td,
  .reporte-libro__resumen td, .reporte-libro__tabla th, .reporte-libro__tabla td{
    border-color:#141018 !important;
  }

  /* Tamanos impresos fijos en pt (nunca vw: el clamp() se dispara con el viewport de impresion,
     1.3). El resto entra holgado en media hoja: correcto para una factura, no hay que estirar. */
  .comprobante{ font-size:10.5pt; }
  .comprobante__numero{ font-size:15pt; }
  .comprobante__nombre{ font-size:18pt; }
  .comprobante__kicker{ font-size:9pt; color:#4A4048 !important; }
  .comprobante__meta, .comprobante__fila, .comprobante__rtn{ font-size:10.5pt; color:#4A4048 !important; }
  .comprobante__cliente{ font-size:10.5pt; }
  .comprobante__fila--total{ font-size:14pt; color:#141018 !important; }
  .comprobante__legal, .comprobante__anulada-pie, .comprobante__pie-fiscal{ font-size:8pt; color:#4A4048 !important; line-height:1.6; }

  /* El sello ANULADA tiene que gritar tambien en blanco y negro (1.4): en pantalla es coral al
     16% (elegante); en fotocopia eso casi desaparece, y una anulada que parece valida es un
     problema fiscal. Mas opacidad, tinta oscura fija y trazo del texto. */
  .comprobante__sello{
    opacity:.30 !important; color:#141018 !important; -webkit-text-stroke:1px #141018;
    font-size:44pt !important;
  }
  .comprobante__anulada-pie{ display:block !important; font-weight:600; color:#6E1B14 !important; }

  /* El reporte de La Verdad (seccion 3): fuerza SIEMPRE la cascada SVG del waterfall (nunca el
     modo "recibo" de movil angosto, que decide por media query de ANCHO de viewport, no de
     impresion: en la hoja impresa el ancho util siempre alcanza para la cascada). */
  #reporte-verdad-imprimir .recibo{ display:none !important; }
  #reporte-verdad-imprimir .waterfall-cascada{ display:block !important; }
  #reporte-verdad-imprimir{ font-size:10.5pt; padding:0; }
  .reporte-verdad__nombre{ font-size:18pt; }
  .reporte-verdad__cifra{ font-size:30pt; }
  .reporte-verdad__tabla th, .reporte-verdad__tabla td{ font-size:9pt; }

  /* El reporte del Libro de ventas (Fase 3.17): tamanos impresos fijos en pt, mismo criterio que
     el resto de este bloque (nunca vw/clamp en papel). Su tabla es SIEMPRE una tabla clasica (no
     comparte marcado con .tabla-libro de pantalla, que colapsa a tarjeta bajo 700px: el papel
     nunca corre ese riesgo porque son elementos distintos). */
  #reporte-libro-imprimir{ font-size:10.5pt; padding:0; }
  .reporte-libro__nombre{ font-size:18pt; }
  .reporte-libro__cifra{ font-size:26pt; }
  .reporte-libro__resumen td{ font-size:9.5pt; }
  .reporte-libro__tabla th, .reporte-libro__tabla td{ font-size:8pt; }
  .reporte-libro__legal, .reporte-libro__cobertura{ font-size:8pt; }
}
