/* ==========================================================================
   SOOS IMO — site público da imobiliária
   Folha própria (não depende do styles.css do backoffice) para que o site
   possa ser servido num domínio próprio sem arrastar o CSS da aplicação.
   Cores, letras e cantos vêm da configuração (Site público → Estilo) e são
   injetados nas variáveis abaixo pelo site.js.
   ========================================================================== */

:root {
  --cor: #0f6a73;
  --cor-escura: #0b4f56;
  --cor-clara: #eef7f8;
  --cor-topo: #ffffff;
  --cor-topo-texto: #111827;
  --cor-topo-suave: #4b5563;
  --cor-rodape: #1f2937;
  --texto: #111827;
  --texto-suave: #6b7280;
  --borda: #e5e7eb;
  --fundo: #ffffff;
  --fundo-alt: #f8fafc;
  --raio: 14px;
  --raio-peq: 9px;
  --sombra: 0 1px 3px rgba(0,0,0,.06), 0 8px 24px rgba(0,0,0,.05);
  --fonte-texto: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  --fonte-titulos: var(--fonte-texto);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--fonte-texto);
  color: var(--texto);
  background: var(--fundo);
  line-height: 1.55;
}
h1, h2, h3, h4, .marca, .preco { font-family: var(--fonte-titulos); }
img { max-width: 100%; display: block; }
a { color: var(--cor); }

.envolve { width: 100%; max-width: 1180px; margin: 0 auto; padding: 0 20px; }

/* ---------------------------------------------------------------- topo -- */
.topo {
  position: sticky; top: 0; z-index: 50;
  background: var(--cor-topo);
  border-bottom: 1px solid rgba(0,0,0,.08);
}
.topo-inner { display: flex; align-items: center; gap: 18px; padding: 12px 20px; max-width: 1180px; margin: 0 auto; }
.marca { display: flex; align-items: center; gap: 10px; text-decoration: none; color: var(--cor-topo-texto); font-weight: 800; font-size: 1.05rem; }
.marca img { height: 40px; width: auto; }
.marca-sigla {
  width: 38px; height: 38px; border-radius: var(--raio-peq); background: var(--cor); color: #fff;
  display: flex; align-items: center; justify-content: center; font-weight: 800;
}
.topo-nav { margin-left: auto; display: flex; align-items: center; gap: 20px; }
.topo-nav a { color: var(--cor-topo-suave); text-decoration: none; font-size: .92rem; font-weight: 600; }
.topo-nav a:hover { color: var(--cor-topo-texto); }
.topo-tel {
  background: var(--cor); color: #fff !important; padding: 9px 16px; border-radius: 999px;
  font-weight: 700; white-space: nowrap;
}
.topo-menu {
  display: none; margin-left: auto; border: 0; background: none; cursor: pointer;
  width: 42px; height: 42px; padding: 9px; color: var(--cor-topo-texto);
}
.topo-menu span { display: block; height: 2px; background: currentColor; margin: 5px 0; border-radius: 2px; }

/* --------------------------------------------------------------- hero --- */
.hero { position: relative; background: var(--cor-clara); padding: 60px 0 46px; overflow: hidden; }
.hero.com-imagem { min-height: 540px; display: flex; align-items: center; background: #1f2937; }
.hero.com-imagem::after {
  content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(180deg, rgba(0,0,0,.30), rgba(0,0,0,.62));
}
.hero .envolve { position: relative; z-index: 2; }
.hero.com-imagem h1, .hero.com-imagem p { color: #fff; }
.hero h1 { font-size: clamp(1.8rem, 4.2vw, 2.9rem); margin: 0 0 10px; line-height: 1.12; }
.hero p { margin: 0; font-size: 1.08rem; color: var(--texto-suave); max-width: 660px; }
.hero.com-imagem p { color: rgba(255,255,255,.92); }

.hero-slides { position: absolute; inset: 0; z-index: 0; }
.hero-slide {
  position: absolute; inset: 0; background-size: cover; background-position: center;
  opacity: 0; transition: opacity 1.1s ease, transform 7s ease; transform: scale(1.04);
}
.hero-slide.ativo { opacity: 1; transform: scale(1); }
.hero-seta {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 3;
  width: 46px; height: 46px; border-radius: 50%; border: 0; cursor: pointer;
  background: rgba(255,255,255,.2); color: #fff; font-size: 26px; line-height: 46px;
  display: flex; align-items: center; justify-content: center;
}
.hero-seta:hover { background: rgba(255,255,255,.35); }
.hero-seta.esq { left: 14px; }
.hero-seta.dir { right: 14px; }
.hero-rodape { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin-top: 18px; min-height: 30px; }
.hero-legenda { color: #fff; font-size: .95rem; text-shadow: 0 1px 3px rgba(0,0,0,.4); }
.hero-legenda strong { font-family: var(--fonte-titulos); }
.hero-legenda a {
  color: #fff; font-weight: 700; margin-left: 10px; text-decoration: none;
  border-bottom: 2px solid var(--cor); padding-bottom: 1px;
}
.hero-pontos { display: flex; gap: 7px; }
.hero-pontos button { width: 11px; height: 11px; border-radius: 50%; border: 0; padding: 0; cursor: pointer; background: rgba(255,255,255,.45); }
.hero-pontos button.ativo { background: #fff; }
@media (prefers-reduced-motion: reduce) {
  .hero-slide { transition: none; transform: none; }
}

/* ---- modelos do slide: altura, escurecido, transição e texto de cada imagem ---- */
.hero.com-imagem.alt-baixo { min-height: 340px; }
.hero.com-imagem.alt-alto { min-height: 84vh; }
/* o escurecido por cima da fotografia vem da configuração (0 = fotografia limpa) */
.hero.com-imagem::after {
  background: linear-gradient(180deg,
    rgba(0,0,0,calc(var(--hero-escuro, .6) * .5)),
    rgba(0,0,0,var(--hero-escuro, .6)));
}
.hero.slide-limpo.com-imagem::after { display: none; }
.hero-link { position: absolute; inset: 0; z-index: 1; display: block; }

/* transições */
.hero.trans-fundir .hero-slide { transform: none; transition: opacity 1s ease; }
.hero.trans-sem .hero-slide { transform: none; transition: none; }
.hero.trans-deslizar .hero-slide {
  opacity: 1; transform: translateX(100%); transition: transform .65s cubic-bezier(.4,.1,.2,1);
}
.hero.trans-deslizar .hero-slide.ativo { transform: translateX(0); }
.hero.trans-deslizar .hero-slide.saiu { transform: translateX(-100%); }

/* cartão com o texto de cada imagem (imóvel em destaque ou imagem escolhida) */
.hero-cartao { max-width: 560px; margin: 0 0 4px; color: #fff; }
.hero-cartao h2 { font-family: var(--fonte-titulos); font-size: clamp(1.6rem, 3.6vw, 2.6rem); line-height: 1.12; margin: 0 0 10px; }
.hero-cartao p { font-size: 1.05rem; margin: 0 0 16px; color: rgba(255,255,255,.93); }
.hero-cartao .botao { margin-bottom: 4px; }
.hero-cartao.entra { animation: heroEntra .55s ease both; }
@keyframes heroEntra { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
.hero.slide-cartao .hero-cartao {
  background: rgba(17,24,39,.55); backdrop-filter: blur(3px);
  border-radius: var(--raio); padding: 24px 26px; box-shadow: 0 20px 50px rgba(0,0,0,.25);
}
/* DIVIDIDO: fotografia à direita, texto à esquerda sobre o fundo do site */
@media (min-width: 861px) {
  .hero.slide-dividido.com-imagem { background: var(--cor-clara); }
  .hero.slide-dividido.com-imagem::after { display: none; }
  .hero.slide-dividido .hero-slides { left: 47%; }
  .hero.slide-dividido .envolve { padding-right: 55%; }
  .hero.slide-dividido.com-imagem h1,
  .hero.slide-dividido .hero-cartao,
  .hero.slide-dividido .hero-cartao h2 { color: var(--texto); }
  .hero.slide-dividido.com-imagem p, .hero.slide-dividido .hero-cartao p { color: var(--texto-suave); }
  .hero.slide-dividido .hero-legenda { color: var(--texto-suave); text-shadow: none; }
  .hero.slide-dividido .hero-pontos button { background: rgba(0,0,0,.25); }
  .hero.slide-dividido .hero-pontos button.ativo { background: var(--cor); }
  .hero.slide-dividido .hero-seta { background: rgba(0,0,0,.25); }
  .hero.slide-dividido .hero-seta.esq { left: auto; right: 74px; }
}

/* ---- onde fica a caixa de procura: largura, alinhamento e faixa própria ---- */
.pesquisa.larg-media { max-width: 700px; }
.pesquisa.larg-estreita { max-width: 520px; }
.pesquisa.alin-centro { margin-left: auto; margin-right: auto; }
.pesquisa.alin-direita { margin-left: auto; margin-right: 0; }
.pesquisa-faixa { position: relative; z-index: 3; background: var(--fundo, #fff); padding-bottom: 8px; }
.pesquisa-faixa .pesquisa { margin-top: -36px; background: var(--fundo, #fff); }
.pesquisa-faixa.faixa-antes { background: var(--cor-clara); padding: 14px 0 16px; }
.pesquisa-faixa.faixa-antes .pesquisa { margin-top: 0; background: var(--fundo, #fff); }
.pesquisa-faixa.faixa-separada { padding: 22px 0 4px; }
.pesquisa-faixa.faixa-separada .pesquisa { margin-top: 0; }

/* ------------------------------------------------------------ pesquisa -- */
.pesquisa {
  background: #fff; border: 1px solid var(--borda); border-radius: var(--raio);
  box-shadow: var(--sombra); padding: 16px; margin-top: 26px; color: var(--texto);
  display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; align-items: end;
}
.campo { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.campo label { font-size: .74rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--texto-suave); }
.campo input, .campo select, .campo textarea {
  font: inherit; padding: 9px 11px; border: 1px solid var(--borda); border-radius: var(--raio-peq);
  background: #fff; color: var(--texto); width: 100%;
}
.campo input:focus, .campo select:focus, .campo textarea:focus {
  outline: none; border-color: var(--cor); box-shadow: 0 0 0 3px var(--cor-clara);
}
.botao {
  font: inherit; font-weight: 700; cursor: pointer; border: 1px solid var(--cor);
  background: var(--cor); color: #fff; padding: 10px 18px; border-radius: var(--raio-peq); text-decoration: none;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
}
.botao:hover { background: var(--cor-escura); border-color: var(--cor-escura); }
.botao.vazio { background: #fff; color: var(--cor); }
.botao.vazio:hover { background: var(--cor-clara); }

/* -------------------------------------------------------------- secção -- */
.seccao { padding: 50px 0; }
.seccao.alt { background: var(--fundo-alt); }
.seccao-cabeca { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-bottom: 22px; flex-wrap: wrap; }
.seccao h2 { font-size: 1.55rem; margin: 0; }
.suave { color: var(--texto-suave); }
.pequeno { font-size: .85rem; }

/* -------------------------------------------------------------- cartão -- */
.grelha { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 22px; }
/* carrossel dos imóveis em destaque (página inicial): horizontal, anda sozinho */
.carrossel { position: relative; }
.carrossel-pista {
  display: flex; gap: 22px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth;
  padding: 4px 2px 12px; scrollbar-width: none; -ms-overflow-style: none;
}
.carrossel-pista::-webkit-scrollbar { display: none; }
.carrossel-item { flex: 0 0 calc((100% - 44px) / 3); scroll-snap-align: start; display: flex; }
.carrossel-item > .cartao { width: 100%; }
@media (max-width: 980px) { .carrossel-item { flex-basis: calc((100% - 22px) / 2); } }
@media (max-width: 620px) { .carrossel-item { flex-basis: 85%; } }
/* setas nas extremidades, na cor do site, sempre à vista */
.carrossel-seta {
  position: absolute; top: 38%; transform: translateY(-50%); z-index: 3;
  width: 50px; height: 50px; border-radius: 50%; border: 3px solid #fff; cursor: pointer;
  background: var(--cor, #0f6a73); color: #fff; font-size: 1.25rem; font-weight: 700;
  box-shadow: 0 4px 14px rgba(0,0,0,.28);
  display: flex; align-items: center; justify-content: center; transition: transform .2s;
}
.carrossel-seta:hover { transform: translateY(-50%) scale(1.08); }
.carrossel-seta.anterior { left: -24px; }
.carrossel-seta.seguinte { right: -24px; }
.carrossel.cabe-tudo .carrossel-seta { display: none; }
@media (max-width: 620px) { .carrossel-seta { width: 36px; height: 36px; } .carrossel-seta.anterior { left: 2px; } .carrossel-seta.seguinte { right: 2px; } }
.cartao {
  background: #fff; border: 1px solid var(--borda); border-radius: var(--raio);
  overflow: hidden; text-decoration: none; color: inherit; display: flex; flex-direction: column;
  transition: transform .15s ease, box-shadow .15s ease;
}
.cartao:hover { transform: translateY(-3px); box-shadow: var(--sombra); }
.cartao-foto { position: relative; aspect-ratio: 4/3; background: #eef2f5; flex: none; }
/* fotografia absoluta: fotos ao alto (retrato) não podem esticar a caixa — todas ficam 4:3, cortadas ao centro */
.cartao-foto > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.cartao-foto .cartao-selos, .cartao-foto .cartao-comercial { z-index: 2; }
.cartao-selos { position: absolute; top: 10px; left: 10px; display: flex; gap: 6px; flex-wrap: wrap; }
.selo {
  background: rgba(17,24,39,.82); color: #fff; font-size: .7rem; font-weight: 700;
  padding: 4px 9px; border-radius: 999px; text-transform: uppercase; letter-spacing: .03em;
}
.selo.destaque { background: #f59e0b; }
.selo.reservado { background: #dc2626; }
.selo.selo-estado { box-shadow: 0 2px 8px rgba(0,0,0,.25); }
.cartao.indisponivel .cartao-foto img { filter: grayscale(.55); }
/* comercial do imóvel: fotografia pequena redonda no canto de baixo da fotografia */
.cartao-comercial {
  position: absolute; right: 12px; bottom: -22px; z-index: 2;
  width: 46px; height: 46px; border-radius: 50%; overflow: hidden;
  border: 3px solid #fff; box-shadow: 0 2px 8px rgba(0,0,0,.25);
  background: var(--cor); color: #fff; font-weight: 800; font-size: .85rem;
  display: flex; align-items: center; justify-content: center;
}
.cartao-comercial img { width: 100%; height: 100%; object-fit: cover; filter: none !important; }
.cartao.com-comercial .preco { padding-right: 52px; }
.cartao.indisponivel .preco { color: var(--texto-suave); }
/* Vendidos e arrendados ficam no site (é o que a agência quer mostrar), por isso
   têm de se ver à distância: faixa atravessada por cima da fotografia. */
.faixa-indisponivel {
  position: absolute; top: 50%; left: -20%; width: 140%;
  transform: translateY(-50%) rotate(-11deg);
  color: #fff; text-align: center; text-transform: uppercase;
  font-weight: 800; font-size: 1.05rem; letter-spacing: .12em;
  padding: 7px 0; box-shadow: 0 4px 14px rgba(0,0,0,.3); pointer-events: none;
}
@media (max-width: 480px) { .faixa-indisponivel { font-size: .9rem; } }
.cartao-corpo { padding: 14px 16px 16px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.preco { font-size: 1.25rem; font-weight: 800; color: var(--cor); }
.cartao h3 { margin: 0; font-size: 1rem; line-height: 1.35; }
.local { color: var(--texto-suave); font-size: .88rem; }
.specs {
  display: flex; gap: 14px; flex-wrap: wrap; font-size: .84rem; color: #374151;
  border-top: 1px solid var(--fundo-alt); padding-top: 10px; margin-top: auto;
}

/* ------------------------------------------------------ ficha do imóvel -- */
.ficha { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(300px, 1fr); gap: 34px; align-items: start; }
.galeria-principal { width: 100%; aspect-ratio: 16/10; object-fit: cover; border-radius: var(--raio); background: #eef2f5; }
/* ficha de um vendido/arrendado: faixa grande por cima da fotografia principal */
.galeria-moldura { position: relative; overflow: hidden; border-radius: var(--raio); }
.galeria-moldura .galeria-principal { display: block; }
/* setas e contador da galeria (ficha do imóvel e ecrã inteiro) */
.galeria-seta {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 2;
  width: 46px; height: 46px; border-radius: 50%; border: 0; cursor: pointer;
  background: rgba(255,255,255,.88); color: #111; font-size: 1.2rem; line-height: 1;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 2px 10px rgba(0,0,0,.25); transition: background .2s, transform .2s;
}
.galeria-seta:hover { background: #fff; transform: translateY(-50%) scale(1.07); }
.galeria-seta.anterior { left: 14px; }
.galeria-seta.seguinte { right: 14px; }
.galeria-contador {
  position: absolute; right: 12px; bottom: 12px; z-index: 2;
  background: rgba(0,0,0,.6); color: #fff; font-size: .8rem; font-weight: 600;
  padding: 3px 10px; border-radius: 999px;
}
@media (max-width: 600px) { .galeria-seta { width: 36px; height: 36px; font-size: 1rem; } .galeria-seta.anterior { left: 8px; } .galeria-seta.seguinte { right: 8px; } }
.galeria-ecra {
  position: fixed; inset: 0; z-index: 9999; background: rgba(0,0,0,.93);
  display: flex; align-items: center; justify-content: center;
}
.galeria-ecra img { max-width: 94vw; max-height: 90vh; object-fit: contain; border-radius: 4px; }
.galeria-ecra .galeria-contador { right: 50%; transform: translateX(50%); bottom: 18px; }
.galeria-fechar {
  position: absolute; top: 14px; right: 18px; border: 0; background: none; color: #fff;
  font-size: 2.4rem; line-height: 1; cursor: pointer; opacity: .85;
}
.galeria-fechar:hover { opacity: 1; }
@media print { .galeria-seta, .galeria-contador { display: none !important; } }
.galeria-moldura.indisponivel .galeria-principal { filter: grayscale(.45); }
.galeria-moldura .faixa-indisponivel { font-size: 1.7rem; padding: 12px 0; letter-spacing: .2em; }
@media (max-width: 480px) { .galeria-moldura .faixa-indisponivel { font-size: 1.15rem; padding: 8px 0; } }
.galeria-tiras { display: flex; gap: 8px; margin-top: 10px; overflow-x: auto; padding-bottom: 4px; }
.galeria-tiras img {
  width: 96px; height: 70px; object-fit: cover; border-radius: var(--raio-peq); cursor: pointer;
  border: 2px solid transparent; flex: 0 0 auto;
}
.galeria-tiras img.ativa { border-color: var(--cor); }
.painel { border: 1px solid var(--borda); border-radius: var(--raio); padding: 20px; position: sticky; top: 84px; }
.painel .preco { font-size: 1.75rem; }
/* ficha de um imóvel já vendido/arrendado: continua no site, mas sem enganar ninguém */
.aviso-indisponivel {
  background: #fef2f2; color: #991b1b; border: 1px solid #fecaca;
  border-radius: var(--raio-peq); padding: 10px 14px; margin-bottom: 12px;
  font-weight: 700; text-align: center;
}
.painel .aviso-indisponivel + .preco { color: var(--texto-suave); }
.tabela-specs { width: 100%; border-collapse: collapse; margin: 14px 0; }
.tabela-specs td { padding: 8px 0; border-bottom: 1px solid var(--fundo-alt); font-size: .9rem; }
.tabela-specs td:first-child { color: var(--texto-suave); }
.tabela-specs td:last-child { text-align: right; font-weight: 600; }
.etiquetas { display: flex; flex-wrap: wrap; gap: 8px; }
.etiquetas span {
  background: var(--cor-clara); color: var(--cor-escura); border-radius: 999px;
  padding: 5px 13px; font-size: .84rem; font-weight: 600;
}

/* ----------------------------------------------------- form de contacto -- */
.form-contacto { display: flex; flex-direction: column; gap: 12px; position: relative; }
.form-contacto .botao { align-self: flex-start; }
.painel .form-contacto .botao { width: 100%; }

/* ------------------------------------------------------------ mensagens -- */
.aviso { border-radius: var(--raio-peq); padding: 12px 15px; font-size: .92rem; margin-bottom: 14px; }
.aviso.ok { background: #ecfdf5; color: #065f46; border: 1px solid #a7f3d0; }
.aviso.erro { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; }
.vazio-estado {
  text-align: center; padding: 54px 20px; color: var(--texto-suave);
  border: 1px dashed var(--borda); border-radius: var(--raio);
}

/* --------------------------------------------------------------- rodapé -- */
.rodape {
  background: var(--cor-rodape); color: rgba(255,255,255,.78);
  border-top: 6px solid var(--cor); padding: 50px 0 0;
}
.rodape a { color: rgba(255,255,255,.86); text-decoration: none; }
.rodape a:hover { color: #fff; text-decoration: underline; }
.rodape h4 { color: #fff; margin: 0 0 14px; font-size: 1rem; }
.rodape-topo { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 44px; }
.rodape-colunas { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 30px; }
.rodape-lado { border-left: 1px solid rgba(255,255,255,.14); padding-left: 44px; }
.rodape ul { list-style: none; margin: 0; padding: 0; }
.rodape li { margin: 0 0 10px; font-size: .93rem; }
.rodape li::before { content: '•'; margin-right: 8px; opacity: .55; }
.rodape-bloco { margin-bottom: 26px; }
.rodape-bloco:last-child { margin-bottom: 0; }
.rodape-texto { font-size: .92rem; margin: 0 0 8px; }
.rodape-nota { font-size: .8rem; opacity: .7; margin: 6px 0 0; }
.redes { display: flex; gap: 10px; flex-wrap: wrap; }
.redes a {
  width: 40px; height: 40px; border-radius: 50%; background: rgba(255,255,255,.1);
  display: flex; align-items: center; justify-content: center;
}
.redes a:hover { background: var(--cor); text-decoration: none; }
.redes svg { width: 19px; height: 19px; fill: #fff; }
.news { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.news input {
  flex: 1 1 180px; min-width: 0; font: inherit; padding: 10px 12px;
  border: 0; border-radius: var(--raio-peq); color: var(--texto);
}
.news .botao { white-space: nowrap; }
.news-aviso { font-size: .85rem; margin-top: 8px; color: #fff; }
.rodape-fim {
  border-top: 1px solid rgba(255,255,255,.12); margin-top: 40px; padding: 18px 0 24px;
  font-size: .84rem; display: flex; justify-content: space-between; gap: 14px 24px;
  flex-wrap: wrap; align-items: center;
}
.rodape-legal { display: flex; flex-wrap: wrap; gap: 6px 20px; }
.rodape-legal a { color: rgba(255,255,255,.72); text-decoration: underline; }

/* ------------------------------------------------ secções institucionais */
.seccao-intro { color: var(--texto-suave); margin: -12px 0 24px; max-width: 720px; }
.servicos { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 20px; }
.servico { background: #fff; border: 1px solid var(--borda); border-radius: var(--raio); padding: 22px; }
.servico-icone {
  width: 50px; height: 50px; border-radius: var(--raio-peq); background: var(--cor-clara);
  display: flex; align-items: center; justify-content: center; margin-bottom: 14px;
}
.servico-icone svg { width: 26px; height: 26px; fill: var(--cor); }
.servico h3 { margin: 0 0 6px; font-size: 1.05rem; }
.servico p { margin: 0; color: var(--texto-suave); font-size: .93rem; }

.sobre-grelha { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 42px; align-items: center; }
.sobre-grelha.sem-imagem { grid-template-columns: minmax(0, 1fr); max-width: 820px; }
.sobre-grelha img { width: 100%; border-radius: var(--raio); aspect-ratio: 4/3; object-fit: cover; }
.sobre-texto h2 { margin-bottom: 14px; }
.sobre-texto p { color: var(--texto-suave); }
.mvv { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 20px; margin-top: 36px; }
.mvv > div { background: var(--fundo-alt); border-radius: var(--raio); padding: 22px; border-top: 4px solid var(--cor); }
.seccao.alt .mvv > div { background: #fff; }
.mvv h3 { margin: 0 0 8px; font-size: 1.05rem; }
.mvv p, .mvv ul { margin: 0; color: var(--texto-suave); font-size: .94rem; }
.mvv ul { padding-left: 18px; }
.numeros { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 18px; margin-top: 36px; text-align: center; }
.numero-valor { font-family: var(--fonte-titulos); font-size: 2.3rem; font-weight: 800; color: var(--cor); line-height: 1.1; }
.numero-legenda { color: var(--texto-suave); font-size: .9rem; }

.equipa { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 22px; }
.membro { background: #fff; border: 1px solid var(--borda); border-radius: var(--raio); overflow: hidden; text-align: center; }
.membro-foto {
  aspect-ratio: 1/1; background: var(--cor-clara); color: var(--cor); font-family: var(--fonte-titulos);
  display: flex; align-items: center; justify-content: center; font-size: 2.8rem; font-weight: 800;
}
.membro-foto img { width: 100%; height: 100%; object-fit: cover; }
.membro-corpo { padding: 14px 16px 18px; }
.membro h3 { margin: 0; font-size: 1rem; }
.membro-cargo { color: var(--texto-suave); font-size: .88rem; margin-bottom: 8px; }
.membro a { display: block; font-size: .88rem; text-decoration: none; overflow-wrap: anywhere; }

.testemunhos { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 20px; }
.testemunho { background: #fff; border: 1px solid var(--borda); border-radius: var(--raio); padding: 22px; }
.estrelas { display: flex; gap: 2px; margin-bottom: 10px; }
.estrelas svg { width: 18px; height: 18px; fill: #f59e0b; }
.estrelas svg.vazia { fill: #e5e7eb; }
.testemunho p { margin: 0 0 12px; font-style: italic; }
.testemunho strong { font-size: .92rem; }

.parceiros { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 26px 46px; }
.parceiros img { max-height: 58px; max-width: 170px; width: auto; filter: grayscale(1); opacity: .75; transition: filter .2s, opacity .2s; }
.parceiros a:hover img, .parceiros img:hover { filter: none; opacity: 1; }
.parceiro-nome { font-weight: 700; color: var(--texto-suave); }

.faq { max-width: 820px; }
.faq details { border-bottom: 1px solid var(--borda); padding: 15px 0; }
.faq summary { cursor: pointer; font-weight: 700; list-style: none; display: flex; justify-content: space-between; gap: 12px; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: '+'; color: var(--cor); font-size: 1.35rem; line-height: 1; }
.faq details[open] summary::after { content: '\2212'; }
.faq details p { margin: 10px 0 0; color: var(--texto-suave); }

.mapa-escritorio { width: 100%; height: 320px; border: 1px solid var(--borda); border-radius: var(--raio); margin-top: 26px; }
.whatsapp-flutuante {
  position: fixed; right: 18px; bottom: 18px; z-index: 60; width: 58px; height: 58px; border-radius: 50%;
  background: #25d366; display: flex; align-items: center; justify-content: center;
  box-shadow: 0 6px 18px rgba(0,0,0,.25);
}
.whatsapp-flutuante svg { width: 30px; height: 30px; fill: #fff; }
.rodape-logo { max-height: 50px; width: auto; margin-bottom: 12px; }

/* textos centrados nas secções institucionais e no contacto
   (FAQ e formulário ficam num bloco centrado, mas alinhados à esquerda para se lerem bem) */
#seccoesInstitucionais .seccao-cabeca,
#contacto .seccao-cabeca { justify-content: center; text-align: center; }
#seccoesInstitucionais .seccao-intro,
#textoAngariacao { text-align: center; margin-left: auto; margin-right: auto; }
.sobre-grelha.sem-imagem { margin: 0 auto; text-align: center; }
.mvv > div { text-align: center; }
.mvv ul { list-style: none; padding-left: 0; }
.numeros { text-align: center; }
.servico, .testemunho { text-align: center; }
.servico-icone { margin: 0 auto 14px; }
.estrelas { justify-content: center; }
.faq { margin: 0 auto; }
.faq details { text-align: left; }
@media (max-width: 860px) {
  .sobre-grelha { grid-template-columns: 1fr; gap: 24px; }
}

/* --------------------------------------------------- janela (textos legais) */
.janela {
  position: fixed; inset: 0; z-index: 100; background: rgba(15,23,42,.62);
  display: flex; align-items: center; justify-content: center; padding: 20px;
}
.janela[hidden] { display: none; }
.janela-caixa {
  background: #fff; color: var(--texto); border-radius: var(--raio); width: 100%; max-width: 760px;
  max-height: 86vh; overflow: auto; padding: 28px 30px; position: relative; line-height: 1.65;
}
.janela-caixa h2 { margin-top: 0; }
.janela-fecha {
  position: absolute; top: 10px; right: 12px; border: 0; background: none;
  font-size: 28px; line-height: 1; cursor: pointer; color: var(--texto-suave);
}

@media (max-width: 860px) {
  .ficha { grid-template-columns: 1fr; }
  .painel { position: static; }
  .topo-menu { display: block; }
  .topo-nav {
    display: none; position: absolute; top: 100%; left: 0; right: 0; margin: 0;
    background: var(--cor-topo); flex-direction: column; align-items: stretch; gap: 0;
    padding: 8px 20px 16px; border-bottom: 1px solid rgba(0,0,0,.08); box-shadow: var(--sombra);
  }
  .topo.aberto .topo-nav { display: flex; }
  .topo-nav a { padding: 11px 0; border-bottom: 1px solid rgba(0,0,0,.06); }
  .topo-nav a.topo-tel { margin-top: 10px; text-align: center; border-bottom: 0; }
  .hero.com-imagem { min-height: 0; padding: 70px 0 40px; }
  .hero-seta { display: none; }
  .rodape-topo { grid-template-columns: 1fr; gap: 30px; }
  .rodape-lado { border-left: 0; padding-left: 0; border-top: 1px solid rgba(255,255,255,.14); padding-top: 28px; }
}
/* ------------------------------------------ ícones das características --- */
.specs { align-items: center; gap: 8px 14px; }
.spec { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.spec svg {
  width: 22px; height: 22px; flex: none; fill: none;
  stroke: var(--texto-suave); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round;
}
.spec svg text { fill: var(--texto-suave); stroke: none; font: 700 6.5px Arial, sans-serif; }
.spec svg text.letra { font-size: 9.5px; }
.spec b { font-weight: 600; color: var(--texto); font-size: .92rem; }
.specs-ficha { border-top: 0; margin: 10px 0 4px; padding-top: 0; gap: 10px 18px; }
.visualmente-oculto {
  position: absolute !important; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap;
}

/* ------------------------------------------------ vídeo e mapas --------- */
.hero.com-video { min-height: 560px; display: flex; align-items: center; }
.hero-video { background-size: cover; background-position: center; overflow: hidden; }
.hero-video iframe {
  position: absolute; top: 50%; left: 50%; border: 0; pointer-events: none;
  width: 100vw; height: 56.25vw; min-height: 100%; min-width: 177.78vh;
  transform: translate(-50%, -50%);
}
.hero-video video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.vistas { display: flex; gap: 6px; }
.vistas .botao { padding: 6px 16px; font-size: .88rem; }
.vistas .botao.ativo { background: var(--cor); color: #fff; }
.mapa-imoveis { margin-top: 4px; }
.mapa-imoveis-caixa { height: 540px; border-radius: var(--raio); overflow: hidden; border: 1px solid var(--borda); z-index: 0; }
.mapa-popup { display: block; width: 200px; text-decoration: none; color: var(--texto); }
.mapa-popup img { width: 100%; height: 112px; object-fit: cover; border-radius: 6px; margin-bottom: 6px; }
.mapa-popup strong { display: block; color: var(--cor); font-size: 1rem; }
.mapa-popup span { font-size: .85rem; }
.mapa-imovel { width: 100%; height: 340px; border: 1px solid var(--borda); border-radius: var(--raio); }
@media (max-width: 860px) {
  .hero.com-video { min-height: 0; }
  .mapa-imoveis-caixa { height: 420px; }
}

/* ------------------------------------------ pesquisa: estilos e filtros --- */
.pesquisa { display: block; text-align: left; }
.pesquisa .campo label { text-align: left; }
.pesquisa-linha { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; }
.pesquisa-linha > .campo { flex: 1 1 125px; }
.pesquisa-linha > .campo-largo { flex: 2 1 190px; }
.pesquisa-linha > .campo-acoes { flex: 0 0 auto; }
.pesquisa .campo input:not([type=checkbox]), .pesquisa .campo select { height: 44px; }
.pesquisa-acoes { display: flex; gap: 8px; }
.pesquisa-acoes .botao { white-space: nowrap; height: 44px; }
.pesquisa .botao svg {
  width: 18px; height: 18px; flex: none; fill: none; stroke: currentColor;
  stroke-width: 2; stroke-linecap: round; stroke-linejoin: round;
}
.pesquisa-mais { margin-top: 14px; padding-top: 14px; border-top: 1px dashed var(--borda); }
.pesquisa-mais-grelha { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; align-items: end; }
.campo-caixa { justify-content: flex-end; }
.campo .campo-check {
  display: flex; align-items: center; gap: 8px; min-height: 44px;
  text-transform: none; letter-spacing: 0; font-size: .9rem; font-weight: 500; color: var(--texto); cursor: pointer;
}
.campo-check input, .pesquisa-chips input { width: auto; accent-color: var(--cor); }
.pesquisa-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }
.pesquisa-chips label {
  display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--borda); border-radius: 999px;
  padding: 5px 12px; font-size: .85rem; cursor: pointer; background: #fff; color: var(--texto);
}
.pesquisa-limpar { margin-top: 10px; text-align: right; }
.pesquisa-limpar button {
  font: inherit; font-size: .85rem; border: 0; background: none; padding: 0; cursor: pointer;
  color: var(--texto-suave); text-decoration: underline;
}
.pesquisa-limpar button:hover { color: var(--cor); }
.pesquisa-separadores { display: flex; gap: 4px; margin-bottom: 12px; flex-wrap: wrap; }
.pesquisa-separadores button {
  font: inherit; font-weight: 700; border: 0; cursor: pointer; background: var(--fundo-alt);
  color: var(--texto-suave); padding: 9px 18px; border-radius: var(--raio-peq);
}
.pesquisa-separadores button.ativo { background: var(--cor); color: #fff; }
.lista-ferramentas { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.ordem-lista select {
  font: inherit; font-size: .88rem; padding: 6px 10px; border: 1px solid var(--borda);
  border-radius: var(--raio-peq); background: #fff; color: var(--texto);
}
#imoveis, #lista { scroll-margin-top: 90px; }

/* caixa de pesquisa transparente (Estilo → Transparência da caixa de pesquisa) */
.pesquisa.pesquisa-transparente {
  background: rgba(255, 255, 255, var(--pesquisa-alfa, 1));
  border-color: rgba(255, 255, 255, .35);
  box-shadow: 0 10px 30px rgba(0, 0, 0, .14);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
}
.pesquisa.pesquisa-transparente.sem-desfoque { -webkit-backdrop-filter: none; backdrop-filter: none; }
/* por cima de fotografia/vídeo e muito transparente: rótulos claros para se lerem */
.hero.com-imagem .pesquisa-texto-claro .campo label, .hero.com-video .pesquisa-texto-claro .campo label,
.hero.com-imagem .pesquisa-texto-claro .campo-check, .hero.com-video .pesquisa-texto-claro .campo-check,
.hero.com-imagem .pesquisa-texto-claro .pesquisa-limpar button, .hero.com-video .pesquisa-texto-claro .pesquisa-limpar button {
  color: #fff; text-shadow: 0 1px 3px rgba(0, 0, 0, .5);
}
.pesquisa-transparente.estilo-barra .pesquisa-linha .campo input,
.pesquisa-transparente.estilo-barra .pesquisa-linha .campo select { background: rgba(255, 255, 255, .92); }

/* BARRA — uma linha fina, sem rótulos, campos separados por linhas */
.pesquisa.estilo-barra { padding: 8px; border-radius: calc(var(--raio) + 4px); }
.estilo-barra .pesquisa-linha { gap: 0; align-items: center; flex-wrap: nowrap; }
.estilo-barra .pesquisa-linha > .campo { flex: 1 1 160px; }
.estilo-barra .pesquisa-linha > .campo-largo { flex: 3 1 260px; }
.estilo-barra .pesquisa-linha > .campo:not(.campo-acoes) + .campo:not(.campo-acoes) { border-left: 1px solid var(--borda); }
.estilo-barra .pesquisa-linha .campo input, .estilo-barra .pesquisa-linha .campo select { border-color: transparent; background: transparent; }
.estilo-barra .campo-acoes { padding-left: 8px; }

/* RÁPIDA — caixa grande e botões por tipo de imóvel */
.pesquisa.estilo-rapida { padding: 12px; }
.estilo-rapida .pesquisa-linha .campo input, .estilo-rapida .pesquisa-linha .botao { height: 54px; font-size: 1.02rem; }
.estilo-rapida .pesquisa-linha .botao-pesquisar { padding: 0 26px; }
.pesquisa-atalhos { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.pesquisa-atalhos button {
  font: inherit; font-size: .88rem; font-weight: 600; cursor: pointer; padding: 7px 15px; border-radius: 999px;
  border: 1px solid var(--borda); background: #fff; color: var(--texto);
}
.pesquisa-atalhos button:hover { border-color: var(--cor); color: var(--cor); }
.pesquisa-atalhos button.ativo { background: var(--cor); border-color: var(--cor); color: #fff; }

/* LATERAL — filtros numa coluna ao lado dos imóveis */
.com-lateral { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 28px; align-items: start; }
.pesquisa-lateral { position: sticky; top: 90px; }
.pesquisa-lateral .pesquisa { margin-top: 0; }
.estilo-lateral .pesquisa-linha { flex-direction: column; align-items: stretch; flex-wrap: nowrap; }
.estilo-lateral .pesquisa-linha > .campo { flex: none; }
.estilo-lateral .pesquisa-acoes { flex-direction: column; }
.estilo-lateral .pesquisa-mais-grelha { grid-template-columns: 1fr; }
.lateral-resultados .grelha { grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); }
html.modelo-elegante .hero-botoes { justify-content: center; }

@media (max-width: 860px) {
  .pesquisa-linha > .campo { flex: 1 1 calc(50% - 6px); }
  .pesquisa-linha > .campo-largo, .pesquisa-linha > .campo-acoes { flex-basis: 100%; }
  .pesquisa-acoes .botao { flex: 1; }
  .estilo-barra .pesquisa-linha { flex-wrap: wrap; gap: 8px; }
  .estilo-barra .pesquisa-linha > .campo + .campo { border-left: 0 !important; }
  .estilo-barra .pesquisa-linha .campo input, .estilo-barra .pesquisa-linha .campo select { border-color: var(--borda); }
  .estilo-barra .campo-acoes { padding-left: 0; }
  .com-lateral { grid-template-columns: 1fr; }
  .pesquisa-lateral { position: static; }
}

/* ------------------------------------------------------- landing page --- */
.hero-landing { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(300px, 420px); gap: 44px; align-items: center; }
.hero-botoes { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 26px; }
.hero.com-imagem .hero-botoes .botao.vazio { background: transparent; color: #fff; border-color: #fff; }
.hero.com-imagem .hero-botoes .botao.vazio:hover { background: rgba(255,255,255,.14); }
.hero-formulario {
  background: #fff; color: var(--texto); border-radius: var(--raio); padding: 24px;
  box-shadow: 0 22px 55px rgba(0,0,0,.22); text-align: left;
}
.hero-formulario h3 { margin: 0 0 6px; font-size: 1.2rem; color: var(--texto); }
.hero .hero-formulario p, .hero.com-imagem .hero-formulario p { color: var(--texto-suave); font-size: .9rem; margin: 0 0 12px; max-width: none; }
.hero-formulario .form-contacto { gap: 10px; }
.hero-formulario .form-contacto .botao { width: 100%; }
.hero-formulario textarea { min-height: 70px; }
@media (max-width: 860px) {
  .hero-landing { grid-template-columns: 1fr; gap: 26px; }
}

/* ------------------------------------------------ páginas interiores ---- */
.pagina-topo { background: var(--cor-clara); padding: 48px 0 36px; }
.pagina-topo.com-imagem { position: relative; background-size: cover; background-position: center; }
.pagina-topo.com-imagem::after { content: ''; position: absolute; inset: 0; background: rgba(0,0,0,.52); }
.pagina-topo .envolve { position: relative; z-index: 1; }
.pagina-topo h1 { margin: 0 0 6px; font-size: clamp(1.7rem, 3.8vw, 2.5rem); line-height: 1.15; }
.pagina-topo.com-imagem h1 { color: #fff; }
.migalhas { font-size: .86rem; color: var(--texto-suave); }
.migalhas a { color: inherit; text-decoration: none; }
.migalhas a:hover { text-decoration: underline; }
.pagina-topo.com-imagem .migalhas { color: rgba(255,255,255,.85); }
.topo-nav a.ativo { color: var(--cor-topo-texto); box-shadow: inset 0 -2px 0 var(--cor); padding-bottom: 3px; }
.ver-todos { text-align: center; margin-top: 28px; }
.faixa-cta { background: var(--cor); color: #fff; padding: 50px 0; text-align: center; }
.faixa-cta h2 { color: #fff; margin: 0 0 8px; font-size: 1.6rem; }
.faixa-cta p { margin: 0 auto 20px; max-width: 640px; opacity: .92; }
.faixa-cta .botao { background: #fff; color: var(--cor); border-color: #fff; }
.faixa-cta .botao:hover { background: rgba(255,255,255,.88); }
.sobre-resumo { max-width: 820px; margin: 0 auto; text-align: center; }
.sobre-resumo p { color: var(--texto-suave); }
.contactos-cartoes { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 16px; margin-bottom: 34px; }
.contacto-cartao { background: #fff; border: 1px solid var(--borda); border-radius: var(--raio); padding: 20px; text-align: center; }
.contacto-cartao h3 { margin: 0 0 6px; font-size: .95rem; }
.contacto-cartao p { margin: 0; color: var(--texto-suave); font-size: .93rem; overflow-wrap: anywhere; }
.contacto-grelha { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 36px; align-items: start; }
.contacto-grelha .mapa-escritorio { margin-top: 0; height: 100%; min-height: 360px; }
.membro { cursor: pointer; transition: transform .15s ease, box-shadow .15s ease; }
.membro:hover { transform: translateY(-3px); box-shadow: var(--sombra); }
.membro-ver { font-size: .8rem; color: var(--cor); font-weight: 700; margin-top: 8px; }
.membro-icones { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; margin: 10px 0 2px; }
.membro-icones a {
  width: 34px; height: 34px; border-radius: 50%; background: var(--cor-clara);
  display: flex; align-items: center; justify-content: center; transition: background .15s;
}
.membro-icones svg { width: 17px; height: 17px; fill: var(--cor); }
.membro-icones a:hover { background: var(--cor); }
.membro-icones a:hover svg { fill: #fff; }
.botao.botao-whatsapp { background: #25d366; border-color: #25d366; color: #fff; }
.botao.botao-whatsapp:hover { background: #1da851; border-color: #1da851; }
.janela .redes-membro { justify-content: center; margin-top: 14px; }
.janela .redes-membro a { background: var(--cor-clara); }
.janela .redes-membro svg { fill: var(--cor); }
.janela .redes-membro a:hover { background: var(--cor); }
.janela .redes-membro a:hover svg { fill: #fff; }
.janela-membro { text-align: center; }
.janela-membro img { width: 170px; height: 170px; border-radius: 50%; object-fit: cover; margin: 0 auto 14px; }
.janela-membro .membro-cargo { margin-bottom: 14px; }
.janela-membro .bio { text-align: left; color: var(--texto); }
.janela-membro .contactos-membro { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; margin-top: 16px; }
@media (max-width: 860px) {
  .contacto-grelha { grid-template-columns: 1fr; }
  .contacto-grelha .mapa-escritorio { min-height: 280px; }
}

/* --------------------------------------------- cabeçalho: estilos ------- */
.topo.nao-fixo { position: relative; }
.topo-barra { background: var(--cor-rodape); color: rgba(255,255,255,.86); font-size: .82rem; }
.topo-barra-inner {
  max-width: 1180px; margin: 0 auto; padding: 6px 20px;
  display: flex; justify-content: space-between; align-items: center; gap: 6px 20px; flex-wrap: wrap;
}
.topo-barra a { color: rgba(255,255,255,.92); text-decoration: none; }
.topo-barra a:hover { color: #fff; text-decoration: underline; }
.topo-barra .sep { margin: 0 10px; opacity: .5; }
.topo-barra .redes { gap: 4px; }
.topo-barra .redes a { width: 28px; height: 28px; background: transparent; }
.topo-barra .redes a:hover { background: rgba(255,255,255,.12); }
.topo-barra .redes svg { width: 15px; height: 15px; }
.topo.estilo-centrado .topo-inner { flex-direction: column; gap: 8px; padding-top: 16px; padding-bottom: 10px; }
.topo.estilo-centrado .topo-nav { margin-left: 0; flex-wrap: wrap; justify-content: center; }
.topo.estilo-centrado .marca img { height: 54px; }

/* ----------------------------------------------- rodapé: estilos -------- */
.rodape-linha { display: flex; justify-content: space-between; align-items: center; gap: 22px 40px; flex-wrap: wrap; }
.rodape-links { display: flex; flex-wrap: wrap; gap: 8px 22px; }
.rodape-links a { font-size: .93rem; }
.rodape-contactos { margin: 22px 0 0; font-size: .9rem; }
.rodape-contactos .sep { margin: 0 10px; opacity: .5; }
.rodape-simples { padding-top: 34px; }
.rodape-simples .rodape-texto { margin: 6px 0 0; max-width: 360px; }
.rodape-simples h4 { margin: 0; }
.rodape-simples .rodape-fim { margin-top: 24px; }
.rodape-centrado { text-align: center; }
.rodape-centrado .rodape-logo { margin: 0 auto 12px; }
.rodape-centrado .rodape-links, .rodape-centrado .redes { justify-content: center; }
.rodape-centrado .rodape-links { margin: 18px 0; }
.rodape-centrado .redes { margin-bottom: 6px; }
.rodape-centrado .rodape-news { max-width: 460px; margin: 26px auto 0; }
.rodape-centrado .rodape-fim { justify-content: center; text-align: center; flex-direction: column; }
.rodape-centrado .rodape-legal { justify-content: center; }
@media (max-width: 860px) {
  .topo.estilo-centrado .topo-inner { flex-direction: row; padding-top: 12px; }
  .topo.estilo-centrado .marca img { height: 40px; }
  .topo-barra-horario, .topo-barra .redes { display: none; }
  .rodape-linha { flex-direction: column; align-items: flex-start; }
}

/* cabeçalho DIVIDIDO — logótipo ao centro entre as ligações */
.topo .marca-meio { display: none; }
@media (min-width: 861px) {
  .topo.estilo-dividido .marca-lado { display: none; }
  .topo.estilo-dividido .topo-nav { margin: 0 auto; gap: 26px; }
  .topo.estilo-dividido .marca-meio { display: flex; margin: 0 18px; }
  .topo.estilo-dividido .marca-meio img { height: 50px; }
}

/* cabeçalho ESCONDIDO — botão ☰ em qualquer ecrã; o menu abre em ecrã inteiro */
.topo.estilo-escondido .topo-menu { display: block; position: relative; z-index: 61; }
.topo.estilo-escondido .topo-nav {
  display: none; position: fixed; inset: 0; z-index: 60; margin: 0; padding: 80px 20px 40px;
  background: var(--cor-topo); flex-direction: column; align-items: center; justify-content: center; gap: 8px;
  border: 0; box-shadow: none; overflow: auto;
}
.topo.estilo-escondido.aberto .topo-nav { display: flex; }
.topo.estilo-escondido .topo-nav a { font-size: clamp(1.25rem, 3vw, 1.7rem); padding: 10px 0; border-bottom: 0; font-family: var(--fonte-titulos); }
.topo.estilo-escondido .topo-nav a.topo-tel { font-size: 1rem; margin-top: 18px; padding: 11px 22px; font-family: var(--fonte-texto); }
.topo-menu span { transition: transform .2s ease, opacity .2s ease; }
.topo.aberto .topo-menu span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.topo.aberto .topo-menu span:nth-child(2) { opacity: 0; }
.topo.aberto .topo-menu span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
body.topo-transparente .topo.aberto .topo-menu { color: var(--cor-topo-texto); }

/* botão de destaque do cabeçalho com WhatsApp */
.topo-tel.topo-whatsapp { background: #25d366; display: inline-flex; align-items: center; gap: 7px; }
.topo-tel.topo-whatsapp svg { width: 17px; height: 17px; fill: #fff; }

/* ligações do menu */
.topo.menu-sublinhado .topo-nav a:not(.topo-tel):not(.marca) { position: relative; }
.topo.menu-sublinhado .topo-nav a:not(.topo-tel):not(.marca)::after {
  content: ''; position: absolute; left: 0; right: 0; bottom: -5px; height: 2px; background: var(--cor);
  transform: scaleX(0); transition: transform .2s ease;
}
.topo.menu-sublinhado .topo-nav a:hover::after, .topo.menu-sublinhado .topo-nav a.ativo::after { transform: scaleX(1); }
.topo.menu-sublinhado .topo-nav a.ativo,
.topo.menu-pilulas .topo-nav a.ativo { box-shadow: none; padding-bottom: 0; }
.topo.menu-pilulas .topo-nav { gap: 4px; }
.topo.menu-pilulas .topo-nav a:not(.topo-tel):not(.marca) { padding: 8px 14px; border-radius: 999px; }
.topo.menu-pilulas .topo-nav a:not(.topo-tel):not(.marca):hover { background: var(--cor-clara); color: var(--cor); }
.topo.menu-pilulas .topo-nav a.ativo:not(.topo-tel) { background: var(--cor); color: #fff; }
.topo.menu-maiusculas .topo-nav a:not(.topo-tel):not(.marca) { text-transform: uppercase; letter-spacing: .12em; font-size: .76rem; }
@media (max-width: 860px) {
  .topo.menu-pilulas .topo-nav a:not(.topo-tel):not(.marca) { border-radius: var(--raio-peq); }
  .topo.menu-sublinhado .topo-nav a:not(.topo-tel):not(.marca)::after { bottom: 6px; right: auto; width: 40px; }
}
/* ligações do menu: caixas, separadas e grandes */
.topo.menu-caixas .topo-nav { gap: 8px; }
.topo.menu-caixas .topo-nav a:not(.topo-tel):not(.marca) { padding: 7px 13px; border: 1px solid var(--borda); border-radius: var(--raio-peq); }
.topo.menu-caixas .topo-nav a.ativo:not(.topo-tel) { border-color: var(--cor); color: var(--cor); box-shadow: none; padding-bottom: 7px; }
.topo.menu-separado .topo-nav { gap: 0; }
.topo.menu-separado .topo-nav a:not(.topo-tel):not(.marca) { padding: 2px 16px; border-left: 1px solid var(--borda); }
.topo.menu-separado .topo-nav a:not(.topo-tel):not(.marca):first-child { border-left: 0; padding-left: 0; }
.topo.menu-separado .topo-nav a.topo-tel { margin-left: 14px; }
.topo.menu-grande .topo-nav a:not(.topo-tel):not(.marca) { font-family: var(--fonte-titulos); font-size: 1.02rem; font-weight: 700; }

/* --- extras do cabeçalho: faixa de aviso, procura e barra de tipos ------- */
.topo-aviso { background: var(--cor); color: #fff; font-size: .84rem; }
.topo-aviso-inner { max-width: 1180px; margin: 0 auto; padding: 7px 20px; text-align: center; font-weight: 600; }
.topo-pesquisa {
  display: flex; align-items: center; flex: 0 1 300px; margin-left: 24px;
  background: var(--fundo-alt, #f8fafc); border: 1px solid var(--borda); border-radius: 999px; padding: 3px 3px 3px 14px;
}
.topo-pesquisa input {
  flex: 1 1 auto; min-width: 0; border: 0; background: none; outline: none;
  font: inherit; font-size: .9rem; color: var(--texto); padding: 6px 0;
}
.topo-pesquisa button {
  flex: none; width: 32px; height: 32px; border: 0; border-radius: 50%; cursor: pointer;
  background: var(--cor); color: #fff; display: inline-flex; align-items: center; justify-content: center;
}
.topo-pesquisa button svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.topo-cats { border-top: 1px solid rgba(0,0,0,.07); background: var(--cor-topo); }
.topo-cats-inner {
  max-width: 1180px; margin: 0 auto; padding: 8px 20px; display: flex; align-items: center; gap: 22px;
  overflow-x: auto; -webkit-overflow-scrolling: touch;
}
.topo-cats a { color: var(--cor-topo-suave); text-decoration: none; font-size: .86rem; font-weight: 600; white-space: nowrap; }
.topo-cats a:hover { color: var(--cor); }

/* --- cabeçalho "Procura": logótipo, procura larga e menu por baixo ------- */
@media (min-width: 861px) {
  .topo.estilo-pesquisa .topo-inner { flex-wrap: wrap; row-gap: 4px; }
  .topo.estilo-pesquisa .topo-pesquisa { flex: 1 1 320px; max-width: 560px; margin: 0 6px 0 30px; }
  .topo.estilo-pesquisa .topo-nav {
    order: 5; flex: 1 0 100%; margin-left: 0; justify-content: center; gap: 26px;
    border-top: 1px solid rgba(0,0,0,.07); padding: 7px 0 2px;
  }
  .topo.estilo-pesquisa.com-cats .topo-nav { border-top: 0; padding-top: 0; }
}

/* --- cabeçalho "Compacto" ------------------------------------------------ */
.topo.estilo-compacto .topo-inner { padding: 4px 20px; gap: 14px; }
.topo.estilo-compacto .marca { font-size: .95rem; }
.topo.estilo-compacto .marca img { height: 30px; }
.topo.estilo-compacto .marca-sigla { width: 30px; height: 30px; }
.topo.estilo-compacto .topo-nav { gap: 16px; }
.topo.estilo-compacto .topo-nav a { font-size: .84rem; }
.topo.estilo-compacto .topo-tel { padding: 6px 13px; font-size: .84rem; }

/* --- cabeçalho "Cor da agência" ------------------------------------------ */
.topo.estilo-destaque {
  --cor-topo: var(--cor); --cor-topo-texto: #fff; --cor-topo-suave: rgba(255,255,255,.82);
  background: var(--cor); border-bottom-color: transparent;
}
.topo.estilo-destaque .marca-sigla { background: #fff; color: var(--cor); }
.topo.estilo-destaque .topo-nav a.ativo { box-shadow: inset 0 -2px 0 #fff; }
.topo.estilo-destaque .topo-tel { background: #fff; color: var(--cor) !important; }
.topo.estilo-destaque.menu-pilulas .topo-nav a.ativo:not(.topo-tel) { background: rgba(255,255,255,.22); color: #fff; }
.topo.estilo-destaque.menu-pilulas .topo-nav a:not(.topo-tel):not(.marca):hover { background: rgba(255,255,255,.16); color: #fff; }
.topo.estilo-destaque.menu-caixas .topo-nav a:not(.topo-tel):not(.marca) { border-color: rgba(255,255,255,.4); }
.topo.estilo-destaque.menu-separado .topo-nav a:not(.topo-tel):not(.marca) { border-left-color: rgba(255,255,255,.3); }
.topo.estilo-destaque .topo-pesquisa { background: rgba(255,255,255,.16); border-color: rgba(255,255,255,.34); }
.topo.estilo-destaque .topo-pesquisa input { color: #fff; }
.topo.estilo-destaque .topo-pesquisa input::placeholder { color: rgba(255,255,255,.72); }
.topo.estilo-destaque .topo-pesquisa button { background: #fff; color: var(--cor); }
.topo.estilo-destaque .topo-cats { background: rgba(0,0,0,.14); border-top-color: rgba(255,255,255,.18); }
.topo.estilo-destaque .topo-cats a { color: rgba(255,255,255,.9); }
.topo.estilo-destaque .topo-cats a:hover { color: #fff; }
.topo.estilo-destaque .topo-aviso { background: rgba(0,0,0,.2); }

/* --- cabeçalho "Empilhado": contactos, logótipo grande e menu ------------ */
@media (min-width: 861px) {
  .topo.estilo-empilhado .topo-inner { position: relative; flex-wrap: wrap; justify-content: center; padding: 16px 20px 0; }
  .topo.estilo-empilhado .marca { flex: 1 0 100%; justify-content: center; }
  .topo.estilo-empilhado .marca img { height: 58px; }
  .topo.estilo-empilhado .topo-nav {
    flex: 1 0 100%; margin: 12px 0 0; justify-content: center;
    border-top: 1px solid rgba(0,0,0,.07); padding: 9px 0;
  }
  .topo.estilo-empilhado .topo-pesquisa { position: absolute; left: 20px; top: 16px; flex: 0 1 230px; margin: 0; }
}

/* --- cabeçalho "Lateral": coluna fixa à esquerda em ecrãs largos --------- */
@media (min-width: 1100px) {
  body.topo-lateral { padding-left: 252px; }
  body.topo-lateral .topo.estilo-lateral {
    position: fixed; top: 0; left: 0; bottom: 0; width: 252px; display: flex; flex-direction: column;
    overflow-y: auto; border-bottom: 0; border-right: 1px solid rgba(0,0,0,.08);
  }
  .topo.estilo-lateral .topo-inner {
    flex: 1 1 auto; width: 100%; max-width: none; flex-direction: column; align-items: flex-start;
    gap: 12px; padding: 26px 22px 22px;
  }
  .topo.estilo-lateral .marca { flex: none; }
  .topo.estilo-lateral .marca img { height: 54px; }
  .topo.estilo-lateral .topo-pesquisa { width: 100%; flex: none; margin: 4px 0 0; }
  .topo.estilo-lateral .topo-nav { flex-direction: column; align-items: flex-start; gap: 12px; margin: 8px 0 0; width: 100%; }
  .topo.estilo-lateral .topo-tel { text-align: center; }
  .topo.estilo-lateral .topo-cats { border-top: 0; }
  .topo.estilo-lateral .topo-cats-inner { flex-direction: column; align-items: flex-start; gap: 10px; overflow: visible; padding: 0 22px 22px; }
  .topo.estilo-lateral .topo-aviso-inner { padding: 10px 18px; font-size: .78rem; }
}

/* --- cabeçalho "Gaveta": ☰ abre um painel que desliza da direita --------- */
.topo.estilo-gaveta .topo-menu { display: block; position: relative; z-index: 61; }
.topo.estilo-gaveta .topo-nav {
  display: flex; position: fixed; top: 0; right: 0; bottom: 0; z-index: 62; width: 320px; max-width: 86vw;
  margin: 0; padding: 84px 26px 30px; background: var(--cor-topo);
  flex-direction: column; align-items: stretch; gap: 0; overflow-y: auto; border: 0;
  transform: translateX(105%); transition: transform .25s ease; box-shadow: -12px 0 34px rgba(0,0,0,.18);
}
.topo.estilo-gaveta.aberto .topo-nav { transform: none; }
.topo.estilo-gaveta .topo-nav a { padding: 12px 0; border-bottom: 1px solid rgba(0,0,0,.07); font-size: 1rem; }
.topo.estilo-gaveta .topo-nav a.topo-tel { margin-top: 16px; text-align: center; border-bottom: 0; }
.topo.estilo-gaveta.aberto::after { content: ''; position: fixed; inset: 0; z-index: 60; background: rgba(15,23,42,.45); }

@media (max-width: 860px) {
  /* a procura passa para uma linha própria, por baixo do logótipo */
  .topo-inner { flex-wrap: wrap; }
  .topo-pesquisa { order: 9; flex: 1 0 100%; margin: 8px 0 2px; }
  .topo-cats-inner { gap: 16px; padding: 7px 20px; }
  .topo.menu-caixas .topo-nav a:not(.topo-tel):not(.marca),
  .topo.menu-separado .topo-nav a:not(.topo-tel):not(.marca) {
    border: 0; border-bottom: 1px solid rgba(0,0,0,.06); border-radius: 0; padding: 11px 0;
  }
}

/* ------------------------------------------------- aviso de cookies ----- */
.cookies-barra {
  position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 60;
  background: var(--fundo, #fff); color: var(--texto); border: 1px solid var(--borda);
  border-radius: var(--raio); box-shadow: 0 18px 40px rgba(15,23,42,.22);
  padding: 14px 16px; display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  max-width: 980px; margin: 0 auto;
}
.cookies-barra p { margin: 0; flex: 1 1 320px; font-size: .9rem; line-height: 1.45; }
.cookies-barra a { color: var(--cor); }
.cookies-barra .botao { flex: none; }
@media (max-width: 600px) {
  .cookies-barra { left: 8px; right: 8px; bottom: 8px; padding: 12px; }
  .cookies-barra .botao { width: 100%; }
}
@media print { .cookies-barra { display: none !important; } }

/* rodapé FAIXA — faixa de contacto grande por cima das colunas */
.rodape.rodape-com-faixa { padding-top: 0; border-top: 0; }
.rodape-faixa { background: var(--cor); color: #fff; padding: 34px 0; margin-bottom: 50px; }
.rodape-faixa .envolve { display: flex; justify-content: space-between; align-items: center; gap: 18px 30px; flex-wrap: wrap; }
.rodape-faixa h3 { color: #fff; margin: 0 0 4px; font-size: clamp(1.25rem, 2.6vw, 1.6rem); }
.rodape-faixa p { margin: 0; opacity: .92; max-width: 560px; }
.rodape-faixa-botoes { display: flex; gap: 10px; flex-wrap: wrap; }
.rodape .rodape-faixa .botao { background: #fff; border-color: #fff; color: var(--cor); }
.rodape .rodape-faixa .botao.vazio { background: transparent; color: #fff; }
.rodape .rodape-faixa .botao:hover { text-decoration: none; opacity: .9; }

/* rodapé MAPA — contactos e mapa do escritório lado a lado */
.rodape-mapa-grelha { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: 40px; align-items: stretch; }
.rodape .rodape-dados { margin: 14px 0 18px; }
.rodape .rodape-dados li::before { content: none; }
.rodape-mapa .rodape-links { margin-bottom: 18px; }
.rodape-mapa-iframe { display: block; width: 100%; height: 100%; min-height: 300px; border: 0; border-radius: var(--raio); }

/* rodapé MÍNIMO — uma linha */
.rodape.rodape-minimo { padding-top: 4px; border-top-width: 3px; }
.rodape-minimo .envolve { display: flex; align-items: center; gap: 10px 20px; flex-wrap: wrap; }
.rodape-minimo .rodape-fim { border-top: 0; margin-top: 0; flex: 1; padding: 14px 0; }
.rodape-minimo .redes a { width: 32px; height: 32px; }
.rodape-minimo .redes svg { width: 16px; height: 16px; }
@media (max-width: 860px) {
  .rodape-mapa-grelha { grid-template-columns: 1fr; gap: 26px; }
  .rodape-faixa { margin-bottom: 36px; }
}

/* ------------------------------------------------------------ modelos --- */
/* menu transparente sobre a fotografia do início (modelo Moderno ou cabeçalho "Transparente"), sólido ao descer */
body.topo-transparente .topo {
  position: fixed; left: 0; right: 0; background: transparent; border-bottom-color: transparent;
  transition: background .25s ease, box-shadow .25s ease;
}
body.topo-transparente .topo.nao-fixo { position: absolute; }
body.topo-transparente .topo:not(.solido) .marca,
body.topo-transparente .topo:not(.solido) .topo-nav a:not(.topo-tel),
body.topo-transparente .topo:not(.solido) .topo-menu { color: #fff; }
body.topo-transparente .topo.solido { background: var(--cor-topo); box-shadow: var(--sombra); }
body.topo-transparente .hero.com-imagem, body.topo-transparente .hero.com-video { padding-top: 96px; }
/* MODERNO — topo alto, cartões flutuantes */
html.modelo-moderno .hero.com-imagem { min-height: 92vh; padding-top: 96px; }
html.modelo-moderno .hero h1 { font-size: clamp(2rem, 5vw, 3.4rem); }
html.modelo-moderno .seccao { padding: 72px 0; }
html.modelo-moderno .seccao-cabeca { flex-direction: column; align-items: center; text-align: center; gap: 6px; }
html.modelo-moderno .seccao-cabeca h2 { font-size: 1.95rem; }
html.modelo-moderno .seccao-cabeca h2::after { content: ''; display: block; width: 52px; height: 3px; background: var(--cor); margin: 12px auto 0; border-radius: 2px; }
html.modelo-moderno .cartao, html.modelo-moderno .servico, html.modelo-moderno .testemunho, html.modelo-moderno .membro {
  border-color: transparent; box-shadow: 0 10px 30px rgba(15,23,42,.08);
}
html.modelo-moderno .pesquisa { box-shadow: 0 20px 50px rgba(0,0,0,.22); }
html.modelo-moderno .pagina-topo { padding: 70px 0 50px; }

/* ELEGANTE — serifada, dourado, maiúsculas espaçadas, linhas finas */
html.modelo-elegante body { background: #fbfaf7; }
html.modelo-elegante .topo-nav a { text-transform: uppercase; letter-spacing: .12em; font-size: .76rem; }
html.modelo-elegante .hero .envolve, html.modelo-elegante .pagina-topo .envolve { text-align: center; }
html.modelo-elegante .hero p { margin: 0 auto; }
html.modelo-elegante .hero h1, html.modelo-elegante .seccao-cabeca h2, html.modelo-elegante .pagina-topo h1 { font-weight: 500; letter-spacing: .01em; }
html.modelo-elegante .seccao { padding: 70px 0; }
html.modelo-elegante .seccao-cabeca { flex-direction: column; align-items: center; text-align: center; }
html.modelo-elegante .seccao-cabeca h2 { font-size: 2.05rem; }
html.modelo-elegante .seccao-cabeca h2::before { content: ''; display: block; width: 1px; height: 34px; background: var(--cor); margin: 0 auto 14px; }
html.modelo-elegante .seccao.alt { background: #f3efe7; }
html.modelo-elegante .cartao, html.modelo-elegante .servico, html.modelo-elegante .testemunho, html.modelo-elegante .membro,
html.modelo-elegante .contacto-cartao { border-color: #e4dccd; box-shadow: none; }
html.modelo-elegante .cartao:hover, html.modelo-elegante .membro:hover { transform: none; box-shadow: 0 14px 34px rgba(0,0,0,.08); }
html.modelo-elegante .selo { background: rgba(17,17,17,.86); letter-spacing: .1em; }
html.modelo-elegante .preco { font-weight: 600; }
html.modelo-elegante .botao { text-transform: uppercase; letter-spacing: .1em; font-size: .8rem; padding: 12px 22px; }
html.modelo-elegante .faixa-cta { background: #111; }
html.modelo-elegante .faixa-cta .botao { background: var(--cor); color: #fff; border-color: var(--cor); }

/* MINIMAL — branco, linhas finas, sem sombras */
html.modelo-minimal .topo { border-bottom: 1px solid #111; }
html.modelo-minimal .hero { padding: 84px 0 64px; }
html.modelo-minimal .hero.com-imagem::after { background: linear-gradient(90deg, rgba(0,0,0,.68), rgba(0,0,0,.12)); }
html.modelo-minimal .cartao, html.modelo-minimal .servico, html.modelo-minimal .testemunho, html.modelo-minimal .membro,
html.modelo-minimal .pesquisa, html.modelo-minimal .contacto-cartao { box-shadow: none; border-color: #d6d6d6; }
html.modelo-minimal .cartao:hover, html.modelo-minimal .membro:hover { transform: none; box-shadow: none; border-color: #111; }
html.modelo-minimal .seccao.alt { background: #fff; border-top: 1px solid #e6e6e6; border-bottom: 1px solid #e6e6e6; }
html.modelo-minimal .seccao-cabeca h2 { font-weight: 600; letter-spacing: -.01em; }
html.modelo-minimal .selo { background: #fff; color: #111; }
html.modelo-minimal .selo.destaque, html.modelo-minimal .selo.reservado { color: #fff; }
html.modelo-minimal .servico-icone, html.modelo-minimal .etiquetas span { background: transparent; border: 1px solid #d6d6d6; }
html.modelo-minimal .mvv > div { background: #fff; border: 1px solid #e6e6e6; border-top: 2px solid var(--cor); }
html.modelo-minimal .pagina-topo { background: #fff; border-bottom: 1px solid #e6e6e6; }
html.modelo-minimal .faixa-cta { background: #111; }

/* ------------------------------------ logótipo do cabeçalho: tamanho e saliente */
.topo.logo-grande { --logo-alt: 70px; }
.topo.logo-enorme { --logo-alt: 100px; }
.topo.logo-grande .marca img, .topo.logo-enorme .marca img { height: var(--logo-alt); }
.topo.logo-grande .marca-sigla, .topo.logo-enorme .marca-sigla {
  width: var(--logo-alt); height: var(--logo-alt); font-size: calc(var(--logo-alt) * .42);
}
/* saliente: o logótipo fica numa "aba" da cor do menu que desce por cima da fotografia;
   as margens negativas não deixam a barra do menu crescer */
.topo.logo-saliente .marca {
  position: relative; z-index: 3; align-self: flex-start;
  margin-top: -12px; margin-bottom: calc(-1 * (var(--logo-alt, 40px) - 12px));
  padding: 12px 16px 14px; background: var(--cor-topo);
  border-radius: 0 0 var(--raio) var(--raio); box-shadow: 0 10px 24px rgba(0,0,0,.18);
}
.topo.logo-saliente.estilo-centrado .marca { align-self: center; margin-bottom: 0; margin-top: 0; box-shadow: none; }
body.topo-transparente .topo.logo-saliente:not(.solido) .marca { background: transparent; box-shadow: none; }
@media (max-width: 860px) {
  .topo.logo-grande .marca img, .topo.logo-enorme .marca img { height: 46px; }
  .topo.logo-grande .marca-sigla, .topo.logo-enorme .marca-sigla { width: 40px; height: 40px; font-size: 1rem; }
  .topo.logo-saliente .marca { margin: 0; padding: 0; background: none; box-shadow: none; align-self: center; }
}

/* ---------------------- ficha do imóvel: contacto direto e partilha ----- */
.comercial-cartao {
  display: flex; align-items: center; gap: 12px; padding: 12px; margin-bottom: 10px;
  border: 1px solid var(--borda); border-radius: var(--raio); background: var(--fundo-alt);
}
.comercial-cartao img, .comercial-iniciais { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; flex: none; }
.comercial-iniciais { background: var(--cor); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 800; }
.comercial-rotulo { font-size: .7rem; text-transform: uppercase; letter-spacing: .05em; color: var(--texto-suave); }
.contacto-imovel { display: grid; gap: 8px; }
.contacto-imovel .botao { width: 100%; }
.contacto-imovel .botao svg { width: 17px; height: 17px; fill: currentColor; flex: none; }
.partilha { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 14px 0 8px; }
.partilha-titulo { font-size: .76rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--texto-suave); margin-right: 2px; }
.partilha-botao {
  width: 38px; height: 38px; padding: 0; border-radius: 50%; border: 1px solid var(--borda); background: #fff;
  display: inline-flex; align-items: center; justify-content: center; cursor: pointer; color: var(--texto);
  transition: background .15s, border-color .15s, color .15s;
}
.partilha-botao svg { width: 18px; height: 18px; fill: currentColor; }
.partilha-botao:hover { border-color: var(--cor); color: var(--cor); }
.partilha-botao.p-whatsapp:hover { background: #25d366; border-color: #25d366; color: #fff; }
.partilha-botao.p-facebook:hover { background: #1877f2; border-color: #1877f2; color: #fff; }
.partilha-botao.p-linkedin:hover { background: #0a66c2; border-color: #0a66c2; color: #fff; }
.partilha-botao.p-x:hover { background: #111; border-color: #111; color: #fff; }
svg.traco { fill: none !important; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.partilha-imprimir { margin-left: auto; padding: 8px 14px; font-size: .86rem; }
.partilha-imprimir svg { width: 17px; height: 17px; }
.partilha-aviso { width: 100%; font-size: .85rem; color: var(--cor); min-height: 0; }
.partilha-aviso:empty { display: none; }

/* ------------------------------ ficha para imprimir / guardar em PDF ----- */
.ficha-impressao { display: none; color: #111; font-size: 10.5pt; line-height: 1.45; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.fi-topo { display: flex; align-items: center; gap: 14px; border-bottom: 2px solid var(--cor); padding-bottom: 8px; margin-bottom: 12px; }
.fi-logo { max-height: 50px; width: auto; }
.fi-empresa { display: flex; flex-direction: column; font-size: 9pt; color: #444; }
.fi-empresa strong { font-size: 11pt; color: #111; }
.fi-cabeca { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; margin-bottom: 10px; }
.fi-cabeca h1 { font-size: 17pt; margin: 0; line-height: 1.2; }
.fi-local { color: #555; font-size: 9.5pt; }
.fi-preco { font-size: 17pt; font-weight: 800; color: var(--cor); white-space: nowrap; font-family: var(--fonte-titulos); }
.fi-foto { width: 100%; height: 88mm; object-fit: cover; border-radius: 3px; }
.fi-fotos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 3mm; margin-top: 3mm; }
.fi-fotos img { width: 100%; height: 34mm; object-fit: cover; border-radius: 3px; }
.fi-corpo { display: grid; grid-template-columns: 1.4fr 1fr; gap: 8mm; margin-top: 6mm; }
.fi-corpo h2 { font-size: 10.5pt; margin: 0 0 4px; color: var(--cor); text-transform: uppercase; letter-spacing: .04em; }
.fi-corpo p { margin: 0 0 10px; }
.fi-dados table { width: 100%; border-collapse: collapse; margin-bottom: 10px; }
.fi-dados td { padding: 3px 0; border-bottom: 1px solid #ddd; font-size: 9.5pt; }
.fi-dados td:last-child { text-align: right; font-weight: 600; }
.fi-rodape { margin-top: 6mm; padding-top: 4px; border-top: 1px solid #ccc; font-size: 8pt; color: #666; overflow-wrap: anywhere; }
.fi-foto, .fi-fotos, .fi-dados, .fi-cabeca { break-inside: avoid; }

@media print {
  .topo, .rodape, .form-contacto, .botao, .hero-seta, .hero-pontos { display: none !important; }
  @page { size: A4; margin: 12mm; }
  body.tem-ficha-impressao { background: #fff; }
  body.tem-ficha-impressao > *:not(.ficha-impressao) { display: none !important; }
  body.tem-ficha-impressao .ficha-impressao { display: block !important; }
}
