/* Folha de estilos do relatório do Checkup Digital BIM + IA.
   Fonte única de verdade para o design do relatório, usada em dois contextos:
   1. No documento autocontido gerado por src/checkup-report.mjs (protótipo PDF
      via scripts/render-report.mjs e, no futuro, o anexo do email no servidor).
   2. Na própria página /checkup-digital-bim-ia/: o botão "Imprimir relatório"
      injeta o markup em [data-report-host] e o @media print no fim esconde o
      resto da página — imprimir o checkup passa a produzir este relatório.
   Tudo está confinado a .checkup-report para nunca reestilizar o site. */

/* Manrope auto-alojada como instâncias ESTÁTICAS (public/assets/fonts/, OFL).
   Tem de ser estático: com fonte variável o Skia embebe Type3 fragmentado
   (255 glifos/recurso) e a seleção/cópia do PDF parte palavras a meio
   ("b imdesk"). Família própria ("Manrope Report") para o print nunca cair na
   Manrope variável do Google Fonts já carregada pelo site. */
@font-face { font-family: "Manrope Report"; src: url("/assets/fonts/Manrope-Regular.ttf") format("truetype"); font-weight: 400; font-display: block; }
@font-face { font-family: "Manrope Report"; src: url("/assets/fonts/Manrope-SemiBold.ttf") format("truetype"); font-weight: 500 600; font-display: block; }
@font-face { font-family: "Manrope Report"; src: url("/assets/fonts/Manrope-Bold.ttf") format("truetype"); font-weight: 700 800; font-display: block; }

/* Margens a zero na @page: cada .page gere a sua própria margem via padding,
   o que permite o full-bleed real da capa e do CTA sem margens negativas. */
@page { size: A4; margin: 0; }

/* Corpo do documento autocontido (o site nunca usa esta classe no body). */
body.report-doc { margin: 0; background: #fff; }

.checkup-report { color: #485149; color-scheme: light; font-family: "Manrope Report", "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; font-size: 9.5pt; line-height: 1.5; }
/* print-color-adjust: exact — os fundos escuros e painéis imprimem mesmo com
   "Background graphics" desligado no diálogo de impressão do utilizador. */
.checkup-report, .checkup-report *, .checkup-report *::before, .checkup-report *::after { box-sizing: border-box; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.checkup-report h1, .checkup-report h2, .checkup-report h3, .checkup-report p { margin: 0; text-wrap: initial; }
.checkup-report h1, .checkup-report h2, .checkup-report h3, .checkup-report .score-cards strong, .checkup-report .teaser strong { color: #151a16; letter-spacing: -0.04em; font-variant-numeric: tabular-nums; }
.checkup-report h1 { max-width: none; font-size: 30pt; font-weight: 600; letter-spacing: -0.035em; line-height: 1.1; }
.checkup-report h2 { font-size: 21pt; font-weight: 600; line-height: 1.1; }
.checkup-report h3 { font-size: 11.5pt; font-weight: 700; letter-spacing: -0.02em; line-height: 1.2; }
.checkup-report em { color: inherit; font-family: Georgia, serif; font-style: italic; font-weight: 400; letter-spacing: 0; }
.checkup-report a { color: inherit; }

.checkup-report .page { position: relative; min-height: 297mm; padding: 15mm 15mm 28mm; background: #fff; page-break-after: always; }
.checkup-report .page:last-child { page-break-after: auto; }
.checkup-report .footer { position: absolute; right: 15mm; bottom: 15mm; left: 15mm; display: flex; justify-content: space-between; gap: 6mm; border-top: 1px solid #cfd5cc; padding-top: 3mm; color: #737d73; font-size: 7pt; }
.checkup-report .footer span:first-child { max-width: 120mm; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Tracking máx. .08em em maiúsculas (site usa .14em): acima disso os
   extratores de texto do PDF inserem espaços entre letras ao copiar. */
.checkup-report .eyebrow { display: flex; align-items: center; gap: 2.2mm; margin: 0 0 4mm; color: #6a746a; font-size: 7.5pt; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.checkup-report .eyebrow::before { width: 2mm; height: 2mm; border-radius: 50%; background: #b7d477; content: ""; }
.checkup-report .eyebrow--warn { color: #8a5c17; }
.checkup-report .eyebrow--warn::before { background: #8a5c17; }

/* Capa */
.checkup-report .cover { padding: 37mm 33mm 33mm; overflow: hidden; background: #0b0e0c; color: #d9ded5; }
/* Réplica exata da .blueprint-grid do site (styles.css:362): mesmas cores e
   opacidades, células 4rem ≈ 10mm em A4, fade transparente no topo até 40%. */
.checkup-report .cover::before { position: absolute; inset: 0; opacity: .18; background-image: linear-gradient(rgba(241,243,237,.15) 0.5px, transparent 0.5px), linear-gradient(90deg, rgba(241,243,237,.15) 0.5px, transparent 0.5px); background-size: 10mm 10mm; -webkit-mask-image: linear-gradient(to bottom, transparent 0, black 40%, black 100%); mask-image: linear-gradient(to bottom, transparent 0, black 40%, black 100%); content: ""; }
.checkup-report .cover > * { position: relative; }
.checkup-report .logo { display: block; width: 46mm; height: auto; margin-bottom: 42mm; }
.checkup-report .cover .eyebrow { color: #b7d477; }
.checkup-report .cover h1 { max-width: 24ch; margin-bottom: 9mm; color: #f1f3ed; }
.checkup-report .cover h1 em { color: #b7d477; }
.checkup-report .cover .lead { max-width: 132mm; color: #d9ded5; font-size: 13pt; line-height: 1.45; }
.checkup-report .teaser { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6mm; margin-top: 18mm; border-top: 1px solid rgba(241,243,237,.25); padding-top: 5mm; }
.checkup-report .teaser span { display: block; margin-bottom: 1.5mm; color: #a5ada3; font-size: 7.5pt; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.checkup-report .teaser strong { color: #b7d477; font-size: 15pt; font-weight: 700; letter-spacing: -0.03em; }
.checkup-report .teaser strong.nd { color: #a5ada3; }
.checkup-report .cover-meta { position: absolute; right: 33mm; bottom: 30mm; left: 33mm; display: flex; justify-content: space-between; gap: 8mm; border-top: 1px solid rgba(241,243,237,.25); padding-top: 5mm; color: #a5ada3; font-size: 8pt; }

/* Cabeçalho de secção — tudo alinhado à esquerda, numeral por cima do título */
.checkup-report .section-head { margin-bottom: 7mm; border-top: 2px solid #151a16; padding-top: 4mm; }
.checkup-report .section-head > span { display: block; margin-bottom: 2mm; color: #667d35; font-size: 8pt; font-weight: 700; letter-spacing: .08em; }
.checkup-report .section-head h2 { margin-bottom: 2.5mm; }
.checkup-report .section-head h2 em { color: #5d7132; }
.checkup-report .section-head .sub { max-width: 128mm; color: #6a746a; font-size: 8pt; line-height: 1.45; }

/* 01 · Sumário */
.checkup-report .summary-row { display: grid; grid-template-columns: 1fr 60mm; gap: 8mm; align-items: start; margin-bottom: 9mm; }
.checkup-report .summary-row > p { max-width: 150mm; font-size: 10.5pt; line-height: 1.55; }
.checkup-report .confidence { border: 1px solid #cfd5cc; background: #f3f5ef; padding: 5mm; }
.checkup-report .confidence span { display: block; margin-bottom: 1.5mm; color: #6a746a; font-size: 7.5pt; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.checkup-report .confidence strong { display: block; margin-bottom: 1mm; color: #151a16; font-size: 11.5pt; font-weight: 700; letter-spacing: -0.02em; }
.checkup-report .confidence small { color: #6a746a; font-size: 8pt; line-height: 1.45; }
.checkup-report .priority { margin-bottom: 9mm; border-left: 2.5pt solid #4b6b17; background: #eef4df; padding: 6mm 7mm; }
.checkup-report .priority strong { display: block; margin-bottom: 1.5mm; color: #151a16; font-size: 16pt; font-weight: 600; letter-spacing: -0.035em; }
.checkup-report .priority p { max-width: 140mm; font-size: 8.5pt; }
.checkup-report .score-cards { display: grid; gap: 1px; border: 1px solid #cfd5cc; background: #cfd5cc; }
/* Colunas por número de cartões (2 a 5) — classes em vez de style inline,
   porque a CSP do site (style-src 'self') bloqueia atributos style. */
.checkup-report .score-cards--2 { grid-template-columns: repeat(2, 1fr); }
.checkup-report .score-cards--3 { grid-template-columns: repeat(3, 1fr); }
.checkup-report .score-cards--4 { grid-template-columns: repeat(4, 1fr); }
.checkup-report .score-cards--5 { grid-template-columns: repeat(5, 1fr); }
.checkup-report .score-cards article { background: #f3f5ef; padding: 5mm; }
.checkup-report .score-cards span { display: block; margin-bottom: 2.5mm; color: #6a746a; font-size: 7.5pt; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.checkup-report .score-cards strong { display: block; margin-bottom: 1.5mm; color: #4b6b17; font-size: 20pt; font-weight: 700; letter-spacing: -0.03em; }
.checkup-report .score-cards strong.nd { color: #6a746a; }
.checkup-report .score-cards small { color: #6a746a; font-size: 8pt; line-height: 1.4; }

/* 02 · Radar */
.checkup-report .radar-row { display: grid; grid-template-columns: 94mm 1fr; gap: 7mm; align-items: start; }
.checkup-report svg.radar { display: block; width: 94mm; height: auto; }
.checkup-report .radar-grid { fill: none; stroke: #e4e7de; stroke-width: 1; }
.checkup-report .radar-axis { stroke: #cfd5cc; stroke-width: 1; }
.checkup-report .radar-shape { fill: rgba(75,107,23,.12); stroke: #4b6b17; stroke-width: 2.5; stroke-linejoin: round; }
.checkup-report .radar-shape-segment { fill: none; }
.checkup-report .radar-dot { fill: #4b6b17; stroke: #fff; stroke-width: 2; }
.checkup-report .radar-dot--focus { fill: #8a5c17; }
.checkup-report .radar-label { fill: #151a16; font: 700 17px "Manrope Report", "Manrope", Helvetica, Arial, sans-serif; }
.checkup-report .radar-label--focus { fill: #8a5c17; }
.checkup-report .radar-value { fill: #737d73; font: 400 15px "Manrope Report", "Manrope", Helvetica, Arial, sans-serif; font-variant-numeric: tabular-nums; }
.checkup-report .axes-table { width: 100%; border-collapse: collapse; }
.checkup-report .axes-table th { border-bottom: 1px solid #cfd5cc; padding: 0 2mm 2.5mm 0; color: #6a746a; font-size: 7pt; font-weight: 700; letter-spacing: .08em; text-align: left; text-transform: uppercase; }
.checkup-report .axes-table td { border-bottom: 1px solid #e4e7de; padding: 2.2mm 2mm 2.2mm 0; color: #485149; font-size: 8.5pt; vertical-align: top; }
.checkup-report .axes-table td.score { color: #4b6b17; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.checkup-report .axes-table td.score.nd { color: #6a746a; font-weight: 600; }
.checkup-report .axes-table td.reading { color: #485149; font-size: 8pt; }
.checkup-report .table-notes { margin-top: 3mm; color: #6a746a; font-size: 7.5pt; line-height: 1.5; }
.checkup-report .bands { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; margin-top: 7mm; border: 1px solid #cfd5cc; background: #cfd5cc; }
.checkup-report .bands > div { background: #f3f5ef; padding: 4mm; }
.checkup-report .bands .chip { display: inline-grid; place-items: center; min-width: 9mm; height: 5.5mm; margin-bottom: 2.5mm; border-radius: 3mm; padding: 0 2mm; background: #b7d477; color: #18200e; font-size: 7pt; font-weight: 700; font-variant-numeric: tabular-nums; }
.checkup-report .bands strong { display: block; margin-bottom: 1mm; color: #151a16; font-size: 8.5pt; font-weight: 700; letter-spacing: -0.01em; }
.checkup-report .bands p { color: #6a746a; font-size: 7.5pt; line-height: 1.45; }

/* 03 · Leituras e alertas */
.checkup-report .insights { display: grid; grid-template-columns: 1fr 1fr; gap: 8mm; margin-bottom: 8mm; }
.checkup-report .insights article { border: 1px solid #cfd5cc; padding: 6mm; }
.checkup-report .insight-item { margin-top: 3.5mm; border-top: 1px solid #e4e7de; padding-top: 3mm; }
.checkup-report .insight-item strong { display: block; margin-bottom: 1mm; color: #151a16; font-size: 10pt; font-weight: 700; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.checkup-report .insight-item span { color: #485149; font-size: 8pt; line-height: 1.45; }
.checkup-report .empty-note { margin-top: 3.5mm; border-top: 1px solid #e4e7de; padding-top: 3mm; color: #6a746a; font-size: 8.5pt; line-height: 1.5; }
.checkup-report .alerts { border: 1px solid #e3cf9e; background: #fbf8ef; padding: 6mm; page-break-inside: avoid; }
.checkup-report .alerts--empty { border-color: #cfd5cc; background: #f3f5ef; }
.checkup-report .alerts .eyebrow { margin-bottom: 2mm; }
.checkup-report .alert { display: grid; grid-template-columns: 16mm 1fr; gap: 4mm; border-top: 1px solid #e8dcc0; padding: 3mm 0; page-break-inside: avoid; }
.checkup-report .alert:last-child { padding-bottom: 0; }
.checkup-report .alert b { padding-top: .4mm; color: #8a5c17; font-size: 7pt; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.checkup-report .alert p { color: #485149; font-size: 8.5pt; line-height: 1.5; }
.checkup-report .alerts--empty .empty-note { margin-top: 2mm; border-top: 0; padding-top: 0; }

/* 04 · Próximo passo */
.checkup-report .next-step { margin-bottom: 10mm; border: 1px solid #789346; background: #eef4df; padding: 8mm; }
.checkup-report .next-step .eyebrow { color: #5b6b3a; }
.checkup-report .next-step h3 { margin-bottom: 2.5mm; font-size: 14pt; font-weight: 600; letter-spacing: -0.03em; }
.checkup-report .next-step p { max-width: 150mm; font-size: 10pt; line-height: 1.55; }
.checkup-report .cta { position: relative; margin-bottom: 10mm; overflow: hidden; background: #0b0e0c; padding: 10mm; color: #c8cec5; }
.checkup-report .cta::before { position: absolute; inset: 0; opacity: .18; background-image: linear-gradient(rgba(241,243,237,.15) 0.5px, transparent 0.5px), linear-gradient(90deg, rgba(241,243,237,.15) 0.5px, transparent 0.5px); background-size: 10mm 10mm; content: ""; }
.checkup-report .cta > * { position: relative; }
.checkup-report .cta .eyebrow { color: #b7d477; }
.checkup-report .cta h2 { max-width: 30ch; margin-bottom: 4mm; color: #f1f3ed; font-size: 16pt; letter-spacing: -0.035em; }
.checkup-report .cta p { max-width: 150mm; font-size: 9.5pt; line-height: 1.55; }
/* Contactos como links reais (<a href>): o printToPDF exporta anotações de
   link com o URL embutido, e o clique deixa de depender da deteção de texto
   do leitor (que partia "bimdesk.io" em "b imdesk.io"). Sem letter-spacing
   pela mesma razão, na camada de cópia. */
.checkup-report .cta .contact { margin-top: 5mm; line-height: 1.7; }
.checkup-report .cta .contact a { color: #b7d477; font-weight: 700; letter-spacing: 0; text-decoration: none; }
.checkup-report .disclaimer { position: absolute; right: 15mm; bottom: 25mm; left: 15mm; border-left: 2.5pt solid #b7d477; padding-left: 5mm; color: #6a746a; font-size: 7.5pt; line-height: 1.55; }

/* Anexo · respostas registadas */
.checkup-report .annex-block { margin-bottom: 6mm; }
.checkup-report .annex-block .eyebrow { margin-bottom: 1mm; }
.checkup-report .qa { display: grid; grid-template-columns: 1fr 62mm; gap: 6mm; border-top: 1px solid #e4e7de; padding: 2.2mm 0; page-break-inside: avoid; }
.checkup-report .qa-q { color: #6a746a; font-size: 8pt; line-height: 1.45; }
.checkup-report .qa-q b { margin-right: 1mm; color: #667d35; font-size: 7pt; font-weight: 700; letter-spacing: .04em; }
.checkup-report .qa-a { color: #151a16; font-size: 8.5pt; font-weight: 600; line-height: 1.45; }

/* Integração com a página do checkup: fora da impressão o relatório fica
   escondido em [data-report-host hidden]; ao imprimir, e só quando o relatório
   já foi injetado, o resto da página desaparece e o relatório assume o A4.
   Sem relatório no DOM (JS falhou) aplicam-se os estilos print legados do
   screening.css — o body:has() garante o fallback. */
[data-report-host][hidden] { display: none !important; }
@media print {
  body:has([data-report-host] .checkup-report) { background: #fff !important; }
  body:has([data-report-host] .checkup-report) .site-header,
  body:has([data-report-host] .checkup-report) .site-footer,
  body:has([data-report-host] .checkup-report) .skip-link,
  body:has([data-report-host] .checkup-report) .breadcrumb { display: none !important; }
  body:has([data-report-host] .checkup-report) main { margin: 0 !important; padding: 0 !important; overflow: visible !important; }
  body:has([data-report-host] .checkup-report) .screening { width: auto; max-width: none; margin: 0; padding: 0; }
  body:has([data-report-host] .checkup-report) .screening > :not([data-report-host]) { display: none !important; }
  body:has([data-report-host] .checkup-report) [data-report-host][hidden] { display: block !important; }
}
