/* Certificado GFI-FR-11 para imprimir o guardar como PDF (lo arma src/js/print.js dentro de #impresion).
   En pantalla está oculto; al imprimir se oculta todo lo demás. Una hoja carta vertical, como la imprime Excel. */

@media screen {
  #impresion { display: none !important; }
}

@page { size: letter portrait; margin: 0; }

@media print {
  html, body { background: #fff !important; margin: 0 !important; padding: 0 !important; }
  body > *:not(#impresion) { display: none !important; }
  #impresion, #impresion[hidden] { display: block !important; }
  #impresion:empty::before {
    content: "Para obtener el certificado usa el botón «PDF para la firma» en el paso Revisión.";
    display: block; padding: 20mm; font: 12pt sans-serif;
  }
}

#impresion {
  --imp-borde: #9aa3b2;
  --imp-oscuro: #3a3d42;
  --imp-azul: #8eaadb;
  --imp-texto: #111;
  --imp-gris: #555;
  color: var(--imp-texto);
  font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

.imp-hoja { width: 210mm; min-height: 296mm; padding: 9mm 11mm; font-size: 7.6pt; line-height: 1.3; display: grid; gap: 3.2mm; align-content: start; }
.imp-hoja * { box-sizing: border-box; }
.imp-hoja p { margin: 0; }

.imp-encabezado { width: 100%; border-collapse: collapse; font-size: 7pt; }
.imp-encabezado td { border: 0.6pt solid #222; padding: 1.4mm 2mm; }
.imp-enc-logo { width: 33mm; text-align: center; }
.imp-logo { max-width: 30mm; max-height: 12mm; display: inline-block; }
.imp-logo-texto { font-weight: 700; font-size: 11pt; }
.imp-enc-entidad { background: var(--imp-azul); text-align: center; font-weight: 700; }
.imp-enc-proceso, .imp-enc-formato { text-align: center; }
.imp-enc-dato { width: 36mm; }

.imp-contrato { display: grid; grid-template-columns: 1.6fr 0.8fr 1.2fr 1.2fr; gap: 3mm; margin-top: 1mm; }
.imp-caja-oscura { display: grid; gap: 0.8mm; }
.imp-caja-oscura strong { background: var(--imp-oscuro); color: #fff; padding: 1.6mm 2mm; text-align: center; font-size: 8.4pt; }
.imp-etq-osc { font-size: 6.2pt; text-align: center; color: var(--imp-gris); }

.imp-etq { font-size: 6.2pt; color: var(--imp-gris); text-transform: uppercase; letter-spacing: 0.02em; }
.imp-val { font-size: 7.8pt; min-height: 3.6mm; overflow-wrap: anywhere; }
.imp-campo { display: grid; gap: 0.4mm; align-content: start; }

.imp-objeto { display: grid; gap: 0.8mm; }
.imp-objeto-texto { border: 0.6pt solid #5a7fc6; border-radius: 2.5mm; padding: 2.2mm 3mm; min-height: 12mm; font-size: 7.4pt; }

.imp-seccion { display: grid; grid-template-columns: 6mm 1fr; gap: 2mm; border-top: 0.6pt solid #222; padding-top: 1.6mm; }
.imp-num { width: 5mm; height: 5mm; border: 0.6pt solid #222; border-radius: 50%; display: grid; place-items: center; font-size: 6.6pt; margin-top: -3.2mm; background: #fff; }
.imp-seccion-cuerpo { display: grid; gap: 2.4mm; min-width: 0; }

.imp-seccion-cuerpo:has(.imp-rejilla--contratista) { grid-template-columns: 1fr 50mm; align-items: start; }
.imp-rejilla--contratista { display: grid; grid-template-columns: 1.1fr 0.35fr 1.6fr; gap: 1.6mm 3mm; }
.imp-rejilla--contratista .imp-ancho { grid-column: span 1; }
.imp-caja-banco { border: 0.6pt solid #5a7fc6; border-radius: 2.5mm; padding: 2mm 3mm; display: grid; gap: 1.4mm; }

.imp-valores-fila { display: grid; grid-template-columns: 1fr 26mm; gap: 3mm; align-items: center; }
.imp-valores { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.8mm 3mm; }
.imp-valores .imp-val { font-variant-numeric: tabular-nums; }
.imp-avance { display: grid; justify-items: center; gap: 1mm; text-align: center; }
.imp-anillo { width: 20mm; height: 20mm; }
.imp-anillo-fondo { fill: none; stroke: #c9d2e3; stroke-width: 4.2; }
.imp-anillo-arco { fill: none; stroke: #7d8fa8; stroke-width: 4.2; }
.imp-anillo-texto { font-size: 6.4px; text-anchor: middle; font-weight: 700; fill: #2b4a8b; }

.imp-tabla { width: 100%; border-collapse: collapse; font-size: 6.8pt; }
.imp-tabla th { font-size: 5.8pt; color: var(--imp-gris); font-weight: 600; text-align: left; padding: 0.8mm 1.2mm; border-bottom: 0.6pt solid var(--imp-borde); }
.imp-tabla td { padding: 0.9mm 1.2mm; overflow-wrap: anywhere; }
.imp-num-col { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.imp-total-planilla { background: var(--imp-oscuro); color: #fff; }

.imp-nombres { display: grid; grid-template-columns: 1fr 1fr; gap: 4mm; }
.imp-caja-nombre { border: 0.6pt solid #222; min-height: 11mm; padding: 1.6mm 2mm; font-size: 6.6pt; }

.imp-pago { display: grid; grid-template-columns: 1.5fr 0.8fr 1fr; gap: 3mm; align-items: start; }
.imp-concepto { display: grid; gap: 0.8mm; }
.imp-concepto-texto { border: 0.6pt solid #5a7fc6; border-radius: 2.5mm; padding: 2mm 3mm; min-height: 10mm; font-size: 7.4pt; }
.imp-factura { display: grid; gap: 1.6mm; }
.imp-totales { display: grid; gap: 1mm; }
.imp-totales p { display: flex; justify-content: space-between; gap: 2mm; font-variant-numeric: tabular-nums; }
.imp-total-pagar { border: 0.6pt solid #5a7fc6; border-radius: 1.6mm; padding: 1.2mm 2mm; }
.imp-total-pagar strong { background: var(--imp-oscuro); color: #fff; padding: 0.4mm 2mm; }

.imp-certifica { font-style: italic; font-size: 7.2pt; text-align: justify; }
.imp-firma-fila { display: grid; grid-template-columns: 1.3fr 1fr; gap: 6mm; align-items: start; }
.imp-supervisor { display: grid; gap: 1.4mm; }
.imp-constancia { display: flex; justify-content: space-between; gap: 3mm; background: #eceff3; padding: 1.2mm 2mm; }
.imp-doble { display: grid; grid-template-columns: 1fr 14mm; gap: 3mm; }
.imp-espacio-firma { border: 0.6pt solid #222; border-radius: 4mm; min-height: 30mm; padding: 2mm; text-align: center; }

/* ───────────── Hoja dibujada desde la plantilla (src/js/hoja.js) ───────────── */
.hx-pagina { position: relative; overflow: hidden; background: #fff; color: #000; }
.hx-pagina .hx-lienzo { position: absolute; left: 0; top: 0; transform-origin: 0 0; }
.hx-pagina .hx { position: absolute; box-sizing: border-box; margin: 0; padding: 0; }
.hx-pagina .hx-celda { display: flex; overflow: visible; font-kerning: none; }
.hx-pagina .hx-ajustar > span { white-space: normal; overflow-wrap: break-word; }
.hx-pagina .hx-contable { display: flex; justify-content: space-between; width: 100%; white-space: pre; }
.hx-pagina .hx-texto { display: flex; flex-direction: column; overflow: hidden; line-height: 1.15; }
.hx-pagina img.hx { object-fit: fill; }
.hx-pagina .hx-trama { background-repeat: repeat; image-rendering: pixelated; }
.hx-pagina .hx-oculto { visibility: hidden; }
