/* =====================================================================
   CORE O.S. — FOLHA DE RELATÓRIO DA ORDEM DE SERVIÇO
   Documento controlado. O mesmo layout serve para tela e para impressão.
   Paleta impressa neutra (petróleo/azulmarinho) para leitura em papel.
   ===================================================================== */

:root {
  --rel-tinta: #0f172a;
  --rel-tinta-2: #334155;
  --rel-tinta-3: #64748b;
  --rel-linha: #d8dee9;
  --rel-linha-forte: #94a3b8;
  --rel-zebra: #f6f8fb;
  --rel-papel: #ffffff;
  --rel-carteira: #eef2f7;
  --rel-marca: #0f2740;
  --rel-acento: #1d4ed8;
}

/* ------------------------------------------------------------- folha */

#area-relatorio {
  background: var(--rel-carteira);
  padding: 18px;
  border-radius: var(--r-md);
}

.rel-folha {
  background: var(--rel-papel);
  max-width: 860px;
  margin: 0 auto;
  padding: 40px 44px 32px;
  border: 1px solid var(--rel-linha);
  border-radius: 6px;
  box-shadow: 0 18px 48px -22px rgba(15, 23, 42, 0.5);
  color: var(--rel-tinta);
  font-size: 12.5px;
  line-height: 1.5;
  letter-spacing: 0.005em;
}

.rel-folha * {
  border-color: var(--rel-linha);
}

.rel-folha .mono {
  font-family: var(--mono);
  letter-spacing: -0.01em;
}

/* --------------------------------------------------------- cabeçalho */

.rel-topo {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}

.rel-topo-marca {
  display: flex;
  align-items: center;
  gap: 12px;
}

.rel-logo {
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  border-radius: 5px;
  background: var(--rel-marca);
  color: #fff;
  display: grid;
  place-items: center;
  font-weight: 800;
  font-size: 15px;
  letter-spacing: 0.04em;
  font-family: var(--mono);
}

.rel-marca-nome {
  margin: 0;
  font-size: 17px;
  font-weight: 800;
  color: var(--rel-marca);
  letter-spacing: 0.08em;
  line-height: 1.1;
}

.rel-marca-sub {
  margin: 3px 0 0;
  font-size: 10.5px;
  color: var(--rel-tinta-3);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.rel-topo-doc {
  text-align: right;
  min-width: 210px;
}

.rel-doc-tipo {
  margin: 0;
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--rel-tinta-3);
}

.rel-doc-num {
  margin: 4px 0 2px;
  font-size: 21px;
  font-weight: 600;
  color: var(--rel-marca);
  line-height: 1.1;
}

.rel-doc-rev {
  margin: 0;
  font-size: 10px;
  color: var(--rel-tinta-3);
}

.rel-faixa {
  height: 4px;
  margin: 16px 0 4px;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--rel-marca) 0%, var(--rel-acento) 55%, #93c5fd 100%);
}

/* ---------------------------------------------------------- seções */

.rel-secao {
  margin-top: 26px;
  break-inside: avoid;
  page-break-inside: avoid;
}

.rel-secao-titulo {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 12px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--rel-marca);
}

.rel-secao-titulo::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--rel-linha);
}

.rel-secao-titulo span {
  white-space: nowrap;
}

/* ------------------------------------------------------------ grade */

.rel-grade {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1px;
  background: var(--rel-linha);
  border: 1px solid var(--rel-linha);
  border-radius: 4px;
  overflow: hidden;
}

.rel-campo {
  background: var(--rel-papel);
  padding: 9px 11px;
  min-height: 52px;
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.rel-campo-largo {
  grid-column: span 2;
}

.rel-rotulo {
  display: block;
  font-size: 8.8px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--rel-tinta-3);
  line-height: 1.2;
}

.rel-valor {
  display: block;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--rel-tinta);
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.rel-valor-vazio {
  color: var(--rel-tinta-3);
  font-weight: 500;
}

/* ---------------------------------------------------------- blocos */

.rel-texto {
  margin: 0;
  font-size: 12.5px;
  color: var(--rel-tinta-2);
  line-height: 1.62;
  text-align: justify;
  hyphens: auto;
}

.rel-vazio {
  margin: 0;
  font-size: 11.5px;
  color: var(--rel-tinta-3);
  font-style: italic;
}

.rel-bloco-rot {
  margin-top: 12px;
}

.rel-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 6px;
}

.rel-chip {
  font-size: 10.5px;
  font-weight: 600;
  padding: 3px 9px;
  border-radius: 999px;
  background: #fef3c7;
  border: 1px solid #fcd34d;
  color: #92400e;
}

.rel-duplo {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}

.rel-duplo .rel-col {
  background: var(--rel-zebra);
  border: 1px solid var(--rel-linha);
  border-left: 3px solid var(--rel-acento);
  border-radius: 4px;
  padding: 12px 14px;
}

/* --------------------------------------------------------- tabelas */

.rel-tabela {
  width: 100%;
  border-collapse: collapse;
  font-size: 11.5px;
}

.rel-tabela th {
  background: var(--rel-marca);
  color: #fff;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  text-align: left;
  padding: 8px 10px;
  white-space: nowrap;
}

.rel-tabela td {
  padding: 7px 10px;
  border-bottom: 1px solid var(--rel-linha);
  color: var(--rel-tinta-2);
  vertical-align: top;
}

.rel-tabela tbody tr:nth-child(even) td {
  background: var(--rel-zebra);
}

.rel-tabela .dir {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.rel-tabela .rel-total {
  font-weight: 700;
  color: var(--rel-tinta);
}

.rel-totais {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 9px;
  padding: 8px 12px;
  background: var(--rel-zebra);
  border: 1px solid var(--rel-linha);
  border-radius: 4px;
  font-size: 11.5px;
  color: var(--rel-tinta-2);
}

.rel-totais strong {
  font-size: 13px;
  color: var(--rel-marca);
  font-variant-numeric: tabular-nums;
}

/* ---------------------------------------------------------- trilha */

.rel-trilha {
  list-style: none;
  margin: 0;
  padding: 0;
  border-left: 2px solid var(--rel-linha);
}

.rel-trilha li {
  display: flex;
  gap: 14px;
  padding: 6px 0 6px 14px;
  position: relative;
}

.rel-trilha li::before {
  content: "";
  position: absolute;
  left: -5px;
  top: 13px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--rel-acento);
}

.rel-trilha-data {
  flex: 0 0 108px;
  font-size: 10.5px;
  color: var(--rel-tinta-3);
  font-variant-numeric: tabular-nums;
}

.rel-trilha-texto {
  font-size: 11.5px;
  color: var(--rel-tinta-2);
  line-height: 1.5;
}

.rel-trilha-texto b {
  color: var(--rel-tinta);
  font-weight: 700;
}

.rel-trilha-texto small {
  display: block;
  font-size: 10px;
  color: var(--rel-tinta-3);
  margin-top: 1px;
}

/* ------------------------------------------------- observações */

.rel-obs {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 8px;
}

.rel-obs li {
  display: flex;
  gap: 10px;
  font-size: 11.5px;
  color: var(--rel-tinta-2);
  line-height: 1.55;
  padding: 8px 11px;
  background: var(--rel-zebra);
  border: 1px solid var(--rel-linha);
  border-radius: 4px;
}

.rel-obs-quem {
  flex: 0 0 132px;
  font-weight: 700;
  color: var(--rel-marca);
  font-size: 10.5px;
  letter-spacing: 0.02em;
}

/* ---------------------------------------------------------- aceite */

.rel-aceite {
  margin-top: 30px;
  padding-top: 4px;
}

.rel-aceite-nota {
  margin: 0 0 20px;
  font-size: 11px;
  color: var(--rel-tinta-2);
  line-height: 1.6;
  text-align: justify;
  font-style: italic;
  border-left: 3px solid var(--rel-linha-forte);
  padding-left: 12px;
}

.rel-assinaturas {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  margin-top: 6px;
}

.rel-assinatura {
  text-align: center;
  break-inside: avoid;
  page-break-inside: avoid;
}

.rel-assinatura-linha {
  height: 46px;
  border-bottom: 1px solid var(--rel-tinta-2);
  margin-bottom: 7px;
}

.rel-assinatura-papel {
  margin: 0;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--rel-tinta-3);
}

.rel-assinatura-nome {
  margin: 3px 0 0;
  font-size: 12px;
  font-weight: 700;
  color: var(--rel-tinta);
  min-height: 15px;
}

.rel-assinatura-mat {
  margin: 1px 0 0;
  font-size: 10px;
  color: var(--rel-tinta-3);
}

.rel-assinatura-data {
  margin: 5px 0 0;
  font-size: 9.5px;
  color: var(--rel-tinta-3);
}

.rel-carimbo {
  margin-top: 22px;
  height: 78px;
  border: 1px dashed var(--rel-linha-forte);
  border-radius: 4px;
  display: grid;
  place-items: center;
}

.rel-carimbo-rot {
  font-size: 9px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--rel-tinta-3);
}

/* ---------------------------------------------------------- rodapé */

.rel-rodape {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-top: 26px;
  padding-top: 12px;
  border-top: 1px solid var(--rel-linha);
  font-size: 9.5px;
  color: var(--rel-tinta-3);
}

.rel-rodape-col {
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.rel-rodape-centro {
  align-items: center;
}

.rel-rodape-dir {
  align-items: flex-end;
  text-align: right;
}

.rel-rodape-linha1 {
  font-weight: 700;
  letter-spacing: 0.05em;
  color: var(--rel-tinta-2);
}

.rel-rodape-linha2 {
  letter-spacing: 0.03em;
}

.rel-rodape-ref {
  font-size: 9.5px;
  letter-spacing: 0.02em;
}

/* ==================================================== IMPRESSÃO / PDF */

@media print {
  @page {
    size: A4 portrait;
    margin: 13mm 12mm 11mm;
  }

  html,
  body {
    background: #fff !important;
  }

  /* A folha só assume a página quando o relatório está aberto
     (body.relatorio-aberto). Sem ela, o Ctrl+P imprime o painel
     normalmente em vez de gerar uma folha em branco. */
  body.relatorio-aberto > *:not(.modal-relatorio) {
    display: none !important;
  }

  body.relatorio-aberto .modal-relatorio {
    position: static !important;
    display: block !important;
    background: #fff !important;
    padding: 0 !important;
    margin: 0 !important;
    inset: auto !important;
    max-height: none !important;
    overflow: visible !important;
  }

  .modal-relatorio .modal-overlay {
    display: none !important;
  }

  .no-print,
  .no-print * {
    display: none !important;
  }

  .modal-card-relatorio {
    box-shadow: none !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: #fff !important;
    max-height: none !important;
    max-width: none !important;
    width: auto !important;
    display: block !important;
  }
  .modal-body-relatorio {
    padding: 0 !important;
    overflow: visible !important;
    background: #fff !important;
  }

  #area-relatorio {
    padding: 0 !important;
    background: #fff !important;
    border-radius: 0 !important;
  }

  .rel-folha {
    max-width: none;
    width: 100%;
    padding: 0;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    font-size: 10.5pt;
    background: #fff;
    color: #000;
  }

  .rel-secao {
    margin-top: 6mm;
  }

  /* nada some no papel: seções longas podem quebrar entre páginas */
  .rel-secao {
    break-inside: auto;
    page-break-inside: auto;
  }

  .rel-tabela thead {
    display: table-header-group;
  }

  .rel-tabela tr {
    break-inside: avoid;
    page-break-inside: avoid;
  }

  .rel-assinaturas,
  .rel-assinatura,
  .rel-duplo,
  .rel-grade,
  .rel-totais,
  .rel-topo {
    break-inside: avoid;
    page-break-inside: avoid;
  }

  /* assinaturas nunca cortadas no meio */
  .rel-aceite {
    break-before: auto;
  }

  * {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
}

/* ------------------------------------------------- tela (report view) */

.modal-relatorio .modal-card-relatorio {
  max-width: 960px;
  width: min(960px, 94vw);
}

.modal-head-relatorio {
  border-bottom: 1px solid var(--line);
}

.modal-body-relatorio {
  background: var(--rel-carteira);
}

@media (max-width: 860px) {
  .rel-grade {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .rel-assinaturas,
  .rel-duplo {
    grid-template-columns: 1fr;
  }

  .rel-obs-quem {
    flex-basis: 100%;
  }

  .rel-folha {
    padding: 24px 20px;
  }
}
