/* ============================================================
   Andrade Matte Imoveis — layout base
   Fundacao visual (tokens + componentes) portada do prototipo
   andrade-matte-prototipo/assets/css/style-v8.css para o site
   real (PHP + Foundation 5). Carregado por ultimo no <head>
   para vencer a cascata do Foundation sem !important em cadeia.
   ============================================================ */

:root {
	--red: #de1f26;
	--red-dark: #a8151b;
	--red-tint: #fdeceb;

	--blue: #7c9cb4;
	--blue-dark: #5f7d93;
	--blue-tint: #eef3f6;

	--ink: #263140;
	--ink-2: #44515f;
	--gray-500: #8b96a3;
	--gray-300: #dde2e7;
	--border: #e6e9ed;
	--bg: #ffffff;
	--bg-alt: #f7f9fa;

	--font-heading: 'Baloo 2', 'Nunito', sans-serif;
	--font-body: 'Nunito', Arial, sans-serif;
	--font-script: 'Caveat', cursive;

	--r-sm: 8px;
	--r-md: 14px;
	--r-lg: 22px;
	--r-xl: 30px;
	--r-pill: 999px;

	--shadow-sm: 0 3px 12px rgba(38,49,64,.07);
	--shadow-md: 0 12px 30px rgba(38,49,64,.10);
	--shadow-lg: 0 26px 56px rgba(38,49,64,.14);

	--container: 1240px;
}

body {
	background: var(--bg);
	color: var(--ink-2);
	font-family: var(--font-body);
	/* PWA instalado (iOS, status bar black-translucent + viewport-fit=cover): sem isso o
	   topo do header desenha por baixo do relogio/bateria. Fora do modo standalone o inset e 0. */
	padding-top: env(safe-area-inset-top);
}

#main h1, #main h2, #main h3, #main h4,
#header h1, #header h2, #header h3 {
	font-family: var(--font-heading);
	font-weight: 700;
}

.layout-base-container { max-width: var(--container); margin: 0 auto; padding: 0 24px; }

.txt-red { color: var(--red); }
.txt-blue { color: var(--blue-dark); }

/* ---------------- Buttons ---------------- */
.btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	font-family: var(--font-heading); font-weight: 700; font-size: .92rem;
	padding: 13px 24px; border-radius: var(--r-md); border: 1.5px solid transparent;
	transition: all .2s ease; white-space: nowrap; text-decoration: none;
}
.btn svg { width: 17px; height: 17px; flex: none; }
.btn-red { background: var(--red); color: #fff; }
.btn-red:hover { background: var(--red-dark); color: #fff; transform: translateY(-2px); box-shadow: var(--shadow-md); }
.btn-blue { background: var(--blue); color: #fff; }
.btn-blue:hover { background: var(--blue-dark); color: #fff; transform: translateY(-2px); box-shadow: var(--shadow-md); }
.btn-ink { background: var(--ink); color: #fff; }
.btn-ink:hover { background: #17202a; color: #fff; transform: translateY(-2px); }
.btn-outline-red { background: #fff; color: var(--ink); border-color: var(--red); }
.btn-outline-red:hover { background: var(--red); color: #fff; }
.btn-pill-nav { background: #fff; color: var(--ink); border: 1.5px solid var(--red); border-radius: var(--r-pill); padding: 11px 20px; font-size: .84rem; }
.btn-pill-nav.blue { border-color: var(--ink-2); }
.btn-pill-nav:hover { background: var(--red-tint); color: var(--ink); }
.btn-sm { padding: 10px 18px; font-size: .82rem; }
.btn-block { width: 100%; }

/* ---------------- Header (layout base) ---------------- */
.site-header { position: relative; z-index: 200; padding: 14px 0; background: #fff; }
.site-header .layout-base-container { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.brand img { height: 80px; width: auto; }
.main-nav { display: flex; align-items: center; gap: 10px; }
.header-actions { display: flex; align-items: center; gap: 12px; }
.icon-btn { width: 40px; height: 40px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: transparent; color: var(--red); border: none; transition: background .2s ease; cursor: pointer; flex: none; }
.icon-btn:hover { background: var(--red-tint); }
.icon-btn svg { width: 22px; height: 22px; flex: none; }

/* lupa que abre/fecha a busca no mobile: fica do lado do logo, dentro do header (que e
   position:relative no desktop e fixed no mobile — os dois servem de referencia pro absolute).
   !important necessario: a classe "hidden-for-medium-up" (Foundation, controla a visibilidade
   por breakpoint) forca "position: static !important" quando o elemento fica visivel. */
.search-toggle-mobile { position: absolute !important; left: 16px; top: 50%; transform: translateY(-50%); }

/* ---------------- Hero + busca (segunda linha do header, todas as paginas) ---------------- */
/* especificidade igual a "#header #lineTwo" (css/estruturacao.css) para vencer o banner.jpg antigo */
#header #lineTwo.layout-base-hero { background: var(--bg-alt) none; padding: 30px 0 40px; }

.hero-title { text-align: center; padding: 6px 0 24px; }
.hero-title h1 { font-size: clamp(1.5rem, 3vw, 2.2rem); margin: 0; color: var(--ink); }
.hero-title h1 b { color: var(--red); }

/* sem max-width propria: acompanha a largura do .layout-base-container pai, alinhando com
   o carrossel e os cards de imoveis logo abaixo (antes ficava ~100px mais estreita) */
.search-widget { position: relative; margin: 0 auto; background: #fff; border-radius: var(--r-xl); box-shadow: var(--shadow-lg); border: 1px solid var(--border); overflow: visible; }

.search-tabs { display: flex; gap: 10px; padding: 18px 24px 0; border-bottom: 1px solid var(--border); flex-wrap: wrap; }
.search-tabs .layout-base-tab { cursor: pointer; user-select: none; font-family: var(--font-heading); font-weight: 700; font-size: .95rem; color: var(--ink-2); padding: 0 6px 14px; border-bottom: 3px solid transparent; transition: color .2s ease, border-color .2s ease; }
.search-tabs .layout-base-tab.is-active { color: var(--red); border-color: var(--red); }

/* invólucro do #busca (search.php) com visual do layout base, sem alterar IDs/nomes/logica */
#busca { padding: 22px 28px 26px; }
#busca .row { display: block; }

.search-row { display: flex; align-items: flex-end; gap: 20px; flex-wrap: wrap; border-bottom: 1px solid var(--border); padding-bottom: 20px; margin-bottom: 18px; }
.search-field { flex: 1; min-width: 160px; display: flex; align-items: center; gap: 10px; }
.search-field .ic { color: var(--red); flex: none; }
.search-field .ic svg { width: 20px; height: 20px; }
.search-field .field-body { display: flex; flex-direction: column; gap: 3px; width: 100%; }
.search-field label { font-family: var(--font-heading); font-weight: 700; font-size: .82rem; color: var(--ink); margin: 0; }
.search-divider { width: 1px; align-self: stretch; background: var(--border); }

/* selects/inputs de texto dentro dos search-field ficam "sem caixa", como no layout base */
.search-field select,
.search-field input[type="text"] {
	border: none !important; background: transparent !important; padding: 0 !important;
	font-family: var(--font-body); font-size: .92rem; color: var(--blue-dark);
	box-shadow: none !important; height: auto !important; margin: 0 !important;
}
.search-field input[type="text"]::placeholder { color: var(--gray-500); }
.search-field select:focus, .search-field input[type="text"]:focus { outline: none; }

/* select nativo (Cidade) com seta propria, no lugar da seta do sistema operacional */
.search-field select {
	appearance: none; -webkit-appearance: none; -moz-appearance: none;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%238b96a3' stroke-width='1.6'/></svg>") !important;
	background-repeat: no-repeat !important; background-position: right center !important;
	padding-right: 18px !important; cursor: pointer;
}

/* botoes-gatilho de Tipo/Bairro (abrem painel lateral) parecem um campo, nao um botao vermelho */
.botao_tipo_imovel, .botao_bairro_imovel, .botao_cidade_imovel {
	background: transparent !important; border: none !important; box-shadow: none !important;
	text-align: left !important; padding: 0 !important; height: auto !important; margin: 0 !important;
	font-family: var(--font-body) !important; font-size: .92rem !important; color: var(--blue-dark) !important;
	font-weight: 400 !important;
}

/* Quartos: chips de seleção única, visual identico ao prototipo V8 */
.dorm-chips { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.dorm-chips .lbl { display: flex; align-items: center; gap: 8px; font-family: var(--font-heading); font-weight: 700; color: var(--ink); font-size: .92rem; }
.dorm-chips .lbl svg { width: 20px; height: 20px; color: var(--red); flex: none; }
.dorm-chips .num {
	position: relative; width: 34px; height: 34px; border-radius: var(--r-sm);
	border: 1.5px solid var(--gray-300); display: flex; align-items: center; justify-content: center;
	font-family: var(--font-body); font-weight: 700; color: var(--ink-2); font-size: .88rem;
	cursor: pointer; user-select: none; transition: border-color .15s ease, color .15s ease;
}
.dorm-chips .num input { position: absolute; opacity: 0; width: 0; height: 0; }
.dorm-chips .num:has(input:checked) { border-color: var(--red); color: var(--red); }
.dorm-chips .num:has(input:focus-visible) { outline: 2px solid var(--blue); outline-offset: 2px; }

/* Aceita Financiamento: chips Sim/Não, mesmo padrao visual dos chips de Quartos */
.fin-chips { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.fin-chips .lbl { display: flex; align-items: center; gap: 8px; font-family: var(--font-heading); font-weight: 700; color: var(--ink); font-size: .92rem; }
.fin-chips .lbl svg { width: 20px; height: 20px; color: var(--red); flex: none; }
.fin-chips .opt {
	position: relative; padding: 6px 16px; border-radius: var(--r-pill);
	border: 1.5px solid var(--gray-300); display: flex; align-items: center; justify-content: center;
	font-family: var(--font-body); font-weight: 700; color: var(--ink-2); font-size: .88rem;
	cursor: pointer; user-select: none; transition: border-color .15s ease, color .15s ease;
}
.fin-chips .opt input { position: absolute; opacity: 0; width: 0; height: 0; }
.fin-chips .opt.opt-sim:has(input:checked) { border-color: var(--red); color: var(--red); }
.fin-chips .opt.opt-nao:has(input:checked) { border-color: var(--blue); color: var(--blue-dark); }
.fin-chips .opt:has(input:focus-visible) { outline: 2px solid var(--blue); outline-offset: 2px; }

/* codigo + acao de busca, ultima linha */
.search-bottom { display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
#col_Search { margin-left: auto; }

/* checkbox "Filtros": revela o bloco .filters-extra (Tipo/Cidade/Bairro/Endereco/Quartos/Financiamento/Valor) */
.filters-check { display: flex; align-items: center; gap: 10px; font-family: var(--font-heading); font-weight: 700; color: var(--ink-2); font-size: .92rem; cursor: pointer; user-select: none; }
.filters-check input { width: 20px; height: 20px; accent-color: var(--red); cursor: pointer; }
.filters-extra { margin-top: 20px; }
/* cabecalho/rodape/fundo da bottom sheet: so existem visualmente no mobile (ver breakpoint abaixo) */
.filters-sheet-head, .filters-sheet-foot, .filters-sheet-backdrop { display: none; }
#busca button.alert, #busca .button.alert {
	border-radius: var(--r-md) !important; background-color: var(--blue) !important; border-color: var(--blue) !important;
	color: #fff; font-family: var(--font-heading); font-weight: 700; box-shadow: none; padding: 0.9rem 1.8rem !important;
}
#busca button.alert:hover, #busca .button.alert:hover { background-color: var(--blue-dark) !important; border-color: var(--blue-dark) !important; }

/* contador ao vivo (filtro_moderno.js): estado enquanto busca o total e quando a busca nao encontra nada */
#busca button.alert.is-counting { opacity: .7; }
#busca button.alert.sem-resultado, #busca .button.alert.sem-resultado {
	background-color: var(--gray-500) !important; border-color: var(--gray-500) !important;
}

/* paineis de Tipo/Bairro (popover): mecanismo em checkbox_filtro.js, visual em checkbox_filtro.css */

/* dual-range de valor, visual identico ao prototipo V8 */
.range-value { display: flex; align-items: center; gap: 16px; flex: 1; min-width: 260px; }
.range-value .lbl { display: flex; flex-direction: column; gap: 2px; font-family: var(--font-heading); font-weight: 700; color: var(--ink); font-size: .88rem; }
.range-value .lbl span.sub { font-family: var(--font-body); font-weight: 400; font-size: .76rem; color: var(--gray-500); }
.range-track-wrap { position: relative; flex: 1; height: 30px; min-width: 200px; }
.range-end { font-size: .8rem; color: var(--ink-2); font-weight: 700; white-space: nowrap; }
.range-track-wrap .track { position: absolute; top: 13px; left: 0; right: 0; height: 4px; background: var(--blue); border-radius: var(--r-pill); }
.range-track-wrap .fill { position: absolute; top: 13px; height: 4px; background: var(--red); border-radius: var(--r-pill); }
.range-track-wrap input[type="range"] { position: absolute; top: 0; left: 0; width: 100%; height: 30px; margin: 0; background: transparent; -webkit-appearance: none; appearance: none; pointer-events: none; }
.range-track-wrap input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; pointer-events: auto; width: 22px; height: 22px; border-radius: 50%; background: var(--red); border: 3px solid #fff; box-shadow: 0 2px 8px rgba(0,0,0,.25); cursor: pointer; margin-top: 4px; }
.range-track-wrap input[type="range"]::-moz-range-thumb { pointer-events: auto; width: 22px; height: 22px; border-radius: 50%; background: var(--red); border: 3px solid #fff; box-shadow: 0 2px 8px rgba(0,0,0,.25); cursor: pointer; }
.range-track-wrap input[type="range"]::-moz-range-track { background: transparent; height: 4px; }

/* ---------------- destaques (carrossel reestilizado) ---------------- */
.destaques-layout-base { max-width: var(--container); margin: 34px auto 0; padding: 0 24px; }
.destaques-layout-base #wowslider-container1 { border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--shadow-md); }

/* ---------------- categorias / listas de imoveis ---------------- */
/* cada categoria vira um cartao com borda nos 4 lados, mesma largura do carrossel/faixa
   azul e empilhados com espaco entre si — igual ao carrossel, so o rodape fica full-width.
   -48px = os 24px de padding de cada lado que ".destaques-layout-base" aplica ao redor do
   #wowslider-container1, entao a caixa visivel do carrossel fica menor que --container. */
.section {
	max-width: calc(var(--container) - 48px); margin: 28px auto 0; padding: 40px 32px;
	background: #fff; border: 1px solid var(--border); border-radius: var(--r-lg); box-shadow: var(--shadow-sm);
}
/* o .layout-base-container generico (max-width+padding) fica redundante aqui pois quem
   define a largura/respiro agora e a propria .section */
.section > .layout-base-container { max-width: none; padding: 0; margin: 0; }
/* financiamento: mesmo tamanho/alinhamento dos demais blocos, mas sem virar cartao
   com borda — o proprio .finance-split ja tem seu visual (fundo azul + foto).
   padding 0 (sem inset extra): a largura de ".section" ja e a mesma do carrossel,
   entao o .finance-split fica com a borda alinhada aos demais blocos */
.section.section-bare { background: none; border: none; box-shadow: none; padding: 0; margin-bottom: 28px; }
.cat-section-head { margin-bottom: 26px; }
.cat-section-head h2 { font-size: clamp(1.4rem, 2.2vw, 1.9rem); }
.cat-section-head h2 b { font-weight: 800; }
.cat-section-head h2 b.red { color: var(--red); }
.cat-section-head h2 b.blue { color: var(--blue-dark); }

/* cabecalho da listagem de resultados (comprar/alugar/temporada/busca) */
.results-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 26px; }
.results-head .cat-section-head { margin-bottom: 0; }
.results-head h1 span { font-weight: 600; color: var(--gray-500); font-size: .6em; text-transform: none; }
.results-sort { display: flex; align-items: center; gap: 14px; font-size: .86rem; font-weight: 600; color: var(--ink-2); white-space: nowrap; }
.results-sort a { color: var(--red); font-weight: 700; text-decoration: none; }
.results-sort a:hover { text-decoration: underline; }

.property-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px; }
/* poucos cards (1-3): evita a sensacao de layout quebrado com os cards colados a esquerda
   e um vazio enorme ao lado. Navegadores sem :has() so mantem o alinhamento padrao.
   So a partir de 1050px: 3 colunas fixas de 280px + gaps de 40px precisam de ~920px de
   largura util (com folga de seguranca). Em telas menores (celular e tablet) isso nao
   cabe e a especificidade do :has() venceria as regras de 1-2 colunas do mobile/tablet
   mais abaixo, empurrando os cards pra fora da tela — entao aqui a gente so liga o
   auto-flow:column quando ha espaco garantido pra ele. */
@media (min-width: 1050px) {
	.property-grid:has(.pcard:nth-child(1):nth-last-child(-n+3)) {
		grid-template-columns: none;
		grid-auto-flow: column;
		grid-auto-columns: 280px;
		justify-content: center;
		gap: 40px;
	}
}
.property-grid:has(.pcard:nth-child(1):nth-last-child(-n+3)) .pcard { width: 280px; }

/* estado vazio (categoria sem imoveis cadastrados no momento) */
.property-empty {
	grid-column: 1 / -1; display: flex; flex-direction: column; align-items: center; gap: 12px;
	text-align: center; padding: 46px 24px; background: var(--bg-alt); border: 1.5px dashed var(--gray-300);
	border-radius: var(--r-lg); color: var(--gray-500);
}
.property-empty .ic { width: 44px; height: 44px; border-radius: 50%; background: #fff; box-shadow: var(--shadow-sm); display: flex; align-items: center; justify-content: center; color: var(--red); }
.property-empty .ic svg { width: 22px; height: 22px; }
.property-empty strong { font-family: var(--font-heading); color: var(--ink); font-size: .98rem; }
.property-empty span { font-size: .86rem; max-width: 360px; }

.pcard {
	display: flex; flex-direction: column;
	border: 1px solid var(--border); border-radius: var(--r-lg);
	padding: 14px; background: #fff; box-shadow: var(--shadow-sm);
	transition: box-shadow .2s ease, transform .2s ease;
}
.pcard:hover { box-shadow: var(--shadow-md); transform: translateY(-3px); }
.pcard .media { position: relative; border-radius: var(--r-md); overflow: hidden; aspect-ratio: 4/3; background: var(--bg-alt); }
.pcard .media img { width: 100%; height: 100%; object-fit: cover; }
.pcard .media .cod { position: absolute; right: 0; bottom: 0; background: var(--red); color: #fff; font-family: var(--font-heading); font-weight: 700; font-size: .72rem; padding: 6px 12px; border-radius: 8px 0 0 0; }
.pcard .media .cod.blue { background: var(--blue-dark); }
.pcard .top-row { display: flex; justify-content: space-between; align-items: flex-start; margin-top: 12px; }
.pcard .type { font-family: var(--font-heading); font-weight: 700; color: var(--ink); font-size: .96rem; }
.pcard .fav { color: var(--red); flex: none; }
.pcard .fav svg { width: 19px; height: 19px; }
.pcard .loc { font-size: .78rem; font-weight: 700; color: var(--gray-500); letter-spacing: .02em; margin-top: 2px; text-transform: uppercase; }
.pcard .specs { display: flex; gap: 16px; margin-top: 10px; flex-wrap: wrap; }
.pcard .specs span { display: flex; align-items: center; gap: 6px; font-size: .78rem; color: var(--ink-2); font-weight: 700; }
.pcard .specs svg { width: 16px; height: 16px; color: var(--red); }
.pcard .bottom-row { display: flex; align-items: center; justify-content: space-between; margin-top: 14px; gap: 10px; }
.pcard .price { font-family: var(--font-heading); font-weight: 800; color: var(--ink); font-size: 1.05rem; }
.pcard .price span { font: inherit; color: inherit; }

.section-foot { display: flex; justify-content: center; margin-top: 34px; }
.section-foot .btn.is-loading { opacity: .6; pointer-events: none; }

/* ---------------- pagina de detalhe do imovel (dados_imovel.php) ---------------- */
.detail-layout-base { padding: 26px 24px 60px; }
.detail-topbar { display: flex; align-items: center; justify-content: space-between; padding: 0 0 18px; }
.detail-tab { font-family: var(--font-heading); font-weight: 700; color: var(--red); border-bottom: 3px solid var(--red); padding-bottom: 8px; font-size: 1.05rem; }
.code-badge { background: var(--red); color: #fff; font-family: var(--font-heading); font-weight: 700; font-size: .82rem; padding: 10px 20px; border-radius: var(--r-pill); }

.gallery-layout-base { border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--shadow-md); background: var(--bg-alt); margin-bottom: 34px; }

.detail-grid { display: grid; grid-template-columns: 1fr 380px; gap: 44px; align-items: start; }
.detail-title-row { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; }
.detail-title-row h1 { color: var(--red); font-size: 1.5rem; margin-bottom: 6px; }
.detail-title-row .fav { color: var(--red); flex: none; margin-top: 4px; }
.detail-title-row .fav svg { width: 22px; height: 22px; }

.detail-specs { display: flex; gap: 30px; flex-wrap: wrap; margin: 20px 0 22px; padding: 18px 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.detail-specs span { display: flex; align-items: center; gap: 10px; font-size: .86rem; font-weight: 700; color: var(--ink-2); }
.detail-specs svg { width: 22px; height: 22px; color: var(--red); flex: none; }

.componentes-box { background: var(--blue-dark); border-radius: var(--r-lg); padding: 26px 30px; margin: 26px 0; color: #fff; }
.componentes-box h2, .componentes-box h3 { color: #fff; margin-bottom: 16px; }
/* quando .componentes-box e um <details> (dados_imovel.php): remove o marcador nativo e diz
   um +/- proprio no titulo. Nao afeta outros usos do bloco (ex: sobre.php), que nao tem <summary>. */
.componentes-box summary { cursor: pointer; list-style: none; }
.componentes-box summary::-webkit-details-marker { display: none; }
.componentes-box summary h3 { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.componentes-box summary h3::after { content: "+"; font-size: 1.3rem; font-weight: 700; flex: none; }
.componentes-box[open] summary h3::after { content: "\2013"; }
.componentes-box ul { display: flex; flex-direction: column; gap: 10px; list-style: none; margin: 0; padding: 0; }
.componentes-box li { display: flex; justify-content: space-between; font-size: .92rem; border-bottom: 1px solid rgba(255,255,255,.2); padding-bottom: 8px; }
.componentes-box li:last-child { border-bottom: none; padding-bottom: 0; }

.map-embed { border-radius: var(--r-lg); overflow: hidden; height: 260px; background: var(--bg-alt); border: 1px solid var(--border); }

.info-card-v6 { background: #fff; border: 1px solid var(--border); border-radius: var(--r-lg); box-shadow: var(--shadow-md); padding: 26px 28px; }
.info-row { display: flex; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--border); font-size: .88rem; }
.info-row:last-child { border-bottom: none; }
.info-row span:first-child { color: var(--gray-500); font-weight: 700; flex: none; }
.info-row span:last-child { color: var(--ink); font-weight: 800; text-align: right; }

.price-bar { background: var(--red); color: #fff; text-align: center; font-family: var(--font-heading); font-weight: 700; padding: 14px; border-radius: var(--r-md); margin: 20px 0 6px; }
.price-bar h2 { color: #fff; font-size: .95rem; margin: 0; }
.price-bar h2 span { font: inherit; color: inherit; }
.price-bar h2 + br + h2 { margin-top: 10px; }
.info-card-v6 #mensagem { font-size: .74rem; color: var(--gray-500); text-align: center; margin-bottom: 4px; }

.btn-whatsapp { background: #25D366; color: #fff; }
.btn-whatsapp:hover { background: #1fb457; color: #fff; }
.btn-whatsapp svg { width: 18px; height: 18px; }

/* barra de acao fixa (Ligar/WhatsApp): existe no markup em qualquer largura, mas so aparece
   no mobile (ver breakpoint abaixo) -- no desktop a coluna lateral ja cobre essas acoes */
.detail-cta-bar { display: none; }

@media (max-width: 860px) {
	.detail-grid { grid-template-columns: 1fr; }
	.detail-topbar { flex-wrap: wrap; gap: 10px; }
	.detail-layout-base { padding: 20px 16px calc(90px + env(safe-area-inset-bottom)); }

	/* WhatsApp inline da coluna lateral fica redundante com a barra fixa abaixo */
	.detail-wpp-inline { display: none; }

	.detail-cta-bar {
		display: flex; gap: 10px;
		position: fixed; left: 0; right: 0; z-index: 840;
		bottom: calc(58px + env(safe-area-inset-bottom));
		padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
		background: #fff; border-top: 1px solid var(--border);
		box-shadow: 0 -6px 20px rgba(38,49,64,.10);
	}
	.detail-cta-btn {
		flex: 1; display: flex; align-items: center; justify-content: center; gap: 8px;
		padding: 13px; border-radius: var(--r-md); font-family: var(--font-heading); font-weight: 700;
		font-size: .84rem; text-decoration: none; border: 1.5px solid transparent;
	}
	.detail-cta-btn svg { width: 17px; height: 17px; flex: none; }
	.detail-cta-btn.outline { background: #fff; border-color: var(--ink); color: var(--ink); }
	.detail-cta-btn.whatsapp { background: #25D366; color: #fff; }
}

/* ---------------- faixa curva azul ---------------- */
/* mesma largura/moldura do carrossel (antes esticava de ponta a ponta da tela).
   -48px = os 24px de padding de cada lado que ".destaques-layout-base" aplica ao redor do
   #wowslider-container1, entao a caixa visivel do carrossel fica menor que --container. */
.wave-banner {
	position: relative; max-width: calc(var(--container) - 48px); margin: 28px auto 0; padding: 0;
	background: var(--blue); color: #fff; overflow: hidden; border-radius: var(--r-lg); box-shadow: var(--shadow-md);
}
.wave-banner svg.wave-top { position: absolute; top: -1px; left: 0; width: 100%; height: auto; display: block; }
.wave-inner { position: relative; z-index: 2; display: grid; grid-template-columns: 1fr 1fr; align-items: center; min-height: 300px; }
.wave-text { padding: 60px 40px 60px 0; }
.wave-text .t1 { font-family: var(--font-heading); font-weight: 700; font-size: 1.5rem; color: #fff; margin-bottom: 2px; }
.wave-text .t2 { font-family: var(--font-script); font-size: 3.2rem; color: #fff; line-height: 1; }
.wave-photo { height: 100%; min-height: 300px; overflow: hidden; }
.wave-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* ---------------- explore / conteudo ---------------- */
.explore-head h2 { margin-bottom: 6px; }
.explore-head p { color: var(--blue-dark); font-weight: 700; margin: 0; }
.reel-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; margin: 30px 0 40px; }
.reel-card { position: relative; aspect-ratio: 9/14; border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--shadow-sm); background: var(--bg-alt); }
.reel-card img { width: 100%; height: 100%; object-fit: cover; }
.reel-card .play { position: absolute; top: 14px; right: 14px; width: 34px; height: 34px; border-radius: 50%; background: rgba(255,255,255,.9); display: flex; align-items: center; justify-content: center; color: var(--ink); }
.reel-card .play svg { width: 15px; height: 15px; }
.reel-card .overlay-tag { position: absolute; left: 16px; bottom: 16px; right: 16px; }
.reel-card .overlay-tag strong { display: block; color: #fff; font-family: var(--font-heading); font-size: 1.1rem; line-height: 1.15; text-shadow: 0 2px 8px rgba(0,0,0,.4); }
.reel-card .overlay-tag span.cta { display: inline-block; margin-top: 10px; background: var(--red); color: #fff; font-family: var(--font-heading); font-weight: 700; font-size: .74rem; padding: 8px 14px; border-radius: var(--r-pill); }

.finance-split { display: grid; grid-template-columns: .8fr 1.2fr; border-radius: var(--r-xl); overflow: hidden; box-shadow: var(--shadow-md); }
.finance-split .txt { background: var(--blue); color: #fff; padding: 48px 40px; display: flex; flex-direction: column; justify-content: center; }
.finance-split .txt h3 { color: #fff; font-size: 1.6rem; margin-bottom: 14px; }
.finance-split .txt p { color: rgba(255,255,255,.85); margin-bottom: 22px; }
.finance-split .photo { min-height: 320px; background: var(--bg-alt); }
.finance-split .photo img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* ---------------- conteudo em duas colunas (sobre.php) ---------------- */
.split { display: grid; grid-template-columns: 1fr 1fr; gap: 50px; align-items: center; }
.split-media { position: relative; }
.split-media img { width: 100%; border-radius: var(--r-lg); box-shadow: var(--shadow-md); display: block; }

/* destaque azul com texto (missao, avisos) — reaproveita .componentes-box */
.componentes-box p { color: rgba(255,255,255,.85); margin: 0; line-height: 1.7; }
.componentes-box p + p { margin-top: 12px; }

/* grade de cartoes com icone (missao/visao/valores, diferenciais) */
.feature-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.feature-card { background: #fff; border: 1px solid var(--border); border-radius: var(--r-lg); padding: 28px 24px; box-shadow: var(--shadow-sm); }
.feature-icon { width: 48px; height: 48px; border-radius: var(--r-sm); background: var(--red-tint); color: var(--red); display: flex; align-items: center; justify-content: center; margin-bottom: 16px; }
.feature-icon svg { width: 23px; height: 23px; }
.feature-card h3 { font-size: 1.02rem; margin: 0 0 8px; }
.feature-card p { font-size: .88rem; color: var(--ink-2); margin: 0; line-height: 1.6; }

/* pares de cartoes de acao (financiamento, sobre) */
.cta-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.cta-card {
	position: relative; display: block; padding: 30px 32px; border-radius: var(--r-lg);
	background: var(--ink); color: #fff; text-decoration: none; overflow: hidden;
	transition: transform .2s ease, box-shadow .2s ease;
}
.cta-card.blue { background: var(--blue); }
.cta-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); }
.cta-card .cta-ic {
	width: 46px; height: 46px; border-radius: 50%; background: rgba(255,255,255,.15);
	display: flex; align-items: center; justify-content: center; margin-bottom: 18px;
}
.cta-card .cta-ic svg { width: 22px; height: 22px; color: #fff; }
.cta-card h3 { color: #fff; font-size: 1.15rem; margin: 0 0 8px; }
.cta-card p { color: rgba(255,255,255,.75); font-size: .88rem; margin: 0 0 20px; max-width: 320px; }
.cta-card .cta-arrow { display: inline-flex; align-items: center; gap: 6px; font-family: var(--font-heading); font-weight: 700; font-size: .85rem; color: #fff; }
.cta-card .cta-arrow svg { width: 16px; height: 16px; }

/* ---------------- formulario de contato (contato.php, enviar_imovel.php) ---------------- */
.form-layout { display: grid; grid-template-columns: 1fr 320px; gap: 40px; align-items: start; margin-top: 8px; }

.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px 24px; margin-bottom: 24px; }
.form-field.full { grid-column: 1 / -1; }
.form-field label { display: block; font-family: var(--font-heading); font-weight: 700; font-size: .85rem; color: var(--ink); margin-bottom: 6px; }
.form-field input, .form-field textarea {
	width: 100%; border: 1.5px solid var(--gray-300); border-radius: var(--r-sm); padding: 12px 14px;
	font-family: var(--font-body); font-size: .92rem; color: var(--ink); background: #fff; transition: border-color .2s ease;
}
.form-field input:focus, .form-field textarea:focus { outline: none; border-color: var(--red); }
.form-field textarea { resize: vertical; min-height: 130px; }
.field-error { display: block; margin-top: 6px; font-size: .78rem; color: var(--red); font-weight: 600; }

/* mensagem de sucesso/erro apos o submit */
.form-alert {
	display: flex; align-items: center; justify-content: space-between; gap: 12px;
	padding: 16px 20px; border-radius: var(--r-md); margin-bottom: 20px;
	font-family: var(--font-heading); font-weight: 700; font-size: .9rem; border: 1px solid transparent;
}
.form-alert.success { background: var(--blue-tint); color: var(--blue-dark); border-color: var(--blue); }
.form-alert.error { background: var(--red-tint); color: var(--red-dark); border-color: var(--red); }
.form-alert .close { background: none; border: none; font-size: 1.3rem; line-height: 1; cursor: pointer; color: inherit; padding: 0; }

/* card lateral com dados de atendimento */
.contact-info-card { background: var(--bg-alt); border: 1px solid var(--border); border-radius: var(--r-lg); padding: 26px 24px; }
.contact-info-card h3 { color: var(--ink); font-size: 1.05rem; margin: 0 0 18px; }
.contact-info-card .info-block { margin-bottom: 18px; }
.contact-info-card .info-block:last-child { margin-bottom: 0; }
.contact-info-card .info-block h4 { font-family: var(--font-heading); font-weight: 700; font-size: .78rem; text-transform: uppercase; letter-spacing: .03em; color: var(--red); margin: 0 0 6px; }
.contact-info-card .info-block p { font-size: .86rem; color: var(--ink-2); margin: 0; line-height: 1.7; }
.contact-info-card .info-block a { color: var(--blue-dark); font-weight: 700; text-decoration: none; }
.contact-info-card .info-block a:hover { color: var(--red); }

/* ---------------- Footer (layout base) ---------------- */
.site-footer { background: var(--ink); color: rgba(255,255,255,.68); padding: 60px 0 0; margin-top: 20px; }
.footer-grid { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1.3fr; gap: 40px; padding-bottom: 40px; border-bottom: 1px solid rgba(255,255,255,.1); }
.footer-brand img { height: 54px; max-width: 100%; margin-bottom: 16px; }
.footer-brand p { color: rgba(255,255,255,.55); font-size: .86rem; max-width: 280px; margin: 0; }
.footer-social { display: flex; gap: 10px; margin-top: 16px; }
.footer-social a { width: 36px; height: 36px; border-radius: 50%; background: rgba(255,255,255,.08); display: flex; align-items: center; justify-content: center; transition: background .2s ease; }
.footer-social a:hover { background: var(--red); }
.footer-social svg { width: 15px; height: 15px; color: #fff; }
.site-footer h4 { color: #fff; font-family: var(--font-heading); font-size: .82rem; letter-spacing: .04em; text-transform: uppercase; margin-bottom: 16px; }
.footer-links { display: flex; flex-direction: column; gap: 10px; list-style: none; margin: 0; padding: 0; }
.footer-links a { font-size: .86rem; color: rgba(255,255,255,.6); transition: color .2s ease; text-decoration: none; }
.footer-links a:hover { color: var(--red); }
.footer-contact { list-style: none; margin: 0; padding: 0; }
.footer-contact li { display: flex; gap: 12px; font-size: .86rem; color: rgba(255,255,255,.6); margin-bottom: 15px; align-items: flex-start; }
.footer-contact svg { width: 16px; height: 16px; color: var(--red); flex: none; margin-top: 2px; }
.footer-bottom { padding: 20px 0; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px; font-size: .76rem; color: rgba(255,255,255,.42); }
.footer-credit { display: inline-flex; align-items: center; gap: 6px; color: rgba(255,255,255,.42); text-decoration: none; font-size: .76rem; transition: color .2s ease; }
.footer-credit:hover { color: rgba(255,255,255,.75); }
.footer-credit img { height: 14px; width: auto; filter: invert(1) brightness(1.6); opacity: .85; }

/* ---------------- WhatsApp float ---------------- */
.wpp-float { position: fixed; right: 22px; bottom: 26px; z-index: 500; }
.wpp-float .wpp-toggle { width: 52px; height: 52px; border-radius: 50%; border: none; padding: 0; cursor: pointer; }
.wpp-float .bubble { width: 52px; height: 52px; border-radius: 50%; background: #25D366; display: flex; align-items: center; justify-content: center; box-shadow: var(--shadow-md); transition: transform .2s ease; }
.wpp-float .wpp-toggle:hover .bubble { transform: scale(1.08); }
.wpp-float .bubble svg { width: 26px; height: 26px; fill: #fff; }

.wpp-backdrop { position: fixed; inset: 0; z-index: 950; background: rgba(38,49,64,.6); opacity: 0; visibility: hidden; transition: opacity .2s ease, visibility .2s; }
.wpp-backdrop.is-open { opacity: 1; visibility: visible; }

.wpp-modal {
	position: fixed; z-index: 951; right: 22px; bottom: 92px;
	width: min(360px, calc(100vw - 32px));
	background: #fff; border-radius: var(--r-xl); box-shadow: var(--shadow-lg);
	padding: 32px 26px 26px; text-align: center;
	transform-origin: bottom right;
	opacity: 0; visibility: hidden; transform: translateY(14px) scale(.96);
	transition: opacity .2s ease, transform .2s ease, visibility .2s;
}
.wpp-modal.is-open { opacity: 1; visibility: visible; transform: translateY(0) scale(1); }
.wpp-modal .btn-close {
	position: absolute; top: 12px; right: 12px; height: 30px; padding: 0 14px; border-radius: var(--r-lg); border: 1px solid var(--border);
	background: var(--bg-alt); color: var(--ink-2); font-family: var(--font-body); font-size: .78rem; font-weight: 600;
	display: flex; align-items: center; justify-content: center; cursor: pointer;
	transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.wpp-modal .btn-close:hover, .wpp-modal .btn-close:focus-visible { background: #fdeaea; border-color: #f3b4b4; color: #d33; }
.wpp-modal-icon { display: inline-flex; width: 54px; height: 54px; border-radius: 50%; background: #25D366; align-items: center; justify-content: center; margin-bottom: 14px; }
.wpp-modal-icon svg { width: 28px; height: 28px; }
.wpp-modal h3 { margin: 0 0 6px; font-size: 1.1rem; color: var(--ink); }
.wpp-modal > p { margin: 0 0 20px; font-family: var(--font-body); font-size: .86rem; color: var(--ink-2); }
.wpp-modal-options { display: flex; flex-direction: column; gap: 10px; }
.wpp-modal-option {
	display: flex; align-items: center; justify-content: space-between; gap: 10px;
	padding: 14px 16px; border-radius: var(--r-lg); border: 1.5px solid var(--border);
	text-decoration: none; text-align: left; transition: border-color .15s ease, background .15s ease, transform .15s ease;
}
.wpp-modal-option:hover { border-color: #25D366; background: #f2fbf6; transform: translateY(-1px); }
.wpp-modal-option .opt-text { display: flex; flex-direction: column; gap: 2px; }
.wpp-modal-option .opt-title { font-family: var(--font-heading); font-weight: 700; font-size: .95rem; color: var(--ink); }
.wpp-modal-option .opt-desc { font-family: var(--font-body); font-size: .78rem; color: var(--ink-2); }
.wpp-modal-option svg { width: 18px; height: 18px; flex: none; color: #25D366; }
@media screen and (max-width: 600px) {
	.wpp-float { bottom: 20px; }
	.wpp-modal { right: 16px; bottom: 86px; }
}

/* ---------------- Menu / gaveta de navegacao completa ---------------- */
.nav-toggle { width: 40px; height: 40px; border-radius: 50%; background: transparent; border: none; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; flex: none; }
.nav-toggle svg { width: 24px; height: 24px; stroke: var(--ink); flex: none; }

.mobile-drawer { position: fixed; inset: 0; z-index: 900; visibility: hidden; }
.mobile-drawer.is-open { visibility: visible; }
.mobile-drawer .backdrop { position: absolute; inset: 0; background: rgba(38,49,64,.55); opacity: 0; transition: opacity .25s ease; }
.mobile-drawer.is-open .backdrop { opacity: 1; }
.mobile-drawer .panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(340px, 88%); background: #fff; padding: 26px 24px; transform: translateX(100%); transition: transform .3s ease; overflow-y: auto; }
.mobile-drawer.is-open .panel { transform: translateX(0); }
.mobile-drawer .close-drawer { width: 38px; height: 38px; border-radius: 50%; background: var(--bg-alt); display: flex; align-items: center; justify-content: center; margin-left: auto; margin-bottom: 20px; cursor: pointer; border: none; flex: none; }
.mobile-drawer .close-drawer svg { width: 18px; height: 18px; flex: none; }
.mobile-nav-list { list-style: none; margin: 0; padding: 0; }
.mobile-nav-list > li > a { display: block; padding: 13px 4px; border-bottom: 1px solid var(--border); font-family: var(--font-heading); font-weight: 700; font-size: .95rem; color: var(--ink); text-decoration: none; }
.mobile-nav-list .sub-list { list-style: none; margin: 0 0 6px; padding: 0 0 0 14px; }
.mobile-nav-list .sub-list li a { display: block; padding: 9px 4px; font-family: var(--font-body); font-weight: 600; font-size: .86rem; color: var(--ink-2); text-decoration: none; }
.mobile-nav-list .sub-list li a:hover { color: var(--red); }
.mobile-drawer .drawer-contact { margin-top: 20px; display: flex; flex-direction: column; gap: 10px; }

/* ---------------- Barra inferior estilo app (so mobile, ver breakpoint em Responsive) ---------------- */
.app-bottom-nav {
	display: none; position: fixed; left: 0; right: 0; bottom: 0; z-index: 850;
	background: #fff; border-top: 1px solid var(--border); box-shadow: 0 -6px 20px rgba(38,49,64,.08);
	padding-bottom: env(safe-area-inset-bottom);
}
.bn-tab {
	flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
	padding: 9px 4px 7px; background: none; border: none; cursor: pointer; text-decoration: none;
	font-family: var(--font-body); font-weight: 700; font-size: .66rem; color: var(--gray-500);
	transition: color .15s ease;
}
.bn-tab svg { width: 22px; height: 22px; flex: none; }
.bn-tab.is-active { color: var(--red); }

/* ---------------- Home mobile estilo app (so mobile, ver breakpoint em Responsive) ----------------
   Primeira tela da home no celular: saudacao + busca compacta + grade de atalhos + carrossel de
   destaques, no lugar do hero de busca gigante + secoes empilhadas (que continuam la pro desktop,
   e voltam a aparecer no mobile quando a busca esta expandida). Ver apresentacao/home.php. */
.app-home-mobile { display: none; }

.ah-topbar { display: flex; align-items: flex-start; justify-content: space-between; padding: 4px 16px 2px; }
.ah-hello { font-family: var(--font-body); font-weight: 600; font-size: .8rem; color: var(--ink-2); }
.ah-title { font-family: var(--font-heading); font-weight: 800; font-size: 1.25rem; color: var(--ink); margin: 4px 0 0; }

.ah-search {
	display: flex; align-items: center; gap: 10px; margin: 14px 16px; padding: 13px 10px 13px 16px;
	background: #fff; border-radius: var(--r-pill); box-shadow: var(--shadow-md); text-decoration: none;
}
.ah-search > svg { width: 17px; height: 17px; color: var(--red); flex: none; }
.ah-search span:not(.filt) { flex: 1; font-family: var(--font-body); font-weight: 700; font-size: .82rem; color: var(--gray-500); }
.ah-search .filt { width: 30px; height: 30px; border-radius: 50%; background: var(--blue-tint); display: flex; align-items: center; justify-content: center; flex: none; }
.ah-search .filt svg { width: 14px; height: 14px; color: var(--blue-dark); }

.ah-grid-label {
	padding: 6px 16px 8px; font-family: var(--font-heading); font-weight: 800; font-size: .68rem;
	letter-spacing: .09em; text-transform: uppercase; color: var(--gray-500);
}
.ah-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px 6px; padding: 0 16px 6px; }
.ah-tile { display: flex; flex-direction: column; align-items: center; gap: 6px; text-decoration: none; }
.ah-tile .bub { width: 50px; height: 50px; border-radius: 16px; display: flex; align-items: center; justify-content: center; transition: transform .15s ease; }
.ah-tile .bub svg { width: 22px; height: 22px; }
.ah-tile .bub.r { background: var(--red-tint); color: var(--red-dark); }
.ah-tile .bub.b { background: var(--blue-tint); color: var(--blue-dark); }
.ah-tile:active .bub { transform: scale(.92); }
.ah-tile span { font-family: var(--font-heading); font-weight: 800; font-size: .68rem; line-height: 1.15; color: var(--ink); text-align: center; }

.ah-carousel-label { padding: 20px 16px 8px; font-family: var(--font-heading); font-weight: 800; font-size: .95rem; color: var(--ink); }
.ah-carousel {
	display: flex; gap: 12px; padding: 0 16px 6px; overflow-x: auto;
	scroll-snap-type: x proximity; -webkit-overflow-scrolling: touch; scrollbar-width: none;
}
.ah-carousel::-webkit-scrollbar { display: none; }
.ah-pcard {
	flex: none; width: 150px; scroll-snap-align: start; border-radius: var(--r-md); overflow: hidden;
	background: #fff; box-shadow: var(--shadow-sm); text-decoration: none; color: inherit; display: block;
}
.ah-pcard .ph { height: 96px; position: relative; background: var(--bg-alt); }
.ah-pcard .ph img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ah-pcard .tag {
	position: absolute; bottom: 6px; left: 6px; background: rgba(38,49,64,.82); color: #fff;
	font-family: var(--font-heading); font-weight: 800; font-size: .62rem; padding: 3px 7px; border-radius: 6px;
}
.ah-pcard .bd { padding: 9px 10px 11px; }
.ah-pcard .price { font-family: var(--font-heading); font-weight: 800; font-size: .82rem; color: var(--ink); }
.ah-pcard .addr {
	font-family: var(--font-body); font-weight: 600; font-size: .68rem; line-height: 1.35; color: var(--ink-2);
	margin-top: 3px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}

.ah-trust {
	margin: 16px 16px 26px; padding: 10px; background: var(--bg-alt); border: 1px dashed var(--gray-300);
	border-radius: var(--r-pill); text-align: center; font-family: var(--font-body); font-weight: 700;
	font-size: .72rem; color: var(--ink-2);
}

/* ---------------- Cookies + Politica de Privacidade ---------------- */
.box-cookies.hide, .box-privacy.hide, .privacy-backdrop.hide { display: none !important; }

.box-cookies {
	position: fixed; z-index: 700; bottom: 24px; left: 24px; right: 24px; max-width: 640px; margin: 0 auto;
	background: #fff; border: 1px solid var(--border); border-radius: var(--r-lg); box-shadow: var(--shadow-lg);
	display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 20px;
}
.box-cookies .msg-cookies { margin: 0; padding: 0; font-family: var(--font-body); font-size: .88rem; color: var(--ink-2); }
.box-cookies .btn-privacy { color: var(--red); text-decoration: underline; cursor: pointer; font-weight: 700; }
.box-cookies .buttons { display: flex; align-items: center; gap: 10px; flex: none; }
.box-cookies .btn-recuse-cookies, .box-cookies .btn-cookies {
	cursor: pointer; font-family: var(--font-heading); font-weight: 700; font-size: .84rem;
	padding: 10px 18px; border-radius: var(--r-pill); white-space: nowrap; transition: all .2s ease;
}
.box-cookies .btn-recuse-cookies { color: var(--ink-2); border: 1.5px solid var(--gray-300); background: #fff; }
.box-cookies .btn-recuse-cookies:hover { border-color: var(--ink-2); }
.box-cookies .btn-cookies { color: #fff; background: var(--red); border: 1.5px solid var(--red); }
.box-cookies .btn-cookies:hover { background: var(--red-dark); border-color: var(--red-dark); }

.privacy-backdrop {
	position: fixed; inset: 0; z-index: 900; background: rgba(38,49,64,.6);
}
.box-privacy {
	position: fixed; z-index: 901; top: 50%; left: 50%; transform: translate(-50%, -50%);
	width: min(680px, 92vw); max-height: 82vh; max-height: 82dvh; overflow-y: auto;
	background: #fff; border-radius: var(--r-xl); box-shadow: var(--shadow-lg); padding: 0;
}
.box-privacy-head {
	position: sticky; top: 0; z-index: 2; background: #fff; border-bottom: 1px solid var(--border);
	display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 22px 28px;
}
.box-privacy-head h2 { margin: 0; font-size: 1.2rem; color: var(--ink); }
.box-privacy .btn-close {
	flex: none; width: 36px; height: 36px; border-radius: 50%; border: none; background: var(--bg-alt);
	color: var(--red); display: flex; align-items: center; justify-content: center; cursor: pointer;
}
.box-privacy .btn-close svg { width: 16px; height: 16px; flex: none; }
.box-privacy-body { padding: 8px 28px 28px; }
.box-privacy-body h3 { color: var(--ink); font-size: 1rem; margin: 22px 0 8px; }
.box-privacy-body h3:first-child { margin-top: 0; }
.box-privacy-body p { font-family: var(--font-body); font-size: .88rem; color: var(--ink-2); line-height: 1.7; margin: 0 0 4px; }

@media (max-width: 640px) {
	.box-cookies { flex-direction: column; align-items: stretch; text-align: center; left: 14px; right: 14px; bottom: 14px; }
	.box-cookies .buttons { justify-content: center; }
	.box-privacy-head, .box-privacy-body { padding-left: 20px; padding-right: 20px; }
}

/* ---------------- Responsive ---------------- */
@media (max-width: 1080px) {
	.property-grid { grid-template-columns: repeat(2, 1fr); }
	.reel-grid { grid-template-columns: repeat(3, 1fr); }
	.wave-inner { grid-template-columns: 1fr; }
	.wave-text { padding: 40px 24px; text-align: center; }
	.wave-photo { min-height: 220px; }
	.finance-split { grid-template-columns: 1fr; }
	.feature-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 860px) {
	.main-nav { display: none; }
	.brand img { height: 60px; }
	/* icones de acao (favoritos/telefone/menu) somem do topo no mobile: as mesmas acoes
	   ja existem na barra inferior de app (app-bottom-nav), entao o header mobile fica
	   so com o logo, centralizado. */
	.header-actions { display: none; }
	.site-header .layout-base-container { justify-content: center; }
	.search-tabs { gap: 12px; padding: 16px 16px 0; overflow-x: auto; }
	#busca { padding: 16px 16px 20px; }
	.search-row { flex-direction: column; align-items: stretch; }
	.search-divider { display: none; }
	#col_Search { margin-left: 0; width: 100%; }

	/* filtros (search.php): os grupos de chip (Quartos/Financiamento) e o slider de Valor
	   tinham largura minima fixa que nao cabe numa tela de celular — o track sozinho exigia
	   200px, mais rotulo e os dois valores de ponta passavam de 400px, estourando a tela.
	   aqui o rotulo de cada grupo de chip vai pra propria linha e o slider vira layout
	   empilhado (rotulo, barra em largura total, valores min/max nas pontas por baixo). */
	.dorm-chips, .fin-chips { align-items: flex-start; }
	.dorm-chips .lbl, .fin-chips .lbl { width: 100%; margin-bottom: 2px; }

	.range-value {
		display: grid;
		grid-template-columns: 1fr auto;
		grid-template-areas: "lbl lbl" "track track" "min max";
		gap: 10px 12px;
		min-width: 0;
		width: 100%;
	}
	.range-value .lbl { grid-area: lbl; }
	.range-track-wrap { grid-area: track; width: 100%; min-width: 0; }
	.range-end.min { grid-area: min; }
	.range-end.max { grid-area: max; }

	/* alvo de toque maior no checkbox "Filtros" (20px e pequeno pra dedo) */
	.filters-check { padding: 6px 0; }
	.filters-check input { width: 22px; height: 22px; }

	/* Filtros no mobile: em vez de acordeao que empurra a pagina para baixo, o mesmo bloco
	   (mesmos IDs/names/logica de filtro_moderno.js e checkbox_filtro.js, sem alteracao) vira
	   uma bottom sheet. O !important vence o display:none/"" que o jQuery aplica na checkbox
	   "Filtros" -- quem controla a visibilidade aqui e a classe .is-sheet-open, via transform
	   (JS em site-layout-base.js). */
	.filters-sheet-backdrop {
		display: block; position: fixed; inset: 0; z-index: 955;
		background: rgba(38,49,64,.55); opacity: 0; visibility: hidden;
		transition: opacity .25s ease, visibility .25s;
	}
	.filters-sheet-backdrop.is-open { opacity: 1; visibility: visible; }

	.filters-extra {
		display: block !important;
		position: fixed; left: 0; right: 0; bottom: 0; z-index: 960;
		background: #fff; border-radius: var(--r-lg) var(--r-lg) 0 0;
		max-height: 82vh; overflow-y: auto;
		padding: 0 20px 20px; margin-top: 0;
		box-shadow: 0 -20px 50px rgba(0,0,0,.25);
		transform: translateY(100%);
		transition: transform .3s ease;
	}
	.filters-extra.is-sheet-open { transform: translateY(0); }

	.filters-sheet-head { display: block; position: sticky; top: 0; background: #fff; padding-top: 12px; z-index: 2; }
	.filters-sheet-head .handle { display: block; width: 38px; height: 4px; border-radius: 3px; background: var(--gray-300); margin: 0 auto 14px; }
	.filters-sheet-head-row { display: flex; align-items: center; justify-content: space-between; padding-bottom: 14px; border-bottom: 1px solid var(--border); margin-bottom: 18px; }
	.filters-sheet-head-row h3 { font-family: var(--font-heading); font-size: 1.02rem; color: var(--ink); margin: 0; }
	.filters-sheet-close { width: 32px; height: 32px; border-radius: 50%; background: var(--bg-alt); border: none; display: flex; align-items: center; justify-content: center; cursor: pointer; color: var(--ink-2); flex: none; }
	.filters-sheet-close svg { width: 15px; height: 15px; }

	.filters-sheet-foot { display: block; position: sticky; bottom: 0; background: #fff; padding: 14px 0 4px; margin-top: 10px; }
	.filters-sheet-apply { width: 100%; padding: 14px; border: none; border-radius: var(--r-md); background: var(--red); color: #fff; font-family: var(--font-heading); font-weight: 700; font-size: .9rem; cursor: pointer; }
	.filters-sheet-apply:hover { background: var(--red-dark); }
	.reel-grid { grid-template-columns: 1fr 1fr; }
	.form-layout { grid-template-columns: 1fr; }
	.split { grid-template-columns: 1fr; }
	.cta-grid { grid-template-columns: 1fr; }

	/* footer-grid nao tinha versao mobile: as 4 colunas (1.6fr 1fr 1fr 1.3fr) continuavam
	   lado a lado numa tela de celular, estourando a largura do #container (que tem
	   overflow:hidden em index.php) e cortando rodape/links fora da tela. Empilha em coluna
	   unica igual ao resto das grades responsivas acima. */
	.footer-grid { grid-template-columns: 1fr; gap: 32px; }

	/* cara de app no mobile: barra inferior fixa no lugar do rodape de navegacao do desktop */
	.app-bottom-nav { display: flex; }
	.wpp-float { bottom: calc(70px + env(safe-area-inset-bottom)); }

	/* home mobile estilo app: mostra a grade de atalhos e esconde o carrossel de destaques
	   (banner de marketing), a faixa azul e as secoes empilhadas (Comprar/Alugar/Rural/
	   Financiamento) — esses caminhos continuam existindo, so que atras dos atalhos da grade
	   e do menu, em vez de forcarem rolagem na primeira visita. */
	.app-home-mobile { display: block; }
	body#home .destaques-layout-base,
	body#home .wave-banner,
	body#home #container_home > .section {
		display: none;
	}
	.wpp-modal { bottom: calc(136px + env(safe-area-inset-bottom)); }

	/* header fixo ao rolar = barra de app (a versao desktop so tem position:relative e some
	   ao rolar, o que reforca a sensacao de "pagina", nao de app). position:sticky nao
	   funciona aqui porque "#container" (index.php) tem overflow:hidden — isso vira o
	   "ancestral de scroll" mais proximo pro algoritmo de sticky, e como o #container em si
	   nunca rola (quem rola e o documento), o header nunca gruda. fixed nao depende disso.
	   padding-top substitui o "padding-top: env(safe-area-inset-top)" do body (que so
	   empurra conteudo em fluxo normal, e o header deixou de estar em fluxo). */
	.site-header { position: fixed; top: 0; left: 0; right: 0; padding-top: calc(14px + env(safe-area-inset-top)); }
	/* compensa a altura do header (agora fora do fluxo) pra ela nao tampar o inicio do hero;
	   soma ao padding-bottom que ja existia aqui pra barra inferior */
	#container { padding-top: calc(86px + env(safe-area-inset-top)); padding-bottom: calc(58px + env(safe-area-inset-bottom)); }

	/* respiro geral menor: 24px de cada lado (herdado do desktop) sobra muito numa tela de
	   ~375-414px e empurra o conteudo pra um miolo estreito no centro — a marca registrada
	   de "site web encolhido", nao de app. Nao afeta ".section > .layout-base-container",
	   que ja zera o proprio padding e usa soh o do ".section" (ajustado abaixo). */
	.layout-base-container { padding: 0 16px; }
	.destaques-layout-base { padding: 0 16px; margin-top: 20px; }
	#header #lineTwo.layout-base-hero { padding: 20px 0 26px; }
	.search-widget { border-radius: var(--r-lg); box-shadow: var(--shadow-md); }

	/* cartoes de secao (".section") viram blocos edge-to-edge com divisor simples, no
	   lugar de cartao com borda+sombra+cantos arredondados flutuando sobre a pagina —
	   esse padrao de "cartao dentro de pagina" e o que mais denuncia layout de site
	   desktop redimensionado. Os cards de imovel (.pcard) continuam com seu proprio
	   contorno, entao a hierarquia visual nao se perde. */
	.section {
		max-width: none;
		margin: 0;
		padding: 28px 16px;
		border-left: none;
		border-right: none;
		border-bottom: none;
		border-top: 1px solid var(--border);
		border-radius: 0;
		box-shadow: none;
	}
}
@media (max-width: 640px) {
	.property-grid { grid-template-columns: 1fr; }

	/* cartao de imovel vira linha horizontal (foto + dados lado a lado) no lugar do
	   cartao vertical empilhado pensado pra grid de desktop -- mais imoveis visiveis
	   por rolagem e comparacao mais rapida ao rolar com o polegar. */
	.pcard {
		display: grid;
		grid-template-columns: 96px 1fr;
		grid-template-areas: "media top" "media loc" "media specs" "media bottom";
		column-gap: 14px;
		row-gap: 2px;
		align-items: start;
		padding: 10px;
	}
	.pcard > a:first-child { grid-area: media; align-self: stretch; }
	.pcard .media { aspect-ratio: 1 / 1; height: 100%; }
	.pcard .top-row { grid-area: top; margin-top: 0; }
	.pcard .loc { grid-area: loc; }
	.pcard .specs { grid-area: specs; margin-top: 6px; }
	.pcard .bottom-row { grid-area: bottom; margin-top: auto; }
	/* preco + cartao inteiro clicavel ja levam ao imovel: o botao "Conhecer" fica redundante nesta linha */
	.pcard .bottom-row .btn { display: none; }

	.reel-grid { grid-template-columns: 1fr; }
	.finance-split .photo { min-height: 220px; }
	.form-grid { grid-template-columns: 1fr; }
	.feature-grid { grid-template-columns: 1fr; }
}
@media (max-width: 420px) {
	.brand img { height: 46px; }
	.header-actions { gap: 8px; }
}
