/* =====================================================================
   Sistema unificado de impresión / PDF — Agropecuaria Vargas
   ----------------------------------------------------------------------
   - Carga en TODAS las páginas (con media="print" desde base.html).
   - Páginas standalone (recibos, comprobantes, reportes _print) usan la
     clase `.pdf-page` en <body> para activar las reglas también en
     pantalla, no solo al imprimir.
   - Variantes: `.pdf-portrait` (default A4) y `.pdf-landscape`.
   ===================================================================== */

:root {
    --pdf-green-900: #14532d;
    --pdf-green-700: #166534;
    --pdf-green-500: #22c55e;
    --pdf-green-50:  #ecfdf5;
    --pdf-red-900:   #7f1d1d;
    --pdf-red-700:   #991b1b;
    --pdf-red-50:    #fef2f2;
    --pdf-blue-900:  #1e3a5f;
    --pdf-blue-50:   #eff6ff;
    --pdf-amber-50:  #fef3c7;
    --pdf-amber-700: #b45309;
    --pdf-gray-900:  #111827;
    --pdf-gray-700:  #374151;
    --pdf-gray-500:  #6b7280;
    --pdf-gray-300:  #cbd5e1;
    --pdf-gray-100:  #f1f5f9;
    --pdf-gray-50:   #f8fafc;
    --pdf-border:    #cbd5e1;
}

/* ====================== Reglas SOLO para impresión =================== */
@media print {

    @page {
        size: A4 portrait;
        margin: 12mm 10mm 14mm 10mm;
    }
    @page :first { margin-top: 8mm; }

    /* Ocultar todo el chrome del layout y los controles interactivos */
    .av-sidebar, .av-topbar, .av-mobile-toggle,
    .noprint, .no-print,
    nav.av-nav, form.av-card, .av-page-header form,
    .alert, .breadcrumb,
    button, .btn,
    input, select, textarea,
    /* Si el contenedor es un form de filtros lo ocultamos */
    form.av-card, .av-card form,
    /* Iconos decorativos */
    .bi { }
    .av-sidebar, .av-topbar, .av-mobile-toggle,
    .noprint, .no-print,
    .av-content > form, .av-content > .av-card form,
    .alert.alert-dismissible, .breadcrumb,
    button.btn, .btn { display: none !important; }

    /* Mostrar el chrome de impresión */
    .av-print-header { display: block !important; }
    .av-print-footer { display: block !important; }

    /* Reset del cuerpo */
    html, body {
        background: #fff !important;
        color: #000 !important;
        font-size: 10pt;
        font-family: "Helvetica Neue", "Segoe UI", Arial, sans-serif;
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
    }
    body { margin: 0 !important; padding: 0 !important; }

    .av-main   { margin-left: 0 !important; }
    .av-content { padding: 0 !important; }

    /* Cards limpias y sin sombras al imprimir */
    .av-card, .av-card-header, .av-card-body {
        box-shadow: none !important;
        border-radius: 0 !important;
        background: #fff !important;
        margin-bottom: 6pt !important;
    }
    .av-card { border: 1px solid var(--pdf-border) !important; }
    .av-card-header {
        background: var(--pdf-gray-100) !important;
        color: var(--pdf-green-900) !important;
        padding: 4pt 8pt !important;
        font-weight: 700 !important;
        font-size: 9.5pt !important;
        border-bottom: 1px solid var(--pdf-border) !important;
    }
    .av-card-body { padding: 6pt 8pt !important; }

    /* KPIs compactos al imprimir */
    .av-kpi {
        box-shadow: none !important;
        border: 1px solid var(--pdf-border) !important;
        padding: 4pt 8pt !important;
        gap: 8pt !important;
    }
    .av-kpi-value { font-size: 12pt !important; }
    .av-kpi-icon  { width: 28pt !important; height: 28pt !important; font-size: 14pt !important; }

    /* Esconder badges y pills decorativos pero mantener su texto */
    .badge { background: transparent !important; color: inherit !important;
             padding: 0 !important; font-weight: 600 !important; }

    /* Tablas */
    table { border-collapse: collapse !important; width: 100% !important;
            page-break-inside: auto; }
    table th, table td {
        border: 1px solid var(--pdf-border) !important;
        padding: 3pt 5pt !important;
        font-size: 8.5pt !important;
        line-height: 1.25 !important;
        word-wrap: break-word;
        overflow-wrap: anywhere;
    }
    table thead th {
        background: var(--pdf-gray-100) !important;
        color: var(--pdf-green-900) !important;
        font-weight: 700 !important;
        text-transform: uppercase;
        font-size: 7.8pt !important;
        letter-spacing: .03em;
    }
    table tfoot td {
        background: var(--pdf-amber-50) !important;
        font-weight: 700 !important;
    }
    table.table-dark thead th, .table-dark th {
        background: var(--pdf-green-900) !important; color: #fff !important;
    }
    table.table-secondary, .table-secondary { background: var(--pdf-gray-100) !important; }
    table.table-light, .table-light { background: var(--pdf-gray-50) !important; }

    tr { page-break-inside: avoid; }
    thead { display: table-header-group; }
    tfoot { display: table-footer-group; }

    /* Texto y utilitarios */
    a[href]::after { content: "" !important; }
    .text-money { white-space: nowrap; font-variant-numeric: tabular-nums; }
    .text-muted-soft { color: var(--pdf-gray-500) !important; }
    .text-success { color: var(--pdf-green-700) !important; }
    .text-danger  { color: var(--pdf-red-700) !important; }

    /* Encabezado de impresión "bonito" para páginas que extienden layout */
    .av-print-header {
        border-bottom: 2.5pt solid var(--pdf-green-900);
        padding-bottom: 6pt;
        margin-bottom: 10pt;
    }
    .av-print-header .brand {
        display: flex; gap: 10pt; align-items: center;
        justify-content: space-between;
    }
    .av-print-header .brand-info { display: flex; gap: 10pt; align-items: center; }
    .av-print-header img.logo    { max-height: 36pt; width: auto; }
    .av-print-header h1          { font-size: 13pt; margin: 0;
                                    color: var(--pdf-green-900); font-weight: 800;
                                    letter-spacing: .02em; }
    .av-print-header small       { font-size: 7.5pt; color: var(--pdf-gray-500); }
    .av-print-header .titulo     { font-size: 11pt; font-weight: 700;
                                    color: var(--pdf-green-900);
                                    margin-top: 6pt; text-transform: uppercase;
                                    letter-spacing: .05em; }
    .av-print-header .subtitulo  { font-size: 8.5pt; color: var(--pdf-gray-500);
                                    margin-top: 1pt; }
    .av-print-header .meta       { text-align: right; font-size: 7.5pt;
                                    color: var(--pdf-gray-500); }

    /* Page-break helpers */
    .page-break-before { page-break-before: always; }
    .page-break-after  { page-break-after: always; }
    .page-break-avoid  { page-break-inside: avoid; }

    /* Charts en impresión: ocultar (no se renderizan bien) */
    canvas { display: none !important; }
    .av-mes-canvas-wrap { display: none !important; }

    /* Páginas que requieren orientación landscape: agregar `.pdf-landscape` al body */
    body.pdf-landscape { }

    /* Forzar visibilidad del bloque principal */
    .av-page-header > div:first-child { display: block !important; }

    /* Cuando hay comparativo/libros muy anchos */
    body.pdf-landscape table th,
    body.pdf-landscape table td { font-size: 8pt !important; padding: 2.5pt 4pt !important; }
}

/* Para páginas standalone también queremos landscape */
@media print {
    body.pdf-landscape, .pdf-landscape body { }
}
@page pdf-land { size: A4 landscape; margin: 10mm 8mm 12mm 8mm; }
@media print { body.pdf-landscape { page: pdf-land; } }

/* =====================================================================
   Reglas para páginas standalone (`.pdf-page` en body)
   Aplica TANTO en pantalla como al imprimir, para que el documento
   se vea como PDF también en el navegador.
   ===================================================================== */

body.pdf-page {
    margin: 0;
    background: #e7eaf0;
    color: #111827;
    font-family: "Helvetica Neue", "Segoe UI", Arial, sans-serif;
    font-size: 11pt;
    line-height: 1.4;
    -webkit-font-smoothing: antialiased;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}
body.pdf-page .pdf-toolbar {
    position: sticky; top: 0; z-index: 5;
    background: #1e293b; color: #fff;
    padding: 10px 20px;
    display: flex; gap: 10px;
    justify-content: flex-end; align-items: center;
    box-shadow: 0 1px 6px rgba(0,0,0,.18);
}
body.pdf-page .pdf-toolbar .pdf-title {
    flex: 1; font-size: 13px; opacity: .85; font-weight: 500;
}
body.pdf-page .pdf-toolbar .pdf-btn {
    background: #fff; color: #14532d;
    padding: 6px 14px; border-radius: 6px;
    border: 0; font-weight: 600; cursor: pointer;
    text-decoration: none; font-size: 13px;
    display: inline-flex; align-items: center; gap: 6px;
}
body.pdf-page .pdf-toolbar .pdf-btn.secondary {
    background: transparent; color: #fff;
    border: 1px solid rgba(255,255,255,.3);
}
body.pdf-page .pdf-toolbar .pdf-btn:hover { opacity: .92; }

/* Hoja A4 simulada en pantalla (210mm x 297mm) */
body.pdf-page .pdf-sheet {
    background: #fff;
    width: 210mm;
    min-height: 297mm;
    margin: 16px auto;
    padding: 14mm 12mm;
    box-shadow: 0 2px 16px rgba(0,0,0,.18);
    color: #1f2937;
    box-sizing: border-box;
}
body.pdf-landscape.pdf-page .pdf-sheet {
    width: 297mm;
    min-height: 210mm;
    padding: 10mm 12mm;
}

/* En impresión la hoja debe ocupar todo y sin sombra */
@media print {
    body.pdf-page { background: #fff; padding: 0; margin: 0; }
    body.pdf-page .pdf-toolbar { display: none !important; }
    body.pdf-page .pdf-sheet {
        width: auto; min-height: 0; margin: 0; padding: 0; box-shadow: none;
    }
}

/* ----- Encabezado del documento PDF ----- */
.pdf-doc-header {
    display: table;
    width: 100%;
    border-bottom: 2.5pt solid var(--pdf-green-900);
    padding-bottom: 8pt;
    margin-bottom: 12pt;
}
.pdf-doc-header .brand-cell { display: table-cell; vertical-align: middle; }
.pdf-doc-header .meta-cell  { display: table-cell; vertical-align: middle;
                              text-align: right; width: 38%; }
.pdf-doc-header .logo {
    width: 50pt; height: 50pt; object-fit: contain; vertical-align: middle;
    margin-right: 10pt;
    -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.pdf-doc-header .brand-text {
    display: inline-block; vertical-align: middle;
}
.pdf-doc-header .brand-name {
    font-size: 14pt; font-weight: 800; color: var(--pdf-green-900);
    letter-spacing: .02em; line-height: 1.1; margin: 0;
}
.pdf-doc-header .brand-sub {
    font-size: 8pt; color: var(--pdf-gray-500); margin-top: 2pt;
}
.pdf-doc-header .meta-line {
    font-size: 8pt; color: var(--pdf-gray-500); line-height: 1.4;
}
.pdf-doc-header .meta-line strong { color: var(--pdf-gray-900); }

/* Variante "rojo" del header (para retenciones IVA) */
.pdf-doc-header.theme-red { border-bottom-color: var(--pdf-red-900); }
.pdf-doc-header.theme-red .brand-name { color: var(--pdf-red-900); }
.pdf-doc-header.theme-blue { border-bottom-color: var(--pdf-blue-900); }
.pdf-doc-header.theme-blue .brand-name { color: var(--pdf-blue-900); }

/* Título principal del reporte */
.pdf-title-block {
    text-align: center;
    margin: 8pt 0 14pt;
}
.pdf-title-block h2 {
    font-size: 14pt; font-weight: 800;
    color: var(--pdf-green-900);
    margin: 0; padding: 0;
    text-transform: uppercase;
    letter-spacing: .06em;
}
.pdf-title-block .pdf-subtitle {
    font-size: 9pt; color: var(--pdf-gray-500); margin-top: 3pt;
}
.pdf-doc-header.theme-red ~ .pdf-title-block h2 { color: var(--pdf-red-900); }
.pdf-doc-header.theme-blue ~ .pdf-title-block h2 { color: var(--pdf-blue-900); }

/* Bloque ("card") usado dentro del PDF */
.pdf-block {
    border: 1px solid var(--pdf-border);
    margin-bottom: 10pt;
    page-break-inside: avoid;
    background: #fff;
}
.pdf-block-head {
    background: var(--pdf-green-900);
    color: #fff;
    padding: 5pt 9pt;
    font-weight: 700; font-size: 9.5pt;
    text-transform: uppercase; letter-spacing: .04em;
    display: flex; justify-content: space-between; align-items: center;
}
.pdf-block-head.theme-red { background: var(--pdf-red-900); }
.pdf-block-head.theme-blue { background: var(--pdf-blue-900); }
.pdf-block-head.theme-green-soft { background: var(--pdf-green-700); }
.pdf-block-body { padding: 7pt 9pt; }

/* Sub-sección dentro de bloques */
.pdf-subsection {
    background: var(--pdf-green-50);
    color: var(--pdf-green-900);
    border-left: 3pt solid var(--pdf-green-900);
    padding: 4pt 9pt;
    font-weight: 700; font-size: 9pt;
    display: flex; justify-content: space-between; align-items: center;
    margin: 6pt 0 4pt;
}
.pdf-subsection.theme-blue {
    background: var(--pdf-blue-50);
    color: var(--pdf-blue-900);
    border-left-color: var(--pdf-blue-900);
}

/* Tabla */
.pdf-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 8.8pt;
    table-layout: auto;
}
.pdf-table th, .pdf-table td {
    border: 1px solid var(--pdf-border);
    padding: 3.5pt 5pt;
    line-height: 1.25;
    word-wrap: break-word;
    overflow-wrap: anywhere;
    vertical-align: middle;
}
.pdf-table thead th {
    background: var(--pdf-green-900);
    color: #fff;
    text-align: center;
    font-weight: 700;
    font-size: 7.8pt;
    text-transform: uppercase; letter-spacing: .03em;
}
.pdf-table.theme-red thead th  { background: var(--pdf-red-900); }
.pdf-table.theme-blue thead th { background: var(--pdf-blue-900); }
.pdf-table.theme-light thead th {
    background: var(--pdf-gray-100); color: var(--pdf-green-900);
}
.pdf-table tbody tr:nth-child(even) td {
    background: var(--pdf-gray-50);
}
.pdf-table tfoot td {
    background: var(--pdf-amber-50);
    font-weight: 700;
}
.pdf-table .right  { text-align: right; }
.pdf-table .center { text-align: center; }
.pdf-table .num    { font-variant-numeric: tabular-nums; white-space: nowrap; }
.pdf-table .muted  { color: var(--pdf-gray-500); }

.pdf-table.compact th, .pdf-table.compact td { padding: 2.5pt 4pt; font-size: 7.8pt; }

.pdf-block-body > .pdf-table { border: 0; }
.pdf-block-body > .pdf-table th:first-child,
.pdf-block-body > .pdf-table td:first-child { border-left: 0; }
.pdf-block-body > .pdf-table th:last-child,
.pdf-block-body > .pdf-table td:last-child { border-right: 0; }

/* Cuadro de info (datos del agente / beneficiario en retenciones, etc.) */
.pdf-info-box {
    border: 1px solid var(--pdf-border);
    padding: 6pt 9pt;
    margin-bottom: 6pt;
    page-break-inside: avoid;
}
.pdf-info-box .pdf-info-title {
    font-weight: 700; font-size: 9pt;
    color: var(--pdf-green-900);
    text-transform: uppercase; letter-spacing: .04em;
    border-bottom: 1px solid var(--pdf-border);
    padding-bottom: 3pt; margin-bottom: 5pt;
}
.pdf-info-box.theme-red .pdf-info-title  { color: var(--pdf-red-900); }
.pdf-info-box.theme-blue .pdf-info-title { color: var(--pdf-blue-900); }
.pdf-info-box .pdf-info-row {
    display: table-row; font-size: 9pt;
}
.pdf-info-box .pdf-info-row > * { display: table-cell; padding: 2pt 0; }
.pdf-info-box .pdf-info-row .label {
    width: 110pt; font-weight: 600; color: var(--pdf-gray-700);
    padding-right: 8pt;
}
.pdf-info-box .pdf-info-grid { display: table; width: 100%; }

/* KPIs en PDFs */
.pdf-kpis { display: table; width: 100%; margin-bottom: 10pt; }
.pdf-kpi {
    display: table-cell;
    border: 1px solid var(--pdf-border);
    padding: 6pt 8pt;
    text-align: center;
    background: #fff;
}
.pdf-kpi + .pdf-kpi { border-left: 0; }
.pdf-kpi .label {
    font-size: 7.5pt; color: var(--pdf-gray-500);
    text-transform: uppercase; letter-spacing: .04em;
}
.pdf-kpi .value {
    font-size: 13pt; font-weight: 800; margin-top: 2pt;
    color: var(--pdf-green-900); font-variant-numeric: tabular-nums;
}
.pdf-kpi.theme-red   { background: var(--pdf-red-50); }
.pdf-kpi.theme-red   .value { color: var(--pdf-red-900); }
.pdf-kpi.theme-green { background: var(--pdf-green-50); }
.pdf-kpi.theme-green .value { color: var(--pdf-green-900); }
.pdf-kpi.theme-blue  { background: var(--pdf-blue-50); }
.pdf-kpi.theme-blue  .value { color: var(--pdf-blue-900); }
.pdf-kpi.theme-amber { background: var(--pdf-amber-50); }
.pdf-kpi.theme-amber .value { color: var(--pdf-amber-700); }

/* Balance / total destacado al pie */
.pdf-balance {
    display: flex; justify-content: space-between; align-items: center;
    padding: 9pt 14pt; margin-top: 12pt;
    border: 1.5pt solid var(--pdf-green-900);
    background: var(--pdf-green-50);
    font-weight: 700; font-size: 11pt;
    color: var(--pdf-green-900);
    page-break-inside: avoid;
}
.pdf-balance.neg { background: var(--pdf-red-50); border-color: var(--pdf-red-900); color: var(--pdf-red-900); }
.pdf-balance .amount { font-size: 14pt; font-variant-numeric: tabular-nums; }

/* Bloque firma (retenciones) */
.pdf-firmas {
    display: table; width: 100%; margin-top: 30pt;
    page-break-inside: avoid;
}
.pdf-firmas .col {
    display: table-cell; width: 50%;
    padding: 0 10pt;
    font-size: 9pt;
}
.pdf-firmas .col.right { text-align: right; }
.pdf-firmas .firma-line {
    margin-top: 36pt;
    border-top: 1px solid var(--pdf-gray-700);
    padding-top: 3pt;
    font-weight: 600;
}
.pdf-firmas .firma-fecha {
    margin-top: 4pt; color: var(--pdf-gray-500); font-size: 8.5pt;
}

/* Pie del documento */
.pdf-doc-footer {
    margin-top: 12pt;
    padding-top: 6pt;
    border-top: 1px dashed var(--pdf-gray-300);
    text-align: center;
    font-size: 7.5pt;
    color: var(--pdf-gray-500);
    line-height: 1.4;
}

/* Watermark "ANULADO" */
.pdf-watermark {
    position: fixed;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%) rotate(-28deg);
    font-size: 110pt;
    font-weight: 800;
    color: rgba(220, 38, 38, .14);
    pointer-events: none;
    z-index: 50;
    letter-spacing: .1em;
    -webkit-print-color-adjust: exact; print-color-adjust: exact;
}

/* Banda "ANULADO" inline (alternativa visible siempre) */
.pdf-anulado {
    background: var(--pdf-red-50);
    border: 1.5pt solid var(--pdf-red-900);
    color: var(--pdf-red-900);
    padding: 6pt 10pt;
    margin: 8pt 0;
    font-weight: 700;
    font-size: 9.5pt;
    text-align: center;
    text-transform: uppercase;
    letter-spacing: .08em;
}

/* Helpers de texto en PDF */
.pdf-page .text-end, .pdf-page .right { text-align: right; }
.pdf-page .text-center, .pdf-page .center { text-align: center; }
.pdf-page .num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.pdf-page .muted { color: var(--pdf-gray-500); }
.pdf-page .pos { color: var(--pdf-green-700); font-weight: 600; }
.pdf-page .neg { color: var(--pdf-red-700); font-weight: 600; }

/* Botón flotante de impresión cuando está en pantalla */
@media screen {
    body.pdf-page .pdf-toolbar { display: flex; }
}
