@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');

/* ============================================================
   IMOVIA24 — Sistema de design
   Base: paleta real do Imovirtual (navy #071121 + teal #19606b)
   Acrescento: amarelo #FFCC41 como cor de acção
   ============================================================ */

:root {
  /* Navy — texto e fundos escuros */
  --navy:      #071121;
  --navy-2:    #0b162c;
  --navy-3:    #1c2637;
  --navy-4:    #232e3f;

  /* Teal — cor institucional */
  --teal:      #19606b;
  --teal-dk:   #10474f;
  --teal-lt:   #217e8c;
  --teal-bg:   #e8f2f4;

  /* Amarelo — acção (o nosso acrescento) */
  --amarelo:    #FFCC41;
  --amarelo-dk: #f0bb28;
  --amarelo-lt: #fff8e3;

  /* Texto */
  --texto:     #071121;
  --texto-2:   #495260;
  --texto-3:   #8e939c;

  /* Superfícies */
  --branco:    #ffffff;
  --fundo:     #f2f3f6;
  --borda:     #d3d5d9;
  --borda-lt:  #e6e8ec;

  /* Estados */
  --verde:     #00b54b;
  --verde-bg:  #c5f1d6;
  --vermelho:  #c33a32;
  --vermelho-bg:#fdeceb;
  --laranja:   #785108;
  --laranja-bg:#fdf3d9;

  /* Sombras */
  --sombra-xs: 0 1px 2px rgba(7,17,33,.06);
  --sombra-sm: 0 1px 3px rgba(7,17,33,.10);
  --sombra:    0 2px 8px rgba(7,17,33,.10);
  --sombra-md: 0 6px 20px rgba(7,17,33,.12);
  --sombra-lg: 0 12px 32px rgba(7,17,33,.16);

  /* Geometria */
  --r-sm:  4px;
  --r:     8px;
  --r-md:  12px;
  --r-lg:  16px;
  --r-xl:  24px;
  --header-h: 64px;
  --container: 1240px;

  --fonte: 'Inter', system-ui, -apple-system, sans-serif;
  --tr:    .18s ease;
}

/* ── Reset ──────────────────────────────────────────────── */
*,*::before,*::after { box-sizing:border-box; margin:0; padding:0; }
html { font-size:16px; scroll-behavior:smooth; -webkit-font-smoothing:antialiased; }
body {
  font-family:var(--fonte); font-size:.9375rem; line-height:1.55;
  color:var(--texto); background:var(--branco);
}
a   { color:inherit; text-decoration:none; }
img { max-width:100%; display:block; }
ul  { list-style:none; }
button { font-family:inherit; cursor:pointer; border:none; background:none; }
input,select,textarea { font-family:inherit; font-size:.9375rem; }

h1,h2,h3,h4 { line-height:1.25; font-weight:700; color:var(--navy); }
h1 { font-size:clamp(1.7rem,3.4vw,2.4rem); }
h2 { font-size:clamp(1.3rem,2.4vw,1.75rem); }
h3 { font-size:1.15rem; }
h4 { font-size:1rem; }
p  { color:var(--texto-2); }

.container    { max-width:var(--container); margin:0 auto; padding:0 20px; }
.container-sm { max-width:760px; margin:0 auto; padding:0 20px; }
.seccao       { padding:52px 0; }
.seccao-alt   { background:var(--fundo); }

/* ══════════════════════════════════════════════════════════
   BOTÕES
   ══════════════════════════════════════════════════════════ */
.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:7px;
  padding:11px 22px; border-radius:var(--r); font-size:.9rem; font-weight:600;
  transition:all var(--tr); white-space:nowrap; line-height:1.2; border:1.5px solid transparent;
}
/* Acção principal — amarelo */
.btn-primary   { background:var(--amarelo); color:var(--navy); border-color:var(--amarelo); font-weight:700; }
.btn-primary:hover { background:var(--amarelo-dk); border-color:var(--amarelo-dk); }
/* Institucional — navy */
.btn-navy      { background:var(--navy); color:#fff; border-color:var(--navy); }
.btn-navy:hover{ background:var(--navy-3); border-color:var(--navy-3); }
/* Teal */
.btn-teal      { background:var(--teal); color:#fff; border-color:var(--teal); }
.btn-teal:hover{ background:var(--teal-dk); border-color:var(--teal-dk); }
/* Contorno */
.btn-outline   { background:transparent; color:var(--navy); border-color:var(--borda); }
.btn-outline:hover { border-color:var(--navy); background:var(--fundo); }
.btn-branco    { background:#fff; color:var(--navy); border-color:#fff; }
.btn-branco:hover { background:var(--fundo); border-color:var(--fundo); }
.btn-ghost     { color:var(--texto-2); }
.btn-ghost:hover { color:var(--navy); background:var(--fundo); }
.btn-perigo    { background:var(--vermelho); color:#fff; border-color:var(--vermelho); }

.btn-sm   { padding:8px 15px; font-size:.82rem; }
.btn-lg   { padding:14px 30px; font-size:1rem; }
.btn-full { width:100%; }
.btn:disabled { opacity:.5; cursor:not-allowed; }

/* ══════════════════════════════════════════════════════════
   HEADER
   ══════════════════════════════════════════════════════════ */
.cabecalho {
  background:var(--branco); height:var(--header-h);
  border-bottom:1px solid var(--borda-lt);
  position:sticky; top:0; z-index:200;
}
.cabecalho-inner { display:flex; align-items:center; height:100%; gap:26px; }

/* Logótipo: volumes em linha + palavra. O ícone herda a cor do
   conjunto, por isso a mesma marcação serve em fundo claro e escuro. */
.logo { display:flex; align-items:center; flex-shrink:0; color:var(--navy); }
.logo-texto { font-size:1.4rem; font-weight:500; letter-spacing:-.7px; line-height:1; }
/* A marca divide-se em Imo + Via24: a primeira parte acompanha a cor do
   conjunto, a segunda leva a cor de destaque. */
.logo-texto b { font-weight:800; color:var(--teal); }

.nav-principal { display:flex; align-items:center; gap:2px; }
.nav-principal > a,
.nav-principal > .nav-item > a {
  display:flex; align-items:center; gap:5px;
  padding:8px 13px; border-radius:var(--r); font-size:.9rem; font-weight:600;
  color:var(--navy); transition:all var(--tr); white-space:nowrap;
}
.nav-principal a:hover { background:var(--fundo); }
.nav-principal a.activo { color:var(--teal); }

/* Menu suspenso */
.nav-item { position:relative; }
.nav-item > a::after { content:''; width:8px; height:8px; border-right:1.6px solid currentColor; border-bottom:1.6px solid currentColor; transform:rotate(45deg) translateY(-2px); opacity:.5; }
.nav-dropdown {
  position:absolute; top:calc(100% + 6px); left:0;
  background:var(--branco); border:1px solid var(--borda-lt); border-radius:var(--r-md);
  box-shadow:var(--sombra-md); min-width:660px; padding:22px; z-index:250;
  display:none; grid-template-columns:repeat(3,1fr); gap:24px;
}
.nav-item:hover .nav-dropdown { display:grid; }
.nav-dd-col h5 { font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.7px; color:var(--texto-3); margin-bottom:10px; }
.nav-dd-col a { display:block; padding:5px 0; font-size:.875rem; color:var(--texto); font-weight:400; }
.nav-dd-col a:hover { color:var(--teal); background:none; }

.cabecalho-dir { display:flex; align-items:center; gap:10px; margin-left:auto; }
.icone-btn {
  display:flex; align-items:center; justify-content:center; width:38px; height:38px;
  border-radius:var(--r); color:var(--navy); transition:all var(--tr); position:relative;
}
.icone-btn:hover { background:var(--fundo); }
.icone-btn .contador {
  position:absolute; top:2px; right:2px; background:var(--vermelho); color:#fff;
  font-size:.6rem; font-weight:700; min-width:16px; height:16px; border-radius:8px;
  display:flex; align-items:center; justify-content:center; padding:0 4px; border:2px solid #fff;
}
.btn-anunciar {
  background:var(--amarelo); color:var(--navy); font-weight:700; font-size:.875rem;
  padding:9px 18px; border-radius:var(--r); transition:all var(--tr);
  display:inline-flex; align-items:center; gap:6px;
}
.btn-anunciar:hover { background:var(--amarelo-dk); }

.hamburger { display:none; width:38px; height:38px; border-radius:var(--r); flex-direction:column; justify-content:center; align-items:center; gap:4px; }
.hamburger span { display:block; width:17px; height:2px; background:var(--navy); border-radius:2px; }
.menu-mobile { display:none; position:absolute; top:var(--header-h); left:0; right:0; background:var(--branco); border-bottom:1px solid var(--borda); padding:12px 20px 18px; flex-direction:column; gap:2px; box-shadow:var(--sombra-md); z-index:199; }
.menu-mobile.aberto { display:flex; }
.menu-mobile a { padding:11px 12px; border-radius:var(--r); font-size:.92rem; font-weight:500; }
.menu-mobile a:hover { background:var(--fundo); }
.menu-mobile hr { border:none; border-top:1px solid var(--borda-lt); margin:6px 0; }

/* ══════════════════════════════════════════════════════════
   HERO + CAIXA DE PESQUISA
   ══════════════════════════════════════════════════════════ */
.hero { position:relative; background:var(--navy); overflow:hidden; }
.hero-fundo { position:absolute; inset:0; }
.hero-fundo img { width:100%; height:100%; object-fit:cover; opacity:.42; }
.hero-fundo::after { content:''; position:absolute; inset:0; background:linear-gradient(180deg,rgba(7,17,33,.55) 0%,rgba(7,17,33,.75) 100%); }
.hero-conteudo { position:relative; z-index:2; padding:64px 0 72px; text-align:center; }
.hero h1 { color:#fff; font-size:clamp(1.6rem,3.6vw,2.5rem); margin-bottom:10px; }
.hero h1 em { font-style:normal; color:var(--amarelo); }
.hero-sub { color:rgba(255,255,255,.72); font-size:1rem; margin-bottom:30px; }

.caixa-pesquisa {
  background:var(--branco); border-radius:var(--r-lg); box-shadow:var(--sombra-lg);
  max-width:840px; margin:0 auto; overflow:hidden; text-align:left;
}
.pesquisa-abas { display:flex; border-bottom:1px solid var(--borda-lt); background:var(--fundo); }
.pesquisa-aba {
  flex:1; padding:14px 16px; font-size:.9rem; font-weight:600; color:var(--texto-2);
  border-bottom:3px solid transparent; transition:all var(--tr); text-align:center;
}
.pesquisa-aba.activa { background:var(--branco); color:var(--navy); border-bottom-color:var(--amarelo); }
.pesquisa-corpo { padding:20px; display:flex; gap:10px; align-items:flex-end; flex-wrap:wrap; }
.pesquisa-campo { flex:1; min-width:150px; position:relative; }
.pesquisa-campo.grande { flex:1.8; }
.pesquisa-label { display:block; font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--texto-3); margin-bottom:6px; }
.pesquisa-input {
  width:100%; padding:11px 13px; border:1.5px solid var(--borda); border-radius:var(--r);
  font-size:.9rem; color:var(--texto); background:var(--branco); transition:border var(--tr);
}
select.pesquisa-input { appearance:none; padding-right:32px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23495260' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 12px center; }
.pesquisa-input:focus { outline:none; border-color:var(--navy); }
.pesquisa-btn { padding:12px 30px; background:var(--amarelo); color:var(--navy); font-weight:700; font-size:.92rem; border-radius:var(--r); flex-shrink:0; transition:background var(--tr); display:flex; align-items:center; gap:7px; }
.pesquisa-btn:hover { background:var(--amarelo-dk); }

/* Sugestões do autocomplete */
.sugestoes { position:absolute; top:calc(100% + 4px); left:0; right:0; background:#fff; border:1px solid var(--borda); border-radius:var(--r); box-shadow:var(--sombra-md); max-height:280px; overflow-y:auto; z-index:60; display:none; }
.sugestoes.aberta { display:block; }
.sugestao { padding:10px 14px; font-size:.88rem; cursor:pointer; display:flex; align-items:center; gap:9px; }
.sugestao:hover,.sugestao.activa { background:var(--fundo); }
.sugestao small { color:var(--texto-3); margin-left:auto; font-size:.75rem; }


/* ══════════════════════════════════════════════════════════
   CARTÃO DE IMÓVEL
   ══════════════════════════════════════════════════════════ */
.grelha-imoveis { display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.grelha-imoveis.g3 { grid-template-columns:repeat(3,1fr); }
.grelha-imoveis.g2 { grid-template-columns:repeat(2,1fr); }

.cartao {
  background:var(--branco); border:1px solid var(--borda-lt); border-radius:var(--r-md);
  overflow:hidden; display:flex; flex-direction:column; transition:box-shadow var(--tr),transform var(--tr);
}
.cartao:hover { box-shadow:var(--sombra-md); transform:translateY(-2px); }

.cartao-media { position:relative; aspect-ratio:4/3; overflow:hidden; background:var(--fundo); }
.cartao-media img { width:100%; height:100%; object-fit:cover; transition:transform .4s; }
.cartao:hover .cartao-media img { transform:scale(1.04); }

.cartao-etiquetas { position:absolute; top:10px; left:10px; display:flex; gap:5px; flex-wrap:wrap; z-index:3; }
.etiqueta { padding:4px 9px; border-radius:var(--r-sm); font-size:.68rem; font-weight:700; letter-spacing:.2px; }
.etiqueta-venda    { background:var(--navy); color:#fff; }
.etiqueta-arrendar { background:var(--teal); color:#fff; }
.etiqueta-destaque { background:var(--amarelo); color:var(--navy); }
.etiqueta-novo     { background:var(--verde); color:#fff; }
.etiqueta-branca   { background:rgba(255,255,255,.94); color:var(--navy); }

.cartao-fav {
  position:absolute; top:10px; right:10px; z-index:3; width:32px; height:32px;
  background:rgba(255,255,255,.92); border-radius:50%; display:flex; align-items:center; justify-content:center;
  transition:all var(--tr); backdrop-filter:blur(4px);
}
.cartao-fav:hover { background:#fff; transform:scale(1.08); }
.cartao-fav svg { width:16px; height:16px; stroke:var(--navy); fill:none; stroke-width:2; }
.cartao-fav.activo svg { fill:var(--vermelho); stroke:var(--vermelho); }

.cartao-fotos { position:absolute; bottom:8px; right:8px; z-index:3; background:rgba(7,17,33,.65); color:#fff; font-size:.7rem; font-weight:600; padding:3px 8px; border-radius:var(--r-sm); display:flex; align-items:center; gap:4px; }

.cartao-corpo { padding:14px 15px; flex:1; display:flex; flex-direction:column; }
.cartao-preco { font-size:1.25rem; font-weight:800; color:var(--navy); letter-spacing:-.4px; }
.cartao-preco-m2 { font-size:.75rem; color:var(--texto-3); font-weight:500; margin-left:6px; }
.cartao-preco-desceu { display:inline-flex; align-items:center; gap:3px; font-size:.72rem; font-weight:700; color:var(--verde); background:var(--verde-bg); padding:2px 7px; border-radius:var(--r-sm); margin-left:6px; }
.cartao-titulo {
  font-size:.925rem; font-weight:600; color:var(--navy); line-height:1.35; margin:7px 0 5px;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
.cartao:hover .cartao-titulo { color:var(--teal); }
.cartao-local { font-size:.82rem; color:var(--texto-2); display:flex; align-items:center; gap:4px; }
.cartao-local svg { width:12px; height:12px; fill:var(--texto-3); flex-shrink:0; }

.cartao-specs { display:flex; gap:12px; flex-wrap:wrap; margin-top:11px; padding-top:11px; border-top:1px solid var(--borda-lt); }
.spec { display:flex; align-items:center; gap:5px; font-size:.82rem; color:var(--texto-2); font-weight:500; }
.spec svg { width:14px; height:14px; stroke:var(--texto-3); fill:none; stroke-width:1.7; flex-shrink:0; }

.cartao-rodape { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:11px; padding-top:11px; border-top:1px solid var(--borda-lt); }
.cartao-agencia { display:flex; align-items:center; gap:7px; min-width:0; font-size:.78rem; color:var(--texto-3); }
.cartao-agencia img { height:22px; max-width:70px; object-fit:contain; }
.cartao-agencia span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* O nome da agência acompanha sempre o logótipo: só o símbolo não diz
   a quem se está a telefonar. */
.cartao-agencia-nome { max-width:180px; font-weight:600; color:var(--texto-2); }

/* Cartão horizontal (listagem) */
.cartao-h { flex-direction:row; }
/* Sem proporção definida, uma foto vertical impunha a sua altura natural e
   esticava o cartão muito acima dos vizinhos. A proporção fica fixa e a
   imagem passa a preencher a caixa sem mandar na altura. */
.cartao-h .cartao-media { width:340px; min-width:300px; aspect-ratio:4/3; flex-shrink:0; margin-bottom:0; }
.cartao-h .cartao-media img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }

/* Lugar pago na lista de resultados: cartão maior, com moldura amarela.
   A foto é mais alta e mais larga do que a dos restantes, para se destacar
   sem partir o alinhamento da lista. */
.cartao-promo { border:2px solid var(--amarelo); box-shadow:var(--sombra-md); }
.cartao-promo .cartao-media { width:440px; min-width:380px; aspect-ratio:16/11; }
.cartao-promo .cartao-titulo { font-size:1.2rem; }
.cartao-promo .cartao-preco  { font-size:1.7rem; }
.cartao-promo .cartao-corpo  { padding:22px 24px; }
/* Miniaturas no cartão de destaque: ocupam o espaço livre por baixo do
   rodapé e levam o visitante direto à foto que escolher. */
.cartao-miniaturas { display:flex; gap:6px; margin-top:12px; }
.cartao-miniaturas a { flex:1; aspect-ratio:4/3; border-radius:var(--r-sm); overflow:hidden;
  position:relative; background:var(--fundo); }
.cartao-miniaturas img { width:100%; height:100%; object-fit:cover;
  transform-origin:top center; transform:scale(1.14); transition:transform var(--tr); }
.cartao-miniaturas a:hover img { transform:scale(1.2); }
.cartao-miniaturas-mais { display:flex; align-items:center; justify-content:center;
  background:var(--navy); color:#fff; font-weight:700; font-size:.9rem; max-width:70px; }

@media(max-width:900px) {
  .cartao-promo .cartao-media { width:100%; min-width:0; aspect-ratio:4/3; }
  .cartao-miniaturas a:nth-child(n+4) { display:none; }
}
.cartao-h .cartao-corpo { padding:18px 20px; }
.cartao-h .cartao-titulo { font-size:1.05rem; -webkit-line-clamp:2; }
.cartao-h .cartao-preco  { font-size:1.5rem; }
.cartao-h .cartao-desc { font-size:.85rem; color:var(--texto-2); line-height:1.6; margin-top:10px;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
/* Setas da galeria: discretas mas sempre presentes, para se perceber
   que há mais fotos sem ter de passar o rato por cima. */
.cartao-setas { position:absolute; inset:0; display:flex; align-items:center;
  justify-content:space-between; padding:0 10px; pointer-events:none; z-index:2; }
.cartao-seta { width:34px; height:34px; background:rgba(255,255,255,.75);
  border-radius:50%; display:flex; align-items:center; justify-content:center;
  pointer-events:all; color:var(--navy); opacity:.75;
  transition:opacity var(--tr), background var(--tr), transform var(--tr); }
.cartao-seta svg { width:16px; height:16px; }
.cartao-media:hover .cartao-seta { opacity:1; background:rgba(255,255,255,.95); }
.cartao-seta:hover { transform:scale(1.08); background:#fff; }
@media(hover:none) { .cartao-seta { opacity:1; background:rgba(255,255,255,.9); } }

/* ══════════════════════════════════════════════════════════
   LISTAGEM — filtros laterais
   ══════════════════════════════════════════════════════════ */
.listagem { display:grid; grid-template-columns:290px 1fr; gap:26px; align-items:start; padding:24px 0 60px; }

/* Os filtros descem com os resultados, como a lateral da ficha: fixos,
   obrigavam a voltar ao topo para ver o fim da coluna. */
.filtros { background:var(--branco); border:1px solid var(--borda-lt); border-radius:var(--r-md); overflow:hidden; }
.filtros-alerta { background:var(--amarelo); padding:16px 18px; }
.filtros-alerta h4 { font-size:.9rem; margin-bottom:10px; color:var(--navy); }
.filtros-alerta input { width:100%; padding:9px 12px; border:1px solid rgba(7,17,33,.15); border-radius:var(--r-sm); font-size:.85rem; background:#fff; margin-bottom:8px; }
.filtros-alerta button { width:100%; padding:10px; background:var(--navy); color:#fff; border-radius:var(--r-sm); font-size:.85rem; font-weight:700; transition:background var(--tr); }
.filtros-alerta button:hover { background:var(--navy-3); }

.filtros-corpo { padding:18px; }
.filtro-grupo { padding-bottom:18px; margin-bottom:18px; border-bottom:1px solid var(--borda-lt); }
.filtro-grupo:last-child { border:none; margin:0; padding:0; }
.filtro-titulo { font-size:.95rem; font-weight:700; color:var(--navy); margin-bottom:11px; }
.filtro-linha { display:flex; gap:8px; }
.filtro-campo { flex:1; min-width:0; }
.filtro-rotulo { display:block; font-size:.74rem; font-weight:600; color:var(--texto-2); margin-bottom:5px; }

/* Campo com unidade colada à direita (€, m²) */
.filtro-unidade { position:relative; }
.filtro-unidade .filtro-input { width:100%; padding-right:30px; }
.filtro-unidade span { position:absolute; right:11px; top:50%; transform:translateY(-50%);
  font-size:.82rem; color:var(--texto-3); pointer-events:none; }

/* Comprar / arrendar lado a lado */
.segmento { display:flex; border:1.5px solid var(--borda); border-radius:var(--r); overflow:hidden; }
.segmento-op { flex:1; padding:9px 6px; text-align:center; font-size:.875rem; font-weight:600;
  color:var(--texto-2); cursor:pointer; transition:all var(--tr); user-select:none; }
.segmento-op + .segmento-op { border-left:1.5px solid var(--borda); }
.segmento-op input { position:absolute; opacity:0; pointer-events:none; }
.segmento-op.activa { background:var(--navy); color:#fff; }

/* Escalões de preço */
.filtro-atalhos { display:flex; flex-wrap:wrap; gap:5px; margin-top:9px; }
.atalho { padding:5px 10px; border:1px solid var(--borda); border-radius:20px;
  font-size:.75rem; color:var(--texto-2); background:#fff; transition:all var(--tr); }
.atalho:hover { border-color:var(--navy); color:var(--navy); }
.atalho.activo { background:var(--navy); color:#fff; border-color:var(--navy); }

/* Ver mais / ver menos */
.filtro-mais { font-size:.83rem; font-weight:600; color:var(--teal); margin-top:6px; padding:0; }
.filtro-mais:hover { text-decoration:underline; }

/* Certificado energético — cada letra com a sua cor */
.certificados { display:grid; grid-template-columns:repeat(5,1fr); gap:5px; }
.cert-btn { padding:8px 2px; border:1.5px solid var(--borda); border-radius:var(--r);
  font-size:.8rem; font-weight:700; text-align:center; cursor:pointer;
  transition:all var(--tr); background:#fff; color:var(--texto-2); user-select:none; }
.cert-btn:hover { border-color:var(--cor); }
.cert-btn.activa { background:var(--cor); border-color:var(--cor); color:#fff; }

/* Etiquetas dos filtros activos, por cima dos resultados */
.filtros-activos { display:flex; flex-wrap:wrap; gap:7px; margin-bottom:18px; }
.etiqueta-filtro { display:inline-flex; align-items:center; gap:6px;
  padding:6px 11px; background:var(--fundo); border:1px solid var(--borda);
  border-radius:20px; font-size:.8rem; color:var(--texto); transition:all var(--tr); }
.etiqueta-filtro span { color:var(--texto-3); }
.etiqueta-filtro:hover { border-color:var(--vermelho); color:var(--vermelho); }
.etiqueta-filtro:hover span { color:var(--vermelho); }
.etiqueta-limpar { font-size:.8rem; font-weight:600; color:var(--teal);
  padding:6px 4px; text-decoration:underline; }
.filtro-input,.filtro-select {
  flex:1; min-width:0; padding:10px 12px; border:1.5px solid var(--borda); border-radius:var(--r);
  font-size:.875rem; color:var(--texto); background:#fff; transition:border var(--tr);
}
.filtro-select { appearance:none; padding-right:30px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23071121' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 11px center; }
.filtro-input:focus,.filtro-select:focus { outline:none; border-color:var(--navy); }

.check { display:flex; align-items:center; gap:10px; padding:7px 0; font-size:.885rem; color:var(--texto); cursor:pointer; }
.check input { width:18px; height:18px; border:1.5px solid var(--borda); border-radius:4px; appearance:none; cursor:pointer; flex-shrink:0; position:relative; background:#fff; transition:all var(--tr); }
.check input[type=radio] { border-radius:50%; }
.check input:checked { background:var(--navy); border-color:var(--navy); }
.check input[type=checkbox]:checked::after { content:''; position:absolute; left:5px; top:1px; width:5px; height:10px; border:solid #fff; border-width:0 2px 2px 0; transform:rotate(45deg); }
.check input[type=radio]:checked::after { content:''; position:absolute; inset:4px; background:#fff; border-radius:50%; }
.check:hover { color:var(--teal); }

/* Botões de tipologia em grelha */
.tipologias { display:grid; grid-template-columns:repeat(4,1fr); gap:6px; }
.tipologia-btn { padding:9px 4px; border:1.5px solid var(--borda); border-radius:var(--r); font-size:.85rem; font-weight:600; text-align:center; cursor:pointer; transition:all var(--tr); background:#fff; user-select:none; display:flex; align-items:center; justify-content:center; }
.tipologia-btn:hover { border-color:var(--navy); }
.tipologia-btn.activa { background:var(--navy); color:#fff; border-color:var(--navy); }

.filtros-accoes { padding:0 18px 18px; }
.filtros-accoes .btn { width:100%; }
.filtros-limpar { display:block; text-align:center; font-size:.83rem; color:var(--texto-3); margin-top:10px; text-decoration:underline; }
.filtros-limpar:hover { color:var(--navy); }

/* Resultados */
.resultados-topo { display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; margin-bottom:18px; }
.resultados-h1 { font-size:1.15rem; font-weight:700; color:var(--navy); margin:0 0 2px; line-height:1.3; }
.resultados-total { font-size:1.35rem; font-weight:800; color:var(--navy); }
.resultados-total span { font-size:.9rem; font-weight:400; color:var(--texto-2); }
.resultados-vista { display:flex; gap:6px; }
.vista-btn { width:38px; height:38px; border:1.5px solid var(--borda); border-radius:var(--r); display:flex; align-items:center; justify-content:center; color:var(--texto-2); }
.vista-btn.activa { background:var(--navy); color:#fff; border-color:var(--navy); }
.resultados-lista { display:flex; flex-direction:column; gap:14px; }

/* Estado vazio */
.vazio { text-align:center; padding:64px 24px; background:var(--fundo); border-radius:var(--r-lg); }
.vazio-icone { font-size:2.4rem; margin-bottom:14px; }
.vazio h3 { margin-bottom:7px; }
.vazio p { font-size:.9rem; margin-bottom:20px; }

/* ══════════════════════════════════════════════════════════
   FICHA DO IMÓVEL
   ══════════════════════════════════════════════════════════ */
.ficha { display:grid; grid-template-columns:1fr 370px; gap:32px; align-items:start; padding:24px 0 60px; }
.ficha-principal { min-width:0; }
/* A lateral desce com a página, como a coluna principal. Fixa, obrigava a
   chegar ao fim do conteúdo para a ver inteira. */
.ficha-lateral { position:static; }

.migalhas { font-size:.82rem; color:var(--texto-3); display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-bottom:14px; }
.migalhas a:hover { color:var(--teal); }

.galeria { display:grid; grid-template-columns:2fr 1fr; grid-template-rows:repeat(2,1fr); gap:4px; height:420px; border-radius:var(--r-md); overflow:hidden; }
.galeria-principal { grid-row:span 2; }
.galeria img { width:100%; height:100%; object-fit:cover; cursor:pointer; transition:opacity var(--tr); }
.galeria img:hover { opacity:.9; }
.galeria-mais { position:relative; }
.galeria-mais-btn { position:absolute; inset:0; background:rgba(7,17,33,.6); display:flex; align-items:center; justify-content:center; color:#fff; font-weight:700; font-size:.95rem; gap:7px; }

.ficha-cabecalho { padding:22px 0 18px; border-bottom:1px solid var(--borda-lt); }
.ficha-preco { font-size:2rem; font-weight:800; color:var(--navy); letter-spacing:-1px; }
.ficha-preco-m2 { font-size:.9rem; color:var(--texto-3); font-weight:500; margin-left:8px; }
.ficha-titulo { font-size:1.35rem; font-weight:700; margin:10px 0 7px; }
.ficha-local { font-size:.95rem; color:var(--texto-2); display:flex; align-items:center; gap:6px; }

.ficha-specs { display:flex; flex-wrap:wrap; gap:10px; padding:20px 0; border-bottom:1px solid var(--borda-lt); }
.ficha-spec { display:flex; align-items:center; gap:8px; background:var(--fundo); border-radius:var(--r); padding:11px 15px; font-size:.9rem; font-weight:600; color:var(--navy); }
.ficha-spec svg { width:17px; height:17px; stroke:var(--texto-2); fill:none; stroke-width:1.7; }
.ficha-spec small { display:block; font-size:.72rem; font-weight:400; color:var(--texto-3); }

.ficha-seccao { padding:26px 0; border-bottom:1px solid var(--borda-lt); }
.ficha-seccao h3 { margin-bottom:14px; }
.ficha-descricao { font-size:.95rem; line-height:1.75; color:var(--texto-2); white-space:pre-line; }
.ficha-descricao.curta { max-height:200px; overflow:hidden; position:relative; }
.ficha-descricao.curta::after { content:''; position:absolute; bottom:0; left:0; right:0; height:60px; background:linear-gradient(transparent,#fff); }
.ver-mais-btn { margin-top:12px; font-size:.9rem; font-weight:700; color:var(--teal); }

.caracteristicas { display:grid; grid-template-columns:repeat(2,1fr); gap:0 28px; }
.caracteristica { display:flex; justify-content:space-between; gap:14px; padding:11px 0; border-bottom:1px solid var(--borda-lt); font-size:.9rem; }
.caracteristica dt { color:var(--texto-2); }
.caracteristica dd { font-weight:600; color:var(--navy); text-align:right; }

.extras-lista { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.extra { display:flex; align-items:center; gap:8px; font-size:.9rem; color:var(--texto); }
.extra svg { width:16px; height:16px; stroke:var(--verde); fill:none; stroke-width:2.4; flex-shrink:0; }

/* Selo do certificado energético */
.cert-selo { display:inline-flex; align-items:center; gap:8px; }
.cert-letra { width:34px; height:34px; border-radius:var(--r-sm); display:flex; align-items:center; justify-content:center; color:#fff; font-weight:800; font-size:1rem; }

#mapa { height:340px; border-radius:var(--r-md); overflow:hidden; }

/* Lateral: contacto */
.contacto-caixa { background:var(--branco); border:1px solid var(--borda); border-radius:var(--r-md); overflow:hidden; box-shadow:var(--sombra-sm); }
.contacto-agencia { padding:18px; display:flex; align-items:center; gap:13px; border-bottom:1px solid var(--borda-lt); }
.contacto-agencia-logo { width:56px; height:56px; border-radius:var(--r); background:var(--fundo); display:flex; align-items:center; justify-content:center; overflow:hidden; flex-shrink:0; }
.contacto-agencia-logo img { width:100%; height:100%; object-fit:contain; }
.contacto-agencia-nome { font-weight:700; font-size:.95rem; color:var(--navy); }
.contacto-agencia-sub { font-size:.78rem; color:var(--texto-3); margin-top:2px; }
.contacto-corpo { padding:18px; }
.contacto-corpo .form-campo { margin-bottom:11px; }
.contacto-tel { display:flex; align-items:center; justify-content:center; gap:8px; width:100%; padding:12px; border:1.5px solid var(--navy); border-radius:var(--r); font-weight:700; font-size:.9rem; color:var(--navy); margin-bottom:11px; transition:all var(--tr); }
.contacto-tel:hover { background:var(--navy); color:#fff; }

.alerta-preco { background:var(--amarelo-lt); border:1px solid #f5e3ae; border-radius:var(--r-md); padding:16px 18px; margin-top:14px; }
.alerta-preco h4 { font-size:.9rem; margin-bottom:9px; display:flex; align-items:center; gap:7px; }
.alerta-preco input { width:100%; padding:9px 12px; border:1.5px solid #f0dca0; border-radius:var(--r-sm); font-size:.85rem; background:#fff; margin-bottom:8px; }
.alerta-preco button { width:100%; padding:10px; background:var(--navy); color:#fff; border-radius:var(--r-sm); font-size:.85rem; font-weight:700; }

/* ══════════════════════════════════════════════════════════
   FORMULÁRIOS
   ══════════════════════════════════════════════════════════ */
.form-campo { margin-bottom:16px; }
.form-label { display:block; font-size:.85rem; font-weight:600; color:var(--navy); margin-bottom:6px; }
.form-label .obrig { color:var(--vermelho); }
.form-control {
  width:100%; padding:11px 14px; border:1.5px solid var(--borda); border-radius:var(--r);
  background:#fff; color:var(--texto); transition:border var(--tr),box-shadow var(--tr);
}
.form-control:focus { outline:none; border-color:var(--navy); box-shadow:0 0 0 3px rgba(7,17,33,.07); }
.form-control::placeholder { color:var(--texto-3); }
select.form-control { appearance:none; padding-right:34px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23495260' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 13px center; }
textarea.form-control { resize:vertical; min-height:110px; }
.form-hint { font-size:.78rem; color:var(--texto-3); margin-top:5px; }
.form-linha  { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.form-linha3 { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }

/* ══════════════════════════════════════════════════════════
   MENSAGENS FLASH
   ══════════════════════════════════════════════════════════ */
.flash { display:flex; align-items:center; gap:10px; padding:13px 17px; border-radius:var(--r); margin:14px 0; font-size:.9rem; font-weight:500; }
.flash--success { background:var(--verde-bg); color:#0a5c30; }
.flash--error   { background:var(--vermelho-bg); color:#8f2620; }
.flash--info    { background:var(--teal-bg); color:var(--teal-dk); }
.flash--warning { background:var(--laranja-bg); color:var(--laranja); }

/* ══════════════════════════════════════════════════════════
   TABELAS
   ══════════════════════════════════════════════════════════ */
.tabela { width:100%; background:#fff; border:1px solid var(--borda-lt); border-radius:var(--r-md); overflow:hidden; border-collapse:collapse; }
.tabela th { background:var(--fundo); padding:11px 15px; font-size:.72rem; font-weight:700; text-align:left; color:var(--texto-2); text-transform:uppercase; letter-spacing:.5px; border-bottom:1px solid var(--borda-lt); }
.tabela td { padding:13px 15px; font-size:.885rem; border-bottom:1px solid var(--borda-lt); vertical-align:middle; }
.tabela tr:last-child td { border-bottom:none; }
.tabela tbody tr:hover td { background:#fafbfc; }

.estado { display:inline-block; padding:3px 10px; border-radius:20px; font-size:.72rem; font-weight:700; }
.estado-ativo     { background:var(--verde-bg); color:#0a5c30; }
.estado-pendente  { background:var(--laranja-bg); color:var(--laranja); }
.estado-vendido   { background:#e9e3fb; color:#5b21b6; }
.estado-expirado  { background:var(--fundo); color:var(--texto-2); }
.estado-bloqueado { background:var(--vermelho-bg); color:#8f2620; }

/* ══════════════════════════════════════════════════════════
   PAGINAÇÃO
   ══════════════════════════════════════════════════════════ */
.pagination { display:flex; gap:5px; justify-content:center; margin-top:34px; flex-wrap:wrap; }
.page-btn { min-width:40px; height:40px; padding:0 13px; border:1.5px solid var(--borda); border-radius:var(--r); display:inline-flex; align-items:center; justify-content:center; font-size:.885rem; font-weight:600; color:var(--texto); background:#fff; transition:all var(--tr); }
.page-btn:hover { border-color:var(--navy); }
.page-btn.active { background:var(--navy); color:#fff; border-color:var(--navy); }

/* ══════════════════════════════════════════════════════════
   PAINEL LATERAL (conta · pro · admin)
   ══════════════════════════════════════════════════════════ */
.painel { display:grid; grid-template-columns:250px 1fr; gap:26px; align-items:start; padding:24px 0 60px; }
.painel-nav { background:#fff; border:1px solid var(--borda-lt); border-radius:var(--r-md); padding:8px; position:sticky; top:calc(var(--header-h) + 16px); }
.painel-nav-topo { padding:14px 12px; border-bottom:1px solid var(--borda-lt); margin-bottom:8px; }
.painel-nav-nome { font-weight:700; font-size:.95rem; color:var(--navy); }
.painel-nav-sub  { font-size:.78rem; color:var(--texto-3); margin-top:2px; }
.painel-nav a { display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:var(--r); font-size:.9rem; font-weight:500; color:var(--texto-2); transition:all var(--tr); }
.painel-nav a:hover { background:var(--fundo); color:var(--navy); }
.painel-nav a.activo { background:var(--navy); color:#fff; font-weight:600; }
.painel-nav a.activo svg { stroke:#fff; }
.painel-nav svg { width:17px; height:17px; stroke:currentColor; fill:none; stroke-width:1.8; flex-shrink:0; }
.painel-nav .contador { margin-left:auto; background:var(--amarelo); color:var(--navy); font-size:.7rem; font-weight:700; padding:1px 7px; border-radius:20px; }
.painel-corpo { min-width:0; }
.painel-titulo { font-size:1.45rem; font-weight:800; margin-bottom:20px; }

/* Cartões de números */
.stats { display:grid; grid-template-columns:repeat(auto-fill,minmax(165px,1fr)); gap:14px; margin-bottom:26px; }
.stat { background:#fff; border:1px solid var(--borda-lt); border-radius:var(--r-md); padding:17px; }
.stat-valor { font-size:1.75rem; font-weight:800; color:var(--navy); letter-spacing:-.6px; }
.stat-rotulo { font-size:.78rem; color:var(--texto-3); margin-top:2px; }
.stat-icone { font-size:1.2rem; margin-bottom:7px; }

/* ══════════════════════════════════════════════════════════
   PIPELINE (CRM)
   ══════════════════════════════════════════════════════════ */
.pipeline { display:flex; gap:12px; overflow-x:auto; padding-bottom:14px; }
.pipeline-col { min-width:250px; flex:1; background:var(--fundo); border-radius:var(--r-md); padding:12px; }
.pipeline-col-topo { display:flex; align-items:center; justify-content:space-between; margin-bottom:11px; }
.pipeline-col-titulo { font-size:.83rem; font-weight:700; color:var(--navy); text-transform:uppercase; letter-spacing:.4px; }
.pipeline-col-n { background:var(--branco); color:var(--texto-2); font-size:.75rem; font-weight:700; padding:2px 8px; border-radius:20px; }
.pipeline-cartao { background:#fff; border:1px solid var(--borda-lt); border-radius:var(--r); padding:12px; margin-bottom:8px; cursor:grab; transition:box-shadow var(--tr); }
.pipeline-cartao:hover { box-shadow:var(--sombra-sm); }
.pipeline-cartao.arrastar { opacity:.5; }
.pipeline-cartao-titulo { font-size:.875rem; font-weight:600; color:var(--navy); margin-bottom:5px; }
.pipeline-cartao-meta { font-size:.78rem; color:var(--texto-3); }
.pipeline-cartao-valor { font-size:.9rem; font-weight:700; color:var(--teal); margin-top:6px; }
.pipeline-col.sobre { background:var(--amarelo-lt); outline:2px dashed var(--amarelo); }

/* ══════════════════════════════════════════════════════════
   RODAPÉ
   ══════════════════════════════════════════════════════════ */
.rodape { background:var(--navy); color:rgba(255,255,255,.6); padding:52px 0 0; margin-top:40px; }
.rodape-grelha { display:grid; grid-template-columns:1.7fr repeat(4,1fr); gap:32px; padding-bottom:40px; border-bottom:1px solid rgba(255,255,255,.09); }
.rodape-marca .logo { color:#fff; margin-bottom:14px; }
.rodape-marca .logo-texto b { color:var(--amarelo); }
.rodape-marca p { font-size:.855rem; color:rgba(255,255,255,.55); line-height:1.7; max-width:270px; }
.rodape-col h5 { color:#fff; font-size:.74rem; font-weight:700; text-transform:uppercase; letter-spacing:.8px; margin-bottom:15px; }
.rodape-col a { display:block; font-size:.855rem; color:rgba(255,255,255,.55); margin-bottom:9px; transition:color var(--tr); }
.rodape-col a:hover { color:#fff; }
.rodape-baixo { padding:19px 0; display:flex; align-items:center; justify-content:space-between; font-size:.8rem; color:rgba(255,255,255,.4); flex-wrap:wrap; gap:10px; }
.rodape-baixo a { color:rgba(255,255,255,.55); margin-left:16px; }
.rodape-baixo a:hover { color:#fff; }

/* ══════════════════════════════════════════════════════════
   MODAL
   ══════════════════════════════════════════════════════════ */
.modal-fundo { position:fixed; inset:0; background:rgba(7,17,33,.6); z-index:500; display:none; align-items:center; justify-content:center; padding:20px; }
.modal-fundo.aberto { display:flex; }
.modal { background:#fff; border-radius:var(--r-lg); max-width:520px; width:100%; max-height:90vh; overflow-y:auto; box-shadow:var(--sombra-lg); }
.modal-topo { padding:18px 22px; border-bottom:1px solid var(--borda-lt); display:flex; align-items:center; justify-content:space-between; }
.modal-topo h3 { font-size:1.1rem; }
.modal-fechar { font-size:1.4rem; color:var(--texto-3); line-height:1; }
.modal-corpo { padding:22px; }
.modal-rodape { padding:16px 22px; border-top:1px solid var(--borda-lt); display:flex; gap:10px; justify-content:flex-end; }

/* Lightbox */
.lightbox { position:fixed; inset:0; background:rgba(7,17,33,.94); z-index:600; display:none; align-items:center; justify-content:center; }
.lightbox.aberto { display:flex; }
.lightbox img { max-width:92vw; max-height:86vh; object-fit:contain; }
.lightbox-fechar { position:absolute; top:20px; right:24px; color:#fff; font-size:2rem; line-height:1; }
.lightbox-nav { position:absolute; top:50%; transform:translateY(-50%); width:48px; height:48px; background:rgba(255,255,255,.14); border-radius:50%; color:#fff; font-size:1.5rem; display:flex; align-items:center; justify-content:center; }
.lightbox-nav:hover { background:rgba(255,255,255,.25); }
.lightbox-prev { left:24px; } .lightbox-next { right:24px; }
.lightbox-contador { position:absolute; bottom:24px; left:50%; transform:translateX(-50%); color:rgba(255,255,255,.75); font-size:.9rem; }

/* ══════════════════════════════════════════════════════════
   UTILITÁRIOS
   ══════════════════════════════════════════════════════════ */
.mt-1{margin-top:8px}.mt-2{margin-top:16px}.mt-3{margin-top:24px}.mt-4{margin-top:32px}
.mb-1{margin-bottom:8px}.mb-2{margin-bottom:16px}.mb-3{margin-bottom:24px}
.flex{display:flex}.entre{justify-content:space-between}.centro{align-items:center}
.gap-1{gap:8px}.gap-2{gap:16px}
.txt-centro{text-align:center}.txt-dir{text-align:right}
.esconder{display:none}
.mudo{color:var(--texto-3)}
.pequeno{font-size:.82rem}

.seccao-cabecalho { display:flex; align-items:flex-end; justify-content:space-between; gap:14px; flex-wrap:wrap; margin-bottom:24px; }
.seccao-cabecalho p { font-size:.92rem; margin-top:5px; }
.ver-todos { font-size:.9rem; font-weight:700; color:var(--teal); display:inline-flex; align-items:center; gap:5px; }
.ver-todos:hover { gap:8px; }

/* Cartões de distrito na homepage */
.distritos { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
.distrito { position:relative; aspect-ratio:16/10; border-radius:var(--r-md); overflow:hidden; }
.distrito img { width:100%; height:100%; object-fit:cover; transition:transform .4s; }
.distrito:hover img { transform:scale(1.06); }
.distrito::after { content:''; position:absolute; inset:0; background:linear-gradient(transparent 40%,rgba(7,17,33,.8)); }
.distrito-nome { position:absolute; bottom:14px; left:16px; z-index:2; color:#fff; font-weight:700; font-size:1.05rem; }
.distrito-n { position:absolute; bottom:14px; right:16px; z-index:2; color:rgba(255,255,255,.75); font-size:.82rem; }

/* Passos "como funciona" */
.passos { display:grid; grid-template-columns:repeat(4,1fr); gap:26px; }
.passo-num { width:42px; height:42px; border-radius:50%; background:var(--amarelo); color:var(--navy); font-weight:800; display:flex; align-items:center; justify-content:center; margin-bottom:14px; }
.passo h4 { margin-bottom:7px; }
.passo p { font-size:.875rem; line-height:1.65; }

/* ══════════════════════════════════════════════════════════
   RESPONSIVO
   ══════════════════════════════════════════════════════════ */
@media(max-width:1100px){
  .grelha-imoveis    { grid-template-columns:repeat(3,1fr); }
  .distritos         { grid-template-columns:repeat(3,1fr); }
  .nav-dropdown      { min-width:520px; grid-template-columns:repeat(2,1fr); }
}
@media(max-width:960px){
  .listagem { grid-template-columns:1fr; }
  .filtros  { position:static; }
  .ficha    { grid-template-columns:1fr; }
  .ficha-lateral { position:static; }
  .painel   { grid-template-columns:1fr; }
  .painel-nav { position:static; }
  .rodape-grelha { grid-template-columns:repeat(3,1fr); }
  .passos   { grid-template-columns:repeat(2,1fr); }
}
@media(max-width:768px){
  .nav-principal { display:none; }
  .hamburger     { display:flex; }
  .grelha-imoveis,.grelha-imoveis.g3,.grelha-imoveis.g2 { grid-template-columns:repeat(2,1fr); }
  .cartao-h      { flex-direction:column; }
  .cartao-h .cartao-media { width:100%; aspect-ratio:4/3; }
  .galeria       { grid-template-columns:1fr 1fr; height:300px; }
  .galeria-principal { grid-column:span 2; grid-row:span 1; }
  .caracteristicas,.extras-lista { grid-template-columns:1fr; }
  .pesquisa-corpo { flex-direction:column; }
  .pesquisa-campo,.pesquisa-btn { width:100%; }
  .distritos     { grid-template-columns:repeat(2,1fr); }
  .rodape-grelha { grid-template-columns:repeat(2,1fr); }
}
@media(max-width:520px){
  .grelha-imoveis,.grelha-imoveis.g3,.grelha-imoveis.g2 { grid-template-columns:1fr; }
  .distritos     { grid-template-columns:1fr; }
  .passos        { grid-template-columns:1fr; }
  .rodape-grelha { grid-template-columns:1fr; }
  .form-linha,.form-linha3 { grid-template-columns:1fr; }
  .ficha-preco   { font-size:1.6rem; }
  .container     { padding:0 16px; }
}

/* ── Fotos remotas: esconder a faixa inferior com a marca de água ───────
   Usado quando FOTOS_REMOTAS está ativo e as imagens vêm da origem.
   12% é a altura que a marca ocupa nas imagens grandes — a 6% ficava à
   vista na lightbox, que é onde a foto aparece maior.
   Caixas com object-fit:cover ampliam a partir do topo; onde a imagem
   aparece inteira (lightbox, planta) usa-se clip-path.               */
/* Cada célula da galeria tem de recortar a sua imagem: com a ampliação,
   a foto transbordava para fora da célula e a camada escura do "+N fotos"
   deixava de coincidir com o que se via. */
.galeria > div { position: relative; overflow: hidden; }
/* O hero é fundo absoluto: mudar para relative tirava-o do sítio e a imagem
   passava a empurrar a página toda para baixo. Só se acrescenta o recorte. */
.hero-fundo { overflow: hidden; }

/* Simulador de crédito na coluna lateral: caixa própria, campos empilhados
   porque 370px não dão para três lado a lado. */
.simulador-lateral { background:var(--branco); border:1px solid var(--borda);
  border-radius:var(--r-md); box-shadow:var(--sombra-sm); padding:18px; margin-top:14px; }
.simulador-lateral h4 { margin-bottom:14px; }
.simulador-lateral .sim-campos { grid-template-columns:1fr 1fr; gap:10px; }
.simulador-lateral .sim-campos .form-campo:first-child { grid-column:span 2; }
.simulador-lateral .form-campo { margin-bottom:10px; }
.simulador-lateral .form-control { padding:9px 12px; font-size:.875rem; }
.simulador-lateral .form-label { font-size:.78rem; }

.cartao-media img,
.galeria img,
.galeria-principal img,
.hero-fundo img,
.imovel-foto img { transform-origin: top center; transform: scale(1.14); }
/* a regra .cartao:hover tem mais peso do que .cartao-media:hover — tem de ser
   escrita da mesma forma, senão no hover a marca de água volta a aparecer */
.cartao:hover .cartao-media img { transform: scale(1.19); }

.lightbox img,
#lightboxImg,
.foto-inteira img,
.planta img { clip-path: inset(0 0 12% 0); }

/* Miniaturas nas listas do painel, mostradas inteiras em caixas pequenas */
.painel img[src*="olxcdn"],
.painel img[src*="apollo"] { clip-path: inset(0 0 12% 0); }

/* ── Listagem de administração ──────────────────────────────────────────
   Filtros que cabem em qualquer largura, atalhos para o que está mal, e
   marcação a vermelho dos campos em falta — a lista serve para encontrar
   problemas, não só para folhear. */
.admin-atalhos { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:14px; }
.admin-filtros { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:8px; margin-bottom:18px; align-items:center; }
.admin-filtros .btn { white-space:nowrap; }
.tabela-admin td { vertical-align:middle; }
.tabela-admin tbody tr:hover td { background:var(--amarelo-lt); }
.aviso { color:var(--vermelho); font-weight:700; }
@media(max-width:760px) {
  .admin-filtros { grid-template-columns:1fr 1fr; }
  .tabela-admin { display:block; overflow-x:auto; }
}

/* Formulários do admin: largura de leitura, sem esticar por todo o ecrã */
.admin-form { max-width:820px; background:#fff; border:1px solid var(--borda-lt);
  border-radius:var(--r-md); padding:22px; }
.admin-form .form-linha,
.admin-form .form-linha3 { margin-bottom:0; }

/* ── Caixa de leads ─────────────────────────────────────────────────────
   Cada lead é um cartão com tudo à vista: quem, o quê, há quanto tempo, e
   o botão que a transforma em cliente. */
.leads { display:flex; flex-direction:column; gap:12px; }
.lead { background:#fff; border:1px solid var(--borda-lt); border-radius:var(--r-md); padding:16px 18px; }
.lead-nova { border-left:3px solid var(--amarelo); }
.lead-topo { display:flex; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.lead-texto { font-size:.88rem; color:var(--texto-2); line-height:1.6; margin-top:10px;
  background:var(--fundo); border-radius:var(--r); padding:10px 12px; }
.lead-accoes { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:12px;
  padding-top:12px; border-top:1px solid var(--borda-lt); }

/* ══════════════════════════════════════════════════════════
   ADMIN — fila "precisa de ti" e tendências
   ══════════════════════════════════════════════════════════ */
.fila-atencao { background:#fff; border:1px solid var(--borda-lt); border-radius:var(--r-md); padding:18px 20px; margin-bottom:24px; }
.fila-titulo { font-size:1rem; font-weight:800; color:var(--navy); display:flex; align-items:center; gap:8px; margin-bottom:12px; }
.fila-contador { background:var(--vermelho); color:#fff; font-size:.72rem; border-radius:10px; padding:2px 8px; }
.fila-vazia { color:#0a5c30; background:var(--verde-bg); border-radius:var(--r-sm); padding:10px 14px; font-size:.88rem; }
.fila-lista { display:flex; flex-direction:column; gap:8px; }
.fila-item a { display:flex; align-items:center; gap:14px; padding:11px 14px; border-radius:var(--r-sm); border:1px solid var(--borda-lt); border-left-width:4px; color:var(--texto); transition:background var(--tr); }
.fila-item a:hover { background:var(--fundo); }
.fila-critico a { border-left-color:var(--vermelho); }
.fila-aviso a   { border-left-color:var(--amarelo-dk); }
.fila-info a    { border-left-color:var(--teal); }
.fila-qtd { min-width:42px; text-align:center; font-weight:800; font-size:1.05rem; color:var(--navy); }
.fila-critico .fila-qtd { color:var(--vermelho); }
.fila-texto { flex:1; display:flex; flex-direction:column; gap:2px; }
.fila-texto strong { font-size:.9rem; }
.fila-texto small { font-size:.78rem; color:var(--texto-2); }
.fila-seta { color:var(--texto-3); font-size:1.3rem; }
.tendencias { display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:14px; }
.tendencia { background:#fff; border:1px solid var(--borda-lt); border-radius:var(--r-md); padding:14px 16px; }
.tendencia-topo { display:flex; justify-content:space-between; align-items:baseline; margin-bottom:8px; }
.tendencia-rotulo { font-size:.78rem; color:var(--texto-2); font-weight:600; }
.tendencia-total { font-size:1.15rem; font-weight:800; color:var(--navy); }
.tendencia-svg { width:100%; height:56px; display:block; }
.tendencia-svg rect { fill:var(--teal-lt); opacity:.55; }
.tendencia-svg rect.hoje { fill:var(--teal); opacity:1; }
.tendencia-pe { font-size:.72rem; color:var(--texto-3); margin-top:6px; }
@media (max-width:640px) { .fila-item a { gap:10px; padding:10px; } .fila-qtd { min-width:30px; } }
.pipeline-cartao { cursor:pointer; }
.pipeline-cartao.parado { border-left:3px solid var(--amarelo-dk); }
.pipeline-cartao-parado { font-size:.72rem; color:var(--laranja); margin-top:4px; font-weight:600; }
.crm-accoes { white-space:nowrap; text-align:right; }
.crm-accoes form { display:inline; }
.separadores { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:16px; }
.separadores a { padding:6px 12px; border-radius:20px; border:1px solid var(--borda); font-size:.82rem; font-weight:600; color:var(--texto-2); }
.separadores a.activo { background:var(--navy); color:#fff; border-color:var(--navy); }
/* Admin — acções em lote */
.lote-barra { display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:10px 14px; margin-bottom:10px;
              background:var(--fundo); border:1px solid var(--borda-lt); border-radius:var(--r-md); font-size:.85rem; opacity:.55; }
.lote-barra.activa { opacity:1; background:var(--amarelo-lt); border-color:#f5e3ae; position:sticky; top:calc(var(--header-h) + 8px); z-index:5; }
.lote-barra select { max-width:190px; padding:6px 10px; }
.lote-barra #loteN { font-weight:700; color:var(--navy); margin-right:auto; }
.lote-todos { display:flex; align-items:center; gap:6px; font-weight:600; color:var(--laranja); }
.tabela-scroll { overflow-x:auto; border-radius:var(--r-md); }
.tabela-admin .btn-sm { padding:6px 10px; }
