/* ============================================================
   HIDROSTATION PORTAL — v2 (ronda 2 do redesign, 2026-09-18)
   Carrega DEPOIS de hidrostation-tokens.css e hidrostation-portal.css.

   Cobre os blocos novos do protótipo:
     2a  consola de início (faixa de indicadores)
     2d  página dedicada de configuradores
     2e  página dedicada de dimensionamentos
     2b  apoio à decisão nos cartões de opção
     2c  documentos gerados (folha A4, ecrã e impressão)

   ⚠️ O ficheiro do handoff começava por redefinir a casca da consola
   (.hs-console, .hs-console__body, .hs-topbar, .hs-search) e os filtros
   (.hs-filters, .hs-filter). Essas peças já existem no portal desde a
   ronda 1 — e, como esta folha carrega em terceiro, as regras do handoff
   ganhavam-lhes e punham o /inicio e as fichas a uma coluna só. Ficaram
   de fora de propósito; o que a ronda 2 acrescenta de novo está tudo
   aqui e usa os mesmos tokens.
   ============================================================ */

/* ---------- Cabeçalho de página ---------- */
.hs-pagehead{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;margin-bottom:24px}
.hs-pagehead__title{font-size:1.75rem;font-weight:var(--fw-bold);letter-spacing:var(--ls-display);margin:0 0 8px}
.hs-pagehead__lead{font-size:.92rem;line-height:1.55;color:var(--text-body);margin:0;max-width:560px}
.hs-pagehead > :last-child{flex:none}

/* ---------- Faixa de indicadores ---------- */
.hs-stat-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:18px}
.hs-stat{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:16px;padding:16px 18px}
.hs-stat__value{font-size:1.5rem;font-weight:var(--fw-bold);letter-spacing:var(--ls-display);line-height:1}
.hs-stat__label{font-size:.76rem;color:var(--text-body);margin-top:4px}

/* Só o que a página nova acrescenta aos filtros do handoff: a nota de
   ordenação à direita e o espaço por baixo quando a barra é a da lista. */
.hs-filters--lista{margin-bottom:16px;align-items:center}
.hs-filters__sort{margin-left:auto;font-size:.78rem;color:var(--text-caption)}
.hs-filters__sort strong{color:var(--text-chip);font-weight:var(--fw-semibold)}

/* ---------- Cartão de configurador (2d) ---------- */
.hs-tool-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.hs-cfg-card{
  display:flex;flex-direction:column;overflow:hidden;
  background:var(--surface-card);border:1px solid var(--border-subtle);
  border-radius:var(--radius-card);box-shadow:var(--shadow-sm);
  transition:transform var(--dur-transform) var(--ease),box-shadow var(--dur-transform) var(--ease),border-color var(--dur-color) var(--ease);
}
.hs-cfg-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-card-hover);border-color:var(--border-strong,#d8dae6)}
/* O diagrama de instalação tem de aparecer INTEIRO: contain sobre fundo neutro. */
.hs-cfg-card__media{
  position:relative;height:204px;padding:10px 12px 14px;box-sizing:border-box;
  background:#eef0f4;border-bottom:1px solid var(--border-subtle);
}
.hs-cfg-card__media img{width:100%;height:100%;object-fit:contain;display:block}
.hs-cfg-card__norma{
  position:absolute;left:14px;bottom:12px;
  padding:5px 10px;border-radius:var(--radius-pill);
  background:rgba(255,255,255,.92);color:var(--text);
  font-size:.66rem;font-weight:var(--fw-bold);letter-spacing:.06em;text-transform:uppercase;
}
.hs-cfg-card__body{display:flex;flex-direction:column;gap:14px;flex:1;padding:20px 22px 22px}
.hs-cfg-card__title{font-size:1.02rem;font-weight:var(--fw-bold);letter-spacing:var(--ls-card);line-height:1.25;margin:0 0 7px}
.hs-cfg-card__desc{font-size:.82rem;line-height:1.55;color:var(--text-body);margin:0}
.hs-cfg-card__spec{
  display:flex;flex-direction:column;gap:7px;padding:13px 0;
  border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);
}
.hs-cfg-card__spec div{display:flex;gap:10px}
.hs-cfg-card__spec dt{
  width:66px;flex:none;padding-top:1px;
  font-size:.68rem;font-weight:var(--fw-bold);letter-spacing:.05em;text-transform:uppercase;color:var(--text-caption);
}
.hs-cfg-card__spec dd{font-size:.78rem;line-height:1.45;color:var(--text-chip);margin:0}
.hs-cfg-card__foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:10px}
.hs-cfg-card__mine{font-size:.74rem;color:var(--text-caption)}

/* Lista compacta de configuradores (barra lateral do início) */
.hs-cfg-list{display:flex;flex-direction:column;gap:8px}
.hs-cfg-list__item{
  display:flex;align-items:center;gap:11px;width:100%;padding:8px;text-align:left;
  background:var(--surface-card);border:1px solid var(--rule);border-radius:14px;cursor:pointer;
  transition:border-color var(--dur-color) var(--ease),background var(--dur-color) var(--ease);
}
.hs-cfg-list__item:hover{border-color:var(--accent);background:var(--cyan-bg)}
.hs-cfg-list__item img{
  width:40px;height:40px;flex:none;padding:3px;box-sizing:border-box;
  border-radius:10px;object-fit:contain;background:#eef0f4;
}
.hs-cfg-list__name{font-size:.84rem;font-weight:var(--fw-semibold);color:var(--text);line-height:1.25}
.hs-cfg-list__norma{font-size:.7rem;color:var(--text-caption)}

/* ---------- Tabela de dimensionamentos (2e) ---------- */
.hs-dim-table{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-table);overflow:hidden}
.hs-dim-table__head,
.hs-dim-table__row{display:grid;grid-template-columns:2fr .95fr 1.25fr .8fr .8fr 116px;gap:14px;align-items:center}
.hs-dim-table__head{
  padding:14px 24px;background:var(--bg-soft);border-bottom:1px solid var(--border-subtle);
  font-size:.7rem;font-weight:var(--fw-bold);letter-spacing:.06em;text-transform:uppercase;color:var(--text-caption);
}
.hs-dim-table__row{padding:15px 24px;border-top:1px solid var(--rule);transition:background var(--dur-color) var(--ease)}
.hs-dim-table__row:hover{background:var(--row-hover)}
.hs-dim-table__obra{font-size:.9rem;font-weight:var(--fw-semibold)}
.hs-dim-table__ref{font-size:.74rem;color:var(--text-caption)}
.hs-dim-table__cell{font-size:.8rem;color:var(--text-body)}
.hs-dim-table__cell--strong{color:var(--text-chip)}
.hs-dim-table__actions{display:flex;gap:14px;justify-content:flex-end}
.hs-dim-table__foot{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:14px 24px;border-top:1px solid var(--border-subtle);background:var(--bg-soft);
  font-size:.78rem;color:var(--text-caption);
}
/* Variante curta usada no início (sem estado nem data) */
.hs-dim-table--compact .hs-dim-table__head,
.hs-dim-table--compact .hs-dim-table__row{grid-template-columns:2fr 1fr 1.3fr 120px}

.hs-chip{
  justify-self:start;padding:5px 11px;border-radius:var(--radius-pill);
  font-size:.7rem;font-weight:var(--fw-bold);letter-spacing:.04em;
}
.hs-chip--concluido{color:var(--cyan-text);background:var(--cyan-bg)}
.hs-chip--rascunho{color:#8a6d18;background:#fdf5e3}
.hs-chip--revisao{color:#4a3fb0;background:#eeeefb}

/* ---------- Escolha com apoio à decisão (2b) ---------- */
.hs-decide{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-card);padding:26px 28px;margin-bottom:16px}
.hs-decide__head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:6px}
.hs-decide__title{font-size:.95rem;font-weight:var(--fw-bold);letter-spacing:-.01em}
.hs-decide__hint{font-size:.76rem;color:var(--text-caption)}
.hs-decide__intro{font-size:.82rem;line-height:1.55;color:var(--text-body);margin:0 0 16px}
.hs-decide__options{display:grid;gap:12px}
.hs-decide__options--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.hs-decide__options--3{grid-template-columns:repeat(3,minmax(0,1fr))}

.hs-choice{
  display:flex;flex-direction:column;gap:9px;text-align:left;cursor:pointer;
  padding:16px 18px;border-radius:16px;
  border:1.5px solid var(--border-default);background:var(--surface-card);
  transition:border-color var(--dur-color) var(--ease),background var(--dur-color) var(--ease);
}
.hs-choice:hover{border-color:var(--accent)}
.hs-choice[aria-pressed="true"]{border-color:var(--accent);background:#f4fbfd}
.hs-choice__head{display:flex;align-items:center;gap:10px}
.hs-choice__mark{
  width:17px;height:17px;flex:none;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  border:1.5px solid var(--border-strong,#d8dae6);background:var(--surface-card);
  color:transparent;font-size:.62rem;font-weight:var(--fw-bold);
}
.hs-choice[aria-pressed="true"] .hs-choice__mark{border-color:var(--accent);background:var(--accent);color:#0e1030}
.hs-choice__label{font-size:.92rem;font-weight:var(--fw-bold);color:var(--text)}
.hs-choice__label--sm{font-size:.88rem}
.hs-choice__tag{
  margin-left:auto;padding:4px 10px;border-radius:var(--radius-pill);
  font-size:.72rem;font-weight:var(--fw-bold);color:var(--text-caption);background:var(--bg-soft);
}
.hs-choice[aria-pressed="true"] .hs-choice__tag{color:var(--cyan-text);background:var(--cyan-bg)}
.hs-choice__when{font-size:.8rem;line-height:1.5;color:var(--text-chip)}
.hs-choice__effect{font-size:.78rem;line-height:1.5;color:var(--text-body)}
/* Consequência calculada da opção — é isto que faz o apoio à decisão. */
.hs-choice__outcome{
  width:100%;padding-top:7px;border-top:1px dashed #d8e6ec;
  font-size:.78rem;font-weight:var(--fw-bold);color:var(--cyan-text);
}

/* Grupo de pílulas (selector curto que reflecte o estado) */
.hs-pillgroup{display:flex;gap:7px}
.hs-pillgroup button{
  flex:1;padding:11px 8px;border-radius:10px;cursor:pointer;
  font-size:.8rem;font-weight:var(--fw-semibold);color:var(--text);
  border:1.5px solid var(--border-default);background:var(--surface-card);
}
.hs-pillgroup button[aria-pressed="true"]{border-color:var(--accent);background:#f4fbfd}

/* Aviso "não tem a certeza" */
.hs-assume{padding:16px 18px;border-radius:16px;background:#fbf7ec;border:1px solid #f0e3c4}
.hs-assume__title{font-size:.7rem;font-weight:var(--fw-bold);letter-spacing:.06em;text-transform:uppercase;color:#8a6d18;margin-bottom:6px}
.hs-assume p{font-size:.78rem;line-height:1.5;color:#6b5a2e;margin:0 0 10px}
.hs-assume a{font-size:.78rem;font-weight:var(--fw-semibold);color:#8a6d18}

/* ============================================================
   DOCUMENTOS GERADOS (2c)
   Mesmo ficheiro para pré-visualização em ecrã e para o PDF.
   Regra: cabeçalho navy + filete cyan + rodapé de três campos,
   igual em TODOS os documentos que o utilizador descarrega.
   ============================================================ */
.hs-doc{
  width:794px;min-height:1123px;margin:0 auto;
  display:flex;flex-direction:column;
  background:#fff;color:var(--text);
  box-shadow:0 6px 24px rgba(20,24,80,.1);
}
.hs-doc__header{
  display:flex;align-items:center;justify-content:space-between;gap:24px;
  padding:26px 56px;background:var(--surface-dark,#181a4d);
}
.hs-doc__brand{display:flex;align-items:center;gap:12px}
.hs-doc__brand img{width:30px;height:30px}
.hs-doc__wordmark{font-size:15px;font-weight:var(--fw-bold);color:#fff;letter-spacing:-.01em}
.hs-doc__kicker{font-size:10px;font-weight:var(--fw-semibold);letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}
.hs-doc__type{font-size:13px;font-weight:var(--fw-semibold);color:#fff;text-align:right}
.hs-doc__ref{font-size:11px;color:var(--on-navy-meta,#8b8fc6);margin-top:2px;text-align:right}
.hs-doc__rule{height:3px;background:var(--accent)}
.hs-doc__body{flex:1;padding:40px 56px 32px}
.hs-doc__eyebrow{font-size:11px;font-weight:var(--fw-bold);letter-spacing:.14em;text-transform:uppercase;color:var(--text-caption);margin-bottom:8px}
.hs-doc__title{font-size:26px;font-weight:var(--fw-bold);letter-spacing:var(--ls-display);line-height:1.2;margin:0 0 24px}
.hs-doc h2{font-size:14px;font-weight:var(--fw-bold);letter-spacing:.02em;text-transform:uppercase;color:var(--primary);margin:0 0 10px}
.hs-doc h3{font-size:13px;font-weight:var(--fw-bold);color:var(--primary);margin:0 0 8px}
.hs-doc p{font-size:13px;line-height:1.65;color:var(--text-chip);margin:0 0 20px;text-wrap:pretty}
.hs-doc__cols{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-bottom:8px}
.hs-doc__meta{
  display:grid;grid-template-columns:1fr 1fr;gap:0 32px;padding:16px 0;margin-bottom:28px;
  border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);
}
.hs-doc__meta div{display:flex;gap:12px;padding:5px 0}
.hs-doc__meta dt{width:96px;flex:none;font-size:11px;font-weight:var(--fw-bold);letter-spacing:.04em;text-transform:uppercase;color:var(--text-caption)}
.hs-doc__meta dd{font-size:13px;color:var(--text);margin:0}
.hs-doc__table{border:1px solid var(--border-subtle);border-radius:8px;overflow:hidden;margin-bottom:24px}
.hs-doc__table div{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:9px 18px;border-bottom:1px solid var(--rule)}
.hs-doc__table div:last-child{border-bottom:none}
.hs-doc__table span{font-size:12.5px;color:var(--text-chip)}
.hs-doc__table b{font-size:12.5px;font-weight:var(--fw-semibold);color:var(--text)}
.hs-doc__formula{background:var(--bg-soft);border-left:3px solid var(--accent);padding:16px 20px;margin-bottom:16px}
.hs-doc__formula strong{display:block;font-size:14px;font-weight:var(--fw-semibold);color:var(--text);margin-bottom:4px}
.hs-doc__formula span{font-size:12px;line-height:1.6;color:var(--text-body)}
.hs-doc__solution{
  display:flex;align-items:center;justify-content:space-between;gap:24px;
  background:var(--surface-dark,#181a4d);border-radius:10px;padding:22px 24px;color:#fff;
}
.hs-doc__solution-eyebrow{font-size:11px;font-weight:var(--fw-bold);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:6px}
.hs-doc__solution-name{font-size:17px;font-weight:var(--fw-bold);letter-spacing:-.01em}
.hs-doc__solution-note{font-size:12.5px;color:var(--on-navy-body,#b9bce0);margin-top:3px}
.hs-doc__solution-ns{font-size:30px;font-weight:var(--fw-bold);letter-spacing:var(--ls-display);line-height:1}
.hs-doc__bullets{display:flex;flex-direction:column;gap:7px;margin:0 0 20px}
.hs-doc__bullets div{display:flex;gap:10px}
.hs-doc__bullets div::before{content:"—";color:var(--accent);font-size:13px;line-height:1.65}
.hs-doc__bullets span{font-size:13px;line-height:1.65;color:var(--text-chip)}
/* Mapa de fornecimento: designação, unidade, quantidade. SEM referência de artigo
   e SEM preço unitário — só o total global. */
.hs-doc__mq-head,
.hs-doc__mq-row{display:grid;grid-template-columns:1fr 40px 44px}
.hs-doc__mq-head{
  padding:0 0 8px;border-bottom:1.5px solid var(--text);
  font-size:11px;font-weight:var(--fw-bold);letter-spacing:.04em;text-transform:uppercase;color:var(--text-caption);
}
.hs-doc__mq-row{padding:9px 0;border-bottom:1px solid var(--rule);align-items:baseline}
.hs-doc__mq-row span:first-child{font-size:12.5px;color:var(--text);padding-right:16px}
.hs-doc__mq-head span:not(:first-child),
.hs-doc__mq-row span:not(:first-child){text-align:right;font-size:12.5px;color:var(--text-chip)}
.hs-doc__total{display:flex;align-items:baseline;justify-content:space-between;gap:24px;padding:14px 0 0;margin-bottom:18px}
.hs-doc__total span{font-size:12.5px;color:var(--text-body)}
.hs-doc__total strong{font-size:20px;font-weight:var(--fw-bold);letter-spacing:-.01em}
.hs-doc__terms{
  display:grid;grid-template-columns:1fr 1fr;gap:6px 24px;
  border:1px solid var(--border-subtle);border-radius:8px;padding:14px 18px;background:var(--bg-soft);
}
.hs-doc__terms div{display:flex;gap:10px}
.hs-doc__terms dt{width:66px;flex:none;font-size:11.5px;color:var(--text-caption)}
.hs-doc__terms dd{font-size:12px;color:var(--text-chip);margin:0}
.hs-doc__disclaimer{font-size:11.5px;line-height:1.55;color:var(--text-caption);margin:12px 0 0}
.hs-doc__footer{padding:14px 56px 22px}
.hs-doc__footer hr{border:none;height:1px;background:var(--border-subtle);margin-bottom:10px}
.hs-doc__footer div{display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:10.5px;color:var(--text-caption)}

/* Impressão: a folha É a página. Sem sombra, sem fundo de secretária. */
@page{size:A4;margin:0}
@media print{
  body{background:#fff}
  .hs-doc{width:210mm;min-height:297mm;box-shadow:none;margin:0;page-break-after:always}
  .hs-doc:last-child{page-break-after:auto}
  .hs-doc__header{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .hs-doc__solution,.hs-doc__rule{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .hs-no-print{display:none !important}
}

/* ---------- Responsivo (o portal é desktop-first) ---------- */
@media (max-width:1180px){
  .hs-tool-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .hs-console__body--split{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:900px){
  .hs-sidebar{display:none}
  .hs-search{width:100%}
  .hs-dim-table__head{display:none}
  .hs-dim-table__row{grid-template-columns:1fr;gap:6px}
  .hs-dim-table__actions{justify-content:flex-start}
  .hs-decide__options--2,.hs-decide__options--3{grid-template-columns:minmax(0,1fr)}
}

/* ============================================================
   ADIÇÕES DO PORTAL — fora do handoff
   Tudo acima desta linha veio do design handoff da ronda 2
   (design_handoff_portal_redesign/css/hidrostation-portal-v2.css),
   sem a casca e os filtros que o portal já tinha. Daqui para baixo
   é o que a implementação precisou, com os mesmos tokens.
   ============================================================ */

/* A lista completa leva três acções por linha (Reabrir · Docs · apagar) e
   os 116px do handoff, pensados para duas, ficavam curtos. */
.hs-dim-table--gerir .hs-dim-table__head,
.hs-dim-table--gerir .hs-dim-table__row{grid-template-columns:2fr .95fr 1.25fr .8fr .8fr 160px}

/* Ligações da coluna de acções: peso e cor dos links de tabela do portal. */
.hs-dim-table__actions a{font-size:.78rem;font-weight:var(--fw-semibold)}

/* O cartão de configurador é um <article>, não um <a>: o seu <h2> e o <p>
   herdam as margens do documento se não as tirarmos. */
.hs-cfg-card__title,.hs-cfg-card__desc{margin-top:0}

/* A grelha e a lista de configuradores são feitas de <span> dentro de <a>:
   sem isto o nome e a norma ficavam na mesma linha (mesma lição das tabelas
   da consola, ronda 2 do redesign). */
.hs-cfg-list__name,.hs-cfg-list__norma{display:block}
.hs-dim-table__obra,.hs-dim-table__ref{display:block}

@media (max-width:900px){
  /* ⚠️ As variantes do portal têm mais especificidade do que as regras do
     handoff e ganhavam-lhes DENTRO da media query — sem esta linha a lista
     ficava com uma palavra por linha a 400px (aconteceu na ronda 2 com a
     .hs-table--consola). */
  .hs-dim-table--gerir .hs-dim-table__row{grid-template-columns:minmax(0,1fr);gap:6px}
  .hs-dim-table--gerir .hs-dim-table__head{display:none}
  .hs-tool-grid{grid-template-columns:minmax(0,1fr)}
  .hs-pagehead{flex-direction:column;align-items:flex-start;gap:16px}
}

/* A folha do documento é servida sozinha (no iframe da pré-visualização e no
   WeasyPrint), sem o hidrostation-portal.css — sem isto o documento saía em
   serif, que é o que o browser usa por omissão e o que o design system
   proíbe. Tipografia de sistema, como no resto do portal. */
.hs-doc,.hs-doc button,.hs-doc input{font-family:var(--font-body)}
.hs-doc *{box-sizing:border-box}
.hs-doc h1,.hs-doc h2,.hs-doc h3,.hs-doc p,.hs-doc dl,.hs-doc dd{margin-top:0}
/* O bloco escuro da solução e o que vem a seguir precisam de ar. */
.hs-doc__solution{margin-bottom:22px}

/* Pré-visualização das folhas A4 na consola. Cada folha vai num <iframe>
   (srcdoc) para o CSS do documento — que redefine body, h2 e p — não se
   misturar com o da consola. 794×1123 é a folha A4 a 96 dpi. */
.hs-doc-previews{display:flex;flex-direction:column;gap:18px;align-items:center}
.hs-doc-preview{
  width:794px;max-width:100%;height:1123px;border:none;
  background:#fff;box-shadow:var(--shadow-lg);border-radius:4px;
}
@media (max-width:900px){
  /* A folha não encolhe (é A4): abaixo disto rola na horizontal dentro da
     moldura, em vez de arrastar a página inteira. */
  .hs-doc-previews{overflow-x:auto}
  .hs-doc-preview{width:794px;max-width:none;height:640px}
}

/* Cada documento é UMA folha A4. Os blocos não se partem ao meio e o rodapé
   fica colado ao fundo da folha.
   ⚠️ NUNCA pôr break-inside:avoid na própria .hs-doc: o WeasyPrint não tem
   como partir o que não cabe e ENGOLE o fim do documento (perdeu-se o quadro
   de condições e o rodapé do caderno de encargos, e nada avisa). Só os
   blocos de dentro é que se protegem. */
.hs-doc__meta,.hs-doc__table,.hs-doc__solution,.hs-doc__formula,
.hs-doc__terms,.hs-doc__mq-row{break-inside:avoid}
.hs-doc__footer{margin-top:auto}

/* Cada documento é UMA folha A4, e com os espaçamentos do handoff passava
   para uma segunda folha por causa de meia dúzia de linhas — a memória
   descritiva por 129px, o caderno de encargos por 213px. Isto aperta o ar
   entre blocos sem mexer nos tamanhos de letra, e vale no ecrã e no PDF
   (a pré-visualização tem de ser a folha que sai). */
.hs-doc__kicker{white-space:nowrap}   /* «PORTAL DE PROJECTO» numa linha só */
.hs-doc p{margin-bottom:13px}
.hs-doc h2{margin-top:2px;margin-bottom:8px}
.hs-doc h3{margin-bottom:6px}
.hs-doc__bullets{gap:4px;margin-bottom:14px}
.hs-doc__header{padding-block:20px}
.hs-doc__title{margin-bottom:16px}
.hs-doc__meta{padding:12px 0;margin-bottom:18px}
.hs-doc__meta div{padding:3px 0}
.hs-doc__table{margin-bottom:16px}
.hs-doc__table div{padding:7px 18px}
.hs-doc__formula{padding:12px 18px;margin-bottom:12px}
.hs-doc__solution{padding:18px 22px;margin-bottom:16px}
.hs-doc__mq-row{padding:7px 0}
.hs-doc__total{padding-top:10px;margin-bottom:14px}
.hs-doc__terms{padding:12px 18px}

/* ⚠️ Impressão e PDF — o que o WeasyPrint precisa que seja diferente do ecrã:

   1. A folha NÃO pode ser flex. O WeasyPrint não sabe partir um contentor
      flex entre páginas e, quando o conteúdo passa do fim da folha, ENGOLE-O
      em silêncio — foi assim que o «4. Solução adoptada» e o rodapé
      desapareceram do PDF da memória descritiva, sem erro nenhum.
   2. A folha não leva altura mínima: quem manda no tamanho é a @page. Com
      min-height de 297mm e uma margem de página, o documento ficava sempre
      com uma segunda folha vazia.
   3. O rodapé passa a ser o da @page, para aparecer em TODAS as folhas —
      um caderno de encargos com muitos acessórios passa de uma folha, e o
      rodapé tem de ir com ele. O <footer> do HTML é só para o ecrã. */
@media print{
  @page{
    size:A4;
    margin:0 0 12mm;
    @bottom-left{
      content:"Hidrostation, Lda · portal.hidrostation.pt";
      margin-left:56px;font-size:8pt;color:#6b6f80;
    }
    @bottom-center{content:string(docref);font-size:8pt;color:#6b6f80}
    @bottom-right{
      content:counter(page) " / " counter(pages);
      margin-right:56px;font-size:8pt;color:#6b6f80;
    }
  }
  .hs-doc{display:block;min-height:0;box-shadow:none}
  /* o rodapé passou para a @page: o corpo recupera esse espaço */
  .hs-doc__body{padding:32px 56px 6px}
  .hs-doc__ref{string-set:docref content()}
  .hs-doc__footer{display:none}
}
