/* Páginas de explorar e de imprimir: terras, recordes, passeios, duelo, desafio, quem mais acendeu,
   convite, molde, como funciona, privacidade. Usar DEPOIS de site.css (e de impressao.css nas folhas).
   Só tokens de site.css; nada de cores soltas fora das folhas de papel. */

/* ───────── comuns ───────── */
.explorar__exemplo { margin-top: var(--s-3); }
/* A API falhou: o que está abaixo pode não estar atualizado */
.explorar__sem-ligacao { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s-3) var(--s-4); margin-bottom: var(--s-5); max-width: var(--measure); }
.explorar__sem-ligacao p { flex: 1 1 16rem; }

/* Filtro: botões alternáveis (aria-pressed), sublinhado de 2 px como os separadores */
.filtro { display: flex; gap: var(--s-4); flex-wrap: wrap; }
.filtro__botao {
  position: relative; min-height: var(--tap); padding: 0; background: none; border: 0;
  font-family: var(--f-ui); font-weight: 600; font-size: 1rem; color: var(--c-text-2);
}
@media (hover: hover) { .filtro__botao:hover { color: var(--c-text); } }
/* Ao toque, nenhum botão fica abaixo dos 44 px de largura («Todas» tem 38) */
@media (pointer: coarse) { .filtro__botao { min-width: var(--tap); } }
.filtro__botao[aria-pressed="true"] { color: var(--c-text); }
.filtro__botao[aria-pressed="true"]::after { content: ""; position: absolute; left: 0; right: 0; bottom: 8px; height: var(--line-2); background: var(--c-light); }

/* ───────── /terra ───────── */
.terras__ferramentas { display: grid; gap: var(--s-3); margin-bottom: var(--s-5); }
.terras__pesquisa { max-width: 520px; }
.terras__contagem { font-family: var(--f-ui); font-weight: 500; font-size: var(--fs-small); color: var(--c-text-2); }
@media (min-width: 60em) {
  .terras__ferramentas { grid-template-columns: minmax(0, 520px) auto 1fr; align-items: center; column-gap: var(--s-6); }
  .terras__contagem { justify-self: end; }
}
.terras__indice { margin-bottom: var(--s-6); padding-bottom: var(--s-4); border-bottom: var(--line) solid var(--c-line); }
.terras__indice ul { display: flex; flex-wrap: wrap; gap: 0 var(--s-4); }
.terras__indice a {
  display: inline-flex; align-items: baseline; gap: 6px; min-height: 36px; padding-top: 8px;
  font-family: var(--f-ui); font-weight: 500; font-size: .9375rem; color: var(--c-text-2); text-decoration: none;
}
@media (hover: hover) { .terras__indice a:hover { color: var(--c-text); text-decoration: underline; } }
.terras__indice-n { font-variant-numeric: tabular-nums; color: var(--c-text-3); font-size: var(--fs-label); }
.terras__lista { display: grid; gap: var(--s-7); }
/* Ao saltar para um distrito, o cabeçalho já é compensado pelo scroll-padding-top do html (site.css, que
   também trata o modo deitado). Um scroll-margin aqui somava-se a ele e deixava ~70 px vazios por cima. */
.terras__cabeca { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--s-1) var(--s-4); }
.terras__nome { font-size: var(--fs-h2); }
.terras__conta { font-family: var(--f-ui); font-weight: 600; font-variant-numeric: tabular-nums; color: var(--c-text-2); }
.terras__barra { position: relative; height: var(--line-2); background: var(--c-line); margin: var(--s-2) 0 var(--s-3); }
.terras__barra > span { position: absolute; inset: 0 auto 0 0; width: 0; background: var(--c-light); }
.terras__ilha + .terras__ilha { margin-top: var(--s-5); }
.terras__ilha-nome { font-family: var(--f-ui); font-weight: 600; font-size: var(--fs-label); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--c-text-3); margin: var(--s-3) 0 var(--s-1); }
.terra-linha a { gap: 0; }
.terra-linha__nome { min-width: 0; }
.terra-linha:not(.terra-linha--acesa) .terra-linha__nome { color: var(--c-text-2); }
@media (hover: hover) { .terra-linha:not(.terra-linha--acesa) a:hover .terra-linha__nome { color: var(--c-text); } }
/* Concelho com todas as freguesias acesas */
.terra-linha__completa {
  margin-left: auto; padding: 1px 5px; border: var(--line) solid var(--c-lit-stroke); border-radius: var(--r);
  font-family: var(--f-ui); font-weight: 600; font-size: .6875rem; letter-spacing: var(--tracking-label); text-transform: uppercase;
  color: var(--c-light); line-height: 1.4;
}
.terra-linha__completa + .quantas { margin-left: var(--s-2); }
/* Freguesias acesas no país, por baixo do resumo dos concelhos */
.terras__freguesias { display: block; margin-top: var(--s-1); font-family: var(--f-ui); font-weight: 500; font-size: var(--fs-small); font-variant-numeric: tabular-nums; color: var(--c-text-2); }
/* Linha reservada no HTML até chegarem as contas: a mesma altura, sem texto */
.terras__freguesias--espera::before { content: "\a0"; }
/* Até o JS pôr as contas, o índice mostra os distritos com as contas a ocupar o lugar, mas invisíveis */
.terras__indice--espera .terras__indice-n { visibility: hidden; }
/* Com a letra do sistema a 200 %, «concelhos» não cabia nos 280 px: o título nunca passa de 12vw
   (à letra normal fica igual, o clamp do h1 já é menor) */
main[data-pagina="terras"] .pagina__cabeca h1 { font-size: min(var(--fs-h1), 12vw); overflow-wrap: anywhere; }
.terras__mapa { margin-top: var(--s-7); }
/* Impressão: sem pesquisa nem filtros (nem o espaço deles), e uma terra nunca se parte entre folhas */
@media print {
  .terras__ferramentas { display: none !important; }
  .terras__cabeca { break-after: avoid; page-break-after: avoid; }
  .terras__lista .lista-terras li { break-inside: avoid; page-break-inside: avoid; }
  .terra-linha .marca-estado--acesa { background: #000; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}

/* ───────── /recordes ───────── */
.recordes { display: grid; gap: var(--s-7); }
@media (min-width: 60em) { .recordes { grid-template-columns: 1fr 1fr; column-gap: var(--s-8); } }
.recordes__lista { border-top: var(--line) solid var(--c-line); }
.recordes__grupo .titulo-secao { border-bottom: 0; margin-bottom: 0; }
.recordes__vazio { margin-bottom: var(--s-6); }
.recordes__convite { color: var(--c-text-2); font-style: italic; margin-bottom: var(--s-3); }
.recorde { border-bottom: var(--line) solid var(--c-line); }
.recorde__ligacao, .recorde--vazio {
  display: grid; grid-template-columns: 56px minmax(0, 1fr) auto; align-items: center; gap: var(--s-3) var(--s-4);
  padding: var(--s-4) 0; color: var(--c-text); text-decoration: none;
}
@media (hover: hover) {
  a.recorde__ligacao:hover { background: var(--c-surface); text-decoration: none; }
  a.recorde__ligacao:hover .recorde__nome { text-decoration: underline; text-decoration-color: var(--c-line-strong); }
}
a.recorde__ligacao:active { background: var(--c-surface); }
.recorde__foto { width: 56px; height: 56px; object-fit: cover; background: var(--c-surface-2); }
.recorde__foto--vazia { display: block; border: var(--line) dashed var(--c-line-strong); background: none; }
.recorde__marca { position: relative; display: block; width: 56px; height: 56px; }
.recorde__marca > .selo-svg:only-child { width: 56px; height: 56px; }
/* o carimbo do recorde sobre o canto da fotografia: fundo de noite por baixo, para se ler sobre qualquer foto */
.recorde__selo { position: absolute; left: -7px; top: -7px; width: 30px; height: 30px; border-radius: 50%; background: var(--c-bg); }
.recorde__texto { display: grid; gap: 2px; min-width: 0; }
.recorde__nome { font-family: var(--f-serif); font-size: 1.125rem; line-height: 1.25; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.recorde--vazio .recorde__nome { color: var(--c-text-2); font-style: italic; }
.recorde__valor {
  text-align: right; font-family: var(--f-ui); font-weight: 600; font-variant-numeric: tabular-nums;
  font-size: clamp(1.375rem, 1rem + 1.5vw, 2.25rem); line-height: 1; white-space: nowrap;
}
.recorde__valor small { font-size: .5em; font-weight: 500; color: var(--c-text-2); margin-left: .2em; }
.recorde__valor .recorde__antes { display: block; margin: 0 0 4px; font-size: var(--fs-label); letter-spacing: var(--tracking-label); text-transform: uppercase; }
.recorde__nota { display: block; margin-top: 4px; font-size: var(--fs-label); font-weight: 500; color: var(--c-text-3); }
.recorde__valor--vazio { color: var(--c-text-3); }
.recorde__num { white-space: nowrap; }
@media (max-width: 29.99em) {
  .recorde__ligacao, .recorde--vazio { gap: var(--s-2) var(--s-3); }
}
/* L0 (< 360 px): miniatura de 44 px e o valor desce para a linha de baixo, para o nome não ficar em reticências */
@media (max-width: 22.49em) {
  .recorde__ligacao, .recorde--vazio {
    grid-template-columns: 44px minmax(0, 1fr); grid-template-areas: "marca texto" "marca valor"; align-items: start; row-gap: var(--s-1);
  }
  .recorde__marca { grid-area: marca; width: 44px; height: 44px; margin-top: 2px; }
  .recorde__marca > .selo-svg:only-child { width: 44px; height: 44px; }
  .recorde__foto { width: 44px; height: 44px; }
  .recorde__selo { width: 26px; height: 26px; left: -6px; top: -6px; }
  .recorde__texto { grid-area: texto; }
  .recorde__nome { white-space: normal; }
  .recorde__valor { grid-area: valor; text-align: left; font-size: 1.375rem; white-space: normal; }
  .recorde__valor small { white-space: nowrap; }
  .recorde__valor .recorde__antes { display: inline; margin: 0 .35em 0 0; font-size: var(--fs-label); }
  .recorde__nota { display: inline; margin: 0 0 0 .5em; }
  .recorde--vazio .recorde__valor { display: none; }
}
.recordes__nota { max-width: var(--measure); }

/* ───────── /passeios ───────── */
.passeio .titulo-secao { margin-bottom: var(--s-5); }
.passeio__origens { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--s-5); max-width: 36rem; }
.passeio__origens > * { min-width: 0; }
.passeio__bloco-aqui { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--s-3); justify-items: start; }
.passeio__aqui { max-width: 100%; }
/* a coluna nunca fica com a largura mínima do campo (8em de letra grande, com a letra do sistema a 200 %) */
.passeio__pedra { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--s-2); max-width: 26rem; }
/* o campo segue o do molde e do convite (caixa, letra Itim); o botão fica com a mesma altura ao lado */
.passeio__pedra-linha { display: flex; flex-wrap: wrap; gap: var(--s-3); align-items: stretch; }
.passeio__pedra-linha input { width: 8em; max-width: 100%; font-family: var(--f-hand); font-size: 1.375rem; }
.passeio__privado { font-size: var(--fs-small); color: var(--c-text-2); max-width: var(--measure); }
/* «Como vais»: um rótulo pequeno e os dois botões alternáveis */
.passeio__modo { align-items: center; gap: 0 var(--s-5); }
.passeio__modo-rotulo { font-family: var(--f-ui); font-weight: 600; font-size: var(--fs-label); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--c-text-3); }
.passeio__modo .filtro__botao { min-width: var(--tap); }
/* No computador a localização é a alternativa: botão secundário depois da pedra n.º */
.passeio__origens--rato .passeio__bloco-aqui { padding-top: var(--s-4); border-top: var(--line) dashed var(--c-line); }
.passeio__estado { margin-top: var(--s-4); font-family: var(--f-ui); font-weight: 500; color: var(--c-text-2); max-width: var(--measure); }
.passeio__estado:empty { display: none; }
.passeio__estado--erro { color: var(--c-error); }
.passeio__estado--vazio { border: var(--line) dashed var(--c-line-strong); border-radius: var(--r); padding: var(--s-4) var(--s-5); font-family: var(--f-serif); font-weight: 400; }
.passeio__resultado { margin-top: var(--s-6); scroll-margin-top: calc(var(--cab-altura, var(--header-h)) + var(--s-4)); }
@media (min-width: 30em) and (max-height: 35em) and (orientation: landscape), (max-width: 29.99em) and (max-height: 22.49em) {
  .passeio__resultado { scroll-margin-top: var(--s-3); }
}
.passeio__titulo { font-size: var(--fs-h2); line-height: 1.2; }
.passeio__titulo:focus { outline: none; }
.passeio__titulo .n-pedra__num { font-size: 1.1em; }
/* num título grande o «n.º» não pode ficar a metade do tamanho: lia-se como um risco solto */
.passeio__titulo .n-pedra__abrev { font-size: .7em; }
.passeio__sem-quebra, .passeio__colado { white-space: nowrap; }
/* L0 ou letra grande: «pedra n.º 22,» já não cabe numa linha; parte antes do «n.º» (o n.º e o número nunca se separam) */
@media (max-width: 22.49em) { .passeio__sem-quebra { white-space: normal; } }
.passeio__total { margin-top: var(--s-2); font-family: var(--f-ui); font-weight: 500; color: var(--c-text-2); }
.passeio__total strong { color: var(--c-text); font-weight: 600; }
.passeio__percurso { margin-top: var(--s-2); font-family: var(--f-ui); font-weight: 600; font-size: .9375rem; }
.passeio__percurso-ligacao { display: inline-flex; align-items: center; min-height: 32px; color: var(--c-moss); text-decoration-color: currentColor; }
.passeio__percurso-nota { font-weight: 500; color: var(--c-text-2); }
@media (pointer: coarse) { .passeio__percurso-ligacao { min-height: var(--tap); } }
.passeio__grelha { display: grid; gap: var(--s-5); margin-top: var(--s-5); }
.passeio__mapa { position: relative; aspect-ratio: 4 / 3.4; background: var(--c-bg); border: var(--line) solid var(--c-line); }
/* Computador e telemóvel deitado: mapa e paragens lado a lado; o mapa acompanha o scroll */
@media (min-width: 60em), (min-width: 30em) and (max-height: 35em) and (orientation: landscape) {
  .passeio__grelha { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); align-items: start; }
  .passeio__mapa { position: sticky; top: calc(var(--cab-altura, var(--header-h)) + var(--s-4)); }
}
/* Deitado: o mapa nunca passa da altura útil do ecrã (o cabeçalho sai com o scroll) */
@media (min-width: 30em) and (max-height: 35em) and (orientation: landscape) {
  .passeio__mapa { top: var(--s-2); aspect-ratio: auto; height: calc(100vh - var(--s-5)); height: calc(100svh - var(--s-5)); }
}
.passeio__mapa > .mapa { position: absolute; inset: 0; }
.passeio__nota { margin-top: var(--s-4); }
.passeio__intro { color: var(--c-text-2); margin-bottom: var(--s-4); max-width: var(--measure); }

/* Rota por cima do mapa (SVG próprio, pontos em px de ecrã) */
.rota { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; pointer-events: none; z-index: 1; overflow: visible; }
.rota__fundo { fill: none; stroke: var(--c-bg); stroke-width: 5; stroke-linejoin: round; stroke-linecap: round; opacity: .8; }
.rota__linha { fill: none; stroke: var(--c-text); stroke-width: 1.5; stroke-dasharray: 4 4; stroke-linejoin: round; }
.rota__ponto circle { fill: var(--c-bg); stroke: var(--c-light); stroke-width: 1.5; }
.rota__ponto text { fill: var(--c-text); font-family: var(--f-ui); font-weight: 600; font-size: 11px; font-variant-numeric: tabular-nums; }
.rota__ponto--partida circle { fill: var(--c-light); stroke: var(--c-bg); }
.rota__ponto--partida text { fill: var(--c-bg); }

/* Lista de paragens */
.paragens { border-top: var(--line) solid var(--c-line); }
.paragem { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: var(--s-1) var(--s-3); align-items: start; padding: var(--s-3) 0; border-bottom: var(--line) solid var(--c-line); }
/* o círculo cresce com a letra (2em de .75rem = 24 px à letra normal): o algarismo nunca sai do anel */
.paragem__n {
  display: grid; place-items: center; box-sizing: border-box; width: 2em; height: 2em; margin-top: 2px; border-radius: 50%;
  border: 1.5px solid var(--c-light); font-family: var(--f-ui); font-weight: 600; font-size: .75rem; font-variant-numeric: tabular-nums;
}
.paragem:first-child .paragem__n { background: var(--c-light-fill); color: var(--c-on-light); }
.paragem__texto { min-width: 0; display: grid; gap: 2px; }
.paragem__nome { overflow-wrap: break-word; font-family: var(--f-serif); font-size: 1.125rem; line-height: 1.3; color: var(--c-text); text-decoration-color: var(--c-line-strong); }
@media (hover: hover) { a.paragem__nome:hover { text-decoration-color: var(--c-text-2); } }
.paragem__meta { font-family: var(--f-ui); font-weight: 500; font-size: var(--fs-small); color: var(--c-text-2); }
.paragem__acoes { display: flex; flex-wrap: wrap; align-items: center; gap: 0 var(--s-4); font-family: var(--f-ui); font-weight: 600; font-size: .9375rem; margin-top: 2px; }
.paragem__acoes a { display: inline-flex; align-items: center; min-height: 32px; }
@media (pointer: coarse) {
  .paragem__acoes a { min-height: var(--tap); }
  /* o nome da paragem é uma ligação numa linha de texto: alvo de 44 px sem mexer no desenho */
  a.paragem__nome { display: inline-block; padding-block: 11px; margin-block: -11px; }
}
.paragem__km { text-align: right; font-family: var(--f-ui); font-weight: 600; font-variant-numeric: tabular-nums; font-size: 1.125rem; white-space: nowrap; }
.paragem__km small { display: block; font-size: var(--fs-label); font-weight: 500; color: var(--c-text-3); }
.paragem__km--partida { font-size: var(--fs-label); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--c-text-2); padding-top: 4px; }
.paragem--sumida .paragem__nome { color: var(--c-text-2); }
/* Pouca largura (menos de 22,5em: um telemóvel pequeno, ou qualquer telemóvel com a letra do sistema grande): os
   quilómetros descem para debaixo do nome, antes das ligações, e o nome fica com a largura toda */
@media (max-width: 22.49em) {
  .paragem { grid-template-columns: auto minmax(0, 1fr); grid-template-areas: "n nome" ". meta" ". km" ". acoes"; row-gap: 2px; }
  .paragem__n { grid-area: n; }
  .paragem__texto { display: contents; }
  .paragem__texto > .paragem__nome { grid-area: nome; justify-self: start; }
  .paragem__meta { grid-area: meta; }
  .paragem__acoes { grid-area: acoes; }
  .paragem__km { grid-area: km; text-align: left; white-space: normal; font-size: 1rem; }
  .paragem__km small { display: inline; margin-left: .5em; white-space: nowrap; }
  .paragem__km--partida { padding-top: 0; }
}

/* Propostos */
.propostos { border-top: var(--line) solid var(--c-line); }
.propostos > .vazio { border-top: var(--line) dashed var(--c-line-strong); margin-top: -1px; }
.propostos > .vazio-curto { padding: var(--s-4) 0; }
.proposto { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s-3) var(--s-5); padding: var(--s-4) 0; border-bottom: var(--line) solid var(--c-line); }
.proposto__nome { font-size: var(--fs-h3); }
.proposto__meta { margin-top: 2px; font-family: var(--f-ui); font-weight: 500; color: var(--c-text-2); }

/* ───────── /duelo e /desafio ───────── */
.duelo__semana { margin-bottom: var(--s-5); }
.duelo__falta { margin-top: var(--s-2); font-family: var(--f-ui); font-weight: 500; color: var(--c-text-2); }
.duelo__falta strong { color: var(--c-text); font-weight: 600; font-variant-numeric: tabular-nums; }
.duelo { border-top: var(--line) solid var(--c-line); }
.duelo__fila { padding: var(--s-3) 0 0; border-bottom: 0; }
.duelo__fila .fila__posicao { min-width: 3ch; }
.duelo__fila .fila__valor { font-size: clamp(1.25rem, 1rem + 1vw, 1.75rem); }
.duelo__fila .fila__barra { height: 1px; margin-top: var(--s-3); background: var(--c-line); }
.duelo__fila .fila__barra > span { background: var(--c-text-2); }
.duelo__fila--lider .fila__barra > span { background: var(--c-light); }
.duelo__fila--lider .fila__nome { font-weight: 600; }
.duelo__fila--zero .fila__nome { color: var(--c-text-2); }
.duelo__fila--zero .fila__valor { color: var(--c-text-3); }
.duelo__vazio { margin-bottom: var(--s-5); }
/* Sem o snapshot: uma linha curta no lugar da tabela e dos recordes */
.duelo__sem-mapa, .recordes__sem-mapa { padding: var(--s-4) 0; }
.duelo__freguesias { white-space: nowrap; }
[data-pagina="desafio"] .item-pedra__linha { flex-wrap: wrap; row-gap: 2px; min-width: 0; }
[role="tabpanel"]:focus-visible { outline-offset: 4px; }
/* Os dois separadores do duelo nunca ficam escondidos atrás de um scroll de lado (letra grande, 320 px):
   se não couberem, o segundo passa para a linha de baixo */
[data-pagina="duelo"] .separadores { flex-wrap: wrap; overflow-x: visible; row-gap: 0; }
/* Pouca largura (menos de 20em: um telemóvel com a letra do sistema a 150 % ou mais; à letra normal cabe até
   nos 320 px): o valor desce para uma linha só dele, por baixo do nome, e o nome e os habitantes ficam com a
   largura toda */
@media (max-width: 19.99em) {
  .duelo__fila.fila--com-posicao {
    grid-template-columns: auto minmax(0, 1fr); grid-template-areas: "pos nome" "pos valor" "pos detalhe" "barra barra";
    column-gap: var(--s-3); row-gap: 2px;
  }
  .duelo__fila .fila__posicao { grid-area: pos; }
  .duelo__fila .fila__nome { grid-area: nome; }
  .duelo__fila .fila__valor { grid-area: valor; text-align: left; align-self: baseline; margin-top: 2px; white-space: normal; }
  .duelo__fila .fila__valor small { white-space: nowrap; }
  .duelo__fila .fila__detalhe { grid-area: detalhe; }
  .duelo__fila .fila__barra { grid-area: barra; }
}

.desafio__cabeca h1 { max-width: 18ch; }
.desafio__texto-grande { font-size: 1.25rem !important; color: var(--c-text) !important; }
.desafio__conta { font-family: var(--f-ui); font-weight: 500; color: var(--c-text-2); margin-bottom: var(--s-3); }
.desafio__proxima { margin-top: var(--s-4); padding-top: var(--s-3); border-top: var(--line) dashed var(--c-line); font-family: var(--f-ui); font-weight: 500; color: var(--c-text-2); }
.desafio__proxima-rotulo { display: block; font-weight: 600; font-size: var(--fs-label); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--c-text-3); margin-bottom: 2px; }
.desafio__proxima strong { font-family: var(--f-serif); font-weight: 600; font-size: 1.125rem; color: var(--c-text); }
.desafio__proxima .secundario { white-space: nowrap; }
/* Como entrar: dois botões empilhados no telemóvel */
@media (max-width: 39.99em) {
  .desafio__acoes { flex-direction: column; align-items: stretch; max-width: 22rem; }
  .desafio__acoes .botao { justify-content: center; }
}
/* Arquivo: cada semana abre e fecha, como as perguntas */
.desafio__arquivo { border-top: var(--line) solid var(--c-line); }
.desafio__semana { border-bottom: var(--line) solid var(--c-line); }
.desafio__semana-nome {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; column-gap: var(--s-4); min-height: 56px; padding: var(--s-3) 0;
  cursor: pointer; list-style: none;
}
.desafio__semana-nome::-webkit-details-marker { display: none; }
.desafio__semana-nome::after { content: "+"; grid-column: 2; grid-row: 1 / span 2; font-family: var(--f-ui); font-weight: 500; font-size: 1.5rem; line-height: 1; color: var(--c-text-2); width: 1ch; text-align: center; }
.desafio__semana[open] > .desafio__semana-nome::after { content: "\2212"; }
@media (hover: hover) { .desafio__semana-nome:hover::after, .desafio__semana-nome:hover .desafio__semana-titulo { color: var(--c-text); } }
.desafio__semana-titulo { font-family: var(--f-serif); font-weight: 600; font-size: var(--fs-h3); line-height: 1.25; }
.desafio__semana-meta { grid-column: 1; margin-top: 2px; font-family: var(--f-ui); font-weight: 500; font-size: var(--fs-small); color: var(--c-text-2); font-variant-numeric: tabular-nums; }
.desafio__semana-texto { color: var(--c-text-2); max-width: var(--measure); margin-bottom: var(--s-3); }
.desafio__semana > .lista-pedras, .desafio__semana > .secundario { margin-bottom: var(--s-4); }

/* ───────── /quem-mais-acendeu ───────── */
.quem__tu { display: flex; align-items: baseline; gap: var(--s-3); margin-bottom: var(--s-5); padding: var(--s-3) var(--s-4); border: var(--line) solid var(--c-line); background: var(--c-surface); font-family: var(--f-ui); font-weight: 500; color: var(--c-text-2); }
.quem__tu strong { font-size: 1.75rem; line-height: 1; color: var(--c-text); font-variant-numeric: tabular-nums; }
.quem__tu-etiqueta { font-weight: 600; font-size: var(--fs-label); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--c-moss); }
.quem__tabela th[scope="row"] { font-family: var(--f-serif); font-weight: 500; font-size: 1.0625rem; text-transform: none; letter-spacing: 0; color: var(--c-text); padding: var(--s-3) var(--s-2) var(--s-3) 0; border-bottom: var(--line) solid var(--c-line); }
.quem__pos { width: 3em; color: var(--c-text-3); padding-right: var(--s-3) !important; }
td.quem__pos { font-size: 1rem !important; font-weight: 600; }
.quem__tabela th.num:not(.quem__pos), .quem__tabela td.num:not(.quem__pos) { padding-left: var(--s-3); }
td.quem__freguesias { font-size: 1.5rem !important; color: var(--c-text); }
td.quem__concelhos { color: var(--c-text-2); }
td.quem__pedras { color: var(--c-text-3); font-size: 1rem !important; }
.quem__desde { color: var(--c-text-2); white-space: nowrap; padding-left: var(--s-4) !important; }
.quem__selo { margin-left: var(--s-2); }
.quem__eu td, .quem__eu th { background: var(--c-surface); }
/* Uma alcunha nunca se parte a meio («Caroli / na»): só em último caso, quando nem sozinha cabe na linha */
.quem__alcunha { overflow-wrap: break-word; word-break: normal; hyphens: none; }
.quem__alcunha-concelhos { display: none; }
@media (max-width: 29.99em) { .quem__desde { display: none; } }
@media (max-width: 22.49em) { .quem__pedras { display: none; } }
/* Letra do sistema grande (menos de 20em de largura): a coluna dos concelhos sai e o número passa para baixo da
   alcunha, para «Freguesias» ficar sempre à vista sem scroll de lado */
@media (max-width: 19.99em) {
  .quem__tabela .quem__concelhos { display: none; }
  .quem__alcunha-concelhos { display: block; margin-top: 2px; font-family: var(--f-ui); font-weight: 500; font-size: var(--fs-small); color: var(--c-text-2); font-variant-numeric: tabular-nums; }
  .quem__pos { width: auto; }
}
/* 320 px com a letra a 200 %: os títulos das colunas perdem as maiúsculas espaçadas para «Freguesias» caber */
@media (max-width: 14.99em) {
  .quem__tabela thead th { letter-spacing: 0; text-transform: none; }
  .quem__tabela .quem__pos { padding-right: var(--s-2) !important; }
  .quem__alcunha { overflow-wrap: anywhere; }
  .quem__alcunha-concelhos { overflow-wrap: normal; }
}

/* ───────── folhas para imprimir (convite, molde) ───────── */
/* Telemóvel: uma coluna, campos e botões a toda a largura, o principal primeiro. A partir de 40em os dois
   campos ficam lado a lado, alinhados pelo topo (rótulos e caixas à mesma altura); no computador o botão
   fica à direita, assente na linha de baixo. */
.impressao__opcoes { display: grid; gap: var(--s-5); align-items: start; }
.impressao__campos { display: grid; gap: var(--s-5); align-items: start; }
.impressao__campo { min-width: 0; }
.impressao__campo + .impressao__campo { margin-top: 0; }
.impressao__campo .campo__ajuda { max-width: none; color: var(--c-text-2); }
.impressao__escolha { border: 0; min-height: var(--tap); }
.impressao__acoes { display: grid; gap: var(--s-3); }
.impressao__acoes .botao { width: 100%; }
@media (min-width: 40em) {
  .impressao__campos { grid-template-columns: repeat(2, minmax(0, 20rem)); column-gap: var(--s-6); }
  /* a caixa do QR fica ao meio da caixa do número, não do rótulo */
  .impressao__escolha { margin-top: calc(.9375rem * 1.55 + var(--s-2) + 8px); }
  .impressao__acoes { display: flex; flex-wrap: wrap; align-items: center; }
  .impressao__acoes .botao { width: auto; }
}
@media (min-width: 60em) {
  .impressao__opcoes { grid-template-columns: minmax(0, 1fr) auto; align-items: end; }
}
.impressao__nota { margin-top: var(--s-4); text-align: center; }
.folha-moldura { position: relative; width: 100%; display: flex; justify-content: center; overflow: hidden; }
/* Folha encolhida: tocar abre-a em tamanho real (impressao.mjs) */
.folha-moldura--reduzida { cursor: zoom-in; }
.folhas > .folha-moldura__ver { margin-top: calc(var(--s-3) - var(--s-6)); min-height: var(--tap); }
.folha-moldura__ver[hidden] { display: none; }
.folha-moldura > .folha-a4 { flex: none; }
@media screen and (max-width: 840px) {
  /* anula a regra de impressao.css: a folha mantém o tamanho real e encolhe por zoom (impressao.mjs) */
  .folha-moldura .folha-a4 { width: 210mm; height: 297mm; max-width: none; aspect-ratio: auto; }
}
.folha-a4 { line-height: 1.3; }
.folha-a4 p { color: var(--p-tinta); }

/* Convite: 8 cartões 2 × 4 */
.folha-convite .folha-a4__grelha > * { border-color: var(--p-linha); padding: 5.5mm 6mm 5mm; }
.cartao-convite { display: flex; flex-direction: column; gap: 1.6mm; }
.cartao__titulo { font-family: var(--f-serif); font-weight: 600; font-size: 4.6mm; line-height: 1.15; letter-spacing: -.01em; color: var(--p-tinta); margin-bottom: .6mm; }
.cartao__texto { font-size: 3.35mm; line-height: 1.35; }
.papel-texto + .papel-texto.cartao__texto { margin-top: 0; }
.cartao__pe { margin-top: auto; display: flex; align-items: flex-end; justify-content: space-between; gap: 3mm; padding-top: 1.5mm; border-top: .25mm solid var(--p-linha); }
.cartao__contactos { display: grid; gap: .4mm; min-width: 0; }
.cartao__endereco { font-size: 4.4mm; line-height: 1.1; white-space: nowrap; }
.cartao__redes { font-family: var(--f-ui); font-weight: 600; font-size: 2.9mm; letter-spacing: .02em; color: var(--p-tinta-2); }
.cartao__qr { flex: none; width: 19mm; height: 19mm; margin: -1mm -1mm -1mm 0; }
.cartao__qr-fundo { fill: #fff; }
.cartao__qr-modulos { fill: var(--p-tinta); }
.cartao-convite--qr .cartao__endereco { font-size: 4mm; }
.cortes { position: absolute; inset: 0; pointer-events: none; }
.cortes__svg { width: 100%; height: 100%; max-width: none; }
.cortes__svg path { fill: none; stroke: var(--p-tinta-2); stroke-width: .25; }

/* Molde */
.folha-molde { display: flex; flex-direction: column; gap: 4mm; padding: 10mm 12mm; }
.molde__cabeca { display: flex; justify-content: space-between; align-items: baseline; gap: 6mm; padding-bottom: 2.5mm; border-bottom: .3mm solid var(--p-linha); }
.molde__instrucao { font-family: var(--f-serif); font-style: italic; font-size: 3.1mm; color: var(--p-tinta-2) !important; max-width: 110mm; text-align: right; }
#molde-amostras { display: grid; gap: 5mm; }
.molde__estilo { display: grid; gap: 1.5mm; }
.molde__estilo + .molde__estilo { padding-top: 4mm; border-top: .3mm dashed var(--p-linha); }
.molde__linha { display: flex; justify-content: flex-start; align-items: flex-end; gap: 14mm; }
.molde__linha--grande { justify-content: flex-start; }
.molde__amostra { margin: 0; display: grid; justify-items: center; gap: 1mm; }
.molde__linha--grande .molde__amostra { grid-template-columns: auto auto; align-items: center; gap: 6mm; }
.molde__svg { overflow: visible; max-width: none; }
.molde__legenda { font-family: var(--f-ui); font-weight: 500; font-size: 2.9mm; color: var(--p-tinta-2); }
.molde__legenda strong { color: var(--p-tinta); font-weight: 600; }
.molde-texto { font-family: var(--f-hand); fill: var(--p-tinta); }
.molde-texto--imprensa { font-family: var(--f-ui); font-weight: 600; }
.molde-guia { stroke: var(--p-linha); stroke-width: .2; }
.molde-guia--x { stroke-dasharray: .8 .8; }
.molde-contorno { stroke: var(--p-tinta-2); stroke-width: .3; stroke-dasharray: 2 1.5; fill: none; }
.molde-vazio { stroke: var(--p-tinta-2); stroke-width: .3; stroke-dasharray: 1.2 1; }
.molde__dicas { margin-top: auto; padding-top: 3mm; border-top: .3mm solid var(--p-linha); }
.molde__dicas ul { margin: 1.5mm 0 0; padding-left: 4mm; display: grid; grid-template-columns: 1fr 1fr; gap: 1mm 8mm; }
.molde__dicas li { font-family: var(--f-serif); font-size: 3.1mm; line-height: 1.35; color: var(--p-tinta); }

@media print {
  .folha-moldura { display: block; overflow: visible; height: auto !important; }
  .folha-moldura .folha-a4 { zoom: 1 !important; transform: none !important; }
  .pagina-impressao .pagina__cabeca, .impressao__nota { display: none !important; }
  .folha-convite, .folha-molde { break-inside: avoid; }
}
@media screen { .so-ecra-nao { display: none; } }

/* ───────── /como-funciona ───────── */
.como__passos { display: grid; gap: var(--s-6); }
@media (min-width: 640px) { .como__passos { grid-template-columns: 1fr 1fr; column-gap: var(--s-5); } }
@media (min-width: 1120px) { .como__passos { grid-template-columns: repeat(4, 1fr); } }
.como__passo { display: grid; gap: var(--s-3); align-content: start; }
.como__passo .foto-exemplo img { aspect-ratio: 16 / 9; object-fit: cover; }
.como__texto { display: grid; gap: var(--s-2); }
.como__n { font-family: var(--f-hand); font-size: 2rem; line-height: 1; color: var(--c-text-2); }
.como__marca { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--s-3); border-bottom: var(--line) solid var(--c-line); padding-bottom: var(--s-2); }
.como__ilustracao { width: 96px; height: auto; }
.como__texto h3 { font-size: var(--fs-h3); }
.como__texto p:not(.como__n) { color: var(--c-text-2); }
.como__nota-imagens { margin-top: var(--s-5); }
.como__nao-titulo { margin-top: 0 !important; }
.como__nao { list-style: none; padding-left: 0 !important; border-top: var(--line) solid var(--c-line); }
.como__nao li { position: relative; padding: var(--s-2) 0 var(--s-2) var(--s-5); border-bottom: var(--line) solid var(--c-line); margin-top: 0 !important; }
.como__nao li::before { content: ""; position: absolute; left: 2px; top: 1.05em; width: 10px; height: var(--line-2); background: var(--c-error); }
.como__redes { list-style: none; padding-left: 0 !important; }
.como__redes a { font-family: var(--f-ui); font-weight: 600; overflow-wrap: anywhere; }
@media (pointer: coarse) { .como__redes a { display: inline-flex; align-items: center; min-height: 44px; max-width: 100%; } }
/* No papel as ilustrações passam a traço escuro sobre o branco: ver site.css, «.ilustracao» (@media print) */

.perguntas { border-top: var(--line) solid var(--c-line); max-width: 760px; }
.pergunta { border-bottom: var(--line) solid var(--c-line); }
.pergunta summary {
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-4); min-height: 56px; padding: var(--s-2) 0;
  cursor: pointer; list-style: none; font-family: var(--f-serif); font-size: 1.1875rem; font-weight: 600;
}
.pergunta summary::-webkit-details-marker { display: none; }
.pergunta summary::after { content: "+"; flex: none; font-family: var(--f-ui); font-weight: 500; font-size: 1.5rem; color: var(--c-text-2); width: 1ch; text-align: center; }
.pergunta[open] summary::after { content: "−"; }
@media (hover: hover) { .pergunta summary:hover::after { color: var(--c-text); } }
.pergunta p { padding: 0 0 var(--s-4); color: var(--c-text-2); max-width: var(--measure); }
/* No papel não se abre nada: as respostas imprimem todas (o módulo da página abre-as no beforeprint) e o sinal sai */
@media print {
  .pergunta::details-content { content-visibility: visible; height: auto; }
  .pergunta summary { min-height: 0; padding-bottom: var(--s-1); }
  .pergunta summary::after, .pergunta[open] summary::after { content: none; }
  .pergunta { break-inside: avoid; page-break-inside: avoid; }
}

/* ───────── /privacidade ───────── */
.privacidade__indice { margin-bottom: var(--s-6); padding: var(--s-4) 0; border-top: var(--line) solid var(--c-line); border-bottom: var(--line) solid var(--c-line); }
.privacidade__indice ul { display: flex; flex-wrap: wrap; gap: 0 var(--s-4); }
.privacidade__indice a { display: inline-flex; min-height: 36px; align-items: center; font-family: var(--f-ui); font-weight: 500; color: var(--c-text-2); text-decoration: none; }
@media (hover: hover) { .privacidade__indice a:hover { color: var(--c-text); text-decoration: underline; } }
.privacidade h2 { scroll-margin-top: calc(var(--header-h) + var(--s-4)); }
.privacidade__lista { border-top: var(--line) solid var(--c-line); }
.privacidade__lista > div { padding: var(--s-3) 0; border-bottom: var(--line) solid var(--c-line); }
.privacidade__lista dt { font-family: var(--f-ui); font-weight: 600; font-size: 1rem; }
.privacidade__lista dd { margin: 2px 0 0; color: var(--c-text-2); }
.marcador-por-definir { font-family: var(--f-ui); font-weight: 600; color: var(--c-error); border: var(--line) dashed var(--c-error); padding: 0 6px; border-radius: var(--r); }

/* primeiro título de um bloco de prosa encostado ao topo da secção */
.secao .prosa > :first-child { margin-top: 0; }

/* ───────── Espaço reservado para o que o JS desenha (evita saltos de página, CLS) ───────── */
.terras__contagem:empty { min-height: 22px; }
.terras__lista:has(> .vazio-curto:only-child) { min-height: 100vh; }
.recordes__lista:empty, .recordes__lista:has(> .explorar__a-ler) { min-height: 37.5rem; }
.duelo:empty, .duelo:has(> .explorar__a-ler) { min-height: calc(20 * 4.5rem); }
.duelo__falta:empty { min-height: 28px; }
.duelo__semana { min-height: 50px; }
/* enquanto se lê o mapa, o lugar de dez filas da tabela (cabeçalho incluído): a tabela entra sem empurrar a
   «Como contamos» e o rodapé, que já estavam à vista (CLS) */
#quem-tabela:empty, #quem-tabela:has(> .explorar__a-ler) { min-height: calc(10 * 3.5rem + 3rem); }
/* a nota só aparece com a tabela: se a tabela vier mais curta do que a reserva, a nota não sobe à vista de ninguém */
#quem-tabela:has(> .explorar__a-ler) ~ .nota-campo { visibility: hidden; }
/* «A ler o mapa…» enquanto o snapshot chega (no HTML; o JS troca-o pelo conteúdo) */
.explorar__a-ler { padding: var(--s-4) 0; }
@media (pointer: coarse) {
  .terras__indice a, .privacidade__indice a { min-height: 44px; }
}
