/* =====================================================================
   KRELATORIO - A FOLHA.

   Estilo do DOCUMENTO, e nao da tela. Arquivo proprio, carregado por
   ultimo, porque a folha aparece nos dois lugares: como previa na tela e
   como papel na impressao.

   NAO TOCA NO ARQUIVO OFICIAL. `krigs-tokens.css` e `krigs-componentes.css`
   sao compartilhados com o KFROTA e o KEPI, que estao em producao e
   congelados para venda. Toda regra desta folha mora aqui.

   As medidas sao em milimetro e em ponto, e nao em pixel: papel A4 tem
   210 mm e nao tem pixel. Com margem de 12 mm de cada lado sobram 186 mm
   de largura util, e e sobre esse numero que toda coluna foi calculada.
   ===================================================================== */

/* ---------------------------------------------------------------------
   PAGINA NOMEADA, e nao um `@page` nu.
   O arquivo oficial ja declara `@page{ size:A4 portrait; margin:12mm 10mm }`
   para a impressao das telas de listagem. Um segundo `@page` sem nome
   cascatearia por propriedade e mudaria tambem aquelas. A folha usa nome
   proprio e deixa o resto do sistema em paz.

   LIMITE REAL: pagina nomeada so vale no Chromium. Firefox e Safari
   aplicam ao documento inteiro o ultimo `@page` declarado. Consequencia
   pratica: nunca mandar imprimir retrato e paisagem no mesmo trabalho.
   --------------------------------------------------------------------- */
@page documento   { size: A4 portrait;  margin: 10mm 12mm 12mm }
@page documento-p { size: A4 landscape; margin: 10mm 12mm 12mm }

/* ---------------------------------------------------------------------
   PÁGINA X DE Y, NA MARGEM DE BAIXO.
   O Chrome e o Edge desenham caixas de margem do @page desde a versão
   131 (conferido no 153 desta máquina, em PDF). O contador `pages` só
   existe ali, e por isso o número não mora no rodapé da moldura.
   Fica logo abaixo do rodapé, alinhado à direita, no mesmo corpo dele.

   A CAIXA VAZIA NO ALTO É DE PROPÓSITO. Quando a folha declara caixa de
   margem, o navegador deixa de imprimir o cabeçalho e o rodapé dele
   (data da impressão, título da aba, endereço da página), mesmo com a
   opção ligada no diálogo. Sem ela, o endereço do sistema e a hora da
   impressão saíam no documento do cliente.

   Firefox e Safari ignoram as caixas: a folha sai como antes, sem
   número, e nada quebra.
   --------------------------------------------------------------------- */
@page documento {
  @top-right { content: "" }
  @bottom-right {
    content: "Página " counter(page) " de " counter(pages);
    font-family: Arial, "Liberation Sans", Helvetica, sans-serif;
    font-size: 7pt; color: #000; vertical-align: top; padding-top: 1.2mm;
  }
}
@page documento-p {
  @top-right { content: "" }
  @bottom-right {
    content: "Página " counter(page) " de " counter(pages);
    font-family: Arial, "Liberation Sans", Helvetica, sans-serif;
    font-size: 7pt; color: #000; vertical-align: top; padding-top: 1.2mm;
  }
}

.doc           { page: documento }
.doc--paisagem { page: documento-p }

/* ---------------------------------------------------------------------
   A MOLDURA E UMA TABELA.
   `<thead>` e `<tfoot>` sao a UNICA forma portatil de repetir cabecalho e
   rodape em toda folha impressa. `position:fixed` repete no Chrome e no
   Firefox e imprime so na primeira folha no Safari, e este documento vai
   a cliente que abre em iPad.
   --------------------------------------------------------------------- */
.doc-folha { width: 100%; border-collapse: collapse }
.doc-folha > thead { display: table-header-group }
.doc-folha > tfoot { display: table-footer-group }
.doc-folha > thead > tr > td,
.doc-folha > tfoot > tr > td,
.doc-folha > tbody > tr > td { padding: 0; border: 0; vertical-align: top }

/* ARMADILHA DO ARQUIVO OFICIAL, e ela custa a noite de quem nao souber.
   `krigs-componentes.css` tem, dentro de `@media print`, a regra SEM
   ESCOPO `tr{ break-inside:avoid }`. Ela cai no unico `<tr>` do `<tbody>`
   desta moldura e manda o navegador nao partir o documento INTEIRO. O
   resultado nao e um erro visivel: e a folha 1 quase vazia e a paginacao
   toda errada. */
.doc-folha > tbody > tr {
  break-inside: auto !important;
  page-break-inside: auto !important;
}

/* ---------------------------------------------------------------------
   TIPOGRAFIA
   Familia FIXA, e nao `var(--fonte)`. O token da plataforma comeca com
   `-apple-system` e `"Segoe UI"`: um nao existe no Windows, o outro nao
   existe no Mac. A mesma folha quebraria linha em lugar diferente em cada
   maquina, e com a linha muda a pagina. Arial existe nos dois, e
   Liberation Sans e metrica-compativel no Linux do servidor, entao o PDF
   gerado no servidor sai igual ao que o responsavel viu na tela.
   --------------------------------------------------------------------- */
.doc {
  font-family: Arial, "Liberation Sans", Helvetica, sans-serif;
  font-size: 9.5pt;
  line-height: 1.3;
  color: #000;
  background: #fff;
}
.doc h1 { font-size: 12.5pt; font-weight: 700; margin: 0 }
.doc h2 {
  font-size: 10.5pt; font-weight: 700; text-transform: uppercase;
  letter-spacing: .3pt; margin: 5mm 0 2mm; padding-bottom: 1mm;
  border-bottom: .3mm solid #000;
}
.doc h3 {
  font-size: 9pt; font-weight: 700; text-transform: uppercase;
  letter-spacing: .2pt; margin: 3mm 0 1.5mm;
}
.doc p { margin: 0 0 2mm; orphans: 3; widows: 3 }
.doc img { max-width: 100% }

/* ---------------------------------------------------------------------
   A FAIXA QUE REPETE
   --------------------------------------------------------------------- */
.doc-cab {
  padding-bottom: 2mm; border-bottom: .5mm solid #000; margin-bottom: 3.5mm;
}
.doc-cab-topo {
  display: flex; align-items: center; justify-content: space-between; gap: 6mm;
}
.doc-cab-titulo { flex: 1; text-align: center }
.doc-cab-titulo h1 { text-transform: uppercase; letter-spacing: .4pt; line-height: 1.1 }
/* Título que não cabe em uma linha quebra em duas de tamanho parecido
   ("DIÁLOGO DIÁRIO DE / SEGURANÇA" deixava uma palavra sozinha embaixo). */
.doc-cab-titulo h1 { text-wrap: balance }
.doc-cab-titulo .sigla {
  font-size: 7.5pt; letter-spacing: 1.2pt; text-transform: uppercase;
}
.doc-cab-dir { text-align: right; font-size: 8pt; line-height: 1.3; white-space: nowrap }

/* A MARCA: logotipo em cima, nome embaixo. O logotipo e opcional (a
   empresa sobe o dela em Empresas); o nome nunca, porque logotipo
   sozinho nao diz a razao social de quem emitiu o documento. */
.doc-cab-marca { max-width: 48mm; text-align: left }
.doc-cab-marca img {
  /* Teto nos DOIS lados: marca alta demais empurra a faixa e come uma
     linha da tabela em toda folha; marca larga demais espreme o titulo.
     `object-fit: contain` preserva a proporcao seja qual for o arquivo
     que o dono subir. */
  max-height: 14mm; max-width: 44mm; object-fit: contain;
  display: block; margin-bottom: 1mm;
}
.doc-cab-topo .marca-texto {
  font-size: 10pt; font-weight: 700; text-transform: uppercase;
  letter-spacing: .5pt; max-width: 48mm; line-height: 1.1; text-align: left;
}
/* Com logotipo, o nome vira legenda dele e nao pode competir com a
   marca nem com o titulo do documento. */
.doc-cab-marca img + .marca-texto { font-size: 8pt; letter-spacing: .2pt }

/* ---------------------------------------------------------------------
   IDENTIFICACAO: as mesmas doze colunas da tela, para o papel e a tela
   lerem igual. As classes `.campo.l-N` de krelatorio.css estao presas ao
   seletor `.campo` e nao alcancam aqui, entao sao redeclaradas.
   --------------------------------------------------------------------- */
.doc-ident {
  display: grid; grid-template-columns: repeat(12, 1fr);
  margin-bottom: 4mm; break-inside: avoid; page-break-inside: avoid;
}
.doc-ident--jornada { margin-bottom: 5mm }
/* Borda em CADA celula, e nao borda externa com fios internos: depois da
   quebra de linha da grade, o CSS nao sabe qual celula caiu na coluna 12.
   Duas bordas de 0,2 mm encostadas leem como um fio de 0,4 mm, que e o
   desenho de formulario industrial que a casa ja usa. */
.doc-ident .c { border: .2mm solid #000; padding: 1.2mm 2mm; min-height: 9mm }
/* ESCALA MÍNIMA DA FOLHA: rótulo em caixa alta, sigla e rodapé com 7 pt;
   todo texto que se lê como frase ou dado (valor, cargo, data, nota,
   carimbo) com 8 pt ou mais. O rótulo tinha 6,5 pt e sumia na fotocópia. */
.doc-ident .r {
  display: block; font-size: 7pt; font-weight: 700;
  text-transform: uppercase; letter-spacing: .3pt; color: #000;
}
.doc-ident .v { display: block; font-size: 9.5pt; line-height: 1.2 }
/* Ausencia DECLARADA. A regra da plataforma de nunca deixar branco em
   silencio so se cumpre se a explicacao for impressa. */
.doc-ident .v.sem-dado::after { content: "não informado"; font-size: 8pt; color: #444 }

.doc-ident .l-1  { grid-column: span 1 }
.doc-ident .l-2  { grid-column: span 2 }
.doc-ident .l-3  { grid-column: span 3 }
.doc-ident .l-4  { grid-column: span 4 }
.doc-ident .l-5  { grid-column: span 5 }
.doc-ident .l-6  { grid-column: span 6 }
.doc-ident .l-7  { grid-column: span 7 }
.doc-ident .l-8  { grid-column: span 8 }
.doc-ident .l-9  { grid-column: span 9 }
.doc-ident .l-10 { grid-column: span 10 }
.doc-ident .l-11 { grid-column: span 11 }
.doc-ident .l-12 { grid-column: span 12 }

/* ---------------------------------------------------------------------
   TABELAS

   LARGURA PELO CONTEÚDO (`table-layout: auto`), e não fixa. Até
   14/09/2026 era `fixed`, com 18 mm para toda coluna numérica e o resto
   dividido em partes iguais. Dois defeitos saíam disso no PDF:
    · o cabeçalho de coluna numérica ("TORQUE ESPECIFICADO (100%)",
      "PESO DESTE LANÇAMENTO (KG)") não cabia em 18 mm, não podia quebrar
      e passava por cima da coluna vizinha, e o da última coluna saía
      cortado fora da tabela;
    · no RFAB, com 19 colunas, "O que foi fabricado" ganhava os mesmos
      12 mm de "Unidade" e quebrava letra por letra: 20 peças davam 9
      folhas.
   Com `auto`, a coluna fica do tamanho do que ela tem: "Ponto" estreita,
   a descrição larga, o número inteiro na linha dele.

   O RISCO CONHECIDO DO `auto` é uma palavra enorme sem espaço esticar a
   tabela para fora do papel. Ele está coberto assim: célula de texto
   longo (`col-desc`) quebra em qualquer ponto; célula comum quebra entre
   palavras; o cabeçalho quebra entre palavras e nunca no meio de uma. As
   seis declarações foram conferidas nos 600 documentos da homologação
   (100 de cada tipo), com a largura útil do A4, sem nenhuma tabela
   passando do papel.
   --------------------------------------------------------------------- */
.doc table.dados {
  table-layout: auto; width: 100%; border-collapse: collapse;
  font-size: 8.5pt; line-height: 1.15; margin: 0 0 3mm;
}
.doc table.dados thead { display: table-header-group }
.doc table.dados tfoot { display: table-footer-group }
.doc table.dados tr { break-inside: avoid; page-break-inside: avoid }
/* Respiro vertical de 0,8 mm, que é o que o papel já tinha: 1 mm tirava
   quatro linhas por folha numa tabela de torque e empurrava o quadro de
   assinatura para uma folha a mais. */
.doc table.dados th,
.doc table.dados td {
  border: .2mm solid #000; padding: .8mm 1.2mm; vertical-align: top;
  width: auto; overflow-wrap: break-word; word-break: normal;
}
.doc table.dados thead th {
  /* O fio de 0,5 mm e o sinal REAL de cabecalho. O fundo azul e bonus de
     impressora colorida e some na fotocopia, entao nao pode ser o unico
     sinal. */
  border-bottom: .5mm solid #000;
  background: #e8eef7;
  font-size: 7pt; font-weight: 700; text-transform: uppercase;
  text-align: left; vertical-align: bottom;
  /* QUEBRA ENTRE PALAVRAS, e nunca no meio de uma. Cabeçalho de duas
     linhas é normal em tabela técnica; cabeçalho por cima do vizinho é
     coluna que ninguém sabe qual é. */
  white-space: normal; overflow-wrap: normal;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.doc table.dados thead th.num { text-align: right }
.doc table.dados thead th.num,
.doc table.dados thead th.col-cod { white-space: normal }
.doc table.dados tbody tr:nth-child(even) td { background: #fafbfd }

/* O texto longo e a coluna que cede: ela tem piso de largura para nao
   virar uma tira, e quebra em qualquer ponto para nunca empurrar a
   tabela para fora do papel. */
.doc table.dados .col-desc { min-width: 45mm; word-break: normal; hyphens: auto }
.doc table.dados td.col-desc { overflow-wrap: anywhere }
/* Numero NUNCA quebra e NUNCA hifeniza: numero partido em duas linhas e
   pior que numero apertado, e numero cortado e o erro grave. Sem largura
   fixa: a coluna fica com a largura do maior valor dela. */
.doc table.dados .num {
  text-align: right; white-space: nowrap;
  overflow-wrap: normal; word-break: normal; hyphens: none;
  font-variant-numeric: tabular-nums; font-feature-settings: "tnum" 1;
}
.doc table.dados .col-cod { white-space: nowrap }

/* ---------------------------------------------------------------------
   TABELA LARGA (13 colunas ou mais, hoje só as peças do RFAB).
   Em caixa alta, só os cabeçalhos das 19 colunas somam mais que os
   273 mm do A4 deitado. Aqui o cabeçalho sai em caixa normal com 6,5 pt,
   o corpo em 8 pt (o mínimo da folha) e o respiro encolhe. O desenho
   continua o mesmo: negrito, fundo azul claro e fio preto embaixo.

   POR QUE TÃO APERTADO: tabela mais larga que o papel não sai cortada no
   Chrome, sai REDUZIDA. O navegador encolhe a folha inteira para caber,
   inclusive a folha 1, e o corpo de 8 pt vira 7,7 pt sem aviso (medido
   no PDF do RFAB 159/2026, com 7 pt no cabeçalho e 0,8 mm de respiro).
   Com estes números as 100 folhas de RFAB da homologação cabem em 100%.
   Se a declaração ganhar coluna, a conta tem de ser refeita.

   `:has()` conta as colunas sem JavaScript; navegador sem `:has()` fica
   com a tabela comum.
   --------------------------------------------------------------------- */
.doc table.dados:has(> thead > tr > th:nth-child(13)) { font-size: 8pt }
.doc table.dados:has(> thead > tr > th:nth-child(13)) thead th,
.doc:not(.doc--paisagem) table.dados:has(> thead > tr > th:nth-child(9)) thead th {
  text-transform: none; letter-spacing: 0;
}
/* Na folha em pé a conta aperta antes: com 9 colunas ou mais (pontos de
   torque, indicações do RLP) o cabeçalho em caixa alta tomava a largura
   do dado, e "2722-PL-349-J10" saía partido em quatro linhas. Só o
   cabeçalho muda de caixa; corpo e respiro continuam os da folha. */
.doc table.dados:has(> thead > tr > th:nth-child(13)) thead th { font-size: 6.5pt }
.doc table.dados:has(> thead > tr > th:nth-child(13)) th,
.doc table.dados:has(> thead > tr > th:nth-child(13)) td { padding: .5mm .6mm }
.doc table.dados:has(> thead > tr > th:nth-child(13)) .col-desc { min-width: 18mm }

.doc tr.linha-total td {
  /* Peso de traco, e nao cor: em preto e branco o azul vira um cinza
     qualquer, e a linha de total precisa ser reconhecivel na fotocopia. */
  border-top: .8mm solid #000; border-bottom: .8mm solid #000;
  font-weight: 700; font-size: 9pt;
  background: #dbe4f2;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.doc tr.linha-total .rotulo-total { letter-spacing: .5pt }

.doc-nota { font-size: 8pt; color: #444; margin: -1mm 0 3mm }
.doc-nada { font-size: 9pt; color: #444; font-style: italic; margin: 0 0 3mm }

/* ---------------------------------------------------------------------
   TEXTO CORRIDO E TOTAIS
   --------------------------------------------------------------------- */
.doc-texto p { text-align: left; max-width: 100% }
.doc-totais-linha { display: flex; flex-wrap: wrap; gap: 0 }
.doc-totais-linha .t {
  border: .2mm solid #000; padding: 1.5mm 4mm; min-width: 34mm; flex: 1;
}
.doc-totais-linha .r {
  display: block; font-size: 7pt; font-weight: 700; text-transform: uppercase;
  letter-spacing: .3pt;
}
.doc-totais-linha .v {
  display: block; font-size: 13pt; font-weight: 700;
  font-variant-numeric: tabular-nums;
}

/* ---------------------------------------------------------------------
   FOTOS
   A conta: 186 mm de largura util, 3 colunas, vao de 4 mm, da coluna de
   59,3 mm. Menos o respiro e a borda, a imagem tem 55,9 mm. Em 4:3 sao
   41,9 mm de altura, por isso `height:42mm`, que faz a foto deitada
   preencher a caixa sem tarja branca.
   --------------------------------------------------------------------- */
/* AS COLUNAS VÊM DA DECLARAÇÃO do módulo, por variável, e não de um
   número escrito aqui. O RFO pede 3; o RDO e o RDDS usam o padrão. A
   variável tem valor de reserva para o caso de a folha chegar sem ela
   (declaração antiga guardada no aparelho de quem trabalha offline). */
.doc-fotos {
  display: grid;
  grid-template-columns: repeat(var(--doc-fotos-colunas, 3), minmax(0, 1fr));
  gap: 4mm; margin-top: 2mm;
}
.doc-foto {
  border: .2mm solid #000; padding: 1.5mm; margin: 0;
  break-inside: avoid; page-break-inside: avoid;
}
.doc-foto img {
  /* CONTAIN e nao COVER, pela mesma razao ja escrita no `.foto img` do
     krelatorio.css: `cover` corta justamente a solda que o relatorio
     existe para provar. */
  display: block; width: 100%; height: 42mm; object-fit: contain; background: #fff;
}
/* PROPORÇÃO DECLARADA. Quando o módulo diz `proporcao: '4:3'`, a caixa
   passa a acompanhar a largura da coluna em vez de ter altura fixa em
   milímetro: com 3 colunas ou com 5, a foto continua com a mesma cara.
   `max-width: 100%` junto porque caixa com `aspect-ratio` estoura a
   coluna quando a altura manda. */
.doc-fotos[style*="--doc-foto-proporcao"] .doc-foto img {
  height: auto; aspect-ratio: var(--doc-foto-proporcao); max-width: 100%;
}
/* A LEGENDA TEM TETO. Sem ele, uma legenda de 400 caracteres numa
   caixa de 59 mm empurrava a foto inteira para a folha seguinte e
   deixava um buraco branco na anterior. Três linhas cobrem o que se
   escreve de verdade embaixo de uma foto de obra; o resto continua
   gravado e legível na tela, e no papel a foto é que manda. */
.doc-foto figcaption {
  margin-top: 1.2mm; font-size: 8pt; line-height: 1.2;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;
  overflow: hidden;
}
.doc-foto figcaption .n { font-weight: 700 }
/* Quando a maioria e foto em pe, a grade vira quatro colunas mais altas:
   assim quem preenche a caixa e a foto em pe, e a tarja branca passa a
   sobrar na minoria deitada. Continuam doze por folha nos dois modos. */
/* A grade de retrato NÃO redeclara as colunas: quem conta as colunas é
   o desenho, que já soma uma quando a maioria das fotos é em pé. Aqui
   só a altura muda, porque foto em pé é estreita e alta. */
.doc-fotos--retrato .doc-foto img { height: 56mm }
.doc-fotos-area {
  grid-column: 1 / -1; font-size: 9pt; font-weight: 700; text-transform: uppercase;
  border-bottom: .3mm solid #000; padding-bottom: 1mm; margin: 3mm 0 1mm;
  break-after: avoid;
}

/* ---------------------------------------------------------------------
   ASSINATURAS
   O traco tem 60 mm no minimo: abaixo disso a pessoa nao cabe a
   assinatura e escreve por cima da linha de baixo. O espaco em branco
   acima e de 16 mm, que e a altura de uma assinatura de caneta com
   lacada.
   --------------------------------------------------------------------- */
/* 6 mm de respiro entre o título e os quadros. Eram 12 mm aqui mais 10 mm
   no título: 22 mm de branco antes do primeiro traço, que bastavam para
   empurrar o quadro inteiro para uma folha só dele. O espaço de caneta
   (16 mm) não mudou. */
.doc-assinaturas {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 10mm;
  margin-top: 6mm; break-inside: avoid; page-break-inside: avoid;
  /* Nunca abre folha nova so com a assinatura: folha de assinatura sozinha
     e o vicio que invalida documento, porque quem recebe nao sabe o que
     assinou. */
  break-before: avoid; page-break-before: avoid;
}
.doc-assinaturas--3 { grid-template-columns: repeat(3, 1fr); gap: 8mm }
/* Quatro papeis NAO vao em quatro colunas: daria 40 mm de traco, e nao
   cabe assinatura de mao em 40 mm. Vao em duas linhas de dois. */
.doc-assinaturas--4 { grid-template-columns: repeat(2, 1fr); row-gap: 14mm }
.doc-assin { text-align: center }
.doc-assin .papel {
  font-size: 7pt; font-weight: 700; text-transform: uppercase; letter-spacing: .3pt;
  margin-bottom: 1mm; text-align: left;
}
.doc-assin .espaco { height: 16mm }
.doc-assin .traco { border-top: .3mm solid #000; max-width: 75mm; margin: 0 auto }
.doc-assin .nome {
  font-size: 9pt; font-weight: 700; text-transform: uppercase; margin-top: 1mm;
  min-height: 4mm;
}
.doc-assin .cargo, .doc-assin .data { font-size: 8pt; line-height: 1.25 }
.doc-assin img.rubrica { max-height: 14mm; max-width: 70mm; display: block; margin: 0 auto -.5mm }
.doc-assin .carimbo { font-size: 8pt; line-height: 1.15; text-align: left; margin-top: 1.5mm }

/* ---------------------------------------------------------------------
   RODAPE
   --------------------------------------------------------------------- */
.doc-pe {
  border-top: .3mm solid #000; padding-top: 1.5mm; margin-top: 5mm;
  display: flex; justify-content: space-between; align-items: baseline;
  gap: 4mm; font-size: 7pt; line-height: 1.25;
}
.doc-pe .cen { text-align: center; flex: 1 }
.doc-pe .dir { text-align: right; white-space: nowrap }
.doc-pe .cod { font-family: Consolas, "Courier New", monospace; letter-spacing: .2pt }

/* ---------------------------------------------------------------------
   QUEBRA DE PAGINA
   --------------------------------------------------------------------- */
.doc-bloco { break-inside: avoid; page-break-inside: avoid }
/* Tabela longa NAO pode receber `avoid`: o navegador ignora e a
   paginacao foge do controle. O bloco de tabela e o unico que parte. */
.doc .tabela-bloco { break-inside: auto; page-break-inside: auto }
.doc h2, .doc h3 { break-after: avoid; page-break-after: avoid }
/* O anexo fotografico abre em folha propria. Foi o que a obra real passou
   a fazer: a via que vai ao cliente para assinatura sai sem as fotos, e
   elas seguem como anexo destacavel. */
.doc-anexo { break-before: page; page-break-before: always }
/* NO RFO AS FOTOS NÃO SÃO ANEXO, SÃO O RELATÓRIO. Quando o registro
   fotográfico vem logo depois da identificação, sem nenhuma seção antes,
   ele não abre folha nova: a folha 1 saía só com a identificação e o
   resto em branco, e as fotos e as assinaturas iam para a folha 2. Nos
   outros tipos há seções antes das fotos, e o anexo continua em folha
   própria. */
.doc-ident + .doc-anexo,
.doc-ident--jornada + .doc-anexo { break-before: auto; page-break-before: auto }

.doc-avisos { border: .3mm solid #000; padding: 3mm; margin-top: 6mm }
.doc-avisos ul { margin: 0; padding-left: 5mm; font-size: 8.5pt }

/* ---------------------------------------------------------------------
   RASCUNHO: a marca d'agua E a palavra. Nunca so a marca, porque a marca
   some quando a pessoa desmarca "gráficos de segundo plano" no dialogo.
   A PALAVRA E A "SITUAÇÃO: Rascunho" DA IDENTIFICACAO, que e texto e sai
   sempre. A frase " · RASCUNHO, NÃO VALE COMO DOCUMENTO" que saia no lado
   direito do cabecalho foi tirada em 14/09/2026: o dono ja tinha mandado
   tirar o "não vale como documento" em 10/09, e agora pediu o lado direito
   so com o JOB e o numero.
   --------------------------------------------------------------------- */
.doc--rascunho .doc-folha { position: relative }
.doc--rascunho .doc-folha::before {
  content: "RASCUNHO"; position: fixed; top: 42%; left: 0; right: 0; z-index: 0;
  text-align: center; font-size: 72pt; font-weight: 700; letter-spacing: 6pt;
  color: #000; opacity: .09; transform: rotate(-28deg); pointer-events: none;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}

/* =====================================================================
   A FOLHA NA TELA
   Ela aparece como previa dentro do sistema, sobre fundo cinza, com a
   largura do papel. Serve para conferir antes de imprimir e para ler no
   celular sem precisar de PDF.
   ===================================================================== */
/* SEM ROLAGEM LATERAL. A moldura tinha `overflow-x: auto`, e quando a
   folha de 210 mm nao cabia na largura disponivel nascia uma barra de
   rolagem horizontal por baixo do documento. O dono pediu para tirar, e
   ele esta certo: barra lateral num documento e o sinal de que a folha
   nao coube, e o conserto e a folha caber, nao a barra existir.
   Quem faz caber e `ajustarFolha()` em documento.js, que mede a largura
   disponivel e reduz a folha inteira. */
.doc-previa { background: #e9edf2; padding: 16px; overflow-x: hidden }
.doc-previa .doc {
  width: 210mm; min-height: 297mm; margin: 0 auto; padding: 10mm 12mm 12mm;
  background: #fff; box-shadow: 0 2px 14px rgba(16, 24, 40, .18);
}
.doc-previa .doc--paisagem { width: 297mm; min-height: 210mm }

/* O observador de tabelas do app.js poe `class="resp"` em TODA tabela que
   entra em #conteudo, e abaixo de 820px o componente oficial transforma
   tabela em cartao. Na previa da folha isso destruiria o desenho, entao
   aqui a tabela continua tabela e quem rola e a moldura. */
@media (max-width: 820px) {
  .doc-previa .doc table.resp,
  .doc-previa .doc table.resp tbody,
  .doc-previa .doc table.resp tfoot,
  .doc-previa .doc table.resp tr { display: revert }
  .doc-previa .doc table.resp thead { display: table-header-group }
  .doc-previa .doc table.resp td {
    display: table-cell; text-align: left; border: .2mm solid #000;
  }
  .doc-previa .doc table.resp td::before { content: none }
  .doc-previa .doc table.dados .num { text-align: right }
}

@media print {
  /* Some TUDO que nao e a folha, com UMA regra em vez de uma lista que
     esquece o proximo componente que alguem criar. */
  body.imprimindo-documento > *:not(.doc-impressao) { display: none !important }
  body.imprimindo-documento .doc-impressao {
    display: block !important; position: static !important;
  }
  body.imprimindo-documento { background: #fff !important }
  .doc-previa { background: none; padding: 0; overflow: visible }
  .doc-previa .doc {
    width: auto; min-height: 0; margin: 0; padding: 0; box-shadow: none;
  }
  /* A dica de campo explica como PREENCHER. No documento nao existe
     preenchimento, existe valor. E a reserva de altura da mensagem de
     erro imprime como faixa branca embaixo de cada campo. */
  .doc .dica, .doc .msg-erro { display: none !important }
}

/* A FAIXA DE FRENTE dentro da tabela de serviços. Atravessa a tabela
   inteira e leva o nome da área em caixa alta. É como o RDO da casa
   sempre foi lido: por área, e não linha a linha. */
.doc table.dados tr.faixa-grupo td {
  background: #eef1f5; font-weight: 700; text-transform: uppercase;
  font-size: 8pt; letter-spacing: .3pt; padding: 1.4mm;
  border-top: .4mm solid #000;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
/* Faixa de área nunca fica sozinha no pé da folha. */
.doc table.dados tr.faixa-grupo { break-after: avoid; page-break-after: avoid }
.doc h2.doc-titulo-assinaturas { margin-top: 6mm }
/* O TÍTULO "ASSINATURAS" VAI JUNTO COM O QUE VEIO ANTES. O `break-before`
   do bloco dos quadros só segurava o título junto dos quadros; o título
   ficava livre para abrir folha nova, e o RTOR saía com uma folha só de
   assinatura. Com esta regra, se não couber, a última seção desce junto. */
.doc h2.doc-titulo-assinaturas { break-before: avoid; page-break-before: avoid }
/* EXCEÇÃO: DEPOIS DAS FOTOS A REGRA ACIMA NÃO VALE. O Chrome não
   consegue levar a última linha de uma grade de fotos para a folha
   seguinte; sem nenhum ponto de quebra permitido antes do título, ele
   quebrava DENTRO dos quadros, e o "Assinado eletronicamente." de cada
   quadro saía sozinho na folha seguinte (RFO com 13 fotos, conferido em
   PDF). Quadro partido é pior que quadro em folha nova: aqui o título
   volta a poder abrir folha. Desde a 7.3 o desenho da folha junta a
   última linha de fotos com as assinaturas (`.doc-fecho`, abaixo), e esta
   regra só vale para documento montado pelo desenho antigo. */
.doc .doc-anexo + h2.doc-titulo-assinaturas { break-before: auto; page-break-before: auto }
/* A ÚLTIMA LINHA DE FOTOS E AS ASSINATURAS NÃO SE SEPARAM. Se o bloco não
   couber no fim da folha, desce inteiro, e a folha seguinte abre com foto
   e não com os quadros sozinhos. A grade da última linha é outra caixa, e
   a margem dela repete o vão de 4 mm que as linhas de uma mesma grade têm. */
.doc .doc-fecho { break-inside: avoid; page-break-inside: avoid }
.doc .doc-fecho > .doc-fotos { margin-top: 4mm }

/* A nota que o módulo declara para sair embaixo dos quadros de
   assinatura. Ela é texto de documento, não rodapé de tela: sai no
   mesmo corpo da folha, um pouco menor, e não se separa dos quadros. */
.doc-nota-assinaturas{
  font-size: 8.5pt; line-height: 1.35; margin: 2.5mm 0 0;
  padding-top: 1.5mm; border-top: .2mm solid #999;
  break-inside: avoid; page-break-inside: avoid;
}

/* ---------------------------------------------------------------------
   QUEBRA DE PÁGINA DECLARADA

   `impressao.quebras` existe no RDO e no RDDS desde o primeiro desenho e
   nunca chegava ao papel. A lista de presença do DDS tem de começar em
   folha própria: colada no fim do bloco anterior, ela nasce partida ao
   meio e a folha que a auditoria procura fica ilegível.

   `break-before` NA PRIMEIRA SEÇÃO NÃO VALE, e é de propósito: quebra
   antes do que já é o começo geraria uma folha 1 em branco. `:not(:first-child)`
   resolve sem ninguém precisar lembrar disso na declaração.
   --------------------------------------------------------------------- */
.doc-quebra-antes:not(:first-child) {
  break-before: page; page-break-before: always;
}

/* ---------------------------------------------------------------------
   A FOLHA NO CELULAR

   A prévia tem a largura do papel, 210 mm, e no telefone isso é rolagem
   lateral: quem assina, assina no celular, e ficava arrastando a folha
   de lado para ler o que ia assinar. Em vez de reflowar (que faria a
   tela mentir sobre o que sai no papel), a folha inteira é REDUZIDA.
   O que se vê é o documento de verdade, menor.

   `zoom` e não `transform: scale`: `transform` não encolhe o espaço que
   o elemento ocupa, e sobraria um vão branco enorme embaixo da folha.
   Onde `zoom` não existir, fica a rolagem lateral de antes, que é o
   comportamento que já havia.
   --------------------------------------------------------------------- */
/* A REDUCAO NAO E POR FAIXA DE LARGURA, e sim medida.
   Faixa fixa erra sempre: com o menu lateral aberto sobra menos largura
   do que a janela diz, e a folha ou vazava ou encolhia demais. Quem
   calcula e `ajustarFolha()`, que le a largura real disponivel e poe o
   `zoom` exato. Aqui fica so a margem menor no celular. */
@media (max-width: 840px) { .doc-previa { padding: 8px } }
@media (max-width: 560px) { .doc-previa { padding: 4px } }

/* Na impressao a reducao nao existe: o papel tem o tamanho do papel. */
@media print {
  .doc-previa .doc { zoom: 1 !important }
}

/* ---------------------------------------------------------------------
   O ANEXO FOTOGRÁFICO PODE PARTIR ENTRE FOLHAS.

   `.doc-bloco` traz `break-inside: avoid`, que está certo para um bloco
   de campos e errado para o registro fotográfico: um RFO com vinte fotos
   é mais alto que a folha, e "não parta" numa caixa que não cabe faz o
   navegador empurrar tudo e deixar uma folha quase vazia antes.
   Quem não parte é CADA FOTO, e isso `.doc-foto` já garante.
   --------------------------------------------------------------------- */
.doc .doc-anexo { break-inside: auto; page-break-inside: auto }
/* Título de seção não fica sozinho no pé da folha. */
.doc .doc-bloco > h2 { break-after: avoid; page-break-after: avoid }
/* A grade de fotos parte entre linhas, nunca no meio de uma foto. */
.doc-fotos { break-inside: auto; page-break-inside: auto }

/* ---------------------------------------------------------------------
   O QUE NÃO PODE SAIR SOZINHO NO PÉ DA FOLHA
   --------------------------------------------------------------------- */
/* Cabeçalho de tabela repete em toda folha que a tabela ocupar: sem
   isso, a folha 2 de uma lista de 40 pessoas chega sem dizer qual
   coluna é qual. */
.doc table.dados thead { display: table-header-group }
.doc table.dados tfoot { display: table-footer-group }
.doc table.dados tr { break-inside: avoid; page-break-inside: avoid }
/* O quadro de assinatura nunca se separa do nome e da linha. */
.doc .doc-assin { break-inside: avoid; page-break-inside: avoid }

/* =====================================================================
   O QUE OS COMPONENTES OFICIAIS FAZEM COM A FOLHA NA IMPRESSÃO, DESFEITO.

   `krigs-componentes.css` é compartilhado e congelado, e o bloco de
   impressão dele foi escrito para as telas de listagem. Três fatos juntos
   faziam ele cair em cima do documento, e nenhum dá erro visível:
    · o observador de tabelas do app.js põe `class="resp"` em TODA tabela
      de #conteudo, inclusive na moldura (`.doc-folha`) e nas de dados;
    · na impressão, a regra `max-width: 820px` vale, porque a largura
      útil do A4 em pé é 190 mm (718 px). As regras de "tabela vira
      cartão" entram no papel;
    · as regras de impressão de lá usam `!important`.

   O QUE SAÍA NO PDF, em todo documento dos seis tipos:
    · moldura cinza em volta da folha inteira e um fio cinza sobrando
      embaixo do cabeçalho (`table.resp td { border }` e
      `table.resp tr { border }` na moldura);
    · faixa azul-clara com fio azul grosso em cima do rodapé, e o rodapé
      em negrito (`tfoot tr { background; border-top }` na moldura);
    · NÚMERO ALINHADO À ESQUERDA em toda tabela
      (`table.resp td { text-align: left !important }`);
    · cabeçalho sem quebra de linha passando por cima da coluna vizinha
      (`table.dados th { white-space: nowrap !important }`);
    · 4 mm a menos de largura, porque `@media (max-width: 840px)` deste
      arquivo punha 8 px de respiro na prévia também no papel. A página
      pública de assinatura já zerava isso, e as duas vias quebravam
      linha e folha em lugares diferentes.

   Por isso as regras abaixo usam `!important`: é a única forma de vencer
   `!important` de outro arquivo. Todas presas em `.doc`, para não tocar
   em nenhuma outra impressão do sistema.
   ===================================================================== */
@media print {
  .doc-previa { padding: 0 !important }

  /* A moldura não tem borda, fundo nem negrito. */
  .doc .doc-folha > thead > tr,
  .doc .doc-folha > tbody > tr,
  .doc .doc-folha > tfoot > tr {
    border: 0 !important; background: none !important; font-weight: 400 !important;
  }
  .doc .doc-folha > thead > tr > td,
  .doc .doc-folha > tbody > tr > td,
  .doc .doc-folha > tfoot > tr > td {
    border: 0 !important; padding: 0 !important;
    text-align: left !important; width: auto !important;
  }

  /* Número à direita, cabeçalho numérico à direita. */
  .doc table.dados td.num,
  .doc table.dados th.num { text-align: right !important }

  /* Cabeçalho quebra entre palavras e tem o fio preto de 0,5 mm. */
  .doc table.dados thead th,
  .doc table.dados thead th.num {
    white-space: normal !important; font-size: 7pt !important;
    border-bottom: .5mm solid #000 !important;
  }

  /* Respiro e quebra de linha iguais aos da prévia na tela. */
  .doc table.dados th,
  .doc table.dados td {
    padding: .8mm 1.2mm !important;
    overflow-wrap: break-word !important; word-break: normal !important;
  }
  .doc table.dados td.col-desc { overflow-wrap: anywhere !important }

  .doc table.dados:has(> thead > tr > th:nth-child(13)) { font-size: 8pt !important }
  .doc table.dados:has(> thead > tr > th:nth-child(13)) thead th,
  .doc:not(.doc--paisagem) table.dados:has(> thead > tr > th:nth-child(9)) thead th { letter-spacing: 0 !important }
  .doc table.dados:has(> thead > tr > th:nth-child(13)) thead th { font-size: 6.5pt !important }
  .doc table.dados:has(> thead > tr > th:nth-child(13)) th,
  .doc table.dados:has(> thead > tr > th:nth-child(13)) td { padding: .5mm .6mm !important }
}

/* Na tela do celular (abaixo de 820 px) a mesma regra de cartão punha
   fio cinza nas linhas da moldura da prévia, e a regra de tabela da
   própria prévia (`.doc-previa .doc table.resp td`, mais acima) punha
   borda preta nas três células da moldura. A borda é das tabelas de
   dados, não da moldura. */
.doc .doc-folha > thead > tr,
.doc .doc-folha > tbody > tr,
.doc .doc-folha > tfoot > tr { border: 0; background: none }
.doc-previa .doc .doc-folha > thead > tr > td,
.doc-previa .doc .doc-folha > tbody > tr > td,
.doc-previa .doc .doc-folha > tfoot > tr > td { border: 0 }
