/* ==========================================================================
   Impressão — A4 retrato.

   Carregado com media="print", então tudo aqui vale só no papel e no
   "Salvar como PDF" do navegador. A folha já é a unidade de composição na
   tela (.documento tem a largura útil da A4), de modo que este arquivo só
   remove a moldura da tela e cuida das quebras de página.
   ========================================================================== */

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

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

/* Fora do papel: barra de filtros, estados de tela e qualquer controle. */
.no-print,
.barra,
.barra-estado,
.vazio,
.carregando {
  display: none !important;
}

#palco { padding: 0 !important; }

/* O documento passa a ser a própria folha. */
.documento {
  width: auto !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  background: #fff !important;
}

/* Cabeçalho institucional não se separa. */
.doc-cabecalho { break-inside: avoid; page-break-inside: avoid; }

/* Relatório do município: cada escola abre uma folha nova.
   Assim o documento vira um caderno de fichas — a folha de uma escola pode ser
   destacada e entregue a ela sem carregar o pedaço da escola anterior. */
.escola-bloco {
  break-before: page;
  page-break-before: always;
  padding-top: 0;
  /* O bloco em si pode fluir: escolas com muitas turmas passam de uma folha, e
     proibir a quebra deixaria meia página vazia. */
  break-inside: auto;
  page-break-inside: auto;
}

/* A primeira não: ela aproveita a folha do cabeçalho, que de outro modo teria
   só o timbre e o resumo do município. */
.escola-bloco:first-child {
  break-before: auto;
  page-break-before: auto;
}

.mun-identificacao  { break-inside: avoid; page-break-inside: avoid; break-after: avoid; }
.escola-cabecalho   { break-inside: avoid; page-break-inside: avoid;
                      break-after: avoid;  page-break-after: avoid;
                      -webkit-print-color-adjust: exact; print-color-adjust: exact; }

/* Cada área tenta caber inteira; quando não cabe, quebra antes do título,
   nunca deixando o cabeçalho da área órfão no pé da página. */
/*
.area {
  break-inside: avoid;
  page-break-inside: avoid;
  padding-top: 14px;
}
.secao-cabecalho,
.area-cabecalho {
  break-after: avoid;
  page-break-after: avoid;
}
*/
/* A ficha da escola sai inteira ou vai para a próxima página. */
.ficha { break-inside: avoid; page-break-inside: avoid; }

/* O fundo cinza das faixas e das células carrega a estrutura do documento:
   sem ele a grade perde as divisões no papel. */
.secao-cabecalho,
.area-cabecalho,
.ficha,
.ident,
.ident-celula,
.resp,
.resp-celula,
.resp-papel {
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

/* Áreas longas (listas nominais) podem fluir entre páginas, mas nunca
   partindo uma linha da tabela ao meio. */
.area-longa { break-inside: auto; page-break-inside: auto; }
.tabela-doc { break-inside: auto; page-break-inside: auto; }
.tabela-doc tr { break-inside: avoid; page-break-inside: avoid; }
.tabela-doc thead { display: table-header-group; }  /* repete o cabeçalho */

.kpis  { break-inside: avoid; page-break-inside: avoid; }
.kpi   { break-inside: avoid; page-break-inside: avoid; }
.grafico { break-inside: avoid; page-break-inside: avoid; }

/* A faixa de indicadores não se separa da tabela que ela resume. */
.kpis { break-after: avoid; page-break-after: avoid; }

/* Nem o rótulo se separa dos cartões que ele nomeia: "Professores em formação"
   sozinho no pé da página não diria nada. */
.sub-rotulo { break-after: avoid; page-break-after: avoid; break-inside: avoid; }

/* Relato longo pode fluir entre páginas — há respostas de três mil caracteres
   e forçá-las a caber numa página deixaria meia folha vazia. O rótulo, esse
   sim, não se separa do texto que ele nomeia. */
.relato        { break-inside: auto; page-break-inside: auto; }
.relato-rotulo { break-after: avoid; page-break-after: avoid; }

/* O bloco do ENEM NÃO leva break-inside: avoid — há relatos de 3.272
   caracteres, e proibir a quebra de um bloco maior que a página faz o
   navegador abandonar a folha atual e deixar meia página em branco. */
.enem { break-inside: auto; page-break-inside: auto; }

/* O total não se separa da tabela que ele fecha. */
.total-doc {
  break-before: avoid; page-break-before: avoid;
  break-inside: avoid; page-break-inside: avoid;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

/* A lista por componente pode fluir entre páginas (há escolas com dezenas de
   componentes), mas nenhum item quebra ao meio. */
.por-componente li { break-inside: avoid; page-break-inside: avoid; }
.pc-pontos { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.relato,
.relatos {
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

/* Turma encerrada precisa continuar distinguível no papel, onde não há cor
   de fundo para ajudar — o selo carrega a informação sozinho. */
.selo-inativo {
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}
.linha-inativa td { color: #6b7480 !important; }

/* Um alerta de carga horária que sumisse na impressão não serviria para nada:
   é justamente o que a gestão leva para a reunião. */
.alerta,
.selo-falta,
.linha-alerta td,
.kpi-alerta,
.kpi-alerta .kpi-valor,
.kpi-alerta .kpi-rotulo {
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

/* O fundo da oferta nova e os quadrados da legenda precisam sair impressos —
   sem eles a legenda explicaria uma cor que não está na folha. Numa impressora
   monocromática viram tons de cinza distintos, e a legenda continua os
   nomeando. */
.linha-nova td,
.legenda-cor {
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}
.legenda { break-inside: avoid; page-break-inside: avoid; break-before: avoid; }

/* Os cartões perdem o fundo cinza no papel (regra acima), mas o de alerta
   mantém o seu — é o que separa o indicador que pede ação dos demais. */
.kpi-alerta { background: var(--alerta-suave) !important; border-color: #e6b9b0 !important; }

/* Cartões de condição: a barra colorida e o ícone saem impressos. Mesmo sem
   eles — numa impressora monocromática — o estado continua escrito por
   extenso e o ícone tem forma própria, então nada se perde. */
.labs,
.lab,
.lab-icone {
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}
.labs { break-inside: avoid; page-break-inside: avoid; }
.lab  { break-inside: avoid; page-break-inside: avoid; background: #fff !important; }
.lab-critico { background: var(--alerta-suave) !important; }
.alerta { break-inside: avoid; page-break-inside: avoid; break-after: avoid; page-break-after: avoid; }

/* Superfícies cinzas somem no papel; o traço basta. */
.kpi {
  background: #fff !important;
  border: 1px solid #c9d0d8 !important;
}
.kpi-destaque { border-color: #8aa8a3 !important; }

/* O Chrome descarta cores de fundo por padrão; onde a cor carrega
   significado (a barra do acento, os gráficos), forçamos a impressão. */
.area-titulo::before,
.grafico,
.grafico canvas {
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

.doc-rodape {
  break-inside: avoid;
  page-break-inside: avoid;
  margin-top: 18px;
}

/* Links do documento não devem aparecer como URL no papel. */
a[href]::after { content: none !important; }
