/* ==== base.css (v3.1) ==== */
/* =====================================================================
   rendaacessivel.pt · base.css (v3.1, 27/09/2026, revisto com as críticas)
   Sistema visual único do site. Direcção decidida pelo dono:
   estrutura B (portal de casas, fotografia primeiro) com a letra e os
   tons quentes da E (cal, madeira, telha para a acção, oliva para estados).

   Letras: Fraunces e Source Sans 3 (famílias do Google Fonts, licença OFL)
   SERVIDAS PELO SITE em /letras/, nunca pelo fonts.googleapis.com: o CSP
   do Caddy não tem font-src e o Google recebia o IP de cada visitante.
   Ficheiros (subconjunto latin, woff2 variável):
     /letras/fraunces-var.woff2       opsz 9..144, wght 400..600
     /letras/source-sans-3-var.woff2  wght 400..700
   No <head>: <link rel="preload" href="/letras/fraunces-var.woff2"
   as="font" type="font/woff2" crossorigin>  (só a Fraunces)

   Regras de uso (o pormenor está em ESPEC.md, secção 9):
   1. Um só botão cheio (.bt) por ecrã. Tudo o resto é .bt-contorno ou .lig.
   2. Telha = acção ou prazo a acabar. Oliva = aberto, serve-te. Madeira
      escura = acontecimento (sorteio, resultados). Mais nenhuma cor.
      Telha em TEXTO só sobre branco; sobre fundo tingido, telha escura.
   3. Sem sombra em repouso; só o que flutua leva --sombra.
   4. Nada se mexe sozinho. Transições só de cor, 150 ms.
   5. Mínimos: leitura 18 px, apoio 16 px, rótulo 15 px, alvo de toque 48 px.
   6. font-size só com var(--t-*). Sete tamanhos, e só estes (a guarda do
      gerador recusa outro valor; excepção única: a impressão, em pt).
   ===================================================================== */

/* ---------- 0. Letras ---------- */
@font-face{
  font-family:"Fraunces"; font-style:normal; font-weight:400 600; font-display:swap;
  src:url("/letras/fraunces-var.woff2") format("woff2");
}
@font-face{
  font-family:"Source Sans 3"; font-style:normal; font-weight:400 700; font-display:swap;
  src:url("/letras/source-sans-3-var.woff2") format("woff2");
}

/* ---------- 1. Tokens ---------- */
:root{
  color-scheme: light;

  /* materiais */
  --cal:#F6F1E8;          /* fundo da página */
  --branco:#FFFFFF;       /* cartões, campos, folha do concurso */
  --cal-2:#EDE5D7;        /* faixas, cartão sem fotografia, rodapé */
  --madeira:#D6C09B;      /* só decoração: sublinhado, trilho */
  --madeira-clara:#F1E6D3;/* fundo de acontecimento */
  --madeira-esc:#77552A;  /* texto de acontecimento (6,7 branco · 5,5 madeira clara) */

  /* tinta (contrastes medidos: cal · cal escura · branco) */
  --tinta:#26211C;        /* 14,2 */
  --tinta-2:#5C5248;      /* 6,8 · 6,1 · 7,6  texto de apoio e rótulos */
  --tinta-3:#6B6055;      /* 5,4 · 4,9 · 6,1  só metadados; passa em todos os fundos */
  --linha:#E3D8C8;        /* filetes, contorno de cartão (decoração) */
  --linha-forte:#8B7F72;  /* contorno de campo e botão (3,9 branco, WCAG 1.4.11) */

  /* acção e estados */
  --telha:#B0482A;        /* botão cheio, prazo curto (5,5 com branco) */
  --telha-esc:#8A3920;    /* ligações, texto telha sobre tingido (6,2 a 7,8) */
  --telha-clara:#F5E2D7;  /* fundo de alerta e de último dia */
  --oliva:#4E5A33;        /* aberto, serve-te, bloco escuro único (7,4; 5,9 na oliva clara) */
  --oliva-clara:#E5E8D4;

  /* letra */
  --serifa:"Fraunces", Georgia, "Times New Roman", serif;
  --letra:"Source Sans 3", "Segoe UI", system-ui, -apple-system, Roboto, sans-serif;
  --base:112.5%;          /* 18 px com a letra do telemóvel normal; segue a preferência dele */

  /* escala: sete tamanhos e só estes (rem, seguem o --base, que segue a letra do telemóvel) */
  --t-1:clamp(1.9rem, 1.35rem + 2.4vw, 3.1rem);    /* 34 > 56 px, h1 */
  --t-2:clamp(1.5rem, 1.25rem + 1.1vw, 2.1rem);    /* 27 > 38 px, h2, preços */
  --t-3:clamp(1.2rem, 1.13rem + .3vw, 1.4rem);     /* 22 > 25 px, h3, renda, factos */
  --t-num:clamp(2.6rem, 2rem + 2.6vw, 3.8rem);     /* o número-imagem */
  --t-corpo:1rem;                                   /* 18 px */
  --t-apoio:.889rem;                                /* 16 px */
  --t-rotulo:.833rem;                               /* 15 px, nunca abaixo */

  /* espaço (base 4) */
  --e-1:4px; --e-2:8px; --e-3:12px; --e-4:16px; --e-5:24px;
  --e-6:32px; --e-7:48px; --e-8:64px; --e-9:96px;
  --e-secao:56px;         /* 96 no computador, ver 14 */

  /* forma */
  --r-cartao:16px; --r-campo:12px; --r-pilula:999px;
  --sombra:0 8px 24px rgba(38,33,28,.14);
  --alvo:48px;
  --larg:1200px; --larg-texto:40rem; --gutter:16px;
  --topo:64px;            /* altura do cabeçalho preso */
  --abre:var(--e-6);      /* do cabeçalho ao primeiro texto de uma página sem migalhas (48 no computador); com migalhas, 0 */
  --dur:150ms;
}

/* ---------- 2. Base ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{
  font-size:var(--base); -webkit-text-size-adjust:100%; text-size-adjust:100%;
  /* o cabeçalho preso e a barra fixa nunca tapam o que tem foco (WCAG 2.4.11) */
  scroll-padding-top:calc(var(--topo) + 24px); scroll-padding-bottom:110px;
}
body{
  margin:0; background:var(--cal); color:var(--tinta);
  font:400 var(--t-corpo)/1.6 var(--letra);
  font-variant-numeric:lining-nums tabular-nums;
  -webkit-font-smoothing:antialiased;
  overflow-wrap:break-word;
}
h1,h2,h3,h4,p,ul,ol,figure,blockquote,dl,dd{ margin:0; }
ul[class],ol[class]{ list-style:none; padding:0; }
img,svg,video{ display:block; max-width:100%; }
img{ height:auto; }
button,input,select,textarea{ font:inherit; color:inherit; }
button{ cursor:pointer; }
[hidden]{ display:none !important; }

h1,h2,h3,.serifa{
  font-family:var(--serifa); font-weight:450; letter-spacing:-.012em;
  font-optical-sizing:auto; text-wrap:balance;
}
h1,.t-1{ font-size:var(--t-1); line-height:1.08; }
h2,.t-2{ font-size:var(--t-2); line-height:1.15; }
h3,.t-3{ font-size:var(--t-3); line-height:1.22; }
.t-num{ font-family:var(--serifa); font-size:var(--t-num); line-height:1; font-weight:450; letter-spacing:-.02em; }
.t-apoio{ font-size:var(--t-apoio); line-height:1.5; color:var(--tinta-2); }
/* rótulo em letra normal, maiúscula só na primeira: maiúsculas espaçadas custam a ler */
.t-rotulo{ font-size:var(--t-rotulo); line-height:1.35; font-weight:600; color:var(--tinta-2); }
.t-forte{ font-weight:700; }
.t-realce{ color:var(--telha-esc); }              /* ênfase de um título: uma por página */
p + p{ margin-top:var(--e-4); }
.texto{ max-width:var(--larg-texto); }            /* ~68 caracteres */
.texto p,.texto li{ text-wrap:pretty; }

a{ color:var(--telha-esc); text-decoration-thickness:1.5px; text-underline-offset:4px; text-decoration-color:currentColor; }
a:hover{ color:var(--tinta); }

/* foco: anel de tinta com halo branco por dentro; vê-se em cal, branco, telha e fotografia */
:focus-visible{ outline:3px solid var(--tinta); outline-offset:2px; box-shadow:0 0 0 2px var(--branco); border-radius:4px; }
.bloco-escuro :focus-visible{ outline-color:var(--branco); box-shadow:0 0 0 2px var(--tinta); }
.pular{ position:absolute; left:var(--e-4); top:-100px; z-index:100; background:var(--tinta); color:#fff; padding:var(--e-3) var(--e-4); border-radius:var(--r-campo); }
.pular:focus{ top:var(--e-3); }
.so-leitor{ position:absolute !important; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

/* ícones: sprite inline, traço 1,75, currentColor */
.i{ width:1.1em; height:1.1em; flex:none; fill:none; stroke:currentColor; stroke-width:1.75; stroke-linecap:round; stroke-linejoin:round; }
.i-24{ width:24px; height:24px; }

/* ---------- 3. Grelha e ritmo ---------- */
.caixa{ width:100%; max-width:calc(var(--larg) + 2 * var(--gutter)); margin-inline:auto; padding-inline:var(--gutter); }
.secao{ padding-block:var(--e-secao); }
.secao-cal2{ background:var(--cal-2); }
.pilha > * + *{ margin-top:var(--e-4); }
.pilha-g > * + *{ margin-top:var(--e-5); }
.linha-flex{ display:flex; flex-wrap:wrap; align-items:center; gap:var(--e-3); }
.cabeca{ display:flex; flex-wrap:wrap; align-items:end; justify-content:space-between; gap:var(--e-3) var(--e-5); margin-bottom:var(--e-5); }
.cabeca p{ color:var(--tinta-2); margin-top:var(--e-2); }
.grelha{ display:grid; gap:var(--e-5); grid-template-columns:1fr; }
.filete{ height:1px; border:0; background:var(--linha); margin-block:var(--e-5); }

/* ---------- 4. Cabeçalho e menu ---------- */
.topo{ position:sticky; top:0; z-index:40; background:var(--cal); border-bottom:1px solid var(--linha); }
.topo .caixa{ display:flex; align-items:center; gap:var(--e-2); min-height:var(--topo); }
.marca{ display:flex; align-items:center; gap:10px; color:var(--tinta); text-decoration:none; margin-right:auto; min-height:var(--alvo); flex:none; }
.marca-simb{ width:30px; height:30px; flex:none; }
.marca-nome{ display:block; white-space:nowrap; font-family:var(--serifa); font-size:var(--t-corpo); font-weight:560; letter-spacing:-.01em; line-height:1.1; }
.marca-desc{ display:block; font-family:var(--letra); font-size:var(--t-rotulo); font-weight:600; line-height:1.2; color:var(--tinta-2); white-space:nowrap; }
.nav{ display:none; }
.nav a{ white-space:nowrap; color:var(--tinta-2); font-weight:600; text-decoration:none; padding:var(--e-3) var(--e-2); min-height:var(--alvo); display:inline-flex; align-items:center; }
.nav a:hover,.nav a[aria-current="page"]{ color:var(--tinta); box-shadow:inset 0 -3px 0 var(--telha); }
.menu-bt{
  display:inline-flex; align-items:center; justify-content:center; gap:6px;
  min-height:var(--alvo); min-width:var(--alvo); padding:0 12px; white-space:nowrap;
  border:1.5px solid var(--linha-forte); border-radius:var(--r-pilula);
  background:var(--branco); font-weight:600; font-size:var(--t-apoio); line-height:1.1; flex:none;
}
/* no telemóvel o «Menu» fica só com o ícone (aria-label) */
.menu-bt .menu-bt-txt{ display:none; }
/* integrador, 27/09: a 375 px o cabeçalho transbordava 3 px (scrollWidth 378) em TODAS as páginas; o remendo
   estava repetido em sete CSS de página. Abaixo de 400 px a marca encolhe e os botões ficam mais justos. */
@media (max-width:399.98px){
  .topo .caixa{ gap:4px; }
  .topo .marca{ gap:8px; flex:0 1 auto; min-width:0; }
  .topo .marca-simb{ width:26px; height:26px; }
  .topo .marca > span{ min-width:0; }
  .topo .marca-desc{ overflow:hidden; text-overflow:ellipsis; }
  /* 27/09: «guia independente» tem de ficar à vista (o Lion, 27/09: «mete só guia independente»): parte em duas
     linhas em vez de levar reticências, e ganha às regras de página que a cortavam ou escondiam */
  .topo .marca .marca-desc{ display:block; white-space:normal; overflow:visible; text-overflow:clip; }
}

/* o menu é um <dialog> aberto com showModal(): foco preso, Esc e o resto inerte de graça */
dialog.menu-folha{
  position:fixed; inset:0; width:100%; max-width:none; height:100%; max-height:none; margin:0;
  border:0; z-index:60; background:var(--cal); color:var(--tinta); overflow-y:auto;
  padding:0 var(--gutter) var(--e-7);
}
dialog.menu-folha::backdrop{ background:rgba(38,33,28,.4); }
.menu-folha-topo{ display:flex; align-items:center; justify-content:space-between; min-height:var(--topo); border-bottom:1px solid var(--linha); margin-bottom:var(--e-3); }
.menu-folha-topo h2{ font-size:var(--t-3); }
.menu-folha .fechar{ width:var(--alvo); height:var(--alvo); border:0; background:transparent; display:grid; place-items:center; border-radius:var(--r-pilula); }
.menu-folha ul{ list-style:none; margin:0; padding:0; }
.menu-principal a{ display:flex; align-items:center; justify-content:space-between; min-height:64px; border-bottom:1px solid var(--linha); color:var(--tinta); text-decoration:none; font-family:var(--serifa); font-size:var(--t-3); }
.menu-secundario{ margin-top:var(--e-4); }
.menu-secundario a{ display:flex; align-items:center; min-height:var(--alvo); color:var(--tinta-2); font-weight:600; text-decoration:none; }
.menu-folha .bt-contorno{ width:100%; margin-top:var(--e-5); }

/* ---------- 5. Botões e ligações ---------- */
.bt,.bt-contorno{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  min-height:52px; padding:var(--e-2) var(--e-5);
  border-radius:var(--r-pilula); border:1.5px solid transparent;
  font:600 var(--t-corpo)/1.2 var(--letra); text-decoration:none; text-align:center;
  transition:background-color var(--dur), border-color var(--dur), color var(--dur);
}
.bt{ background:var(--telha); color:#fff; }
.bt:hover{ background:var(--telha-esc); color:#fff; }
.bt-contorno{ background:var(--branco); color:var(--tinta); border-color:var(--linha-forte); }
.bt-contorno:hover{ border-color:var(--tinta); color:var(--tinta); }
.bt-bloco{ display:flex; width:100%; }
.bt-peq{ min-height:var(--alvo); padding:0 18px; font-size:var(--t-apoio); white-space:nowrap; }
.bt .i,.bt-contorno .i{ width:20px; height:20px; }
.bt-nota{ display:block; margin-top:var(--e-2); font-size:var(--t-apoio); color:var(--tinta-2); }
.bt-nota b{ color:var(--oliva); }
.lig{ display:inline-flex; align-items:center; gap:6px; min-height:var(--alvo); padding-block:var(--e-2); font-weight:600; color:var(--telha-esc); text-decoration:underline; text-decoration-color:var(--madeira); text-decoration-thickness:2px; text-underline-offset:5px; }
.lig:hover{ text-decoration-color:currentColor; }
a.bt,a.bt-contorno{ text-decoration:none; }
button.lig{ border:0; background:none; padding-inline:0; }

/* barra de acção fixa (telemóvel): aparece quando o cartão de acção sai do ecrã.
   Texto do botão curto e fixo; quem é a entidade diz-se na data. Empilha quando não cabe. */
.barra-fixa{
  position:fixed; left:12px; right:12px; bottom:12px; z-index:50;
  display:flex; flex-wrap:wrap; align-items:center; gap:var(--e-2) var(--e-3);
  padding:10px 10px 10px var(--e-4);
  background:var(--branco); border:1px solid var(--linha); border-radius:20px; box-shadow:var(--sombra);
  padding-bottom:max(10px, env(safe-area-inset-bottom));
}
.barra-fixa-data{ font-size:var(--t-apoio); line-height:1.25; color:var(--tinta-2); flex:1 1 9rem; min-width:0; }
.barra-fixa-data b{ display:block; color:var(--tinta); }
.barra-fixa .bt{ flex:0 0 auto; min-height:var(--alvo); padding:0 20px; }
.com-barra{ padding-bottom:110px; }
@media (max-width:359.98px){ .barra-fixa .bt{ flex:1 1 100%; } }
/* de 360 px para cima: numa só linha em TODAS as páginas com barra (27/09, auditoria do telemóvel: a regra
   vivia só no concurso.css e na inscrição, a 375 px, o botão caía para baixo e a barra tinha 118 px).
   A data corta-se em duas linhas no máximo; o botão não encolhe. */
@media (min-width:360px){
  .barra-fixa{ flex-wrap:nowrap; padding-block:8px; padding-bottom:max(8px, env(safe-area-inset-bottom)); }
  .barra-fixa-data{ flex:1 1 auto; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; line-clamp:2; overflow:hidden; }
  .barra-fixa-data b{ display:inline; }
  .barra-fixa-data b::after{ content:" · "; font-weight:400; color:var(--tinta-2); }
  .barra-fixa .bt{ flex:0 0 auto; padding:0 16px; white-space:nowrap; }
  .com-barra{ padding-bottom:88px; }
}
/* com o teclado aberto, a barra não come o que resta do ecrã */
body:has(input:focus, select:focus, textarea:focus) .barra-fixa{ display:none; }

/* ---------- 6. Procura: três perguntas ---------- */
/* telemóvel: uma pergunta por cartão (.pergunta). computador: a pílula (.procura) */
.pergunta{ background:var(--branco); border:1px solid var(--linha); border-radius:var(--r-cartao); padding:var(--e-5) 20px; }
.pergunta-cab{ display:flex; align-items:center; justify-content:space-between; gap:var(--e-3); margin-bottom:var(--e-3); }
.pergunta legend{ float:left; width:100%; margin-bottom:var(--e-2); }
.pergunta legend + *{ clear:both; }
.pergunta h2,.pergunta legend{ font-family:var(--serifa); font-size:var(--t-3); line-height:1.22; font-weight:450; padding:0; }
.pergunta legend:focus{ outline:0; box-shadow:none; }  /* recebe o foco (tabindex=-1) ao avançar */
.pergunta fieldset{ border:0; margin:0; padding:0; min-width:0; }
.pergunta-dica{ font-size:var(--t-apoio); color:var(--tinta-2); margin-top:var(--e-2); }
.pergunta-pes{ display:flex; align-items:center; justify-content:space-between; gap:var(--e-3); margin-top:var(--e-4); }

.progresso{ display:flex; gap:6px; }
.progresso span{ width:28px; height:6px; border-radius:var(--r-pilula); background:var(--linha-forte); opacity:.45; }
.progresso span.feito{ background:var(--telha); opacity:1; }

/* escolha única = rádios reais dentro de <label class="opcao"> */
.opcoes{ display:grid; gap:10px; margin-top:var(--e-4); }
.opcoes-2{ grid-template-columns:repeat(3,1fr); }        /* números: 1 a 6+ */
.opcao{
  position:relative; display:flex; align-items:center; justify-content:center; gap:8px;
  min-height:56px; padding:var(--e-2) var(--e-4);
  background:var(--branco); border:1.5px solid var(--linha-forte); border-radius:var(--r-pilula);
  font-weight:600; text-align:center; line-height:1.2; color:var(--tinta); cursor:pointer;
  transition:background-color var(--dur), border-color var(--dur);
}
.opcao:hover{ border-color:var(--tinta); }
.opcao:has(input:checked){ background:var(--tinta); border-color:var(--tinta); color:#fff; }
.opcao input{ position:absolute; opacity:0; inset:0; margin:0; cursor:pointer; }
.opcao:has(input:focus-visible){ outline:3px solid var(--tinta); outline-offset:3px; }
.opcao-fraca{ border-style:dashed; color:var(--tinta-2); }  /* «Não temos rendimentos» */

.procura{ display:none; }
.procura-campo{ display:flex; flex-direction:column; justify-content:center; gap:2px; padding:10px var(--e-5); border-right:1px solid var(--linha); border-radius:var(--r-pilula); min-width:0; }
.procura-campo:last-of-type{ border-right:0; }
.procura-campo select,.procura-campo input{ border:0; background:transparent; padding:6px 0; min-height:40px; font-size:var(--t-corpo); color:var(--tinta); width:100%; appearance:none; -webkit-appearance:none; }
/* o foco da pílula vê-se: anel por dentro, nunca só a cor do fundo */
.procura-campo:focus-within{ box-shadow:inset 0 0 0 3px var(--tinta); }
.procura-campo select:focus-visible,.procura-campo input:focus-visible{ outline:0; box-shadow:none; }

/* terras com concurso aberto, em botões */
.terras{ display:flex; flex-wrap:wrap; gap:8px; margin-top:var(--e-3); }
.terras-rotulo{ font-size:var(--t-apoio); color:var(--tinta-2); margin-top:var(--e-4); }
.terra-confirma{ font-size:var(--t-apoio); color:var(--oliva); font-weight:600; margin-top:var(--e-2); } /* «Rio Tinto fica em Gondomar» */

/* respostas dadas: cada uma é um botão inteiro de 48 px que a tira */
.respostas{ display:flex; flex-wrap:wrap; gap:8px; }
.resposta{
  display:inline-flex; align-items:center; gap:8px; min-height:var(--alvo); padding:0 14px 0 18px;
  background:var(--branco); border:1.5px solid var(--linha-forte); border-radius:var(--r-pilula);
  font-weight:600; font-size:var(--t-apoio); color:var(--tinta);
}
.resposta:hover{ border-color:var(--tinta); }
.resposta .i{ width:18px; height:18px; color:var(--tinta-2); }

/* ---------- 7. Chips e estados ---------- */
.chip{
  display:inline-flex; align-items:center; gap:6px; min-height:32px; padding:0 12px;
  border-radius:var(--r-pilula); font-size:var(--t-apoio); font-weight:600; line-height:1.1; white-space:nowrap;
  background:var(--branco); color:var(--tinta); border:1px solid var(--linha);
}
a.chip,button.chip{ min-height:var(--alvo); padding:0 var(--e-4); border:1.5px solid var(--linha-forte); text-decoration:none; }
a.chip:hover,button.chip:hover{ border-color:var(--tinta); }
.chip .i{ width:16px; height:16px; }
.chip-aberto{ background:var(--oliva-clara); color:var(--oliva); border-color:transparent; }
.chip-breve { background:var(--telha); color:#fff; border-color:transparent; }        /* fecha em 7 dias ou menos */
.chip-hoje  { background:var(--telha-esc); color:#fff; border-color:transparent; }
.chip-evento{ background:var(--madeira-clara); color:var(--madeira-esc); border-color:transparent; } /* sorteio, resultados */
.chip-ainda { background:var(--branco); color:var(--tinta-2); border:1.5px dashed var(--linha-forte); } /* ainda não abriu */
.chip-fechou{ background:var(--cal-2); color:var(--tinta-2); border-color:transparent; }
.chip-serve { background:var(--oliva); color:#fff; border-color:transparent; }

/* etiqueta: diz o que a imagem é, numa linha POR BAIXO dela, nunca por cima */
.etiqueta{ display:flex; align-items:center; gap:6px; font-size:var(--t-rotulo); line-height:1.3; color:var(--tinta-2); }
.etiqueta .i{ width:16px; height:16px; color:var(--tinta-3); }

/* ---------- 8. Cartão de concurso ---------- */
/* a ligação é o título; estica-se ao cartão inteiro. o resto é texto normal */
.cartoes{ display:grid; gap:var(--e-4); grid-template-columns:1fr; }
.cartao{
  position:relative; display:flex; flex-direction:column; overflow:hidden;
  background:var(--branco); border:1px solid var(--linha); border-radius:var(--r-cartao);
  color:var(--tinta); transition:border-color var(--dur);
}
.cartao:hover{ border-color:var(--linha-forte); }
.cartao h3 a{ color:inherit; text-decoration:none; }
.cartao h3 a::after{ content:""; position:absolute; inset:0; z-index:1; }
.cartao h3 a:focus-visible{ outline:0; box-shadow:none; }
.cartao:has(h3 a:focus-visible){ outline:3px solid var(--tinta); outline-offset:3px; }
.cartao:hover h3 a{ color:var(--telha-esc); }
.cartao-img{ position:relative; aspect-ratio:16/9; background:var(--cal-2); overflow:hidden; }
.cartao-img img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }   /* em absoluto: uma fotografia alta não estica o cartão (estava repetido em resultados, posso e noticia) */
.cartao-img .chip{ position:absolute; top:10px; left:10px; box-shadow:0 1px 2px rgba(38,33,28,.12); }
.cartao-corpo{ display:flex; flex-direction:column; gap:6px; padding:var(--e-3) 20px 20px; flex:1; }
.cartao-corpo > .etiqueta{ margin-bottom:var(--e-1); }
.cartao-terra{ display:flex; align-items:baseline; justify-content:space-between; gap:var(--e-3); }
.cartao-terra h3{ font-size:var(--t-3); }
.cartao-terra small{ font-size:var(--t-apoio); color:var(--tinta-2); white-space:nowrap; } /* só quando o distrito é outro */
.cartao-casas{ font-size:var(--t-apoio); color:var(--tinta-2); }
.cartao-renda{ font-family:var(--serifa); font-size:var(--t-3); line-height:1.15; font-weight:520; margin-top:2px; }
.cartao-renda small{ font-family:var(--letra); font-size:var(--t-apoio); font-weight:400; color:var(--tinta-2); }
.cartao-renda.pelo-rend{ font-size:var(--t-corpo); font-weight:560; }
.cartao-razao{ font-size:var(--t-apoio); font-weight:600; color:var(--oliva); display:flex; gap:6px; align-items:center; }
.cartao-razao.talvez{ color:var(--madeira-esc); }
.cartao-razao.nao{ color:var(--tinta); font-weight:600; }
.cartao-pe{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:var(--e-1) var(--e-3); margin-top:auto; padding-top:var(--e-3); border-top:1px solid var(--linha); font-size:var(--t-apoio); color:var(--tinta-2); }
.cartao-pe b{ color:var(--tinta); font-weight:600; }
/* cartão sem fotografia: o número é a imagem. um só fundo, sempre */
.cartao-img.sem-foto{ display:flex; align-items:flex-end; justify-content:space-between; gap:var(--e-3); aspect-ratio:16/7; padding:var(--e-4) 20px; }
.cartao-img.sem-foto .t-num{ color:var(--tinta); }
.cartao-img.sem-foto .t-num small{ font-family:var(--letra); font-size:var(--t-corpo); letter-spacing:0; color:var(--tinta-2); margin-left:6px; }
.cartao-img.sem-foto p{ font-size:var(--t-apoio); color:var(--tinta-2); margin-top:6px; }
.cartao-img.sem-foto p.t-num{ font-size:var(--t-num); color:var(--tinta); margin-top:0; }
.planta{ width:64px; height:64px; color:var(--tinta-3); flex:none; fill:none; stroke:currentColor; stroke-width:2; stroke-linejoin:round; }
/* não serve: o texto fica inteiro e legível; só a fotografia perde a cor */
.cartao.nao-serve .cartao-img img{ filter:grayscale(1); }
.cartao.nao-serve .cartao-corpo{ background:var(--cal); }

/* recolher «Há 2 que não te servem» */
.recolher{ border-top:1px solid var(--linha); border-bottom:1px solid var(--linha); }
.recolher summary{ list-style:none; display:flex; align-items:center; justify-content:space-between; gap:var(--e-3); min-height:56px; cursor:pointer; font-weight:600; color:var(--tinta-2); }
.recolher summary::-webkit-details-marker{ display:none; }
.recolher summary::after{ content:""; width:10px; height:10px; border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform:rotate(45deg) translateY(-3px); flex:none; }
.recolher[open] summary::after{ transform:rotate(-135deg); }
.recolher > div{ padding-bottom:var(--e-5); }

/* Lista · Mapa, e os dois textos da partilha: botões com aria-pressed.
   O premido é tinta cheia com visto, como a .opcao: nunca só um fundo mais claro */
.alternar{ display:inline-flex; flex-wrap:wrap; padding:4px; gap:4px; background:var(--cal-2); border-radius:var(--r-pilula); }
.alternar button{ display:inline-flex; align-items:center; gap:6px; min-height:var(--alvo); min-width:72px; padding:0 var(--e-4); border:0; border-radius:var(--r-pilula); background:transparent; font-weight:600; color:var(--tinta-2); }
.alternar button[aria-pressed="true"]{ background:var(--tinta); color:#fff; }
.alternar button[aria-pressed="true"]::before{ content:""; width:7px; height:12px; border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform:rotate(45deg) translate(-1px,-2px); }
.separadores{ display:flex; gap:var(--e-5); border-bottom:1px solid var(--linha); overflow-x:auto; }
.separadores button{ min-height:var(--alvo); border:0; background:none; padding:0; font-weight:600; color:var(--tinta-2); white-space:nowrap; box-shadow:inset 0 -3px 0 transparent; }
.separadores button[aria-pressed="true"]{ color:var(--tinta); box-shadow:inset 0 -3px 0 var(--telha); }
.separadores .n{ font-weight:400; color:var(--tinta-2); margin-left:4px; }

/* vista Mapa: decorativa para tecnologias de apoio (aria-hidden); a lista por baixo tem tudo.
   o gerador afasta alfinetes que se tocam e junta-os num «2 concursos» */
.mapa{ position:relative; aspect-ratio:4/5; background:var(--cal-2); border:1px solid var(--linha); border-radius:var(--r-cartao); overflow:hidden; }
.mapa svg.contorno{ position:absolute; inset:0; width:100%; height:100%; }
.alfinete{
  position:absolute; transform:translate(-50%,-100%);
  display:inline-flex; align-items:center; gap:6px; min-height:44px; padding:0 14px;
  background:var(--branco); border:1.5px solid var(--tinta); border-radius:var(--r-pilula);
  font-weight:600; font-size:var(--t-apoio); color:var(--tinta); text-decoration:none; white-space:nowrap;
}
.alfinete b{ font-weight:700; }
.alfinete::after{ content:""; position:absolute; left:50%; bottom:-7px; width:10px; height:10px; background:inherit; border-right:1.5px solid var(--tinta); border-bottom:1.5px solid var(--tinta); transform:translateX(-50%) rotate(45deg); }
.alfinete.breve{ background:var(--telha); border-color:var(--telha); color:#fff; }  /* leva também o ícone do relógio */
.alfinete.breve::after{ border-color:var(--telha); }
.alfinete.sempre{ border-style:dashed; color:var(--tinta-2); }
.alfinete .i{ width:16px; height:16px; }

/* ---------- 9. Blocos de página ---------- */
/* herói: telemóvel sem fotografia; computador com a fotografia de um concurso aberto,
   servida com <picture><source media="(min-width:1024px)">, nunca uma <img> escondida */
.heroi{ padding-block:var(--abre) var(--e-5); }
.heroi-sub{ font-size:var(--t-corpo); color:var(--tinta-2); margin-top:var(--e-3); max-width:36ch; }
.heroi-foto{ display:none; }
.prova{ display:flex; flex-wrap:wrap; gap:4px var(--e-4); margin-top:var(--e-4); font-size:var(--t-apoio); color:var(--tinta-2); }
.prova b{ color:var(--tinta); font-weight:700; }
.prova .ponto{ display:inline-block; width:8px; height:8px; border-radius:50%; background:var(--oliva); margin-right:6px; vertical-align:1px; }

/* carimbo: prova de leitura, com data */
.carimbo{ display:inline-flex; align-items:flex-start; gap:8px; font-size:var(--t-apoio); color:var(--tinta-2); }
.carimbo .i{ color:var(--oliva); width:18px; height:18px; margin-top:3px; }

/* faixa de uma linha */
.faixa{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:var(--e-2) var(--e-4); padding:var(--e-4) 20px; background:var(--branco); border:1px solid var(--linha); border-radius:var(--r-cartao); }
.faixa p{ flex:1 1 20rem; }

/* «Enquanto não abre nada, podes já»: três linhas, sempre pela mesma ordem */
.enquanto{ background:var(--branco); border:1px solid var(--linha); border-radius:var(--r-cartao); padding:var(--e-5) 20px; }
.enquanto h2,.enquanto h3{ font-size:var(--t-3); }
.enquanto ol{ list-style:none; padding:0; margin:var(--e-4) 0 0; counter-reset:passo; }
.enquanto li{ counter-increment:passo; display:grid; grid-template-columns:36px 1fr; gap:var(--e-3); padding-block:var(--e-3); border-top:1px solid var(--linha); }
.enquanto li:first-child{ border-top:0; }
.enquanto li::before{ content:counter(passo); width:32px; height:32px; border-radius:50%; background:var(--oliva-clara); color:var(--oliva); font-family:var(--serifa); font-size:var(--t-corpo); display:grid; place-items:center; margin-top:8px; }
.enquanto li p{ font-size:var(--t-apoio); color:var(--tinta-2); }

/* bloco escuro único por página (oliva) */
.bloco-escuro{ background:var(--oliva); color:#fff; border-radius:var(--r-cartao); padding:var(--e-6) 20px; }
.bloco-escuro h2{ color:#fff; }
.bloco-escuro p{ color:var(--oliva-clara); margin-top:var(--e-3); }
.bloco-escuro .bt-contorno{ margin-top:var(--e-5); border-color:#fff; }

/* portas: três ligações grandes */
.portas{ display:grid; gap:var(--e-3); grid-template-columns:repeat(auto-fit,minmax(15rem,1fr)); }
.porta{ display:flex; align-items:center; justify-content:space-between; gap:var(--e-4); min-height:72px; padding:var(--e-4) 20px; background:var(--branco); border:1px solid var(--linha); border-radius:var(--r-cartao); color:var(--tinta); text-decoration:none; transition:border-color var(--dur); }
.porta:hover{ border-color:var(--linha-forte); color:var(--tinta); }
.porta b{ display:block; font-family:var(--serifa); font-size:var(--t-3); font-weight:500; line-height:1.2; }
.porta span{ font-size:var(--t-apoio); color:var(--tinta-2); }
.porta .i{ width:22px; height:22px; color:var(--telha-esc); }

/* alerta de uma ou duas linhas (anti-burla) e nota de estimativa */
.alerta{ display:flex; gap:var(--e-3); align-items:flex-start; padding:var(--e-4) 20px; background:var(--telha-clara); border-radius:var(--r-campo); color:var(--tinta); font-size:var(--t-apoio); }
.alerta .i{ color:var(--telha-esc); width:22px; height:22px; margin-top:1px; }
.alerta b{ font-weight:700; }
/* a ressalva «(estimativa)» escreve-se no HTML, nunca em CSS: é uma ressalva de dinheiro */
.estimativa{ font-size:var(--t-apoio); color:var(--oliva); }
.estimativa span{ color:var(--tinta-2); }

/* ---------- 10. Página do concurso ---------- */
.migalhas{ display:flex; flex-wrap:wrap; gap:2px 8px; font-size:var(--t-apoio); color:var(--tinta-2); padding-block:var(--e-2); }
.migalhas a{ color:var(--tinta-2); text-decoration:none; display:inline-flex; align-items:center; justify-content:center; min-height:var(--alvo); min-width:var(--alvo); }
.migalhas a:hover{ text-decoration:underline; }
.migalhas li + li::before{ content:"/"; margin-right:8px; color:var(--linha-forte); }
.migalhas ol{ display:flex; flex-wrap:wrap; gap:0 8px; list-style:none; margin:0; padding:0; align-items:center; }

.fonte{ font-size:var(--t-apoio); color:var(--tinta-2); margin-top:var(--e-3); }

/* folha de factos com filetes, nunca caixas; a renda nunca se corta */
.factos{ display:grid; grid-template-columns:1fr 1fr; border-top:1px solid var(--linha); border-bottom:1px solid var(--linha); margin-block:var(--e-5); }
.facto{ padding:var(--e-4) var(--e-3) var(--e-4) 0; border-bottom:1px solid var(--linha); min-width:0; }
.facto:nth-child(2n){ padding-left:var(--e-4); border-left:1px solid var(--linha); }
.facto:nth-last-child(-n+2){ border-bottom:0; }
.facto dt{ font-size:var(--t-rotulo); font-weight:600; line-height:1.3; color:var(--tinta-2); }
.facto dd{ font-family:var(--serifa); font-size:var(--t-3); line-height:1.2; margin-top:4px; white-space:normal; }
.facto dd small{ display:block; font-family:var(--letra); font-size:var(--t-apoio); color:var(--tinta-2); margin-top:2px; }

/* cartão de acção: o prazo aparece aqui e só aqui */
.accao{ background:var(--branco); border:1px solid var(--linha); border-radius:var(--r-cartao); padding:var(--e-5) 20px; }
.accao.ultimo-dia{ background:var(--telha-clara); border-color:transparent; }
.accao-quando{ font-family:var(--serifa); font-size:var(--t-3); line-height:1.25; margin-top:4px; }
.accao-faltam{ display:inline-block; font-weight:700; color:var(--telha); margin-top:4px; }
.accao.ultimo-dia .accao-faltam{ color:var(--telha-esc); }   /* 6,2:1 na telha clara; a telha dava 4,4 */
.accao .bt{ margin-top:var(--e-4); }
.accao-sec{ margin-top:var(--e-3); border-top:1px solid var(--linha); padding-top:var(--e-1); }

/* ordem no telemóvel: título, factos, cartão de acção, fotografias */
.concurso-grelha{ display:flex; flex-direction:column; }
.concurso-principal{ display:contents; }
.concurso-grelha .accao{ order:1; margin-top:var(--e-5); }
.concurso-grelha .galeria-bloco{ order:2; margin-top:var(--e-5); }

/* galeria: uma grande e duas pequenas; no telemóvel desliza, e o teclado também
   (role=region, tabindex=0). «Ver as 15 fotografias» fica FORA do carrossel */
.galeria{ display:flex; gap:10px; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:thin; }
.galeria figure{ flex:0 0 84%; scroll-snap-align:start; }
.galeria .foto{ aspect-ratio:4/3; border-radius:var(--r-cartao); overflow:hidden; background:var(--cal-2); }
.galeria img{ width:100%; height:100%; object-fit:cover; }
.galeria figcaption{ margin-top:6px; }
.galeria-pe{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:var(--e-2) var(--e-4); margin-top:var(--e-2); font-size:var(--t-apoio); color:var(--tinta-2); }

/* «Serve-me?»: o veredicto numa frase, com cor de estado */
.veredicto{ display:flex; gap:var(--e-3); align-items:flex-start; padding:var(--e-4) 20px; border-radius:var(--r-campo); }
.veredicto .i{ width:24px; height:24px; margin-top:2px; }
.veredicto b{ display:block; font-size:var(--t-corpo); }
.veredicto p{ font-size:var(--t-apoio); margin-top:4px; }
.veredicto .lig{ min-height:0; padding-block:var(--e-2) 0; }
.veredicto.sim{ background:var(--oliva-clara); color:var(--oliva); }
.veredicto.sim p{ color:var(--tinta); }
.veredicto.nao{ background:var(--cal-2); color:var(--tinta); }
.veredicto.talvez{ background:var(--madeira-clara); color:var(--madeira-esc); }
.veredicto.talvez p{ color:var(--tinta); }

/* os papéis: caixas de 28 px, a frase inteira é o alvo (48 px); o visto fica no telemóvel */
.papeis{ list-style:none; margin:0; padding:0; border-top:1px solid var(--linha); }
.papel{ display:grid; grid-template-columns:32px 1fr; gap:var(--e-3); align-items:start; min-height:var(--alvo); padding-block:var(--e-3); border-bottom:1px solid var(--linha); cursor:pointer; }
.papel input{ appearance:none; -webkit-appearance:none; width:28px; height:28px; margin:2px 0 0; border:1.5px solid var(--linha-forte); border-radius:8px; background:var(--branco); display:grid; place-items:center; cursor:pointer; }
.papel input:checked{ background:var(--oliva); border-color:var(--oliva); }
.papel input:checked::after{ content:""; width:8px; height:14px; border-right:2.5px solid #fff; border-bottom:2.5px solid #fff; transform:rotate(45deg) translate(-1px,-2px); }
.papel input:checked + span b{ text-decoration:line-through; text-decoration-color:var(--tinta-2); color:var(--tinta-2); }
.papel small{ display:block; font-size:var(--t-apoio); color:var(--tinta-2); margin-top:2px; }

/* linha do tempo: «Hoje: podes concorrer» é uma linha própria entre Abre e Fecha */
.tempo{ list-style:none; margin:0; padding:0; }
.tempo li{ position:relative; display:grid; grid-template-columns:28px minmax(0,1fr) auto; gap:var(--e-3); padding-block:var(--e-3); }
.tempo li::before{ content:""; width:14px; height:14px; border-radius:50%; border:2px solid var(--linha-forte); background:var(--branco); margin:6px 0 0 6px; position:relative; z-index:1; }
.tempo li::after{ content:""; position:absolute; left:12px; top:28px; bottom:-8px; width:2px; background:var(--linha); }
.tempo li:last-child::after{ display:none; }
.tempo li.feito::before{ background:var(--linha-forte); }
.tempo li.hoje{ font-weight:700; color:var(--oliva); }
.tempo li.hoje::before{ background:var(--oliva); border-color:var(--oliva); }
.tempo li.futuro{ color:var(--tinta-2); }
.tempo .data{ font-weight:600; text-align:right; max-width:12em; }   /* «10 dias úteis depois da lista provisória» transbordava a 375 px */
.tempo .data.perto{ color:var(--telha-esc); }            /* o fecho, só quando falta pouco */
.tempo .por-anunciar{ font-weight:400; color:var(--tinta-2); }

/* partilha: dois botões e o nativo, e o texto escolhido por cima da pré-visualização */
.partilha{ display:flex; flex-wrap:wrap; gap:var(--e-2); }
.partilha .bt-contorno{ min-height:var(--alvo); padding:0 18px; font-size:var(--t-apoio); }
.partilha .whats{ color:#1B7F3B; }                 /* só o símbolo leva a cor da marca */
.partilha-previa{ margin-top:var(--e-3); padding:var(--e-4); background:var(--branco); border:1px solid var(--linha); border-radius:var(--r-campo); font-size:var(--t-apoio); white-space:pre-line; }

/* ---------- 11. Formulários ---------- */
.form{ display:grid; gap:var(--e-4); }
.campo{ display:grid; gap:6px; }
.rotulo{ font-weight:600; font-size:var(--t-apoio); color:var(--tinta); }
.entrada{
  width:100%; min-height:56px; padding:0 var(--e-4);
  background:var(--branco); border:1.5px solid var(--linha-forte); border-radius:var(--r-campo);
  font-size:var(--t-corpo); color:var(--tinta);
  transition:border-color var(--dur);
}
.entrada::placeholder{ color:var(--tinta-3); opacity:1; }
.entrada:hover{ border-color:var(--tinta-2); }
.entrada:focus-visible{ border-color:var(--tinta); }
.entrada-ic{ position:relative; }
.entrada-ic .i{ position:absolute; left:16px; top:50%; transform:translateY(-50%); width:22px; height:22px; color:var(--tinta-2); pointer-events:none; }
.entrada-ic .entrada{ padding-left:48px; }
textarea.entrada{ min-height:120px; padding:var(--e-3) var(--e-4); line-height:1.5; resize:vertical; }
select.entrada{ appearance:none; -webkit-appearance:none; padding-right:44px; background:var(--branco) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' stroke='%2326211C' stroke-width='1.75' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 18px center; }
.ajuda{ font-size:var(--t-apoio); color:var(--tinta-2); }
.erro{ display:flex; gap:6px; align-items:flex-start; font-size:var(--t-apoio); font-weight:600; color:var(--telha-esc); }
.entrada[aria-invalid="true"]{ border-color:var(--telha-esc); border-width:2px; }
.ou{ display:flex; align-items:center; gap:var(--e-3); font-size:var(--t-apoio); color:var(--tinta-2); }
.ou::before,.ou::after{ content:""; flex:1; height:1px; background:var(--linha); }
.caixa-ok{ display:grid; grid-template-columns:32px 1fr; gap:var(--e-3); align-items:start; min-height:var(--alvo); padding-block:var(--e-2); font-size:var(--t-apoio); cursor:pointer; }
.caixa-ok input{ appearance:none; -webkit-appearance:none; width:28px; height:28px; margin:0; border:1.5px solid var(--linha-forte); border-radius:8px; background:var(--branco); display:grid; place-items:center; cursor:pointer; }
.caixa-ok input:checked{ background:var(--oliva); border-color:var(--oliva); }
.caixa-ok input:checked::after{ content:""; width:8px; height:14px; border-right:2.5px solid #fff; border-bottom:2.5px solid #fff; transform:rotate(45deg) translate(-1px,-2px); }
.antes-do-botao{ font-size:var(--t-apoio); color:var(--tinta-2); }
.antes-do-botao b{ color:var(--tinta); }
.enviado{ padding:var(--e-4) 20px; border-radius:var(--r-campo); background:var(--oliva-clara); color:var(--oliva); font-weight:600; }

/* cartão do aviso (Vigia): um campo, a terra já escolhida */
.aviso{ background:var(--branco); border:1px solid var(--linha); border-radius:var(--r-cartao); padding:var(--e-5) 20px; }
.aviso-linha{ display:grid; gap:var(--e-3); margin-top:var(--e-4); }
.aviso-preco{ font-family:var(--serifa); font-size:var(--t-2); line-height:1; }
.aviso-preco small{ font-family:var(--letra); font-size:var(--t-apoio); color:var(--tinta-2); margin-left:4px; }
.vantagens{ list-style:none; padding:0; margin:var(--e-4) 0 0; display:grid; gap:var(--e-3); }
.vantagens li{ display:grid; grid-template-columns:24px 1fr; gap:var(--e-3); font-size:var(--t-apoio); }
.vantagens .i{ color:var(--oliva); width:22px; height:22px; margin-top:1px; }
.vantagens b{ display:block; font-size:var(--t-corpo); }
/* escada do aviso: duas colunas, só na página do Vigia e só com a cobrança ligada */
.escada{ display:grid; gap:var(--e-4); }

/* planos da ajuda com os papéis */
.planos{ display:grid; gap:var(--e-4); }
.plano{ background:var(--branco); border:1px solid var(--linha); border-radius:var(--r-cartao); padding:var(--e-5) 20px; display:flex; flex-direction:column; gap:var(--e-3); }
.plano-preco{ font-family:var(--serifa); font-size:var(--t-num); line-height:1; }
.plano-preco small{ font-family:var(--letra); font-size:var(--t-apoio); color:var(--tinta-2); margin-left:6px; letter-spacing:0; }
.passos{ list-style:none; margin:0; padding:0; counter-reset:p; display:grid; gap:var(--e-3); }
.passos li{ counter-increment:p; display:grid; grid-template-columns:28px 1fr; gap:var(--e-3); font-size:var(--t-apoio); }
.passos li::before{ content:counter(p); font-family:var(--serifa); font-size:var(--t-corpo); color:var(--telha-esc); line-height:1.3; }
.nao-fazemos{ padding:var(--e-4) 20px; border:1.5px dashed var(--linha-forte); border-radius:var(--r-campo); font-size:var(--t-apoio); }

/* ---------- 12. Listas de texto (inscrições, notícias, guia) ---------- */
.lista-linhas{ list-style:none; margin:0; padding:0; border-top:1px solid var(--linha); }
.lista-linhas > li > a,.lista-linhas > li > div{ display:grid; grid-template-columns:1fr auto; gap:4px var(--e-4); align-items:center; padding-block:var(--e-4); border-bottom:1px solid var(--linha); color:var(--tinta); text-decoration:none; }
.lista-linhas > li > a:hover b{ color:var(--telha-esc); }
.lista-linhas b{ font-family:var(--serifa); font-size:var(--t-3); font-weight:500; line-height:1.2; }
.lista-linhas p{ grid-column:1; font-size:var(--t-apoio); color:var(--tinta-2); }
.lista-linhas .i{ grid-row:1 / span 2; grid-column:2; color:var(--tinta-2); }

/* antetítulo das notícias: seis formatos, cor fixa por estado (letra normal) */
.antetitulo{ display:inline-flex; align-items:center; gap:6px; font-size:var(--t-rotulo); font-weight:700; }
.antetitulo::before{ content:""; width:10px; height:10px; border-radius:50%; background:currentColor; }
.ant-abriu{ color:var(--oliva); }
.ant-breve{ color:var(--telha); }
.ant-fechou{ color:var(--tinta-2); }
.ant-sorteio{ color:var(--madeira-esc); }
.ant-ainda{ color:var(--tinta-2); padding:4px 10px; border:1.5px dashed var(--linha-forte); border-radius:var(--r-pilula); }
.ant-ainda::before{ background:transparent; border:2px solid currentColor; width:8px; height:8px; }
.ant-actual{ color:var(--tinta-2); }

.noticia{ display:grid; gap:var(--e-2); padding-block:var(--e-5); border-bottom:1px solid var(--linha); color:var(--tinta); text-decoration:none; }
.noticia h3{ font-size:var(--t-3); }
.noticia:hover h3{ color:var(--telha-esc); }
.noticia p{ color:var(--tinta-2); }
.noticia time{ font-size:var(--t-apoio); color:var(--tinta-2); }

/* guia em partes: «Parte 3 de 7», Anterior · Seguinte */
.parte{ font-size:var(--t-rotulo); font-weight:700; color:var(--telha-esc); }
.resposta-curta{ padding:var(--e-5) 20px; background:var(--branco); border-left:4px solid var(--madeira); border-radius:0 var(--r-cartao) var(--r-cartao) 0; }
.resposta-curta .t-rotulo{ margin-bottom:var(--e-2); }
.anterior-seguinte{ display:grid; grid-template-columns:1fr 1fr; gap:var(--e-3); }
.anterior-seguinte a{ display:grid; gap:2px; padding:var(--e-4); min-height:72px; border:1px solid var(--linha); border-radius:var(--r-cartao); background:var(--branco); color:var(--tinta); text-decoration:none; }
.anterior-seguinte a:last-child{ text-align:right; }
.anterior-seguinte small{ font-size:var(--t-apoio); color:var(--tinta-2); }
.anterior-seguinte b{ font-weight:600; }

/* perguntas frequentes: details nativos */
.pergunta-freq{ border-bottom:1px solid var(--linha); }
.pergunta-freq summary{ list-style:none; display:flex; justify-content:space-between; gap:var(--e-4); align-items:center; min-height:64px; cursor:pointer; font-family:var(--serifa); font-size:var(--t-3); line-height:1.25; }
.pergunta-freq summary::-webkit-details-marker{ display:none; }
.pergunta-freq summary::after{ content:"+"; font-family:var(--letra); font-size:var(--t-3); color:var(--telha-esc); flex:none; }
.pergunta-freq[open] summary::after{ content:"\2212"; }
.pergunta-freq > div{ padding-bottom:var(--e-5); max-width:var(--larg-texto); }

/* ---------- 13. Rodapé ---------- */
.rodape{ background:var(--cal-2); border-top:4px solid var(--telha); padding-block:var(--e-7) var(--e-6); margin-top:var(--e-8); color:var(--tinta-2); font-size:var(--t-apoio); }
.rodape-marca{ display:grid; gap:var(--e-2); padding-bottom:var(--e-5); border-bottom:1px solid var(--linha); }
.rodape-marca .assinatura{ font-family:var(--serifa); font-size:var(--t-3); color:var(--tinta); }
.rodape-cols{ display:grid; gap:var(--e-5); padding-block:var(--e-5); }
.rodape h2{ font-family:var(--letra); font-size:var(--t-rotulo); font-weight:700; color:var(--tinta); margin-bottom:var(--e-2); }
.rodape ul{ list-style:none; margin:0; padding:0; }
.rodape a{ display:inline-flex; align-items:center; min-height:44px; color:var(--tinta-2); text-decoration:none; }
.rodape a:hover{ color:var(--tinta); text-decoration:underline; }
.rodape-fim{ display:flex; flex-wrap:wrap; gap:var(--e-2) var(--e-5); justify-content:space-between; padding-top:var(--e-4); border-top:1px solid var(--linha); }
.rodape-fim a{ display:inline-flex; align-items:center; min-height:44px; text-decoration:underline; }
.rodape-privado{ font-size:var(--t-rotulo); color:var(--tinta-2); max-width:var(--larg-texto); }
.rodape .i-fora{ width:16px; height:16px; margin-left:6px; }
.rodape .assinatura{ text-wrap:balance; }
/* no telemóvel, Concursos e Ajuda lado a lado e Sobre em duas colunas: o rodapé passa de ~700 para ~420 px */
@media (max-width:639.98px){
  .rodape-cols{ grid-template-columns:1fr 1fr; column-gap:var(--e-4); }
  .rodape-cols > div:last-child{ grid-column:1 / -1; }
  .rodape-cols > div:last-child ul{ columns:2; column-gap:var(--e-4); }
  .rodape-cols > div:last-child li{ break-inside:avoid; }
}

/* ---------- 14. A partir de 440 px: o «Menu» volta a ter a palavra ---------- */
/* (era 400 px: entre 400 e 440 a palavra empurrava o botão 10 px para fora, medido a 412 px) */
@media (min-width:440px){
  .menu-bt .menu-bt-txt{ display:inline; }
}

/* ---------- 15. A partir de 640 px ---------- */
@media (min-width:640px){
  :root{ --gutter:24px; }
  .marca-nome{ font-size:var(--t-3); }
  .cartoes{ grid-template-columns:repeat(2,1fr); gap:var(--e-5); }
  .cartao-img{ aspect-ratio:3/2; }
  .cartao-img.sem-foto{ aspect-ratio:3/2; align-items:flex-end; }
  .opcoes{ grid-template-columns:repeat(auto-fit,minmax(9rem,1fr)); }
  .opcoes-2{ grid-template-columns:repeat(6,1fr); }
  .aviso-linha{ grid-template-columns:1fr auto; align-items:end; }
  .planos,.escada{ grid-template-columns:1fr 1fr; }
  .rodape-cols{ grid-template-columns:repeat(3,1fr); }
  .galeria figure{ flex-basis:60%; }
  .factos{ grid-template-columns:repeat(3,1fr); }
  .facto:nth-child(2n){ padding-left:0; border-left:0; }
  .facto:not(:nth-child(3n+1)){ padding-left:var(--e-4); border-left:1px solid var(--linha); }
  .facto:nth-last-child(-n+2){ border-bottom:1px solid var(--linha); }
  .facto:nth-last-child(-n+3){ border-bottom:0; }
  .enquanto,.aviso,.accao,.pergunta,.plano,.bloco-escuro{ padding:var(--e-6); }
}

/* ---------- 16. A partir de 1024 px ---------- */
@media (min-width:1024px){
  :root{ --gutter:32px; --e-secao:96px; --topo:76px; --abre:var(--e-7); }
  html{ scroll-padding-bottom:0; }
  .topo .caixa{ gap:var(--e-3); }
  .cartoes{ grid-template-columns:repeat(3,1fr); }
  .cartoes.quatro{ grid-template-columns:repeat(4,1fr); }
  .heroi{ padding-block:var(--abre) var(--e-6); }
  .heroi-grelha{ display:grid; grid-template-columns:7fr 5fr; gap:var(--e-7); align-items:center; }
  .heroi-foto{ display:block; color:var(--tinta); text-decoration:none; }
  .heroi-foto .foto{ aspect-ratio:4/4.2; border-radius:var(--r-cartao); overflow:hidden; background:var(--cal-2); }
  .heroi-foto img{ width:100%; height:100%; object-fit:cover; }
  .heroi-foto .legenda{ display:block; margin-top:var(--e-3); font-size:var(--t-apoio); line-height:1.4; color:var(--tinta-2); }
  .heroi-foto .legenda b{ display:block; font-family:var(--serifa); font-size:var(--t-3); font-weight:500; color:var(--tinta); }
  .heroi-foto:hover .legenda b{ color:var(--telha-esc); }
  /* a procura em pílula: três perguntas e o botão, numa linha */
  .procura{ display:grid; grid-template-columns:1.1fr .8fr 1.25fr auto; align-items:stretch; margin-top:var(--e-6); padding:6px; background:var(--branco); border:1.5px solid var(--linha-forte); border-radius:var(--r-pilula); box-shadow:var(--sombra); }
  .procura .bt{ min-height:60px; align-self:center; padding:0 var(--e-6); }
  .procura + .terras{ margin-top:var(--e-4); }
  .so-telemovel{ display:none !important; }
  .galeria{ display:grid; grid-template-columns:2fr 1fr; grid-template-rows:1fr 1fr; gap:10px; overflow:visible; aspect-ratio:16/8; }
  .galeria figure{ display:flex; flex-direction:column; min-height:0; }
  .galeria .foto{ aspect-ratio:auto; flex:1; min-height:0; }
  .galeria figure:first-child{ grid-row:1 / span 2; }
  .galeria figure:nth-child(n+4){ display:none; }
  .concurso-principal{ display:block; }
  .concurso-grelha .accao{ margin-top:0; }
  .concurso-grelha .galeria-bloco{ margin-top:var(--e-5); }
  .concurso-grelha{ display:grid; grid-template-columns:minmax(0,1fr) 380px; gap:var(--e-7); align-items:start; }
  .concurso-grelha .accao{ position:sticky; top:calc(var(--topo) + 24px); }
  .barra-fixa{ display:none; }
  .com-barra{ padding-bottom:0; }
  /* a folha de factos fica em 3 x 2: a 6 colunas a renda partia em duas linhas */
  .mapa{ aspect-ratio:16/10; }
  .lista-mapa{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:var(--e-5); }
}
/* o menu inteiro só cabe a partir de 1360 px (medido com o Vigia); abaixo, o botão Menu */
@media (min-width:1360px){
  .nav{ display:flex; align-items:center; gap:0; margin-right:var(--e-2); }
  .menu-bt{ display:none; }
}
@media (max-width:1023.98px){ .so-computador{ display:none !important; } }
/* telemóvel deitado ou zoom forte: nada preso ao ecrã */
@media (max-height:500px){
  .topo{ position:static; }
  .barra-fixa{ display:none; }
  html{ scroll-padding-top:0; }
}

/* ---------- 17. Movimento, contraste forçado e impressão ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{ transition:none !important; animation:none !important; scroll-behavior:auto !important; }
}
@media (forced-colors:active){
  .bt,.chip,.opcao,.cartao,.alfinete,.resposta,.alternar button{ border:1px solid CanvasText; }
  .opcao:has(input:checked),.alternar button[aria-pressed="true"]{ outline:3px solid Highlight; }
  :focus-visible{ outline-color:Highlight; }
}
@media print{
  .topo,.rodape,.barra-fixa,.partilha,.aviso,.galeria-bloco,.menu-folha,.bt-contorno{ display:none !important; }
  body{ background:#fff; font-size:12pt; }
  a{ color:#000; text-decoration:none; }
  .bt{ background:none; color:#000; border:1.5px solid #000; }
  .accao,.papeis{ break-inside:avoid; }
  .papel input{ border-color:#000; }
}

/* ---------- 16. Peças que viviam repetidas nos CSS das páginas (integrador, 27/09) ---------- */
.cartao-ver{ display:flex; align-items:center; gap:6px; margin-top:auto; padding-top:var(--e-3); font-weight:600; color:var(--telha-esc); font-size:var(--t-apoio); }
.cartao-ver .i{ width:16px; height:16px; }
.cartao-ver + .cartao-pe{ margin-top:var(--e-2); }
.cartao:hover .cartao-ver{ text-decoration:underline; text-decoration-color:var(--madeira); text-underline-offset:4px; }
.ponto-aberto{ display:inline-block; width:.42em; height:.42em; margin-right:.3em; vertical-align:.12em; background:var(--oliva); border-radius:50%; }
.antes-do-botao .aviso-preco{ margin-right:4px; }
.partilha-mais{ margin-top:var(--e-3); }
/* alvos de toque de 44 px nas listas de ligações soltas (medido a 375 e 412 px no Playwright, integrador 27/09) */
.etiqueta a, details > ul > li > a, .nt-contactos li a, .ident dd > a, .dp-tabela th a, .dp-tabela td a{ display:inline-flex; align-items:center; min-height:44px; }
.dp-cm-nome{ min-width:44px; }
