/*
 * Componentes Skylearn Imob.
 * Regra de raio declarada e mantida: inputs e chips 8px, botões 16px,
 * cards 20px, painéis 28px, pills 999px.
 */

/* --------------------------------------------------------------------------
 * Reset de vazamento do tema pai.
 * Envolvido em :where() para ficar com especificidade 0 e nunca vencer uma
 * regra de componente. Sem isso, as fontes do Hello Elementor sobrescrevem
 * silenciosamente o display face.
 * -------------------------------------------------------------------------- */

/* A face de display vale para todo título da página, inclusive o conteúdo
 * institucional: é a voz da marca. Aqui não se mexe em margem, senão o
 * espaçamento do texto de uma página comum desaparece. */
:where(.imob-escopo h1, .imob-escopo h2, .imob-escopo h3, .imob-escopo h4) {
	font-family: var(--imob-font-display);
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--imob-ink);
}

/* O reset de caixa é escopado aos nossos blocos. Aplicado no body, ele zeraria
 * a margem dos parágrafos de qualquer página de conteúdo do tema. */
:where(
	.imob-topo, .imob-secao, .imob-card, .imob-busca, .imob-ficha, .imob-contato,
	.imob-cidades, .imob-filtros, .imob-vazio, .imob-galeria, .imob-formulario,
	.imob-barra-contato, .imob-bloco, .imob-paginacao, .imob-contato-bloco,
	.imob-barra-resultado, .imob-specs, .imob-pills
) :where(h1, h2, h3, h4, p, ul, ol, li, figure, blockquote) {
	margin: 0;
	padding: 0;
	border: 0;
}

:where(
	.imob-topo, .imob-secao, .imob-card, .imob-busca, .imob-ficha, .imob-contato,
	.imob-cidades, .imob-filtros, .imob-vazio, .imob-galeria, .imob-formulario,
	.imob-barra-contato, .imob-bloco, .imob-paginacao, .imob-contato-bloco,
	.imob-barra-resultado, .imob-specs, .imob-pills
) :where(ul, ol) {
	list-style: none;
}

.imob-escopo {
	font-family: var(--imob-font-body);
	font-size: var(--imob-body);
	line-height: var(--imob-body-lh);
	letter-spacing: 0.01em;
	color: var(--imob-ink);
	background: var(--imob-bg);
}

.imob-escopo *,
.imob-escopo *::before,
.imob-escopo *::after {
	box-sizing: border-box;
}

/* Foco visível em tudo. Nunca removido, só redesenhado. */
.imob-escopo :focus-visible {
	outline: 3px solid var(--imob-accent-deep);
	outline-offset: 2px;
	border-radius: var(--imob-radius-sm);
}

.imob-pular-para {
	position: absolute;
	left: -9999px;
}

.imob-pular-para:focus {
	left: var(--imob-gutter);
	top: var(--imob-space-md);
	z-index: 60;
	padding: var(--imob-space-12) var(--imob-space-md);
	background: var(--imob-bg);
	border-radius: var(--imob-radius-sm);
	box-shadow: var(--imob-shadow-panel);
}

/* --------------------------------------------------------------------------
 * Cabeçalho e rodapé do tema pai, vestidos com os tokens.
 *
 * O escopo é `.imob-escopo` de propósito: assim a identidade alcança as telas
 * onde este design vale, e uma página futura montada só no Elementor mantém o
 * cabeçalho padrão. Levar isto para o global do site é decisão do cliente.
 * -------------------------------------------------------------------------- */

.imob-escopo .site-header {
	background: var(--imob-bg);
	border-bottom: 1px solid var(--imob-outline);
	padding-block: var(--imob-space-md);
}

.imob-escopo .site-header .header-inner {
	width: 100%;
	max-width: var(--imob-container);
	margin-inline: auto;
	padding-inline: var(--imob-gutter);
	display: flex;
	align-items: center;
	gap: var(--imob-space-lg);
}

.imob-escopo .site-title {
	font-family: var(--imob-font-display);
	font-size: var(--imob-h3);
	font-weight: 700;
	line-height: 1.1;
	margin: 0;
}

.imob-escopo .site-title a {
	color: var(--imob-ink);
	text-decoration: none;
}

.imob-escopo .site-title a:hover {
	color: var(--imob-accent-acao-hover);
}

/* Navegação em uma linha no desktop, por regra de layout. */
.imob-escopo .site-navigation ul.menu {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	gap: var(--imob-space-sm);
	margin: 0;
	padding: 0;
	list-style: none;
}

.imob-escopo .site-navigation ul.menu li {
	margin: 0;
}

.imob-escopo .site-navigation a {
	display: inline-flex;
	align-items: center;
	min-height: 48px;
	padding: 0 var(--imob-space-12);
	border-radius: var(--imob-radius-sm);
	font-family: var(--imob-font-body);
	font-size: var(--imob-small);
	font-weight: 700;
	color: var(--imob-ink-muted);
	text-decoration: none;
	white-space: nowrap;
	transition: background var(--imob-transicao-rapida), color var(--imob-transicao-rapida);
}

.imob-escopo .site-navigation a:hover {
	background: var(--imob-surface-sunken);
	color: var(--imob-accent-acao-hover);
}

/* Página atual marcada por cor e fundo, não só por cor. */
.imob-escopo .site-navigation .current-menu-item > a,
.imob-escopo .site-navigation .current_page_item > a {
	background: var(--imob-accent-soft);
	color: var(--imob-accent-deep);
}

.imob-escopo .site-navigation {
	margin-left: auto;
}

/* Botão do menu no mobile: alvo de 56px, como todo controle. */
.imob-escopo .site-navigation-toggle-holder {
	margin-left: auto;
}

.imob-escopo .site-navigation-toggle {
	width: 56px;
	height: 56px;
	border: 1px solid var(--imob-outline);
	border-radius: var(--imob-radius-md);
	background: var(--imob-surface);
	color: var(--imob-ink);
	cursor: pointer;
}

.imob-escopo .site-navigation-dropdown ul.menu {
	display: block;
	padding: var(--imob-space-sm);
	background: var(--imob-bg);
	border-bottom: 1px solid var(--imob-outline);
	box-shadow: var(--imob-shadow-card);
}

.imob-escopo .site-navigation-dropdown a {
	display: flex;
	min-height: 56px;
	border-radius: var(--imob-radius-sm);
	font-size: var(--imob-body);
}

.imob-escopo .site-footer {
	background: var(--imob-surface);
	border-top: 1px solid var(--imob-outline);
	padding-block: var(--imob-space-lg);
	margin-top: var(--imob-space-48);
}

.imob-escopo .site-footer .footer-inner {
	width: 100%;
	max-width: var(--imob-container);
	margin-inline: auto;
	padding-inline: var(--imob-gutter);
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--imob-space-md);
}

.imob-escopo .site-footer .copyright {
	color: var(--imob-ink-muted);
	font-size: var(--imob-small);
	margin: 0;
}

/* O tema imprime o título da página num cabeçalho próprio. Onde ele aparece
 * (Sobre, Contato), alinha com o nosso container e a nossa escala. */
.imob-escopo .page-header {
	width: 100%;
	max-width: var(--imob-container);
	margin-inline: auto;
	padding: var(--imob-space-48) var(--imob-gutter) 0;
}

.imob-escopo .page-header .entry-title {
	font-size: var(--imob-h1);
	line-height: var(--imob-h1-lh);
	margin: 0;
}

.imob-escopo .page-content {
	width: 100%;
}

/* Conteúdo institucional: mesma medida de leitura da descrição do imóvel. */
.imob-escopo .page-content > :where(p, h2, h3, ul, ol, .imob-contato-bloco) {
	max-width: var(--imob-medida);
	margin-inline: auto;
	padding-inline: var(--imob-gutter);
}

.imob-escopo .page-content > .imob-contato-bloco {
	margin-block: var(--imob-space-lg);
}

.imob-escopo .page-content > p {
	margin-block: var(--imob-space-md);
}

.imob-escopo .page-content > h2 {
	font-size: var(--imob-h2);
	line-height: var(--imob-h2-lh);
	margin-top: var(--imob-space-lg);
}

/* --------------------------------------------------------------------------
 * Container único, usado por todas as seções para o alinhamento não deslocar.
 * -------------------------------------------------------------------------- */

.imob-container {
	width: 100%;
	max-width: var(--imob-container);
	margin-inline: auto;
	padding-inline: var(--imob-gutter);
}

.imob-secao {
	padding-block: var(--imob-space-48);
}

.imob-secao__cabecalho {
	margin-bottom: var(--imob-space-lg);
}

.imob-secao__titulo {
	font-size: var(--imob-h2);
	line-height: var(--imob-h2-lh);
}

.imob-secao__chamada {
	margin-top: var(--imob-space-sm);
	color: var(--imob-ink-muted);
	max-width: var(--imob-medida);
}

.imob-secao__acao {
	margin-top: var(--imob-space-lg);
}

/* --------------------------------------------------------------------------
 * Botões. 56px de altura mínima em todo controle.
 * -------------------------------------------------------------------------- */

.imob-botao {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--imob-space-sm);
	min-height: 56px;
	padding: 0 var(--imob-space-24);
	border: 0;
	border-radius: var(--imob-radius-md);
	background: var(--imob-accent-acao);
	color: #FFFFFF;
	font-family: var(--imob-font-body);
	font-size: var(--imob-body);
	font-weight: 700;
	line-height: 1.2;
	text-decoration: none;
	cursor: pointer;
	transition: background var(--imob-transicao-rapida), transform var(--imob-transicao-rapida), box-shadow var(--imob-transicao);
	box-shadow: inset 0 -1px 0 rgba(15, 23, 42, 0.12);
}

.imob-botao:hover {
	background: var(--imob-accent-acao-hover);
	box-shadow: inset 0 -1px 0 var(--imob-accent-bright);
	color: #FFFFFF;
}

.imob-botao:active {
	transform: scale(0.97);
}

.imob-botao--secundario {
	background: var(--imob-accent-soft);
	color: var(--imob-accent-deep);
	box-shadow: none;
}

.imob-botao--secundario:hover {
	background: #C7DDFC;
	color: var(--imob-accent-deep);
	box-shadow: none;
}

.imob-botao--whatsapp {
	background: var(--imob-leaf-acao);
}

.imob-botao--whatsapp:hover {
	background: var(--imob-leaf-acao-hover);
	box-shadow: inset 0 -1px 0 var(--imob-leaf);
}

.imob-botao--largo {
	width: 100%;
}

.imob-icone {
	flex: 0 0 auto;
}

/* --------------------------------------------------------------------------
 * Topo do arquivo. A foto sangra na largura toda e o painel de busca
 * sobrepõe a borda inferior dela: é aqui que o variance 0.45 é gasto.
 * -------------------------------------------------------------------------- */

.imob-topo {
	position: relative;
	padding-top: var(--imob-space-48);
	background: linear-gradient(180deg, var(--imob-accent-soft) 0%, var(--imob-bg) 100%);
}

.imob-topo__conteudo {
	max-width: 46rem;
}

.imob-topo__titulo {
	font-size: var(--imob-hero);
	line-height: var(--imob-hero-lh);
}

.imob-topo__chamada {
	margin-top: var(--imob-space-md);
	font-size: var(--imob-body-lg);
	color: var(--imob-ink-muted);
	max-width: 34rem;
}

.imob-topo__figura {
	position: relative;
	margin-top: var(--imob-space-lg);
	height: 20rem;
	border-radius: var(--imob-radius-xl);
	overflow: hidden;
	background: var(--imob-surface-sunken);
}

.imob-topo__figura img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

/* O painel monta sobre a foto no desktop, e desce para baixo dela no mobile. */
.imob-topo__painel {
	position: relative;
	margin-top: calc(var(--imob-space-lg) * -1);
	z-index: 2;
}

@media (max-width: 900px) {
	.imob-topo__figura {
		height: 12rem;
	}

	.imob-topo__painel {
		margin-top: var(--imob-space-md);
	}
}

/* --------------------------------------------------------------------------
 * Painel de busca.
 * -------------------------------------------------------------------------- */

.imob-busca {
	background: var(--imob-surface-elevated);
	border: 1px solid var(--imob-outline);
	border-radius: var(--imob-radius-xl);
	box-shadow: var(--imob-shadow-panel);
	padding: var(--imob-space-24);
}

.imob-busca__titulo {
	font-size: var(--imob-h4);
	font-family: var(--imob-font-display);
	font-weight: 700;
	margin-bottom: var(--imob-space-md);
}

/* Finalidade como controle segmentado: a primeira decisão de quem busca. */
.imob-segmento {
	display: inline-flex;
	gap: var(--imob-space-xs);
	padding: var(--imob-space-xs);
	background: var(--imob-surface-sunken);
	border-radius: var(--imob-radius-md);
	margin-bottom: var(--imob-space-md);
}

.imob-segmento__opcao {
	min-height: 48px;
	display: inline-flex;
	align-items: center;
	padding: 0 var(--imob-space-24);
	border-radius: var(--imob-radius-sm);
	font-weight: 700;
	font-size: var(--imob-small);
	color: var(--imob-ink-muted);
	text-decoration: none;
	transition: background var(--imob-transicao-rapida), color var(--imob-transicao-rapida);
}

.imob-segmento__opcao:hover {
	color: var(--imob-accent-deep);
}

.imob-segmento__opcao[aria-current='true'] {
	background: var(--imob-bg);
	color: var(--imob-accent-deep);
	box-shadow: var(--imob-shadow-card);
}

.imob-busca__linha {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
	gap: var(--imob-space-md);
	align-items: end;
}

.imob-campo {
	display: flex;
	flex-direction: column;
	gap: var(--imob-space-xs);
	min-width: 0;
}

.imob-campo__rotulo {
	font-size: var(--imob-caption);
	font-weight: 700;
	color: var(--imob-ink-muted);
	letter-spacing: 0.02em;
	text-transform: uppercase;
}

.imob-campo input,
.imob-campo select {
	min-height: 56px;
	width: 100%;
	padding: 0 var(--imob-space-md);
	font-family: var(--imob-font-body);
	font-size: var(--imob-body);
	color: var(--imob-ink);
	background: var(--imob-surface);
	border: 1px solid var(--imob-outline);
	border-radius: var(--imob-radius-sm);
	transition: border-color var(--imob-transicao-rapida), box-shadow var(--imob-transicao-rapida);
	appearance: none;
}

.imob-campo select {
	background-image: linear-gradient(45deg, transparent 50%, var(--imob-ink-muted) 50%), linear-gradient(135deg, var(--imob-ink-muted) 50%, transparent 50%);
	background-position: calc(100% - 20px) calc(50% + 2px), calc(100% - 14px) calc(50% + 2px);
	background-size: 6px 6px, 6px 6px;
	background-repeat: no-repeat;
	padding-right: var(--imob-space-lg);
}

.imob-campo input::placeholder {
	color: var(--imob-ink-meta);
}

.imob-campo input:focus,
.imob-campo select:focus {
	outline: none;
	border-color: var(--imob-accent);
	box-shadow: 0 0 0 4px var(--imob-accent-soft);
}

/* --------------------------------------------------------------------------
 * Barra de filtros ativos. Poço afundado, porque é superfície de controle
 * e não conteúdo: elevação tem que significar algo.
 * -------------------------------------------------------------------------- */

.imob-filtros {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--imob-space-12);
	padding: var(--imob-space-md);
	background: var(--imob-surface-sunken);
	border-radius: var(--imob-radius-md);
	margin-bottom: var(--imob-space-24);
}

.imob-filtros__rotulo {
	font-size: var(--imob-caption);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.02em;
	color: var(--imob-ink-muted);
}

.imob-filtro-ativo {
	display: inline-flex;
	align-items: center;
	gap: var(--imob-space-sm);
	min-height: 40px;
	padding: 0 var(--imob-space-12);
	background: var(--imob-accent-soft);
	color: var(--imob-accent-deep);
	border-radius: var(--imob-radius-pill);
	font-size: var(--imob-small);
	font-weight: 700;
	text-decoration: none;
	transition: background var(--imob-transicao-rapida);
}

.imob-filtro-ativo:hover {
	background: #C7DDFC;
	color: var(--imob-accent-deep);
}

.imob-filtros__limpar {
	margin-left: auto;
	color: var(--imob-accent-deep);
	font-weight: 700;
	font-size: var(--imob-small);
	min-height: 40px;
	display: inline-flex;
	align-items: center;
}

.imob-resultado-conta {
	font-size: var(--imob-small);
	color: var(--imob-ink-muted);
}

.imob-ordenar {
	display: flex;
	align-items: center;
	gap: var(--imob-space-sm);
	margin-left: auto;
}

.imob-ordenar select {
	min-height: 48px;
	padding: 0 var(--imob-space-lg) 0 var(--imob-space-12);
	font-family: var(--imob-font-body);
	font-size: var(--imob-small);
	border: 1px solid var(--imob-outline);
	border-radius: var(--imob-radius-sm);
	background: var(--imob-bg);
	color: var(--imob-ink);
	appearance: none;
	background-image: linear-gradient(45deg, transparent 50%, var(--imob-ink-muted) 50%), linear-gradient(135deg, var(--imob-ink-muted) 50%, transparent 50%);
	background-position: calc(100% - 18px) calc(50% + 2px), calc(100% - 12px) calc(50% + 2px);
	background-size: 6px 6px, 6px 6px;
	background-repeat: no-repeat;
}

.imob-barra-resultado {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--imob-space-md);
	margin-bottom: var(--imob-space-24);
}

/* --------------------------------------------------------------------------
 * Grade e card.
 * -------------------------------------------------------------------------- */

.imob-grade {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--imob-space-lg);
}

@media (max-width: 1024px) {
	.imob-grade {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 640px) {
	.imob-grade {
		grid-template-columns: 1fr;
		gap: 20px;
	}
}

.imob-card {
	display: flex;
	flex-direction: column;
	background: var(--imob-surface);
	border: 1px solid var(--imob-outline);
	border-radius: var(--imob-radius-lg);
	overflow: hidden;
	transition: transform var(--imob-transicao), box-shadow var(--imob-transicao);
}

.imob-card:hover {
	transform: translateY(-4px);
	box-shadow: var(--imob-shadow-card-hover);
}

.imob-card--destaque {
	border: 3px solid var(--imob-accent);
}

.imob-card--destaque:hover {
	box-shadow: var(--imob-shadow-destaque);
}

.imob-card__figura {
	position: relative;
	aspect-ratio: 4 / 3;
	background: var(--imob-surface-sunken);
	overflow: hidden;
}

.imob-card__figura img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform var(--imob-transicao);
}

.imob-card:hover .imob-card__figura img {
	transform: scale(1.03);
}

.imob-card__selos {
	position: absolute;
	inset: var(--imob-space-12) var(--imob-space-12) auto var(--imob-space-12);
	display: flex;
	flex-wrap: wrap;
	gap: var(--imob-space-sm);
	pointer-events: none;
}

.imob-card__corpo {
	display: flex;
	flex-direction: column;
	gap: var(--imob-space-12);
	padding: var(--imob-space-md);
	flex: 1 1 auto;
}

.imob-card__titulo {
	font-size: var(--imob-h4);
	line-height: var(--imob-h4-lh);
}

.imob-card__titulo a {
	color: inherit;
	text-decoration: none;
}

.imob-card__titulo a:hover {
	color: var(--imob-accent-deep);
}

.imob-card__local {
	display: flex;
	align-items: center;
	gap: var(--imob-space-xs);
	font-size: var(--imob-small);
	color: var(--imob-ink-muted);
}

/* O preço é o maior elemento do card, por regra do design. */
.imob-preco {
	font-family: var(--imob-font-display);
	font-size: var(--imob-preco);
	font-weight: 700;
	line-height: 1;
	color: var(--imob-ink);
	font-variant-numeric: tabular-nums;
	letter-spacing: -0.02em;
}

.imob-preco__periodo {
	font-family: var(--imob-font-body);
	font-size: var(--imob-small);
	font-weight: 400;
	color: var(--imob-ink-meta);
	letter-spacing: 0;
}

.imob-preco--grande {
	font-size: var(--imob-preco-lg);
}

.imob-preco--consulte {
	font-size: var(--imob-h3);
	color: var(--imob-ink-muted);
}

/* Faixa de especificações: dados em mono, separados por fio, sem virar cards. */
.imob-specs {
	display: flex;
	flex-wrap: wrap;
	margin-top: auto;
	border-top: 1px solid var(--imob-outline);
	padding-top: var(--imob-space-12);
}

.imob-specs__item {
	display: flex;
	align-items: center;
	gap: var(--imob-space-sm);
	padding-right: var(--imob-space-12);
	margin-right: var(--imob-space-12);
	border-right: 1px solid var(--imob-outline);
	color: var(--imob-ink-muted);
	font-size: var(--imob-caption);
}

.imob-specs__item:last-child {
	border-right: 0;
	margin-right: 0;
	padding-right: 0;
}

.imob-specs__valor {
	font-family: var(--imob-font-mono);
	font-weight: 500;
	font-size: var(--imob-small);
	color: var(--imob-ink);
}

/* --------------------------------------------------------------------------
 * Selos. Cor mais ícone mais palavra, sempre os três.
 * -------------------------------------------------------------------------- */

.imob-selo {
	display: inline-flex;
	align-items: center;
	gap: var(--imob-space-xs);
	padding: 6px var(--imob-space-12);
	border-radius: var(--imob-radius-pill);
	font-size: var(--imob-caption);
	font-weight: 700;
	line-height: 1.2;
	background: var(--imob-bg);
	color: var(--imob-ink);
}

.imob-selo--leaf {
	background: var(--imob-leaf-soft);
	color: #0B6B2E;
}

.imob-selo--coral {
	background: var(--imob-coral-soft);
	color: #A02525;
}

.imob-selo--sun {
	background: var(--imob-sun);
	color: #4A2E02;
}

.imob-selo--finalidade {
	background: var(--imob-accent-soft);
	color: var(--imob-accent-deep);
}

/* Pills de característica: poço afundado, texto secundário. */
.imob-pills {
	display: flex;
	flex-wrap: wrap;
	gap: var(--imob-space-sm);
}

.imob-pill {
	display: inline-flex;
	align-items: center;
	gap: var(--imob-space-xs);
	padding: 8px var(--imob-space-12);
	background: var(--imob-surface-sunken);
	color: var(--imob-ink-muted);
	border-radius: var(--imob-radius-pill);
	font-size: var(--imob-caption);
	text-decoration: none;
}

a.imob-pill:hover {
	background: var(--imob-accent-soft);
	color: var(--imob-accent-deep);
}

/* --------------------------------------------------------------------------
 * Placeholder de foto. Gradiente on-palette enquanto não há imagem real,
 * composto como a foto final, nunca um vão vazio.
 * -------------------------------------------------------------------------- */

.imob-placeholder {
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
	color: rgba(255, 255, 255, 0.92);
}

.imob-placeholder__marca {
	display: grid;
	place-items: center;
	gap: var(--imob-space-sm);
	text-align: center;
	font-size: var(--imob-caption);
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.imob-placeholder--1 {
	background: linear-gradient(135deg, #60A5FA 0%, #1D4ED8 100%);
}

.imob-placeholder--2 {
	background: linear-gradient(135deg, #93C5FD 0%, #3B82F6 55%, #1D4ED8 100%);
}

.imob-placeholder--3 {
	background: linear-gradient(160deg, #DBEAFE 0%, #60A5FA 60%, #2563EB 100%);
}

.imob-placeholder--4 {
	background: linear-gradient(200deg, #3B82F6 0%, #1D4ED8 70%, #0F172A 100%);
}

/* --------------------------------------------------------------------------
 * Estado vazio: painel composto, com saída clara.
 * -------------------------------------------------------------------------- */

.imob-vazio {
	display: grid;
	justify-items: center;
	gap: var(--imob-space-md);
	text-align: center;
	padding: var(--imob-space-xl) var(--imob-space-24);
	background: var(--imob-accent-soft);
	border-radius: var(--imob-radius-xl);
}

.imob-vazio__icone {
	display: grid;
	place-items: center;
	width: 64px;
	height: 64px;
	border-radius: var(--imob-radius-pill);
	background: var(--imob-bg);
	color: var(--imob-accent-deep);
}

.imob-vazio__titulo {
	font-size: var(--imob-h3);
	line-height: var(--imob-h3-lh);
}

.imob-vazio__texto {
	color: var(--imob-ink-muted);
	max-width: 34rem;
}

/* --------------------------------------------------------------------------
 * Ficha do imóvel. Split assimétrico: galeria larga, contato estreito e fixo.
 * -------------------------------------------------------------------------- */

.imob-ficha {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 22rem;
	gap: var(--imob-space-48);
	align-items: start;
	padding-block: var(--imob-space-lg) var(--imob-space-48);
}

@media (max-width: 900px) {
	.imob-ficha {
		grid-template-columns: 1fr;
		gap: var(--imob-space-lg);
		padding-bottom: 96px; /* espaço da barra fixa de contato */
	}
}

.imob-ficha__cabecalho {
	display: flex;
	flex-direction: column;
	gap: var(--imob-space-12);
	margin-bottom: var(--imob-space-24);
}

.imob-ficha__selos {
	display: flex;
	flex-wrap: wrap;
	gap: var(--imob-space-sm);
}

.imob-ficha__titulo {
	font-size: var(--imob-h1);
	line-height: var(--imob-h1-lh);
}

.imob-ficha__local {
	display: flex;
	align-items: center;
	gap: var(--imob-space-xs);
	color: var(--imob-ink-muted);
	font-size: var(--imob-body);
}

.imob-ficha__codigo {
	font-family: var(--imob-font-mono);
	font-size: var(--imob-caption);
	color: var(--imob-ink-meta);
}

/* Galeria */
.imob-galeria__principal {
	position: relative;
	aspect-ratio: 3 / 2;
	border-radius: var(--imob-radius-lg);
	overflow: hidden;
	background: var(--imob-surface-sunken);
}

.imob-galeria__principal img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.imob-galeria__nav {
	position: absolute;
	inset: auto var(--imob-space-md) var(--imob-space-md) auto;
	display: flex;
	gap: var(--imob-space-sm);
}

.imob-galeria__botao {
	display: grid;
	place-items: center;
	width: 56px;
	height: 56px;
	border: 0;
	border-radius: var(--imob-radius-pill);
	background: rgba(255, 255, 255, 0.94);
	color: var(--imob-ink);
	cursor: pointer;
	box-shadow: var(--imob-shadow-card);
	transition: background var(--imob-transicao-rapida);
}

.imob-galeria__botao:hover {
	background: #FFFFFF;
}

.imob-galeria__tiras {
	display: flex;
	gap: var(--imob-space-12);
	margin-top: var(--imob-space-12);
	overflow-x: auto;
	padding-bottom: var(--imob-space-xs);
	scrollbar-width: thin;
}

.imob-galeria__tira {
	flex: 0 0 auto;
	width: 104px;
	aspect-ratio: 4 / 3;
	border: 2px solid transparent;
	border-radius: var(--imob-radius-sm);
	overflow: hidden;
	padding: 0;
	background: var(--imob-surface-sunken);
	cursor: pointer;
	transition: border-color var(--imob-transicao-rapida);
}

.imob-galeria__tira img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.imob-galeria__tira[aria-current='true'] {
	border-color: var(--imob-accent);
}

/* Blocos de conteúdo da ficha */
.imob-bloco {
	margin-top: var(--imob-space-lg);
	padding-top: var(--imob-space-lg);
	border-top: 1px solid var(--imob-outline);
}

.imob-bloco__titulo {
	font-size: var(--imob-h3);
	line-height: var(--imob-h3-lh);
	margin-bottom: var(--imob-space-md);
}

/* Descrição: o Reading Passage do sistema de origem, quase intacto. */
.imob-descricao {
	font-size: 1.1875rem;
	line-height: 1.68;
	max-width: var(--imob-medida);
	color: var(--imob-ink);
}

.imob-descricao p + p {
	margin-top: var(--imob-space-md);
}

/* Tabela de dados: fios, não uma grade de cartõezinhos. */
.imob-dados {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
	gap: 0 var(--imob-space-lg);
}

.imob-dados__linha {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: var(--imob-space-md);
	padding: var(--imob-space-12) 0;
	border-bottom: 1px solid var(--imob-outline);
}

.imob-dados__rotulo {
	color: var(--imob-ink-muted);
	font-size: var(--imob-small);
}

.imob-dados__valor {
	font-family: var(--imob-font-mono);
	font-weight: 500;
	color: var(--imob-ink);
	text-align: right;
}

/* Painel de contato */
.imob-contato {
	position: sticky;
	top: var(--imob-space-24);
	display: flex;
	flex-direction: column;
	gap: var(--imob-space-md);
	padding: var(--imob-space-24);
	background: var(--imob-surface-elevated);
	border: 1px solid var(--imob-outline);
	border-radius: var(--imob-radius-xl);
	box-shadow: var(--imob-shadow-card);
}

.imob-contato__preco {
	padding-bottom: var(--imob-space-md);
	border-bottom: 1px solid var(--imob-outline);
}

.imob-contato__extra {
	display: flex;
	flex-direction: column;
	gap: var(--imob-space-xs);
	font-size: var(--imob-small);
	color: var(--imob-ink-muted);
}

.imob-corretor {
	display: flex;
	align-items: center;
	gap: var(--imob-space-12);
	padding-top: var(--imob-space-md);
	border-top: 1px solid var(--imob-outline);
}

/* Avatar herdado do sistema de origem: anel branco interno, anel sky externo. */
.imob-avatar {
	display: grid;
	place-items: center;
	width: 56px;
	height: 56px;
	flex: 0 0 auto;
	border-radius: var(--imob-radius-pill);
	background: var(--imob-accent-soft);
	color: var(--imob-accent-deep);
	box-shadow: 0 0 0 3px #FFFFFF, 0 0 0 5px var(--imob-accent);
	font-family: var(--imob-font-display);
	font-weight: 700;
	font-size: var(--imob-body);
}

.imob-corretor__nome {
	font-weight: 700;
}

.imob-corretor__papel {
	font-size: var(--imob-caption);
	color: var(--imob-ink-meta);
}

/* Barra fixa de contato no mobile, substituindo o painel lateral. */
.imob-barra-contato {
	display: none;
}

@media (max-width: 900px) {
	.imob-barra-contato {
		position: fixed;
		inset: auto 0 0 0;
		z-index: 40;
		display: flex;
		align-items: center;
		gap: var(--imob-space-md);
		padding: var(--imob-space-12) var(--imob-gutter);
		background: var(--imob-surface-elevated);
		border-top: 1px solid var(--imob-outline);
		box-shadow: var(--imob-shadow-panel);
	}

	.imob-barra-contato .imob-preco {
		font-size: 1.5rem;
	}

	.imob-barra-contato .imob-botao {
		margin-left: auto;
	}
}

/* Bloco de localização aproximada */
.imob-mapa {
	position: relative;
	aspect-ratio: 16 / 9;
	border-radius: var(--imob-radius-lg);
	overflow: hidden;
	background: var(--imob-surface-sunken);
	display: grid;
	place-items: center;
}

.imob-mapa iframe {
	width: 100%;
	height: 100%;
	border: 0;
	display: block;
}

.imob-mapa__aviso {
	display: grid;
	place-items: center;
	gap: var(--imob-space-sm);
	text-align: center;
	padding: var(--imob-space-24);
	color: var(--imob-ink-muted);
	font-size: var(--imob-small);
	max-width: 28rem;
}

/* --------------------------------------------------------------------------
 * Herói da home. Mais alto que o topo do arquivo, porque aqui a foto é o
 * argumento da página, não um enfeite de cabeçalho.
 * -------------------------------------------------------------------------- */

.imob-topo--hero {
	padding-top: var(--imob-space-xl);
}

.imob-topo__figura--hero {
	height: 26rem;
}

@media (max-width: 900px) {
	.imob-topo__figura--hero {
		height: 14rem;
	}

	.imob-topo--hero {
		padding-top: var(--imob-space-lg);
	}
}

/* --------------------------------------------------------------------------
 * Onde temos imóveis. Lista de links com número, de propósito uma família de
 * layout diferente da grade de cards.
 * -------------------------------------------------------------------------- */

.imob-cidades__lista {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 0 var(--imob-space-lg);
}

.imob-cidades__item {
	border-bottom: 1px solid var(--imob-outline);
}

.imob-cidades__link {
	display: flex;
	align-items: baseline;
	gap: var(--imob-space-12);
	min-height: 56px;
	padding: var(--imob-space-12) 0;
	color: var(--imob-ink);
	text-decoration: none;
	transition: color var(--imob-transicao-rapida);
}

.imob-cidades__link:hover {
	color: var(--imob-accent-acao-hover);
}

.imob-cidades__nome {
	font-family: var(--imob-font-display);
	font-size: var(--imob-h3);
	font-weight: 700;
	line-height: var(--imob-h3-lh);
}

.imob-cidades__conta {
	font-family: var(--imob-font-mono);
	font-size: var(--imob-caption);
	color: var(--imob-ink-meta);
	margin-left: auto;
}

.imob-cidades__link .imob-icone {
	color: var(--imob-accent-acao);
	align-self: center;
}

/* --------------------------------------------------------------------------
 * Formulário de contato
 * -------------------------------------------------------------------------- */

.imob-formulario {
	display: flex;
	flex-direction: column;
	gap: var(--imob-space-md);
	max-width: 46rem;
}

.imob-formulario__linha {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: var(--imob-space-md);
}

.imob-campo textarea {
	width: 100%;
	min-height: 120px;
	padding: var(--imob-space-12) var(--imob-space-md);
	font-family: var(--imob-font-body);
	font-size: var(--imob-body);
	line-height: var(--imob-body-lh);
	color: var(--imob-ink);
	background: var(--imob-surface);
	border: 1px solid var(--imob-outline);
	border-radius: var(--imob-radius-sm);
	resize: vertical;
	transition: border-color var(--imob-transicao-rapida), box-shadow var(--imob-transicao-rapida);
}

.imob-campo textarea::placeholder {
	color: var(--imob-ink-meta);
}

.imob-campo textarea:focus {
	outline: none;
	border-color: var(--imob-accent);
	box-shadow: 0 0 0 4px var(--imob-accent-soft);
}

/* Erro do campo: coral gentil, nunca vermelho duro, e nunca bloqueando o campo. */
.imob-campo input[aria-invalid='true'],
.imob-campo textarea[aria-invalid='true'] {
	border-color: var(--imob-coral);
	background: var(--imob-coral-soft);
}

.imob-erro {
	display: block;
	font-size: var(--imob-small);
	color: #A02525;
}

.imob-aviso {
	display: flex;
	align-items: center;
	gap: var(--imob-space-sm);
	padding: var(--imob-space-12) var(--imob-space-md);
	border-radius: var(--imob-radius-md);
	margin-bottom: var(--imob-space-md);
	font-size: var(--imob-small);
	max-width: 46rem;
}

.imob-aviso--leaf {
	background: var(--imob-leaf-soft);
	color: #0B6B2E;
}

.imob-aviso--coral {
	background: var(--imob-coral-soft);
	color: #A02525;
}

/* --------------------------------------------------------------------------
 * Paginação
 * -------------------------------------------------------------------------- */

.imob-paginacao {
	display: flex;
	justify-content: center;
	gap: var(--imob-space-sm);
	margin-top: var(--imob-space-48);
}

.imob-paginacao .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 56px;
	min-height: 56px;
	padding: 0 var(--imob-space-12);
	border-radius: var(--imob-radius-md);
	background: var(--imob-surface);
	border: 1px solid var(--imob-outline);
	color: var(--imob-ink);
	font-weight: 700;
	text-decoration: none;
	transition: background var(--imob-transicao-rapida);
}

.imob-paginacao .page-numbers:hover {
	background: var(--imob-accent-soft);
	color: var(--imob-accent-deep);
}

.imob-paginacao .page-numbers.current {
	background: var(--imob-accent);
	border-color: var(--imob-accent);
	color: #FFFFFF;
}

/* --------------------------------------------------------------------------
 * Bloco de contato do shortcode
 * -------------------------------------------------------------------------- */

.imob-contato-bloco {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--imob-space-md);
}

.imob-contato-bloco__link {
	display: inline-flex;
	align-items: center;
	gap: var(--imob-space-sm);
	min-height: 56px;
	color: var(--imob-accent-deep);
	font-weight: 700;
	text-decoration: none;
}

.imob-contato-bloco__link:hover {
	text-decoration: underline;
}

/* Utilitário de leitor de tela */
.imob-oculto-visual {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}
