/* =============================================================================
   Impressão → PDF executivo.
   Saída vetorial (texto selecionável, gráficos nítidos em qualquer zoom).
   No Chrome/Edge: Ctrl+P → Destino "Salvar como PDF" → Margens "Padrão" e
   "Gráficos de plano de fundo" LIGADO.
   ========================================================================== */

@media print {

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

  /* Impressão sempre no tema claro: economiza tinta e é o que o cliente espera.
     Mesmas cores institucionais, com cinzas um pouco mais firmes para o papel.

     Os seletores de tema precisam ser repetidos aqui: `:root[data-tema="escuro"]`
     tem especificidade maior que `:root`, então um `:root` sozinho perderia e o
     relatório sairia impresso com os tokens escuros. Como este arquivo é
     carregado depois do app.css, empatar na especificidade basta para vencer. */
  :root,
  :root[data-tema="escuro"],
  :root[data-tema="claro"],
  :root:not([data-tema="claro"]) {
    --surface-1:      #ffffff;
    --page:           #ffffff;
    --surface-2:      #eef2f7;
    --text-primary:   #0a1e42;
    --text-secondary: #3f4a5a;
    --muted:          #5f6b7a;
    --grid:           #dde3ec;
    --axis:           #b6c0cf;
    --border:         #d5dce6;
    --sombra:         none;
    --series-1: #1565c0;
    --series-2: #e2661f;
    --series-3: #109c81;
    --delta-good: #04711f;
  }

  html, body {
    background: #fff;
    font-size: 10.5pt;
  }

  /* Some tudo que é interface. */
  .app-topo,
  .app-nav,
  .barra-filtros,
  .rel-config,
  .btn,
  .btn-linha,
  .gp-tooltip,
  .mensagem,
  .nao-imprimir,
  .gp-tabela-twin summary,
  /* Sub-abas sao navegacao: no papel viram ruido antes do documento. */
  .sub-abas {
    display: none !important;
  }

  main { padding: 0; max-width: none; }
  .vista { display: none !important; }
  .vista.ativa { display: block !important; }

  /* Imprime a vista de onde a impressão partiu — nada mais.

     Antes esta regra reexibia `#vista-relatorio` pelo id, porque o relatório de
     perdas era o único documento imprimível. Quando a Pauta ganhou o próprio
     PDF, ela continuava escondida junto com as demais vistas e a página saía
     completamente em branco. A vista ativa é, por definição, aquela em que o
     usuário está quando clica em gerar — é ela que deve sair. */
  body.imprimindo .vista { display: none !important; }
  body.imprimindo .vista.ativa { display: block !important; }

  .painel, .gp-card, .kpi {
    box-shadow: none;
    border: 1px solid var(--border);
    break-inside: avoid;
  }

  /* --------------------------------------------------------- documento --- */

  .doc { max-width: none; }

  /* Capa institucional em papel branco.
     Sem fundo colorido e sem sangria: a capa ocupa a mancha normal da página.
     Ganho colateral — é a única parte do documento que deixou de depender de
     "Gráficos de plano de fundo" estar ligado no diálogo de impressão. A tinta
     é o navy da marca; o verde institucional (#00FF00) não sobrevive ao branco. */
  .doc-capa {
    break-after: page;
    min-height: 253mm;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: 34mm 0 10mm;
    margin: 0;
    background: #fff !important;
    border: 0 !important;
    border-radius: 0 !important;
  }
  .doc-capa .capa-titulo {
    font-family: var(--fonte-titulo);
    font-size: 30pt; line-height: 1.12; letter-spacing: -.025em;
    margin: 0 0 8mm; color: var(--marca-navy) !important;
  }
  .doc-capa .capa-cliente {
    font-size: 11pt; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
    margin: 0 0 3mm; color: var(--marca-navy) !important;
  }
  .doc-capa .capa-periodo { font-size: 11.5pt; color: #4b5563 !important; }
  .doc-capa .capa-periodo strong { color: var(--marca-navy) !important; }
  .doc-capa .capa-rodape {
    font-size: 9pt; color: #6b7280 !important;
    border-top: 2px solid var(--marca-navy); padding-top: 4mm;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .doc-capa .capa-logo { max-height: 26mm; max-width: 62mm; margin-bottom: 10mm; }
  /* A marca é imagem, não fundo — imprime mesmo sem "gráficos de plano de
     fundo". Ainda assim o print-color-adjust garante a cor fiel. */
  .doc-capa .capa-assinatura {
    display: block; max-height: 18mm; max-width: 52mm; margin: 0 0 4mm;
    -webkit-print-color-adjust: exact; print-color-adjust: exact;
  }
  .doc-capa .capa-regua {
    width: 34mm; height: 2mm; background: var(--marca-navy);
    margin: 0 0 7mm; border-radius: 1mm;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* Cabeçalho do documento no papel. Sem quebra depois: o conteúdo começa na
     mesma página, que é o ponto de ter trocado a capa por ele. */
  .doc-cabecalho {
    border-bottom: 2px solid var(--marca-navy);
    padding: 0 0 4mm;
    margin: 0 0 6mm;
    break-after: avoid-page;
    break-inside: avoid;
    -webkit-print-color-adjust: exact; print-color-adjust: exact;
  }
  .doc-cabecalho .dc-marcas { margin-bottom: 4mm; }
  .doc-cabecalho .dc-logo {
    max-height: 16mm; max-width: 46mm;
    -webkit-print-color-adjust: exact; print-color-adjust: exact;
  }
  .doc-cabecalho .dc-cliente { font-size: 9pt; margin: 0 0 1mm; color: var(--marca-navy) !important; }
  .doc-cabecalho h1 { font-size: 19pt; margin: 0 0 1.5mm; color: var(--marca-navy) !important; }
  .doc-cabecalho .dc-sub { font-size: 10.5pt; color: #4b5563 !important; }
  .doc-cabecalho .dc-periodo { font-size: 10pt; color: #4b5563 !important; }
  .doc-cabecalho .dc-periodo strong { color: var(--marca-navy) !important; }
  .doc-cabecalho .dc-ident { font-size: 8pt; margin: 3mm 0 0; color: #6b7280 !important; }

  /* Seções densas: `break-inside: avoid` já impede que um quadro se parta ao
     meio. Forçar quebra ANTES de cada seção era o que fazia o relatório gastar
     uma folha por assunto, com metade dela em branco. */
  .doc-secao { break-inside: avoid-page; margin-bottom: 5mm; }
  .doc-secao.quebra-antes { break-before: auto; }

  .doc-secao > h2 {
    font-family: var(--fonte-titulo);
    font-size: 13pt;
    color: var(--marca-navy);
    border-bottom: 1.5px solid var(--marca-navy);
    padding-bottom: 2mm;
    margin-bottom: 4mm;
  }

  h1, h2, h3 { break-after: avoid-page; }
  table { break-inside: auto; }
  tr { break-inside: avoid; break-after: auto; }

  /* Pauta avulsa: a folha já é branca no papel, mas o preto e o justificado
     precisam sobreviver — e a figura não pode ser cortada ao meio nem estourar
     a mancha da página. */
  #documento-avulsa { border: 0; padding: 0; background: #fff !important; color: #000 !important; }
  #documento-avulsa .av-par,
  #documento-avulsa .av-lista,
  #documento-avulsa .av-citacao { color: #000 !important; text-align: justify; }
  .av-figura { break-inside: avoid; page-break-inside: avoid; }
  .av-figura img { max-width: 100%; max-height: 190mm; }
  thead { display: table-header-group; }

  .grade.c2 { grid-template-columns: 1fr 1fr; gap: 5mm; }
  .grade.c3 { grid-template-columns: repeat(3, 1fr); gap: 4mm; }
  .grade.c4 { grid-template-columns: repeat(4, 1fr); gap: 4mm; }

  .kpi { min-height: 0; padding: 3.5mm 4mm; }
  .kpi .valor { font-size: 16pt; }
  .kpi.heroi .valor { font-size: 26pt; }

  .gp-card { padding: 3mm 4mm; margin-bottom: 4mm; }
  .gp-card-cab h3 { margin-bottom: 1mm; }
  .gp-card-cab p { margin: 0 0 2mm; }
  .gp-svg { min-width: 0; }
  .gp-svg-wrap { overflow: visible; }
  /* O gráfico não precisa de meia página: a proporção do SVG é preservada, e
     limitar a altura é o que impede um cartão de empurrar tudo para a folha
     seguinte. */
  .gp-svg-wrap svg { max-height: 62mm; }

  /* Blocos da pauta, mais densos. */
  .pauta-numeros { gap: 3mm; margin-bottom: 3mm; }
  .pauta-numero { padding: 2.5mm 3mm; }
  .pauta-leitura { margin: 0 0 3mm; font-size: 10pt; }
  .pauta-encaminhamento { padding: 3mm 4mm; margin: 0; }
  .painel { padding: 4mm; margin-bottom: 4mm; }
  .rolagem { margin-bottom: 3mm; }
  table.dados th, table.dados td { padding: 1.4mm 2mm; }

  /* A tabela-gêmea vai impressa aberta: no papel não existe tooltip. */
  .gp-tabela-twin[open] table,
  .gp-tabela-twin table { display: table; }
  .gp-tabela-twin { font-size: 8.5pt; }

  .destaques li { background: var(--surface-2); break-inside: avoid; }

  a { color: inherit; text-decoration: none; }

  .rodape-impressao {
    display: block !important;
    font-size: 8pt;
    color: var(--muted);
    border-top: 1px solid var(--border);
    padding-top: 2mm;
    margin-top: 6mm;
  }
}

.rodape-impressao { display: none; }

@media print {
  /* Prestação parcial: as linhas tiradas do cálculo não vão ao papel, e o
     documento não menciona que existem — informação de faturamento que ele
     não selecionou não aparece no relatório apresentado a terceiros. */
  .tabela-selecao tr.linha-fora { display: none !important; }
}

/* =============================================================================
   Módulo Trânsito — relatório de envios no papel.

   A folha acima já esconde a interface e imprime só a vista ativa; aqui ficam
   os ajustes de quem tem tira de índices e barra empilhada.
   ========================================================================== */

@media print {

  /* Na aba Relatórios, o que sai é o relatório: o mural, a fila de importação
     e o modo de teste são operação de tela. */
  #vista-relatorio > .vista-cab,
  #vista-relatorio .barra-filtros,
  .modo-teste,
  .fila-import,
  .dropzone {
    display: none !important;
  }

  /* Cabeçalho do documento: identifica o recorte que os seletores da tela
     definiram e que, no papel, ninguém mais consegue ver. */
  .cab-impressao {
    display: block !important;
    border-bottom: 2px solid var(--marca-navy);
    padding-bottom: 3mm;
    margin-bottom: 6mm;
  }
  .cab-impressao .ci-marca {
    font-size: 9pt; letter-spacing: .1em; text-transform: uppercase;
    color: var(--marca-navy) !important; font-weight: 700;
  }
  .cab-impressao h2 {
    font-family: var(--fonte-titulo);
    font-size: 17pt; margin: 1mm 0 2mm; color: var(--marca-navy) !important;
  }
  .cab-impressao .ci-recorte { font-size: 10pt; color: #3f4a5a !important; }
  .cab-impressao .ci-quando { font-size: 8.5pt; color: #6b7280 !important; }

  /* A tira de índices vira uma faixa de quatro colunas por linha: em A4 ela
     não tem os 1180px da tela, e seis lado a lado sairiam ilegíveis. */
  .indices { break-inside: avoid; box-shadow: none; }
  .indice { flex: 1 1 25%; min-width: 0; }
  .indice .val { font-size: 13pt; }

  /* Tabela do relatório: cabeçalho repetido a cada página e sem rolagem. */
  .tabela-rolagem { overflow: visible !important; }
  .tabela-rolagem table.dados { min-width: 0 !important; font-size: 8.5pt; }
  table.dados thead { display: table-header-group; }
  table.dados tr { break-inside: avoid; }

  /* O gráfico é SVG: sai vetorial, mas precisa caber na largura da mancha. */
  #grafico-relatorio { break-inside: avoid; }
  #grafico-relatorio .gp-svg { max-width: 100%; }

  /* Os selos coloridos das colunas dependem de fundo; sem eles a tabela
     perde a leitura de acerto e erro. */
  .selo, .indice.heroi::before {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* ------------------------------------------------------------- POPs ---- */

  /* O POP impresso é o documento inteiro e nada mais: a ficha de edição, os
     filtros e os botões de bloco já saem pelo `.nao-imprimir`, e o cabeçalho da
     vista não faz parte do procedimento que vai para a parede da loja. */
  #vista-pops > .vista-cab { display: none !important; }

  .pop-doc {
    max-width: none;
    border: 0 !important;
    border-radius: 0 !important;
    padding: 0 !important;
    margin: 0;
    background: #fff !important;
    color: #000 !important;
    font-size: 10.5pt;
  }

  /* O cabeçalho da casa se repete em toda página: quem pega a folha 3 solta na
     loja precisa saber de qual POP e de qual versão ela é. `thead` faz o
     navegador repetir — por isso a tabela do cabeçalho é uma tabela mesmo. */
  .pop-doc-cab { break-inside: avoid; }
  .pop-doc-cab td { border-color: #666 !important; }

  .pop-doc-secao { break-inside: auto; }
  .pop-doc-secao h2, .pop-doc-secao h3 { break-after: avoid; }
  .pop-doc-tabela { break-inside: auto; }
  .pop-doc-tabela tr { break-inside: avoid; }
  .pop-doc-tabela th { background: #e8ecf1 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }

  /* Assinatura e termo de compromisso não se partem entre páginas: meia
     assinatura numa folha e metade na outra invalida o documento na prática. */
  .pop-doc-assinaturas { break-inside: avoid; }
  .pop-doc-termo { break-before: page; break-inside: avoid; }

  .pop-doc-rodape { color: #444 !important; }
}
