/* ══ Impresión de tickets ══════════════════════════════════════════════════════

   El contrato de impresión de toda la suite, en un solo lugar. Antes vivía repetido dentro de
   cada componente de ticket del POS; cuando llegó el vertical Restaurante —con su precuenta y sus
   tickets de cocina— copiarlo otra vez habría sido la cuarta o quinta copia de la misma regla.

   Cómo se usa:

     <div class="ticket-printable">   ← lo único que sale por la impresora
        …
        <button class="pos-no-print"> ← lo que no debe imprimirse, aunque esté dentro
     </div>

   Y para el comprobante que no se ve en pantalla y sólo existe al imprimir:

     <div class="ticket-solo-print"><TicketX … /></div>

   El ancho del papel lo pone cada ticket; acá sólo se decide qué se imprime y qué no. */

@media print {

    /* Se apaga todo y se vuelve a encender sólo el ticket: es la única forma fiable de imprimir
       un pedazo de la página sin pelearse con el layout de la aplicación. */
    body * {
        visibility: hidden !important;
    }

    .ticket-printable,
    .ticket-printable *,
    .recibo-printable,
    .recibo-printable * {
        visibility: visible !important;
    }

    /* .recibo-printable es el nombre que traía el recibo de abono del POS. Se mantiene para no
       tocarle el markup, pero es el mismo contrato. */
    .recibo-printable {
        display: block !important;
    }

    .ticket-printable,
    .recibo-printable {
        position: absolute !important;
        left: 0 !important;
        top: 0 !important;
        width: 100% !important;
        max-width: 100% !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    /* En papel no hay sombras ni esquinas redondeadas: sólo gastan tinta. */
    .ticket-printable .tkt,
    .ticket-printable .mud-paper,
    .recibo-printable .mud-paper {
        box-shadow: none !important;
        border-radius: 0 !important;
        max-width: 100% !important;
    }

    /* El margen lo pone la página (@page, abajo): el relleno de pantalla del ticket encima de eso
       sólo angosta el papel. */
    .ticket-printable .tkt {
        width: 100% !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
        box-sizing: border-box !important;
    }

    /* Lo largo (la clave de 50 dígitos, un nombre de plato largo) se parte en vez de salirse del
       papel: lo que se sale, la impresora no lo imprime. */
    .ticket-printable,
    .ticket-printable *,
    .recibo-printable,
    .recibo-printable * {
        overflow-wrap: anywhere !important;
        word-break: break-word !important;
    }

    /* …pero la etiqueta de una fila («Clave», «Fecha») no: se parte el valor, no la palabra de al lado. */
    .ticket-printable .tkt-row .lbl {
        flex-shrink: 0 !important;
        overflow-wrap: normal !important;
        word-break: normal !important;
    }

    .ticket-printable .tkt-row .val {
        min-width: 0 !important;
        text-align: right;
    }

    /* La descripción del detalle va en un renglón (termina en «…») y los montos no se parten. */
    .ticket-printable td.tkt-item-desc {
        white-space: nowrap !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;
    }
    .ticket-printable .tkt-totline > span:last-child,
    .ticket-printable table.tkt-items td.num {
        white-space: nowrap !important;
        overflow-wrap: normal !important;
        word-break: normal !important;
    }

    /* La térmica no tiene gris: el driver lo simula con puntitos (tramado) y la razón social, la
       cédula, las etiquetas «Consecutivo», «Fecha», «SUBTOTAL»… salían borrosas en el papel
       (Sabor Porteño, 2026-10-14). En papel todo va en negro puro; la jerarquía la dan el tamaño y
       el grosor. En pantalla siguen los grises. */
    .ticket-printable,
    .ticket-printable *,
    .recibo-printable,
    .recibo-printable * {
        color: #000 !important;
        text-shadow: none !important;
        border-color: #000 !important;   /* los separadores punteados eran gris claro (#bbb) */
    }

    /* Y nada de trazo fino: la letra normal (400) a 10–11 px sale tenue en 203 ppp. */
    .ticket-printable .tkt,
    .recibo-printable .tkt {
        font-weight: 600;
    }
    .ticket-printable .tkt-item-sub,
    .ticket-printable .tcc-ref,
    .ticket-printable table.tkt-items--compacta td.tkt-item-desc .tkt-item-sub {
        font-weight: 600 !important;
    }

    /* La precuenta y los documentos del central van en Courier, que es de trazo muy fino. */
    .ticket-printable .tdoc__papel {
        font-weight: 700 !important;
    }

    /* El cierre de caja (formato del 15/10): sus filas van en letra de máquina, igual de fina que la
       Courier → 700, y lo fuerte (totales, diferencia) a 900 para que se distinga. Las líneas en
       continuo: la punteada salía como puntitos sueltos en la térmica. */
    .ticket-printable .tcc .tcc-row,
    .ticket-printable .tcc .tcc-caja {
        font-weight: 700 !important;
    }
    .ticket-printable .tcc .tcc-row--fuerte .tcc-lbl,
    .ticket-printable .tcc .tcc-row--fuerte .tcc-val,
    .ticket-printable .tcc .tcc-caja-val {
        font-weight: 900 !important;
    }
    .ticket-printable .tcc-linea {
        border-top-style: solid !important;
    }

    .pos-no-print {
        display: none !important;
    }

    /* El comprobante que en pantalla no está y aparece sólo para la impresora. */
    .ticket-solo-print {
        display: block !important;
    }

    body {
        background: #fff !important;
    }

    /* Margen de 6 mm a los lados: las impresoras de rollo no imprimen hasta el borde. Una EPSON
       TM-U220 (papel de 76 mm) sólo imprime los 63,5 mm del centro, y con margen 0 el ticket salía
       cortado a los dos lados (2026-09-29). Las térmicas de 80 mm imprimen ~72 mm: 6 mm les sobra. */
    @page {
        margin: 2mm 6mm;
    }
}

.ticket-solo-print {
    display: none;
}
