/*
  Impressão das telas de apresentação (Resumo Executivo e Analítico).

  Pedido do cliente, 2026-08-13: poder imprimir e salvar em PDF. O caminho
  escolhido foi a impressão do navegador (window.print()) e não PDF gerado no
  servidor: o diálogo do navegador já entrega "Salvar como PDF" no mesmo lugar,
  sem Chromium headless dentro do container. O Padrao_PDF_Documento da vault
  rege o outro caminho, o de PDF que o SISTEMA gera, e continua valendo se um
  dia for preciso anexar o arquivo automaticamente em e-mail.

  A vault não tem nota de folha de impressão: a Responsividade_Sempre (linha
  223) lista "print stylesheet" justamente como lacuna. Então aqui vale a regra
  geral do Sistema_de_Estilos, cor só por token, e mais nada inventado.
*/

/* O cabeçalho do papel não existe na tela: lá quem dá contexto é a topbar e a
   barra de filtros, que não vão para a impressão. */
.print-cab { display: none; }

@media print {

  /* 1. Sai o chrome do sistema. Nada aqui é conteúdo do relatório: são
     controles, e controle impresso é tinta gasta numa coisa que não clica. */
  .sidebar,
  .topbar,
  .btn-sair-apresentacao,
  .btn-sidebar-abrir,
  .cfg-overlay,
  .loading-overlay,
  .dre-filtros,
  .dre-tabela-topo,
  .aviso-inativa,
  .flash,
  .page-head { display: none !important; }

  /* 2. O conteúdo ocupa a folha inteira. Sem isto o .main mantém a margem
     esquerda da sidebar que acabou de sumir e o relatório sai deslocado. */
  .app-shell { display: block !important; }
  .main { margin-left: 0 !important; }
  .content { max-width: none !important; padding: 0 !important; }
  body { background: var(--branco) !important; }

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

  /* 3. Fundo e cor impressos. Sem isto o navegador descarta fundo colorido:
     o herói sai branco e o prejuízo em vermelho vira preto, ou seja o sinal
     que a tela usa para dizer "atenção" some justamente no papel. */
  * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }

  /* 4. Cabeçalho do relatório, só no papel */
  .print-cab {
    display: block;
    border-bottom: 2px solid var(--tinta);
    padding-bottom: var(--sp-2);
    margin-bottom: var(--sp-3);
  }
  .print-cab .pc-topo {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: var(--sp-4);
  }
  .print-cab .pc-marca {
    font-family: var(--font-display);
    font-weight: 800;
    font-size: var(--fs-lg);
    color: var(--tinta);
  }
  .print-cab .pc-marca sup { font-size: 8px; vertical-align: super; }
  .print-cab .pc-marca small {
    display: block;
    font-family: var(--font);
    font-weight: 500;
    font-size: 9px;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--texto-secundario);
  }
  .print-cab .pc-emissao { font-size: var(--fs-xs); color: var(--texto-secundario); }
  .print-cab .pc-titulo {
    font-family: var(--font-display);
    font-size: var(--fs-xl);
    font-weight: 700;
    margin-top: var(--sp-3);
  }
  .print-cab .pc-empresa { font-size: var(--fs-sm); color: var(--texto-secundario); }
  .print-cab .pc-periodo {
    font-family: var(--font-num);
    font-size: var(--fs-sm);
    font-weight: 600;
    margin-top: 2px;
  }

  /* 5. Caixas: sombra é linguagem de tela. No papel vira borda fina, que é o
     que separa bloco em documento impresso. */
  .card, .hero-fech, .kpi-regua {
    box-shadow: none !important;
    border: 1px solid var(--borda) !important;
  }

  /* "Não quebre" só no que cabe numa folha. A caixa da tabela do Analítico
     passa de uma página, e proibir a quebra nela empurraria a tabela inteira
     pra página 2 deixando a primeira em branco — a armadilha que o
     Padrao_PDF_Documento descreve ("buraco branco"). Gráfico e KPI cabem, e
     gráfico partido ao meio não se lê. */
  .card:has(canvas), .hero-fech, .kr-item {
    break-inside: avoid;
    page-break-inside: avoid;
  }

  /* 6. Tabela do Analítico: cabeçalho repete em toda página (senão da segunda
     folha em diante ninguém sabe qual coluna é qual) e linha não parte ao meio.
     Linha mais baixa e fonte de 9pt: cabe mais conta por folha sem virar bula,
     e a coluna de conta ganha o espaço que as de número não usam. */
  thead { display: table-header-group; }
  tr { break-inside: avoid; page-break-inside: avoid; }
  .table { width: 100% !important; font-size: 9pt; }
  .table th, .table td { padding: 3px 8px !important; }
  .table th { border-bottom: 1px solid var(--tinta) !important; }
  .card > div[style*="overflow-x"] { overflow: visible !important; }

  /* 7. Gráficos: o canvas guarda o próprio bitmap, só não pode estourar a
     largura da folha. Altura acompanha para não deformar. */
  canvas { max-width: 100% !important; height: auto !important; }

  /* 8. A folha A4 tem ~19cm úteis, não é celular. Sem isto valeriam os
     breakpoints de tela estreita do projeto (860px e 900px), que empilham a
     régua de KPIs em 3 blocos e põem um gráfico embaixo do outro: o Resumo
     saía em 2 folhas com metade da segunda em branco. Aqui a régua volta a ser
     régua e os dois gráficos voltam a dividir a linha. */
  .kpi-regua { grid-template-columns: repeat(3, 1fr) !important; }
  .kr-item { border-left: 1px solid var(--borda) !important; border-top: none !important; }
  .kr-item:first-child { border-left: none !important; }
  .charts-grid { grid-template-columns: 1fr 1fr !important; }

  /* Escala do papel: na tela o herói é a linha final do DRE em 46px, o que no
     A4 come um terço da folha. Reduzido no papel, mantendo a hierarquia (o
     valor continua o maior número da página). */
  .hero-fech { padding: 14px 18px 12px !important; margin-bottom: 10px !important; }
  .hf-valor { font-size: 30px !important; }
  .kr-item { padding: 10px 14px 8px !important; }
  .kr-val { font-size: 18px !important; }
  .card { padding: 12px 14px !important; margin-bottom: 10px !important; }
  .kpi-regua { margin-bottom: 10px !important; }
  .charts-grid { gap: 10px !important; }

  /* 9. Link não vira "texto (http://...)": aqui não há link de conteúdo, só
     navegação, e o rodapé com URL só polui. */
  a[href]::after { content: none !important; }
}
