/* FERCOPOR Dashboard — estilos específicos, carregados DEPOIS do FERCOPOR Design System (ver ds.lock.json):
   correspondência com a marcação do Dashboard, Início institucional, Relatório Comercial e impressão A4. */
/* ---------- Correspondência com a marcação do Dashboard (títulos simples, tabelas sem classe, filtros) ---------- */
.conteudo > h1, .conteudo section > h1 { font-family: var(--ds-serifa); font-weight: 600; letter-spacing: -.01em; font-size: var(--ds-t-display); line-height: 1.12; color: var(--ds-texto); }
.conteudo h2 { font-family: var(--ds-serifa); font-weight: 600; letter-spacing: -.005em; color: var(--ds-texto); }
.painel > h2, .painel h2 { font-size: var(--ds-t-seccao); }
.caixa-tabela > table { border: 1px solid var(--ds-linha); border-radius: var(--ds-r-cartao); border-collapse: separate; border-spacing: 0; overflow: hidden; background: var(--ds-superficie); box-shadow: var(--ds-sombra-1); }
.caixa-tabela > table thead th { background: var(--ds-superficie-2); font-size: 11.5px; letter-spacing: .08em; color: var(--ds-texto-3); }
.caixa-tabela > table th, .caixa-tabela > table td { padding: 12px 14px; border-bottom-color: var(--ds-linha); }
.caixa-tabela > table tbody tr:last-child > * { border-bottom: 0; }
.caixa-tabela > table tbody tr:hover { background: var(--ds-superficie-2); }
.barra-filtros { border-radius: var(--ds-r-cartao); border-color: var(--ds-linha); box-shadow: var(--ds-sombra-1); padding: 14px 16px; }
.filtros select { min-height: var(--ds-altura-controlo); border-radius: var(--ds-r); border: 1px solid var(--ds-linha-forte); background: var(--ds-superficie); color: var(--ds-texto); padding: 0 14px; font: inherit; }
.filtros select:focus { outline: none; border-color: var(--ds-dourado); box-shadow: var(--ds-anel-foco); }
.subnav a { border-color: var(--ds-linha-forte); transition: background-color var(--ds-rapido) ease, color var(--ds-rapido) ease, border-color var(--ds-rapido) ease; }
.subnav a[aria-current="page"] { background: var(--ds-grafite); border-color: var(--ds-grafite); }
.aviso { border-radius: var(--ds-r); }
/* Entrada da página: discreta (as páginas chegam completas do servidor); sem animação com movimento reduzido */
.conteudo { animation: entrada-pagina 180ms ease-out both; }
@media (prefers-reduced-motion: reduce) { .conteudo { animation: none; } }

/* ---------- Início: ecrã inteiro em branco, só título e subtítulo ---------- */
body.pagina-inicio { background: #FFFFFF; }
body.pagina-inicio .conteudo { max-width: none; background: #FFFFFF; }
.inicio-institucional { min-height: calc(100vh - 190px); min-height: calc(100dvh - 190px); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; text-align: center; padding: 48px 24px; }
.inicio-institucional h1 { margin: 0; font-family: var(--ds-serifa); font-weight: 600; font-size: clamp(34px, 6vw, 56px); line-height: 1.08; letter-spacing: -.015em; color: var(--ds-texto); }
.inicio-subtitulo { margin: 0; max-width: 640px; font-size: clamp(16px, 2.2vw, 19px); line-height: 1.55; color: var(--ds-texto-2); }

/* ---------- Relatórios › Relatório Comercial ---------- */
.cad-entrada .botao { align-self: flex-start; }
.cad-controlos .botao { align-self: flex-end; }
/* «Gerar PDF» no fim da página, depois do relatório (ligação para o ficheiro gerado no servidor; funciona sem JavaScript) */
.cad-exportar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; margin-top: 18px; padding: 18px 20px; background: var(--ds-superficie); border: 1px solid var(--ds-linha); border-radius: var(--ds-r-cartao); }
.cad-exportar .subtitulo { margin: 0; }
.cad-exportar .botao { order: 2; }
.relatorio-cad { display: flex; flex-direction: column; gap: 22px; background: var(--ds-superficie); border: 1px solid var(--ds-linha); border-radius: var(--ds-r-cartao); box-shadow: var(--ds-sombra-2); padding: 28px; }
.cad-cabecalho { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding-bottom: 18px; border-bottom: 2px solid var(--ds-dourado); }
.cad-cabecalho img { display: block; width: 160px; height: auto; }
.cad-cabecalho > div { text-align: right; }
.cad-cabecalho h1 { font-family: var(--ds-serifa); font-weight: 600; font-size: 30px; line-height: 1.1; }
.cad-periodo { margin: 4px 0 0; font-size: 15px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--ds-dourado-escuro); }
.cad-bloco { display: flex; flex-direction: column; gap: 12px; }
.cad-bloco > h2, .cad-rodape > h2 { font-size: 20px; }
.cad-indicadores { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); }
.cad-kpi .cad-tipo { order: -2; font-size: 10.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--ds-dourado); }
.tabela-cad tfoot th, .tabela-cad tfoot td { font-weight: 800; border-top: 1px solid var(--ds-linha-forte); background: var(--ds-superficie-2); }
.tabela-cad tr.destaque > * { background: var(--ds-dourado-vela); }
.tabela-cad .sem-dados { color: var(--ds-texto-3); font-style: italic; }
.grafico-linhas { margin: 0; }
.grafico-linhas svg { display: block; width: 100%; height: auto; }
.grafico-linhas .grelha { stroke: var(--ds-linha); stroke-width: 1; }
.grafico-linhas .eixo { font: 12px var(--letra); fill: var(--ds-texto-3); }
.grafico-linhas .valor { font: 700 11px var(--letra); fill: var(--ds-texto-2); }
.grafico-linhas polyline { fill: none; stroke-width: 2.5; stroke-linejoin: round; stroke-linecap: round; }
.grafico-linhas polyline.linha-leads, .grafico-linhas .ponto.linha-leads circle { stroke: var(--ds-dourado); }
.grafico-linhas polyline.linha-reunioes, .grafico-linhas .ponto.linha-reunioes circle { stroke: var(--ds-grafite); }
.grafico-linhas polyline.linha-reunioes { stroke-dasharray: 1 5; }   /* não só pela cor: as reuniões a pontilhado (as «atenderam» a tracejado) */
.grafico-linhas polyline.linha-condicao, .grafico-linhas .ponto.linha-condicao circle { stroke: var(--ds-info); }
.grafico-linhas .ponto circle { fill: var(--ds-superficie); stroke-width: 2.5; }
.grafico-linhas .ponto-manual circle { fill: var(--ds-dourado-vela); stroke-dasharray: 2 2; }   /* contagem manual: ponto distinto (e «(manual)» escrito) */
.grafico-linhas .legenda { margin-top: 8px; }
.grafico-linhas .legenda i { display: inline-block; width: 22px; height: 0; border-top: 3px solid var(--ds-dourado); }
.grafico-linhas .legenda i.linha-reunioes { border-top: 0; height: 3px; background: repeating-linear-gradient(90deg, var(--ds-grafite) 0 3px, transparent 3px 7px); }   /* pontilhado (as «atenderam» a tracejado) */
.grafico-linhas .legenda i.linha-condicao { border-top: 3px dotted var(--ds-texto-3); }
.legenda-condicao { color: var(--ds-texto-3); }
.cad-rodape { border-top: 1px solid var(--ds-linha); padding-top: 16px; display: flex; flex-direction: column; gap: 10px; font-size: 13px; color: var(--ds-texto-2); }
.cad-rodape dl { margin: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 8px 16px; }
.cad-rodape dt { font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--ds-texto-3); }
.cad-rodape dd { margin: 2px 0 0; }
.cad-rodape ul { margin: 0; padding-left: 18px; display: grid; gap: 4px; }
@media (max-width: 599px) {
  .relatorio-cad { padding: 18px 14px; }
  .cad-cabecalho > div { text-align: left; }
}

/* ---------- Impressão / PDF (A4): só o relatório, sem navegação nem botões; blocos sem cortes ---------- */
@page { size: A4; margin: 14mm 12mm; }
@media print {
  html, body { background: #FFFFFF !important; }
  body { padding: 0 !important; font-size: 10.5pt; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .topo, .nav-fundo, .subnav, .rodape, .saltar, .aviso-demo, .cad-controlos, .cad-exportar, .form-atualizar { display: none !important; }
  .conteudo { animation: none !important; margin: 0 !important; padding: 0 !important; max-width: none !important; background: #FFFFFF !important; border-radius: 0 !important; min-height: 0 !important; }
  .relatorio-cad { border: 0; box-shadow: none; padding: 0; gap: 14px; }
  .indicador, .caixa-tabela > table, .tabela { box-shadow: none !important; }
  .caixa-tabela { overflow: visible !important; }
  .cad-bloco, .cad-rodape, .grafico-linhas, .indicador, tr, thead { break-inside: avoid; page-break-inside: avoid; }
  .cad-evolucao { break-before: auto; }
  h2 { break-after: avoid; page-break-after: avoid; }
  .cad-indicadores { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; }
  .indicador strong { font-size: 20pt; }
  a { color: inherit; text-decoration: none; }
}
/* ---------- Relatório Comercial: evolução anual, acumulados e empreendimentos (2026-11-04) ---------- */
.cad-datas { margin: 6px 0 0; font-size: 12.5px; color: var(--ds-texto-3); }
.cad-bloco h3 { margin: 6px 0 0; font-size: 15px; font-weight: 700; color: var(--ds-texto-2); }
.cad-kpi .cad-acum { font-size: 13px; color: var(--ds-dourado-escuro); }
.cad-kpi .cad-acum b { font-weight: 800; }
.cad-grelha-emp { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; }
@media (min-width: 1100px) { .cad-grelha-emp { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } .cad-grelha-emp > :last-child:nth-child(odd) { grid-column: 1 / -1; } .cad-grelha-emp > :last-child:nth-child(odd) .grafico-barras svg { max-width: calc(50% - 9px); } }
.cad-nota { margin: 6px 0 0; font-size: 12px; color: var(--ds-texto-3); }
.tabela-cad abbr { text-decoration: none; cursor: help; }
.cad-grafico-emp { display: flex; flex-direction: column; gap: 6px; padding: 14px 16px; border: 1px solid var(--ds-linha); border-radius: var(--ds-r-cartao); background: var(--ds-superficie); }
.grafico-barras { margin: 0; }
.grafico-barras svg { display: block; width: 100%; max-width: 860px; height: auto; }
.grafico-barras .rotulo { font: 600 13px var(--letra); fill: var(--ds-texto); }
.grafico-barras .valor { font: 700 12px var(--letra); fill: var(--ds-texto-2); }
.grafico-barras .sem-valor { font-weight: 500; font-style: italic; fill: var(--ds-texto-3); }
.grafico-barras .legenda { margin-top: 6px; }
.grafico-barras .legenda i { display: inline-block; width: 12px; height: 12px; border: 0; border-radius: 3px; }
.grafico-barras .legenda i.barra-leads { background: var(--ds-dourado); } .grafico-barras .legenda i.barra-leads-mes { background: #C9B37A; }
.grafico-barras .legenda i.barra-reunioes { background: var(--ds-grafite); } .grafico-barras .legenda i.barra-negocios { background: #8A3B12; }
.barra-leads { fill: var(--ds-dourado); background: var(--ds-dourado); }
.barra-leads-mes { fill: #C9B37A; background: #C9B37A; }
.barra-condicao { fill: #2F6B3A; background: #2F6B3A; }
.barra-reunioes { fill: var(--ds-grafite); background: var(--ds-grafite); }
.barra-negocios { fill: #8A3B12; background: #8A3B12; }
/* Séries novas do gráfico de linhas (a forma também distingue: tracejados e pontos) */
.grafico-linhas polyline.linha-atenderam, .grafico-linhas .ponto.linha-atenderam circle { stroke: var(--ds-grafite); }
.grafico-linhas polyline.linha-atenderam { stroke-dasharray: 7 4; }
.grafico-linhas polyline.linha-condicao, .grafico-linhas .ponto.linha-condicao circle { stroke: #2F6B3A; }
.grafico-linhas polyline.linha-negocios, .grafico-linhas .ponto.linha-negocios circle { stroke: #B42318; }
.grafico-linhas .ponto circle { fill: currentColor; }
.grafico-linhas .ponto.linha-leads { color: var(--ds-dourado); } .grafico-linhas .ponto.linha-atenderam, .grafico-linhas .ponto.linha-reunioes { color: var(--ds-grafite); }
.grafico-linhas .ponto.linha-condicao { color: #2F6B3A; } .grafico-linhas .ponto.linha-negocios { color: #B42318; }
.grafico-linhas .legenda i.linha-atenderam { border-top: 3px dashed var(--ds-grafite); }
.grafico-linhas .legenda i.linha-condicao { border-top: 3px solid #2F6B3A; }
.grafico-linhas .legenda i.linha-negocios { border-top: 3px solid #B42318; }
.tabela-cad td.num { white-space: nowrap; }
.tabela-cad tfoot td.num { white-space: normal; }
.tabela-cad .nota-celula { display: block; font-size: 11px; font-weight: 500; color: var(--ds-texto-3); }
/* Telemóvel: os gráficos de barras mantêm a letra legível e deslizam na horizontal (os valores também estão nas tabelas) */
@media (max-width: 640px) { .grafico-barras { overflow-x: auto; } .grafico-barras svg { min-width: 600px; } .grafico-linhas { overflow-x: auto; } .grafico-linhas svg { min-width: 620px; } }
@media print {
  .cad-grafico-emp { break-inside: avoid; }
}

/* Relacional › Mediadores: vistas «Todos os mediadores» / «Ranking» (sublinhado; as zonas continuam em botões) */
.separadores.vistas { gap: 4px; margin: 4px 0 14px; border-bottom: 1px solid var(--ds-linha); }
.separadores.vistas a { min-height: 44px; background: transparent; border: 0; border-bottom: 3px solid transparent; border-radius: 0; color: var(--ds-texto-2); padding: 0 12px; }
.separadores.vistas a[aria-current="page"] { background: transparent; color: var(--ds-texto); border-bottom-color: var(--ds-texto); }
.separadores.vistas a:focus-visible { outline: 2px solid var(--ds-texto); outline-offset: 2px; }
