/* ==== concelho.css · só em body[data-css~="concelho"] ==== */
:where(body[data-css~="concelho"]) /* =====================================================================
   rendaacessivel.pt · concelho.css (só a página de uma terra) · 2.ª passagem
   Liga-se DEPOIS do base.css. Nada de cores novas: tokens do base.css.
   font-size só com var(--t-*).

   Duas regras de contentor, :where(body[data-css~="concelho"]) e só estas:
   (a) informação vive aberta sobre a cal, :where(body[data-css~="concelho"]) separada por filete
       (programas, perto, ritmo, papéis, perguntar, partilhar);
   (b) cartão branco só para o que se faz: o «Enquanto» e o aviso.

   Peças desta página:
   .terra-ante    o H1, :where(body[data-css~="concelho"]) como antetítulo (a resposta de hoje é o título visual)
   .estado        a resposta de hoje, :where(body[data-css~="concelho"]) em --t-1, :where(body[data-css~="concelho"]) com o ponto do estado
   .ultimo-mini   o último concurso que fechou, :where(body[data-css~="concelho"]) em miniatura, :where(body[data-css~="concelho"]) dentro do ritmo
   .ritmo         a régua dos 12 meses (decorativa; a lista em texto diz tudo)
   .aviso-regra   a regra que mais trava, :where(body[data-css~="concelho"]) dita para esta terra
   .alerta-linha  o anti-burla numa linha, :where(body[data-css~="concelho"]) sem caixa rosa
   ===================================================================== */

/* ---------- o topo ---------- */
.terra-heroi{ padding-top:0; }
:where(body[data-css~="concelho"]) .terra-cab{ display:grid; gap:var(--e-4); align-content:start; }
:where(body[data-css~="concelho"]) .terra-ante{ font-size:var(--t-3); line-height:1.25; color:var(--tinta-2); font-weight:450; max-width:none; }
:where(body[data-css~="concelho"]) .hoje-rotulo{ font-size:var(--t-rotulo); font-weight:600; color:var(--tinta-2); margin-bottom:var(--e-2); }
:where(body[data-css~="concelho"]) .estado{
  font-family:var(--serifa); font-size:var(--t-1); line-height:1.08; font-weight:450; letter-spacing:-.015em;
  color:var(--tinta); text-wrap:balance;
}
:where(body[data-css~="concelho"]) .ponto-fechado{
  display:inline-block; width:.42em; height:.42em; margin-right:.3em; vertical-align:.12em;
  border:2px solid var(--tinta-3); border-radius:50%;
}
:where(body[data-css~="concelho"]) .estado-sub{ color:var(--tinta-2); max-width:52ch; text-wrap:pretty; }
:where(body[data-css~="concelho"]) .heroi-bt .bt-nota{ max-width:44ch; }

/* o «Enquanto»: sem a barra oliva e sem números (são alternativas, não passos) */
:where(body[data-css~="concelho"]) .terra-heroi .enquanto{ margin-top:var(--e-5); align-self:start; }
:where(body[data-css~="concelho"]) .terra-heroi .enquanto li{ grid-template-columns:28px 1fr; }
:where(body[data-css~="concelho"]) .terra-heroi .enquanto li::before{ content:none; }
:where(body[data-css~="concelho"]) .enq-ic{ width:24px; height:24px; margin-top:12px; color:var(--oliva); }
:where(body[data-css~="concelho"]) .terra-heroi .enquanto .lig{ min-height:44px; }

/* ---------- secções ---------- */
:where(body[data-css~="concelho"]) .terra-secao{ padding-block:var(--e-secao) 0; }
:where(body[data-css~="concelho"]) .terra-secao .cabeca-texto{ margin-bottom:var(--e-5); }
:where(body[data-css~="concelho"]) .terra-secao .cabeca-texto > h2 + p{ color:var(--tinta-2); margin-top:var(--e-2); max-width:var(--larg-texto); }
:where(body[data-css~="concelho"]) .sub-titulo{ font-family:var(--serifa); font-size:var(--t-3); font-weight:500; line-height:1.2; margin:var(--e-6) 0 var(--e-3); }
:where(body[data-css~="concelho"]) .terra-secao .recolher{ margin-top:var(--e-5); }
:where(body[data-css~="concelho"]) .recolher summary > span{ display:grid; gap:2px; color:var(--tinta); }
:where(body[data-css~="concelho"]) .recolher summary small{ font-weight:400; font-size:var(--t-apoio); color:var(--tinta-2); }
:where(body[data-css~="concelho"]) .recolher-longe > div{ padding-top:var(--e-3); }
:where(body[data-css~="concelho"]) .serve-me{ margin-top:var(--e-3); }

:where(body[data-css~="concelho"]) /* a câmara: os programas, :where(body[data-css~="concelho"]) em filetes, :where(body[data-css~="concelho"]) com o estado de cada um */
.programas{ list-style:none; margin:0; padding:0; border-top:1px solid var(--linha); }
:where(body[data-css~="concelho"]) .programas li{ display:grid; gap:var(--e-2); justify-items:start; padding-block:var(--e-4); border-bottom:1px solid var(--linha); }
:where(body[data-css~="concelho"]) .programas b{ font-family:var(--serifa); font-size:var(--t-3); font-weight:500; line-height:1.2; }
:where(body[data-css~="concelho"]) .programas p{ font-size:var(--t-apoio); color:var(--tinta-2); max-width:var(--larg-texto); }

:where(body[data-css~="concelho"]) /* o anti-burla numa linha, :where(body[data-css~="concelho"]) sem caixa */
.alerta.alerta-linha{ background:none; padding:0; margin-top:var(--e-5); border-radius:0; max-width:var(--larg-texto); }
:where(body[data-css~="concelho"]) .alerta.alerta-linha .i{ color:var(--tinta-2); }

/* listas perto */
:where(body[data-css~="concelho"]) .distancia{ font-weight:600; color:var(--tinta); }
:where(body[data-css~="concelho"]) .so-quem-mora{ color:var(--tinta); font-weight:600; }
:where(body[data-css~="concelho"]) .recolher .lista-linhas{ border-top:0; }
:where(body[data-css~="concelho"]) .aviso-regra{ margin-top:var(--e-4); max-width:var(--larg-texto); font-size:var(--t-apoio); color:var(--tinta); }

:where(body[data-css~="concelho"]) /* o cartão sem fotografia: o número ao centro, :where(body[data-css~="concelho"]) a planta no canto de cima */
.cartoes .cartao-img.sem-foto{ align-items:center; }
:where(body[data-css~="concelho"]) .cartoes .cartao-img.sem-foto .planta{ align-self:flex-start; }
:where(body[data-css~="concelho"]) .cartoes .cartao-img .chip{ position:absolute; top:10px; left:10px; }
:where(body[data-css~="concelho"]) .cartoes .cartao-img.sem-foto > div{ margin-top:var(--e-5); }
:where(body[data-css~="concelho"]) .cartoes .cartao-razao{ align-items:flex-start; }
:where(body[data-css~="concelho"]) .cartoes .cartao-razao .i{ margin-top:4px; }

:where(body[data-css~="concelho"]) /* o terceiro cartão: os que ficam longe, :where(body[data-css~="concelho"]) em texto, :where(body[data-css~="concelho"]) à altura do que tem */
.cartao-mais{ display:flex; flex-direction:column; gap:var(--e-3); align-self:start; padding:20px; background:var(--cal-2); border-radius:var(--r-cartao); }
:where(body[data-css~="concelho"]) .cartao-mais h3{ font-size:var(--t-3); }
:where(body[data-css~="concelho"]) .cartao-mais ul{ list-style:none; margin:0; padding:0; border-top:1px solid var(--linha-forte); }
:where(body[data-css~="concelho"]) .cartao-mais li a{ display:grid; gap:2px; padding-block:var(--e-3); border-bottom:1px solid var(--linha); color:var(--tinta); text-decoration:none; min-height:var(--alvo); }
:where(body[data-css~="concelho"]) .cartao-mais li a b{ font-family:var(--serifa); font-size:var(--t-corpo); font-weight:560; }
:where(body[data-css~="concelho"]) .cartao-mais li a span{ font-size:var(--t-apoio); color:var(--tinta-2); }
:where(body[data-css~="concelho"]) .cartao-mais li a:hover b{ color:var(--telha-esc); }

/* ---------- o ritmo (aberto, sem caixa) ---------- */
:where(body[data-css~="concelho"]) .ritmo-bloco{ border-top:2px solid var(--tinta); padding-top:var(--e-4); }
:where(body[data-css~="concelho"]) .ritmo-bloco h2{ font-size:var(--t-2); }
:where(body[data-css~="concelho"]) .ritmo-bloco > p{ color:var(--tinta-2); margin-top:var(--e-2); max-width:var(--larg-texto); }
:where(body[data-css~="concelho"]) .ritmo{ position:relative; margin-top:var(--e-6); padding-top:30px; }
:where(body[data-css~="concelho"]) .ritmo-trilho{ position:relative; height:40px; background:var(--branco); border-radius:8px; border:1px solid var(--linha); }
:where(body[data-css~="concelho"]) .ritmo-meses{ display:grid; grid-template-columns:repeat(12,1fr); margin-top:6px; font-size:var(--t-rotulo); color:var(--tinta-3); }
:where(body[data-css~="concelho"]) .ritmo-meses > span{ padding-left:4px; border-left:1px solid var(--linha); line-height:1.2; }
:where(body[data-css~="concelho"]) .m-c{ display:none; }
:where(body[data-css~="concelho"]) .ritmo-aberto{
  position:absolute; top:6px; bottom:6px; left:var(--ini); width:max(8px, calc(var(--fim) - var(--ini)));
  background:var(--oliva); border-radius:4px;
}
:where(body[data-css~="concelho"]) .ritmo-camara{ position:absolute; top:6px; bottom:6px; left:var(--pos); width:8px; background:var(--madeira-esc); border-radius:4px; }
:where(body[data-css~="concelho"]) .ritmo-hoje{ position:absolute; top:-30px; bottom:-6px; left:var(--pos); width:2px; background:var(--tinta); }
:where(body[data-css~="concelho"]) .ritmo-hoje span{ position:absolute; top:0; left:6px; white-space:nowrap; font-size:var(--t-rotulo); font-weight:700; color:var(--tinta); line-height:1.2; }
:where(body[data-css~="concelho"]) .ritmo-legenda{ margin-top:var(--e-3); font-size:var(--t-rotulo); color:var(--tinta-2); line-height:1.6; }
:where(body[data-css~="concelho"]) .leg{ display:inline-block; width:14px; height:10px; border-radius:3px; margin-right:6px; vertical-align:0; }
:where(body[data-css~="concelho"]) .leg-estado{ background:var(--oliva); }
:where(body[data-css~="concelho"]) .leg-camara{ background:var(--madeira-esc); width:8px; }
:where(body[data-css~="concelho"]) .leg-item{ display:inline-block; margin-right:var(--e-5); }
:where(body[data-css~="concelho"]) .ritmo-lista li.camara span{ grid-column:1; }
:where(body[data-css~="concelho"]) .ritmo-lista{ list-style:none; margin:var(--e-5) 0 0; padding:0; border-top:1px solid var(--linha); }
:where(body[data-css~="concelho"]) .ritmo-lista li{ display:grid; grid-template-columns:1fr auto; gap:2px var(--e-4); padding-block:var(--e-3); border-bottom:1px solid var(--linha); font-size:var(--t-apoio); }
:where(body[data-css~="concelho"]) .ritmo-lista b{ color:var(--tinta); font-weight:600; }
:where(body[data-css~="concelho"]) .ritmo-lista span{ color:var(--tinta-2); }
:where(body[data-css~="concelho"]) .ritmo-lista li.camara b{ color:var(--madeira-esc); }
:where(body[data-css~="concelho"]) .ritmo-lista .dias{ grid-row:1 / span 2; grid-column:2; align-self:center; font-family:var(--serifa); font-size:var(--t-3); font-weight:500; color:var(--oliva); white-space:nowrap; }
:where(body[data-css~="concelho"]) .ritmo-lista .dias small{ font-family:var(--letra); font-size:var(--t-apoio); color:var(--tinta-2); font-weight:400; margin-left:4px; }
:where(body[data-css~="concelho"]) .ritmo-nota{ margin-top:var(--e-4); font-size:var(--t-apoio); color:var(--tinta-2); max-width:var(--larg-texto); }

:where(body[data-css~="concelho"]) /* o último que fechou, :where(body[data-css~="concelho"]) em miniatura: o estado primeiro, :where(body[data-css~="concelho"]) a casa depois */
.ultimo-mini{ display:grid; grid-template-columns:112px 1fr; gap:var(--e-4); align-items:start; margin-top:var(--e-6); padding-top:var(--e-5); border-top:1px solid var(--linha); }
:where(body[data-css~="concelho"]) .ultimo-mini img{ width:100%; aspect-ratio:3/4; object-fit:cover; border-radius:var(--r-campo); background:var(--cal-2); }
:where(body[data-css~="concelho"]) .ultimo-mini > div{ display:grid; gap:var(--e-2); justify-items:start; }
:where(body[data-css~="concelho"]) .linha-chips{ display:flex; flex-wrap:wrap; gap:var(--e-2); }
:where(body[data-css~="concelho"]) .ultimo-mini h3{ font-size:var(--t-3); }
:where(body[data-css~="concelho"]) .ultimo-mini p{ font-size:var(--t-apoio); color:var(--tinta-2); }
:where(body[data-css~="concelho"]) .ultimo-mini p b{ color:var(--tinta); font-weight:600; }
/* 27/09: o min-height:0 tirava o alvo de toque de 44 px (auditoria do telemóvel) */
:where(body[data-css~="concelho"]) .ultimo-mini .lig{ padding-block:var(--e-1); }

/* ---------- o aviso ---------- */
:where(body[data-css~="concelho"]) .ritmo-aviso{ display:grid; grid-template-columns:minmax(0,1fr); gap:var(--e-6); }
:where(body[data-css~="concelho"]) .ritmo-bloco,:where(body[data-css~="concelho"]) .ritmo{ min-width:0; }
:where(body[data-css~="concelho"]) .aviso-nota{ margin-top:var(--e-3); }
:where(body[data-css~="concelho"]) .aviso-outras{ margin-top:var(--e-4); padding-top:var(--e-3); border-top:1px solid var(--linha); font-size:var(--t-apoio); color:var(--tinta-2); }
:where(body[data-css~="concelho"]) .chips-terras{ list-style:none; margin:var(--e-3) 0 0; padding:0; display:flex; flex-wrap:wrap; gap:var(--e-2); }
:where(body[data-css~="concelho"]) .chips-terras a.chip{ color:var(--tinta); font-size:var(--t-apoio); }

/* ---------- os papéis ---------- */
:where(body[data-css~="concelho"]) .papeis-bloco{ display:grid; gap:var(--e-5); }
:where(body[data-css~="concelho"]) .papeis-bloco .texto h2{ margin-bottom:var(--e-3); }
:where(body[data-css~="concelho"]) .papeis-bloco .texto p{ color:var(--tinta-2); }
:where(body[data-css~="concelho"]) .nota-papeis{ margin-top:var(--e-3); }
:where(body[data-css~="concelho"]) .recolher-papeis summary{ min-height:72px; }
:where(body[data-css~="concelho"]) .recolher-papeis summary > span{ font-family:var(--serifa); font-size:var(--t-3); font-weight:500; }
:where(body[data-css~="concelho"]) .recolher-papeis summary small{ font-family:var(--letra); }

:where(body[data-css~="concelho"]) /* ---------- o fim: perguntar e partilhar, :where(body[data-css~="concelho"]) abertos ---------- */
.fim-terra{ display:grid; gap:var(--e-6); padding-bottom:var(--e-secao); }
:where(body[data-css~="concelho"]) .pergunta-camara,:where(body[data-css~="concelho"]) .passar{ border-top:2px solid var(--tinta); padding-top:var(--e-4); }
:where(body[data-css~="concelho"]) .pergunta-camara h2,:where(body[data-css~="concelho"]) .passar h2{ font-size:var(--t-3); }
:where(body[data-css~="concelho"]) .pergunta-camara p,:where(body[data-css~="concelho"]) .passar > p{ font-size:var(--t-apoio); color:var(--tinta-2); margin-top:var(--e-2); max-width:var(--larg-texto); }
:where(body[data-css~="concelho"]) .pergunta-camara .bt-contorno{ margin-top:var(--e-4); }
:where(body[data-css~="concelho"]) .pergunta-camara .contactos{ margin-top:var(--e-3); }
:where(body[data-css~="concelho"]) .passar .linha-flex{ margin-top:var(--e-2); gap:var(--e-1) var(--e-5); }
:where(body[data-css~="concelho"]) .passar .whats{ color:#1B7F3B; }

@media (max-width:639.98px){
  :where(body[data-css~="concelho"]) .m-l{ display:none; }
  :where(body[data-css~="concelho"]) .m-c{ display:inline; }
  :where(body[data-css~="concelho"]) .ritmo-meses > span{ padding-left:3px; }
  :where(body[data-css~="concelho"]) .leg-item{ display:block; margin-right:0; }}

@media (min-width:640px){
  :where(body[data-css~="concelho"]) .ultimo-mini{ grid-template-columns:168px 1fr; gap:var(--e-5); }
  :where(body[data-css~="concelho"]) .ultimo-mini img{ aspect-ratio:4/3; }}

@media (min-width:1024px){
  :where(body[data-css~="concelho"]) .terra-heroi .heroi-grelha{ align-items:start; }
  :where(body[data-css~="concelho"]) .terra-heroi .enquanto{ margin-top:calc(var(--e-5) + 1.4em); }
  :where(body[data-css~="concelho"]) .ritmo-aviso{ grid-template-columns:minmax(0,7fr) minmax(0,5fr); align-items:start; gap:var(--e-7); }
  :where(body[data-css~="concelho"]) .aviso{ position:sticky; top:calc(var(--topo) + 24px); }
  :where(body[data-css~="concelho"]) .fim-terra{ grid-template-columns:1fr 1fr; gap:var(--e-7); }
  :where(body[data-css~="concelho"]) .papeis-bloco{ grid-template-columns:5fr 7fr; gap:var(--e-7); align-items:start; }
  :where(body[data-css~="concelho"]) .programas{ display:grid; grid-template-columns:repeat(3,1fr); gap:0 var(--e-6); border-top:0; }
  :where(body[data-css~="concelho"]) .programas li{ border-top:2px solid var(--tinta); border-bottom:0; align-content:start; }
  :where(body[data-css~="concelho"]) .lista-linhas.colunas{ display:grid; grid-template-columns:repeat(3,1fr); gap:0 var(--e-6); border-top:0; }
  :where(body[data-css~="concelho"]) .lista-linhas.colunas > li > a{ border-top:2px solid var(--tinta); border-bottom:0; align-items:start; align-content:start; height:100%; }}

/* ---------- peças do gerador (27/09, passagem para código) ---------- */
:where(body[data-css~="concelho"]) /* o ponto do estado quando HÁ concurso aberto: cheio, :where(body[data-css~="concelho"]) a oliva (o vazio fica para «nada») */
.ponto-aberto{
  display:inline-block; width:.42em; height:.42em; margin-right:.3em; vertical-align:.12em;
  background:var(--oliva); border-radius:50%;
}
/* a renda de mercado do INE: um número grande e as contas por baixo */
:where(body[data-css~="concelho"]) .mercado{ margin-top:var(--e-6); padding-top:var(--e-4); border-top:1px solid var(--linha); max-width:var(--larg-texto); }
:where(body[data-css~="concelho"]) .mercado .sub-titulo{ margin-top:0; }
:where(body[data-css~="concelho"]) .mercado-num b{ font-family:var(--serifa); font-size:var(--t-2); font-weight:500; line-height:1.1; }
:where(body[data-css~="concelho"]) .mercado-num small{ font-size:var(--t-apoio); color:var(--tinta-2); margin-left:4px; }
:where(body[data-css~="concelho"]) .mercado p + p{ margin-top:var(--e-2); }
:where(body[data-css~="concelho"]) .pagina-camara{ margin-top:var(--e-4); }
/* o último fechado sem fotografia desta terra: só o texto (nunca a de outra casa) */
:where(body[data-css~="concelho"]) .ultimo-mini.sem-img{ grid-template-columns:1fr; }
:where(body[data-css~="concelho"]) /* sem ritmo nem fechado: o aviso sozinho, :where(body[data-css~="concelho"]) à largura de leitura */
.aviso-so > .aviso{ max-width:640px; position:static; }
:where(body[data-css~="concelho"]) .fim-terra.fim-so{ grid-template-columns:1fr; }
:where(body[data-css~="concelho"]) .passar .copiado:empty{ display:none; }
:where(body[data-css~="concelho"]) /* o aviso na coluna estreita: o email em cima, :where(body[data-css~="concelho"]) o botão (com o preço) por baixo, :where(body[data-css~="concelho"]) à largura toda */
.aviso .aviso-linha{ grid-template-columns:1fr; align-items:stretch; }
:where(body[data-css~="concelho"]) .aviso .aviso-linha .bt{ width:100%; justify-content:center; }
/* o .aviso-preco do base põe o parágrafo INTEIRO a t-2 (o mesmo remendo do inicio.css; pedido ao integrador) */
:where(body[data-css~="concelho"]) .aviso .antes-do-botao.aviso-preco{ font-family:var(--letra); font-size:var(--t-apoio); line-height:1.5; margin-top:var(--e-3); }
:where(body[data-css~="concelho"]) .aviso .antes-do-botao.aviso-preco b{ font-family:var(--serifa); font-size:var(--t-3); font-weight:500; margin-right:4px; }
:where(body[data-css~="concelho"]) .aviso .antes-do-botao{ margin-top:var(--e-3); }
/* o «Ver o concurso» do cartão comum (o mesmo remendo do inicio, posso e legais: devia viver no base; pedido) */
:where(body[data-css~="concelho"]) .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); }
:where(body[data-css~="concelho"]) .cartao-ver .i{ width:16px; height:16px; }
:where(body[data-css~="concelho"]) .cartao-ver + .cartao-pe{ margin-top:var(--e-2); }
:where(body[data-css~="concelho"]) .cartao:hover .cartao-ver{ text-decoration:underline; text-decoration-color:var(--madeira); text-underline-offset:4px; }

/* ---------- 3.ª volta (revisão de 27/09) ---------- */
/* o cabeçalho a 375 px: o «Menu» saía 3 px fora (scrollWidth 378). O mesmo remendo das
   páginas do Vigia e da Ajuda; o do base está pedido em PEDIDOS.md. */
@media (max-width:399.98px){
  :where(body[data-css~="concelho"]) .topo .caixa{ gap:4px; }
  :where(body[data-css~="concelho"]) .marca{ gap:8px; }
  :where(body[data-css~="concelho"]) .marca-simb{ width:26px; height:26px; }}
/* «Imprimir a lista»: sai uma folha só com os papéis */
:where(body[data-css~="concelho"]) .papeis-bloco .linha-flex{ gap:var(--e-1) var(--e-5); flex-wrap:wrap; }
@media print{
  :where(body[data-css~="concelho"]) .terra-heroi,:where(body[data-css~="concelho"]) .terra-secao:not(#papeis),:where(body[data-css~="concelho"]) .aviso-outras,:where(body[data-css~="concelho"]) .linha-flex,:where(body[data-css~="concelho"]) .nota-papeis{ display:none !important; }
  :where(body[data-css~="concelho"]) #papeis{ padding-top:0; }
  :where(body[data-css~="concelho"]) .recolher-papeis summary{ min-height:0; }
  :where(body[data-css~="concelho"]) .papeis-bloco{ display:block; }}
/* entre 400 e 440 px a palavra «Menu» volta e empurra o botão 10 px para fora: só o ícone (tem aria-label) */
@media (max-width:439.98px){
  :where(body[data-css~="concelho"]) .topo .menu-bt .menu-bt-txt{ display:none; }}
/* o último fechado a 375 px: a coluna do texto cresce ao min-content do chip do sorteio (386 px) */
:where(body[data-css~="concelho"]) .ultimo-mini{ grid-template-columns:112px minmax(0,1fr); }
:where(body[data-css~="concelho"]) .ultimo-mini.sem-img{ grid-template-columns:minmax(0,1fr); }
:where(body[data-css~="concelho"]) .ultimo-mini > div{ min-width:0; }
:where(body[data-css~="concelho"]) .ultimo-mini .chip{ white-space:normal; height:auto; min-height:28px; }
@media (min-width:640px){ :where(body[data-css~="concelho"]) .ultimo-mini{ grid-template-columns:168px minmax(0,1fr); } :where(body[data-css~="concelho"]) .ultimo-mini.sem-img{ grid-template-columns:minmax(0,1fr); }}