/* =========================================================================
   Estilo do site – sóbrio e editorial, como uma brochura de imobiliária.
   A página serve as fotografias: linhas finas, colunas e alinhamentos,
   sem sombras, gradientes, cartões arredondados nem animações de entrada.
   Cores, letras e tamanhos principais estão aqui em cima, para mudar fácil.
   ========================================================================= */
:root {
  --marfim: #F8F4EC;        /* fundo */
  --marfim-escuro: #EFE8DC; /* fundo do contacto */
  --branco: #FFFFFF;        /* campos do formulário */
  --castanho: #2B211A;      /* texto */
  --castanho-suave: #574638;/* texto secundário (contraste alto: 8:1) */
  --madeira: #7B5232;       /* links, botões e rótulos (6:1 sobre o marfim) */
  --madeira-escura: #5F3E25;/* botões ao passar o rato */
  --dourado: #A88456;       /* só linhas finas, nunca texto */
  --linha: #DCD1C0;         /* linhas finas */
  --linha-forte: #B9A88F;
  --borda-campo: #8C7764;   /* contorno dos campos (contraste 4:1 sobre branco) */
  --escuro: #121010;        /* fundo da fotografia ampliada */
  --erro: #9B1C1C;
  --raio: 2px;
  --letra-titulos: "Cormorant Garamond", Georgia, "Times New Roman", serif;
  --letra-texto: "Source Sans 3", "Segoe UI", Arial, sans-serif;
  --largura: 1200px;
  --margem: 20px;
}
@media (min-width: 900px) { :root { --margem: 40px; } }

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--marfim);
  color: var(--castanho);
  font-family: var(--letra-texto);
  font-size: 19px;          /* texto base grande no telemóvel */
  line-height: 1.6;
}
@media (min-width: 900px) { body { font-size: 20px; } }
img { max-width: 100%; height: auto; display: block; }
figure { margin: 0; }
a { color: var(--madeira); text-underline-offset: 3px; text-decoration-thickness: 1px; }
a:hover { color: var(--madeira-escura); }
h1, h2, h3, h4 {
  font-family: var(--letra-titulos);
  font-weight: 500;
  line-height: 1.15;
  margin: 0 0 0.5em;
  color: var(--castanho);
}
h2 { font-size: 2.1rem; }
h3 { font-size: 1.6rem; }
h4 { font-size: 1.45rem; font-weight: 600; }
@media (min-width: 900px) { h2 { font-size: 2.6rem; } h3 { font-size: 1.85rem; } }
p { margin: 0 0 1em; }
[hidden] { display: none !important; }

/* Foco visível para quem usa o teclado */
:focus-visible { outline: 3px solid var(--madeira); outline-offset: 3px; }

.saltar {
  position: absolute; left: 16px; top: -100px; z-index: 200;
  background: var(--castanho); color: var(--marfim); padding: 0.8rem 1.2rem;
}
.saltar:focus { top: 16px; color: var(--marfim); }
/* Enquanto os textos carregam, só a fotografia do topo aparece (evita que a página "salte") */
.a-carregar .cabecalho, .a-carregar main, .a-carregar .rodape, .a-carregar .barra-fixa { visibility: hidden; }
.a-carregar .capa-foto { visibility: visible; }
.escondido { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Largura máxima do conteúdo, com margem dos lados */
/* (a margem é exterior, para as linhas finas das secções terem a largura do texto) */
.contentor {
  width: min(var(--largura), 100% - 2 * var(--margem));
  margin-left: auto; margin-right: auto;
}

/* Rótulo pequeno em maiúsculas por cima dos títulos ("A CASA", "GALERIA"…) */
.rotulo {
  margin: 0 0 0.9rem;
  font: 600 0.8rem/1.3 var(--letra-texto); letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--madeira);
}

/* ---------- Botões ---------- */
.botoes { display: flex; flex-wrap: wrap; gap: 12px; }
.botao {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 56px; padding: 0.7rem 1.75rem;
  border-radius: var(--raio); border: 1px solid var(--madeira);
  font: 600 1.05rem/1.2 var(--letra-texto); letter-spacing: 0.02em;
  text-decoration: none; text-align: center;
  cursor: pointer; transition: background-color 0.15s, color 0.15s;
}
.botao-principal { background: var(--madeira); color: var(--branco); }
.botao-principal:hover { background: var(--madeira-escura); border-color: var(--madeira-escura); color: var(--branco); }
.botao-claro { background: transparent; color: var(--madeira); }
.botao-claro:hover { background: var(--marfim-escuro); color: var(--madeira-escura); }
.botao-largo { width: 100%; }
@media (max-width: 599px) { .botoes .botao { flex: 1 1 100%; } }

/* ---------- Cabeçalho: localização e línguas ---------- */
.cabecalho {
  display: flex; align-items: center; justify-content: center;
  padding: 4px var(--margem); min-height: 64px;
}
.cabecalho-local { display: none; margin: 0; }
@media (min-width: 900px) {
  .cabecalho { justify-content: space-between; max-width: calc(var(--largura) + 2 * var(--margem)); margin: 0 auto; }
  .cabecalho-local {
    display: block;
    font: 600 0.8rem/1.3 var(--letra-texto); letter-spacing: 0.16em; text-transform: uppercase;
    color: var(--castanho-suave);
  }
}
.linguas { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px; }
.lingua {
  min-height: 56px; padding: 0.4rem 0.8rem;
  border: 0; background: transparent; cursor: pointer;
  font: 400 1rem/1.2 var(--letra-texto); color: var(--castanho-suave);
}
.lingua:hover { color: var(--castanho); text-decoration: underline; text-underline-offset: 6px; }
/* Língua escolhida: a negrito e sublinhada (não depende só da cor) */
.lingua[aria-pressed="true"] {
  font-weight: 600; color: var(--castanho);
  text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 6px;
  text-decoration-color: var(--madeira);
}

/* ---------- Topo ---------- */
/* A fotografia do topo é vertical: recorte horizontal centrado nas hortênsias e nas portas */
.capa-foto { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; object-position: 50% 46%; }
.capa-texto { padding-top: 1.75rem; padding-bottom: 2rem; }
.capa h1 { font-size: 3rem; line-height: 1; margin-bottom: 0.3em; }
.capa-subtitulo { font-size: 1.05rem; color: var(--castanho-suave); margin: 0; }
.capa-lado { margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid var(--linha); }
.capa-preco { margin: 0 0 1.25rem; display: flex; align-items: baseline; gap: 0.9rem; }
.capa-preco .rotulo { margin: 0; color: var(--castanho-suave); }
.capa-preco strong {
  font-family: var(--letra-titulos); font-size: 2.2rem; font-weight: 500; line-height: 1; white-space: nowrap;
}
@media (min-width: 900px) {
  .capa-foto { aspect-ratio: auto; height: min(72vh, 780px); min-height: 460px; object-position: 50% 44%; }
  .capa-texto {
    display: grid; grid-template-columns: 1fr auto; gap: 3rem; align-items: end;
    padding-top: 2.75rem; padding-bottom: 0;
  }
  .capa h1 { font-size: 4.4rem; }
  .capa-subtitulo { font-size: 1.15rem; }
  .capa-lado { margin: 0; padding: 0; border: 0; text-align: right; }
  .capa-preco { justify-content: flex-end; }
  .capa-preco strong { font-size: 2.6rem; }
  .capa-lado .botoes { justify-content: flex-end; }
}

/* ---------- Barra de factos ---------- */
.numeros { margin-top: 2rem; }
.numeros-lista {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: 1fr 1fr;
  border-top: 1px solid var(--linha-forte); border-bottom: 1px solid var(--linha-forte);
}
.numeros-lista li { padding: 1.1rem 0.9rem 1.2rem; }
/* Telemóvel: 2 × 2, separados por linhas finas */
.numeros-lista li:nth-child(odd) { padding-left: 0; border-right: 1px solid var(--linha); }
.numeros-lista li:nth-child(n+3) { border-top: 1px solid var(--linha); }
@media (min-width: 900px) {
  .numeros { margin-top: 2.75rem; }
  .numeros-lista { grid-template-columns: repeat(4, 1fr); }
  .numeros-lista li { padding: 1.4rem 1.75rem; border: 0 !important; }
  .numeros-lista li:first-child { padding-left: 0; }
  .numeros-lista li + li { border-left: 1px solid var(--linha) !important; }
}
.numero-grande { display: block; font-family: var(--letra-titulos); font-size: 1.75rem; font-weight: 500; line-height: 1.15; }
.numero-pequeno { display: block; font-size: 0.95rem; color: var(--castanho-suave); margin-top: 0.25rem; line-height: 1.35; }
@media (min-width: 900px) { .numero-grande { font-size: 2rem; } }

/* ---------- Secções ---------- */
.seccao { padding-top: 4rem; padding-bottom: 4rem; scroll-margin-top: 8px; }
@media (min-width: 900px) { .seccao { padding-top: 6.5rem; padding-bottom: 6.5rem; } }
.intro { color: var(--castanho-suave); max-width: 38em; }

/* ---------- A casa: duas colunas ---------- */
#casa-texto p { max-width: 34em; }
.casa-foto { margin-top: 2rem; margin-left: calc(-1 * var(--margem)); margin-right: calc(-1 * var(--margem)); }
.casa-foto img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
@media (min-width: 900px) {
  .casa { display: grid; grid-template-columns: 5fr 6fr; gap: 4.5rem; align-items: center; }
  .casa-foto { margin: 0; }
  /* a fotografia de "A casa" aparece inteira, como no ficheiro (3:2) */
}

/* ---------- Galeria ---------- */
.galeria { border-top: 1px solid var(--linha); }
.pisos-botoes { margin: 2rem 0 0.5rem; border-top: 1px solid var(--linha-forte); }
.piso-botao {
  display: flex; align-items: center; min-height: 64px; padding: 0.75rem 0;
  border-bottom: 1px solid var(--linha);
  font: 600 1.1rem/1.3 var(--letra-texto); color: var(--madeira); text-decoration: none;
}
.piso-botao:hover { color: var(--madeira-escura); text-decoration: underline; }
@media (min-width: 900px) {
  .pisos-botoes { display: grid; grid-template-columns: repeat(3, 1fr); border-bottom: 1px solid var(--linha-forte); }
  .piso-botao { justify-content: center; min-height: 72px; padding: 0.75rem 1rem; border-bottom: 0; }
  .piso-botao + .piso-botao { border-left: 1px solid var(--linha); }
}

.piso { padding-top: 3.5rem; scroll-margin-top: 8px; }
.piso-titulo { padding-bottom: 0.5em; border-bottom: 1px solid var(--linha-forte); margin-bottom: 0; }
.divisao { padding: 2rem 0 0.5rem; scroll-margin-top: 8px; }
.divisao h4 { margin-bottom: 0.3em; }
.divisao-descricao { margin-bottom: 0.25em; max-width: 34em; }
.divisao-contagem { color: var(--castanho-suave); font-size: 0.95rem; margin-bottom: 1rem; }
.selo {
  display: inline-block; margin-left: 0.6em; vertical-align: middle;
  font: 600 0.75rem/1.3 var(--letra-texto); letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--madeira);
}
/* Computador: nome e descrição da divisão à esquerda, fotografias à direita */
@media (min-width: 900px) {
  .divisao { display: grid; grid-template-columns: 15rem 1fr; gap: 3rem; padding: 2.75rem 0 0.25rem; }
  .divisao + .divisao { border-top: 1px solid var(--linha); margin-top: 2.5rem; }
}

/* Mosaico: recortes iguais (3:2); a fotografia ampliada mostra sempre a imagem inteira */
.miniaturas { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.miniatura {
  position: relative; display: block; width: 100%; aspect-ratio: 3 / 2; padding: 0; border: 0; cursor: zoom-in;
  background: var(--marfim-escuro); overflow: hidden;
}
.miniatura img { width: 100%; height: 100%; object-fit: cover; transition: opacity 0.15s; }
.miniatura:hover img { opacity: 0.88; }
/* Telemóvel: a primeira ocupa a largura toda, as outras vão duas a duas */
@media (max-width: 699px) {
  .miniatura:first-child, .miniatura:last-child:nth-child(even) { grid-column: span 2; }
}
/* Computador: 6 colunas; a grande ocupa 4 colunas × 2 linhas, com duas pequenas ao lado */
@media (min-width: 700px) {
  .miniaturas { grid-template-columns: repeat(6, 1fr); gap: 10px; }
  .miniatura { grid-column: span 2; }
  .miniatura.m-metade { grid-column: span 3; }
  .miniatura.m-grande { grid-column: span 4; grid-row: span 2; aspect-ratio: auto; }
  /* A grande acompanha a altura das duas pequenas, sem esticar as linhas */
  .miniatura.m-grande img { position: absolute; inset: 0; }
}

/* Etiqueta discreta ("Imagem ilustrativa") */
.etiqueta {
  position: absolute; top: 8px; left: 8px; z-index: 2;
  padding: 0.2em 0.55em; border-radius: var(--raio);
  background: rgba(18, 16, 16, 0.72); color: #FFFFFF;
  font: 400 0.8rem/1.4 var(--letra-texto); letter-spacing: 0.02em;
}
.voltar-pisos { margin-top: 2.5rem; }

/* ---------- Fotografia em ecrã inteiro ---------- */
body.vis-aberto { overflow: hidden; }
.visualizador {
  position: fixed; inset: 0; z-index: 100;
  display: flex; flex-direction: column;
  background: var(--escuro); color: #F4EEE4;
}
.vis-topo {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 10px 12px; padding-top: max(10px, env(safe-area-inset-top));
}
.vis-info { margin: 0; font-size: 1rem; line-height: 1.35; min-width: 0; }
.vis-info #vis-contador { display: block; font-weight: 600; }
.vis-legenda { display: block; color: #D9CDBA; }
.vis-acoes { display: flex; gap: 8px; flex-shrink: 0; }
.vis-botao {
  min-height: 56px; padding: 0.5rem 1.1rem; border-radius: var(--raio);
  border: 1px solid rgba(244, 238, 228, 0.5); background: transparent;
  color: #F4EEE4; font: 600 1.05rem/1.2 var(--letra-texto); cursor: pointer;
  transition: background-color 0.15s;
}
.vis-botao:hover { background: rgba(244, 238, 228, 0.14); }
.vis-botao:disabled { opacity: 0.4; cursor: default; }
.vis-fechar { background: #F4EEE4; color: var(--escuro); border-color: #F4EEE4; }
.vis-fechar:hover { background: #FFFFFF; }
.visualizador :focus-visible { outline-color: #F4EEE4; }
/* No telemóvel estreito, "Ampliar" dá lugar ao contador e ao "Fechar" (tocar duas vezes também amplia) */
@media (max-width: 379px) { .vis-zoom { display: none; } }
.vis-palco {
  position: relative; flex: 1; min-height: 0; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  touch-action: none; user-select: none; -webkit-user-select: none;
}
/* A fotografia inteira cabe sempre no espaço disponível, sem recorte */
.vis-imagem {
  position: absolute; inset: 0; margin: auto;
  max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain;
  transform-origin: center center; transition: transform 0.2s ease-out;
  cursor: zoom-in;
}
.vis-imagem.ampliada { cursor: grab; }
.vis-imagem.a-mexer { transition: none; }
.etiqueta-vis { top: 12px; left: 12px; font-size: 0.9rem; }
.vis-navegacao {
  display: flex; gap: 10px; padding: 10px 12px;
  padding-bottom: max(10px, env(safe-area-inset-bottom));
}
.vis-seta { flex: 1; font-size: 1.1rem; }
@media (min-width: 900px) {
  .vis-topo { padding: 16px 24px; }
  .vis-palco { margin: 0 160px 24px; }
  .vis-navegacao { padding: 0; }
  .vis-seta {
    position: absolute; top: 50%; transform: translateY(-50%);
    width: 136px; min-height: 64px; flex: none;
  }
  .vis-anterior { left: 12px; }
  .vis-seguinte { right: 12px; }
  .vis-proxima-divisao { width: 144px; white-space: normal; }
}

/* ---------- Planta ---------- */
.planta-botao {
  display: block; width: 100%; padding: 0; border: 1px solid var(--linha);
  background: var(--branco); cursor: zoom-in; overflow: hidden;
}

/* ---------- Para quem é: linhas, título à esquerda e texto à direita ---------- */
.publico { border-top: 1px solid var(--linha); }
.publico-lista { margin-top: 2rem; border-bottom: 1px solid var(--linha); }
.publico-item { padding: 1.4rem 0 0.4rem; border-top: 1px solid var(--linha); }
.publico-item h3 { font-size: 1.5rem; margin-bottom: 0.3em; }
@media (min-width: 900px) {
  .publico-item { display: grid; grid-template-columns: 5fr 7fr; gap: 3rem; padding: 1.8rem 0 0.8rem; }
  .publico-item h3 { font-size: 1.75rem; }
  .publico-item p { max-width: 34em; }
}

/* ---------- Características (duas colunas) e ficha técnica ---------- */
#caracteristicas { border-top: 1px solid var(--linha); }
.caracteristicas-lista {
  list-style: none; margin: 1.5rem 0 0; padding: 0;
  column-gap: 3.5rem; border-top: 1px solid var(--linha-forte);
}
@media (min-width: 900px) { .caracteristicas-lista { columns: 2; } }
.caracteristicas-lista li { padding: 0.8rem 0; border-bottom: 1px solid var(--linha); break-inside: avoid; }
.ficha { margin-top: 1.5rem; }
.ficha-botao {
  min-height: 56px; padding: 0.5rem 0; border: 0; background: none; cursor: pointer;
  font: 600 1.05rem/1.3 var(--letra-texto); color: var(--madeira);
  text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px;
}
.ficha-botao:hover { color: var(--madeira-escura); }
.ficha-botao::after { content: " +"; display: inline-block; margin-left: 0.35em; }
.ficha-botao[aria-expanded="true"]::after { content: " –"; }
.ficha-conteudo { max-width: 52em; padding-top: 0.75rem; }
.ficha-conteudo dl { margin: 0 0 1.25rem; border-top: 1px solid var(--linha); }
.ficha-conteudo dt { font-weight: 600; padding-top: 0.75rem; }
.ficha-conteudo dd { margin: 0; padding-bottom: 0.75rem; border-bottom: 1px solid var(--linha); color: var(--castanho-suave); }
@media (min-width: 700px) {
  .ficha-conteudo dl { display: grid; grid-template-columns: minmax(13em, 1fr) 2fr; }
  .ficha-conteudo dt, .ficha-conteudo dd { padding: 0.75rem 0; border-bottom: 1px solid var(--linha); }
  .ficha-conteudo dd { padding-left: 1.5rem; }
}
.ficha-nota { font-size: 1rem; color: var(--castanho-suave); }

/* ---------- Localização e documentação, lado a lado ---------- */
.notas { border-top: 1px solid var(--linha); display: grid; gap: 2.5rem; }
.nota-titulo { font-size: 1.9rem; }
.notas p:last-child { margin-bottom: 0; max-width: 30em; }
.notas section + section { padding-top: 2.5rem; border-top: 1px solid var(--linha); }
@media (min-width: 900px) {
  .notas { grid-template-columns: 1fr 1fr; gap: 0; }
  .notas section + section { padding: 0 0 0 4rem; margin-left: 0; border-top: 0; border-left: 1px solid var(--linha); }
  .nota-titulo { font-size: 2.3rem; }
}

/* ---------- Perguntas frequentes ---------- */
.faq { border-top: 1px solid var(--linha); }
@media (min-width: 900px) { .faq { display: grid; grid-template-columns: 5fr 7fr; gap: 3rem; } }
.faq-lista { margin-top: 1rem; border-top: 1px solid var(--linha-forte); }
@media (min-width: 900px) { .faq-lista { margin-top: 0; } }
.faq-lista details { border-bottom: 1px solid var(--linha); }
.faq-lista summary {
  list-style: none; cursor: pointer; min-height: 56px; padding: 1rem 2.5rem 1rem 0; position: relative;
  font: 600 1.1rem/1.4 var(--letra-texto);
}
.faq-lista summary::-webkit-details-marker { display: none; }
.faq-lista summary::after {
  content: "+"; position: absolute; right: 0.25rem; top: 50%; transform: translateY(-50%);
  font: 400 1.6rem/1 var(--letra-texto); color: var(--madeira);
}
.faq-lista details[open] summary::after { content: "–"; }
.faq-lista details p { padding: 0 0 1.1rem; margin: 0; color: var(--castanho-suave); }

/* ---------- Contacto e formulário ---------- */
.contacto-fundo { background: var(--marfim-escuro); border-top: 1px solid var(--linha); }
@media (min-width: 900px) {
  .contacto { display: grid; grid-template-columns: 5fr 7fr; gap: 4.5rem; align-items: start; }
}
.contacto-botoes:empty { display: none; }
.contacto-botoes { margin-bottom: 1.5rem; }
.email-direto { margin-top: 1.5rem; }
.link-email { font-weight: 600; word-break: break-word; }
.nota { color: var(--castanho-suave); }
.privacidade-linha { font-size: 1rem; color: var(--castanho-suave); }
.contacto-formulario { margin-top: 2rem; }
@media (min-width: 900px) { .contacto-formulario { margin-top: 0; } }

.formulario { max-width: 640px; }
.campo { margin: 0 0 1.5rem; padding: 0; border: 0; min-width: 0; }
.campo label, .campo legend { display: block; font-weight: 600; margin-bottom: 0.35rem; padding: 0; }
.marca { font-weight: 400; color: var(--castanho-suave); font-size: 0.9em; }
.ajuda { font-size: 1rem; color: var(--castanho-suave); margin: -0.2rem 0 0.4rem; }
.campo input[type="text"], .campo input[type="email"], .campo input[type="tel"], .campo textarea {
  width: 100%; min-height: 56px; padding: 0.7rem 0.9rem;
  font: 1.1rem/1.4 var(--letra-texto); color: var(--castanho);
  background: var(--branco); border: 1px solid var(--borda-campo); border-radius: var(--raio);
}
.campo input:focus-visible, .campo textarea:focus-visible { outline-offset: 0; }
.campo textarea { min-height: 150px; resize: vertical; }
.campo input::placeholder, .campo textarea::placeholder { color: #75614F; }
.campo [aria-invalid="true"] { border-color: var(--erro); border-width: 2px; }
/* Mensagem de erro: texto a vermelho com um traço à esquerda (não depende só da cor) */
.erro { color: var(--erro); font-weight: 600; margin: 0.4rem 0 0; padding-left: 0.7rem; border-left: 3px solid var(--erro); }
.erro-resumo, .aviso-envio {
  padding: 1rem 1.1rem; border: 1px solid var(--erro); border-left-width: 4px;
  background: #FBF0EE; color: var(--erro); font-weight: 600;
}
.opcoes-lista { display: grid; gap: 8px; }
@media (min-width: 600px) { .opcoes-lista { grid-template-columns: 1fr 1fr; } }
.campo .opcao {
  display: flex !important; align-items: center; gap: 0.7rem; min-height: 56px; margin: 0 !important;
  padding: 0.5rem 0.9rem; border: 1px solid var(--borda-campo); border-radius: var(--raio); background: var(--branco);
  font-weight: 400 !important; cursor: pointer;
}
.opcao input, .consentimento input { width: 24px; height: 24px; margin: 0; flex-shrink: 0; accent-color: var(--madeira); }
.opcao.marcada { border-color: var(--madeira); outline: 1px solid var(--madeira); outline-offset: -2px; }
.consentimento { display: grid; grid-template-columns: auto 1fr; gap: 0.4rem 0.8rem; align-items: start; }
.consentimento input { width: 28px; height: 28px; margin-top: 0.15rem; }
.consentimento label { font-weight: 400 !important; margin: 0; }
.consentimento .erro { grid-column: 1 / -1; }
.sucesso {
  max-width: 640px; padding: 1.75rem 0; border-top: 1px solid var(--linha-forte); border-bottom: 1px solid var(--linha-forte);
  font-size: 1.2rem;
}
.sucesso-titulo { font-family: var(--letra-titulos); font-size: 2.2rem; font-weight: 500; margin-bottom: 0.2em; }

/* ---------- Rodapé ---------- */
.rodape {
  border-top: 1px solid var(--linha);
  padding: 2.5rem 0 3rem; font-size: 1rem; color: var(--castanho-suave);
}
.privacidade { margin-top: 1.5rem; max-width: 46em; scroll-margin-top: 8px; }
.privacidade h2 { font-size: 1.5rem; }
@media (min-width: 900px) { .rodape { padding: 3rem 0 3.5rem; } }

/* ---------- Barra fixa no fundo (telemóvel) ---------- */
.barra-fixa { display: none; }
@media (max-width: 899px) {
  body { padding-bottom: calc(80px + env(safe-area-inset-bottom)); }
  .barra-fixa {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 50;
    display: flex; gap: 10px; padding: 10px 16px; padding-bottom: max(10px, env(safe-area-inset-bottom));
    background: var(--marfim); border-top: 1px solid var(--linha-forte);
    transition: transform 0.2s;
  }
  .barra-fixa .botao { flex: 1; min-height: 58px; font-size: 1.1rem; }
  .barra-fixa.escondida { transform: translateY(110%); }
}

/* ---------- Menos movimento, para quem o pede ---------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
}
