/**
 * Papel membretado de Proximédica — cotizaciones y notas.
 *
 * Es el mismo diseño que armaba `buildProximedicaDoc()` en el sistema
 * anterior: mismo verde (#0d9488), misma retícula, misma tabla, misma caja de
 * totales y el mismo pie con las marcas. Lo que cambia es dónde vive.
 *
 * En el viejo, los estilos iban en un <style> incrustado dentro de la cadena
 * de HTML que se escribía en la ventana de impresión. Aquí son un archivo
 * servido desde el propio origen, por dos razones:
 *
 *   1. La política de seguridad (helmet, src/app.js) permite hojas de estilo
 *      propias y atributos style="", pero NO un bloque <style> suelto. Un
 *      <style> incrustado lo bloquearía el navegador y el documento saldría
 *      sin formato.
 *   2. Se ve igual en la vista previa de la aplicación y en el papel, porque
 *      es literalmente el mismo archivo.
 *
 * El documento a imprimir se monta en la propia página dentro de
 * `.doc-impresion`: invisible en pantalla, y al imprimir lo único que sale.
 *
 * Todo va colgado de .doc-prox para que no se filtre al resto de la interfaz.
 */

.doc-prox {
    background: #fff;
    color: #1f2937;
    font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-size: 11px;
    line-height: 1.35;
    width: 210mm;                 /* carta/A4: lo que ocupa impreso */
    max-width: 100%;
    margin: 0 auto;
    padding: 12px 20px 10px;
    box-sizing: border-box;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.doc-prox * { margin: 0; padding: 0; box-sizing: border-box; }

/* --- encabezado ----------------------------------------------------------- */
.doc-prox .doc-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 20px;
    padding: 8px 0 10px;
    border-bottom: 1.5px solid #e5e7eb;
}
.doc-prox .doc-logo { height: 45px; margin-bottom: 6px; }
.doc-prox .doc-emisor-nombre { font-size: 14px; font-weight: 800; margin-top: 4px; }
.doc-prox .doc-emisor-dato { font-size: 10px; color: #6b7280; }
.doc-prox .doc-emisor-dato:first-of-type { margin-top: 4px; }

.doc-prox .doc-meta { text-align: right; white-space: nowrap; }
.doc-prox .doc-title {
    font-size: 22px;
    font-weight: 800;
    letter-spacing: 1px;
    color: #0d9488;
    text-transform: uppercase;
}
.doc-prox .doc-meta-linea { font-size: 11px; margin-top: 2px; }
.doc-prox .doc-meta-linea:nth-of-type(1) { margin-top: 8px; }

/* --- cliente / número ----------------------------------------------------- */
.doc-prox .doc-info {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin: 12px 0 16px;
}
.doc-prox .doc-info-box { font-size: 11px; line-height: 1.6; }
.doc-prox .doc-info-label { font-weight: 700; color: #374151; }
.doc-prox .doc-info-value { color: #6b7280; }
.doc-prox .doc-cliente-nombre { font-weight: 600; font-size: 13px; }
.doc-prox .doc-numero { font-size: 18px; font-weight: 800; color: #0d9488; }

/* --- partidas ------------------------------------------------------------- */
.doc-prox table.doc-tabla {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 16px;
}
.doc-prox .doc-th {
    background: #f8fafb;
    padding: 10px 8px;
    text-align: left;
    font-size: 11px;
    font-weight: 700;
    color: #374151;
    border-bottom: 1.5px solid #d1d5db;
    text-transform: uppercase;
}
.doc-prox .doc-td {
    padding: 10px 8px;
    border-bottom: 1px solid #f3f4f6;
    font-size: 11.5px;
    vertical-align: top;
}
.doc-prox tbody tr:nth-child(even) { background: #f8fafb; }
.doc-prox .doc-td-centro { text-align: center; }
.doc-prox .doc-td-der    { text-align: right; }
.doc-prox .doc-td-unidad { text-align: center; color: #6b7280; }
.doc-prox .doc-td-clave  { color: #6b7280; font-family: ui-monospace, Menlo, monospace; font-size: 10px; }
.doc-prox .doc-td-desc   { font-weight: 600; color: #111827; }
.doc-prox .doc-td-importe { font-weight: 700; color: #111827; }
/* El descuento por partida no existía en el papel viejo porque el carrito
   solo guardaba el precio ya rebajado. Aquí sí se guarda aparte, y se
   imprime: el cliente tiene derecho a ver qué se le descontó. */
.doc-prox .doc-td-descuento { font-size: 10px; font-weight: 500; color: #0d9488; }

/* --- totales -------------------------------------------------------------- */
.doc-prox .doc-totales { display: flex; justify-content: flex-end; margin-bottom: 16px; }
.doc-prox .doc-totales-caja {
    width: 240px;
    border: 1px solid #d1d5db;
    border-radius: 4px;
    overflow: hidden;
}
.doc-prox .doc-total-fila {
    display: flex;
    justify-content: space-between;
    padding: 6px 12px;
    font-size: 12px;
}
.doc-prox .doc-total-fila.grand {
    background: #0d9488;
    color: #fff;
    font-weight: 800;
    font-size: 14px;
    padding: 8px 12px;
}

/* --- observaciones -------------------------------------------------------- */
.doc-prox .doc-notas {
    margin-top: 14px;
    padding: 10px 14px;
    background: #f0fdf4;
    border-left: 3px solid #0d9488;
    border-radius: 0 4px 4px 0;
    font-size: 10px;
    line-height: 1.5;
}
.doc-prox .doc-notas b { color: #0d9488; }

/* --- pie ------------------------------------------------------------------ */
.doc-prox .doc-marcas {
    text-align: center;
    padding: 16px 0 10px;
    margin-top: 20px;
    border-top: 1px solid #e5e7eb;
}
.doc-prox .doc-marcas img {
    width: 90%;
    max-width: 480px;
    height: auto;
    display: inline-block;
}
.doc-prox .doc-url {
    text-align: center;
    font-size: 13px;
    font-weight: 800;
    color: #0d9488;
    margin-top: 8px;
    letter-spacing: 1px;
}

/* Sello de estado: una cotización cancelada o vencida no debe poder
   reimprimirse como si siguiera en pie. El papel lo dice. */
.doc-prox .doc-sello {
    margin: 10px 0 0;
    padding: 8px 14px;
    border: 2px solid #ef4444;
    border-radius: 4px;
    color: #ef4444;
    font-weight: 800;
    font-size: 12px;
    letter-spacing: 1px;
    text-align: center;
    text-transform: uppercase;
}

/* --- impresión ------------------------------------------------------------ */

/* El contenedor del documento a imprimir no se ve en pantalla: la vista
   previa usa su propio modal, con estas mismas clases. */
.doc-impresion { display: none; }

@media print {
    @page { size: A4; margin: 10mm; }

    /* Solo sale el papel. Se oculta TODO lo demás que cuelgue del body —la
       aplicación, los modales abiertos, los avisos— en vez de enumerar qué
       esconder: así una pantalla nueva no se cuela en la impresión por
       olvidarse de agregarla a la lista. */
    body > *:not(.doc-impresion) { display: none !important; }
    .doc-impresion { display: block !important; }

    .doc-prox { width: auto; padding: 0; }
    /* Que una partida no quede partida entre dos hojas. */
    .doc-prox tr { page-break-inside: avoid; }
    .doc-prox .doc-totales, .doc-prox .doc-marcas { page-break-inside: avoid; }
}
