/* ═══════════════════════════════════════════════════════════════════════════
   IMPRESIÓN / PDF DE LOS REPORTES

   Los reportes se imprimen —y se guardan como PDF— desde el propio navegador:
   «Imprimir → Destino: Guardar como PDF». No hay un generador de PDF aparte a
   propósito. Uno obligaría a re-maquetar cada reporte por separado, y esa copia
   se desviaría de lo que se ve en pantalla en cuanto alguien tocara una; así
   solo hay una maqueta y el PDF sale de ella.

   Dos clases forman el contrato con las pantallas:
     .no-impresion    → se ve en pantalla, NO se imprime (filtros, botones)
     .solo-impresion  → NO se ve en pantalla, sí se imprime (encabezado del papel)
   ═══════════════════════════════════════════════════════════════════════════ */

.solo-impresion {
    display: none;
}

@media print {

    @page {
        size: A4 portrait;
        margin: 14mm 12mm;
    }

    html, body {
        background: #fff !important;
        color: #000 !important;
        font-size: 10pt;
    }

    /* ── Nada del armazón de la aplicación llega al papel ──────────────── */
    .topbar,
    .sidebar,
    .no-impresion,
    .page-header,
    #blazor-error-ui,
    #feedback-host,
    .k-animation-container,
    .k-notification-container,
    .asistente-panel,
    .asistente-lanzador {
        display: none !important;
    }

    /* El armazón usa scroll y alturas fijas; en papel todo tiene que fluir o
       solo se imprime lo que cabía en la ventana. */
    .app-shell,
    .app-body,
    .content-area,
    .page-content {
        display: block !important;
        overflow: visible !important;
        height: auto !important;
        max-height: none !important;
        padding: 0 !important;
        margin: 0 !important;
        border: 0 !important;
        background: #fff !important;
    }

    .solo-impresion {
        display: block !important;
    }

    /* ── Encabezado del papel ──────────────────────────────────────────── */
    .print-encabezado {
        border-bottom: 1.5pt solid #000;
        padding-bottom: 4pt;
        margin-bottom: 8pt;
    }

    .print-encabezado .print-empresa {
        font-size: 12pt;
        font-weight: 700;
    }

    .print-encabezado .print-titulo {
        font-size: 11pt;
        font-weight: 600;
    }

    .print-encabezado .print-dato {
        font-size: 8.5pt;
        color: #333;
    }

    /* ── Tarjetas ──────────────────────────────────────────────────────── */
    .card {
        border: 0.5pt solid #999 !important;
        border-radius: 0 !important;
        box-shadow: none !important;
        margin-bottom: 6pt !important;
    }

    .card-header,
    .card-footer {
        background: #f0f0f0 !important;
        border-color: #999 !important;
        padding: 3pt 6pt !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    .card-body {
        padding: 4pt 6pt !important;
    }

    .card-body.p-0 {
        padding: 0 !important;
    }

    /* ── Tablas ────────────────────────────────────────────────────────── */
    table {
        width: 100% !important;
        border-collapse: collapse !important;
    }

    /* Lo que hace legible un reporte de varias hojas: el encabezado de la
       tabla se repite arriba de cada una y los totales abajo. */
    thead { display: table-header-group; }
    tfoot { display: table-footer-group; }

    tr {
        break-inside: avoid;
        page-break-inside: avoid;
    }

    th, td {
        padding: 2pt 4pt !important;
        font-size: 8.5pt !important;
        border: 0.5pt solid #bbb !important;
    }

    thead th {
        background: #e8e8e8 !important;
        border-bottom: 1pt solid #666 !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    /* ── Grids de Telerik ──────────────────────────────────────────────── */
    /* Un TelerikGrid lleva su propio contenedor con alto fijo y scroll: sin
       soltarlo se imprime solo la franja de filas que se veía, y el resto del
       informe desaparece sin dejar rastro en el papel.
       Lo que el CSS NO puede arreglar es la paginación: si el grid está en la
       página 2 de 15, las otras 14 no están en el DOM. De eso se encarga la
       pantalla, expandiendo el grid antes de imprimir (ver BotonImprimir). */
    .k-grid,
    .k-grid-aria-root,
    .k-grid-container,
    .k-grid-content,
    .k-grid-content-locked,
    .k-table-body {
        height: auto !important;
        max-height: none !important;
        overflow: visible !important;
    }

    .k-grid-header,
    .k-grid-header-wrap {
        position: static !important;
    }

    .k-grid-header-wrap,
    .k-grid-content {
        width: auto !important;
    }

    .k-grid {
        border: 0 !important;
    }

    /* Paginador, barra de herramientas, filtros de columna y menús: son para
       operar el grid, no para leerlo. */
    .k-pager,
    .k-grid-pager,
    .k-grid-toolbar,
    .k-filter-row,
    .k-grid-column-menu,
    .k-column-resizer,
    .k-grid .k-checkbox-wrap,
    .k-grid-header .k-icon,
    .k-grid-header .k-svg-icon {
        display: none !important;
    }

    .k-grid td,
    .k-grid th {
        white-space: normal !important;
    }

    /* ── Resumen simplificado (ResumenFiscalCalculo) ───────────────────── */
    /* Esta tabla se desplaza en horizontal: `width: max-content` con columnas
       de 118px mínimo son ~1 650px para los doce meses, y en papel lo que no
       cabe NO se desplaza, se recorta — se perderían los últimos meses sin que
       nada lo avise. Se le suelta el ancho para que se encoja a la hoja. */
    .rf-table-shell,
    .rf-table-scroll {
        overflow: visible !important;
    }

    .rf-table {
        width: 100% !important;
        min-width: 0 !important;
    }

    .rf-th-mes,
    .rf-td-monto {
        min-width: 0 !important;
        width: auto !important;
    }

    .rf-table th,
    .rf-table td {
        font-size: 7.5pt !important;
        padding: 1.5pt 3pt !important;
    }

    /* Las columnas fijas duplican o descolocan celdas al paginar. */
    .rf-sticky-left,
    .rf-sticky-right {
        position: static !important;
        box-shadow: none !important;
    }

    /* ── Tinta ─────────────────────────────────────────────────────────── */
    /* En papel el color no distingue: lo que distingue es el peso y la
       alineación, que ya están. Un negativo sí conserva su marca. */
    .text-primary,
    .text-success,
    .text-danger,
    .text-warning,
    .text-muted,
    .text-success-emphasis,
    .text-warning-emphasis {
        color: #000 !important;
    }

    .table-light,
    .table-success,
    .table-warning,
    .table-danger,
    .bg-primary-subtle,
    .bg-success-subtle,
    .bg-danger-subtle,
    .bg-warning-subtle,
    .bg-light {
        background: #f0f0f0 !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    .badge {
        border: 0.5pt solid #666 !important;
        color: #000 !important;
        font-weight: 600;
    }

    /* Los iconos de lucide son decorativos; en papel solo estorban. */
    [data-lucide],
    svg.lucide {
        display: none !important;
    }

    /* Bootstrap imprime la URL detrás de cada enlace si se lo pide algún
       reset; aquí no interesa ninguna. */
    a[href]::after {
        content: none !important;
    }

    a {
        color: #000 !important;
        text-decoration: none !important;
    }

    /* Un bloque por cuenta no debería quedar partido si cabe entero. */
    .print-bloque {
        break-inside: avoid;
        page-break-inside: avoid;
    }

    /* Las filas de Bootstrap se mantienen en línea: en papel no hay pantallas
       estrechas y partir el balance en dos columnas apiladas lo alarga. */
    .row > [class*="col-"] {
        float: none !important;
    }
}
