/**
 * ImobiPress — estilos do frontend.
 *
 * Todos os valores visuais são expostos como variáveis CSS e/ou controlados
 * pelos controles dos widgets do Elementor. Este arquivo entrega apenas a
 * estrutura e um padrão neutro e agradável.
 */

.imobi-widget,
.imobi-card,
.imobi-search,
.imobi-form {
	box-sizing: border-box;
}

.imobi-card *,
.imobi-search *,
.imobi-form *,
.imobi-section * {
	box-sizing: border-box;
}

:root {
	--imobi-radius: 12px;
	--imobi-border: #e4e7ec;
	--imobi-muted: #667085;
	--imobi-text: #1d2939;
	--imobi-accent: #1570ef;
	--imobi-surface: #ffffff;
	--imobi-surface-alt: #f9fafb;
	--imobi-success: #12b76a;
	--imobi-danger: #d92d20;
	--imobi-shadow: 0 1px 3px rgba(16, 24, 40, .1), 0 1px 2px rgba(16, 24, 40, .06);
	--imobi-shadow-lg: 0 12px 24px -6px rgba(16, 24, 40, .12), 0 4px 8px -4px rgba(16, 24, 40, .06);
	--imobi-ratio-16-9: 16 / 9;
	--imobi-ratio-4-3: 4 / 3;
	--imobi-ratio-21-9: 21 / 9;
	--imobi-ratio-1-1: 1 / 1;
}

/**
 * Cor de texto de elementos interativos dentro do plugin.
 *
 * Todo tema estiliza `a` e `button` por tag. O hello-elementor usa
 * `a { color:#c36 }`, `a:hover { color:#336 }` e a mesma cor nos botões; outro
 * tema usará outra. Qualquer link ou botão do plugin que não declare cor
 * própria (miniatura da galeria, ponto do carrossel, título na tabela do
 * painel, ação de uma linha) nasce com a cor do tema, sem relação nenhuma com
 * a paleta de quem estiver usando o plugin.
 *
 * O padrão certo dentro de um componente é herdar a cor do contexto: o
 * componente — ou o controle do Elementor que o estiliza — já decidiu a cor do
 * texto ali.
 *
 * **O `:where()` é o ponto todo, não enfeite.** Ele zera a especificidade do
 * escopo e deixa a regra em (0,0,1), o menor peso possível para um seletor de
 * tag. Isso é deliberado: a regra precisa ceder para **qualquer** componente que
 * defina a própria cor, inclusive os de classe única como
 * `.imobi-dashboard-button` (0,1,0). Escrever isto sem `:where()` deixaria a
 * regra em (0,1,1) e ela roubaria a cor desses componentes — foi exatamente o
 * que aconteceu na primeira versão desta seção, e o botão "Novo imóvel" perdeu
 * o texto branco.
 *
 * O que torna uma regra tão fraca capaz de vencer o tema é `Theme_CSS_Layer`:
 * o CSS do tema fica dentro de `@layer imobipress-theme`, e regra fora de
 * camada vence regra em camada **independentemente de especificidade**. Antes
 * disso, o estado normal só ganhava por ordem de carregamento e o `:hover`
 * precisava subir para (0,1,1) — o que o fazia atropelar componentes.
 *
 * Se o isolamento for desligado em Configurações → Recursos, volta a valer o
 * desempate por ordem de carregamento: `imobipress.css` é enfileirado depois do
 * tema, então o estado normal continua correto, e só o `:hover` do tema volta a
 * vencer. É a razão de os componentes com cor própria continuarem declarando o
 * próprio `:hover`.
 */
:where([class*="imobi-"]) a,
:where([class*="imobi-"]) button {
	color: inherit;
}

:where([class*="imobi-"]) a:hover,
:where([class*="imobi-"]) a:focus,
:where([class*="imobi-"]) button:hover,
:where([class*="imobi-"]) button:focus {
	color: inherit;
}

/**
 * O atributo `hidden` do HTML precisa esconder de verdade.
 *
 * Diferente das regras acima, esta **não** usa `:where()` e é proposital. O
 * `reset.css` do hello-elementor declara `[hidden]{display:none}` (0,1,0) e,
 * mais abaixo no mesmo arquivo, `[type=button],[type=submit],button{…display:
 * inline-block…}` — também (0,1,0). Mesmo peso, e quem vem depois vence: um
 * `<button hidden>` continua visível. Como as duas regras moram na mesma folha,
 * `Theme_CSS_Layer` não desempata nada aqui — as duas estão na mesma camada.
 *
 * Por isso o peso é (0,2,0): tem de vencer o `[type=button]` do tema mesmo com
 * o isolamento desligado. E o alvo é o atributo, não um componente — qualquer
 * lugar do plugin que use `hidden` (painel de ações, busca avançada, barra do
 * comparador, botão de cancelar visita) depende disto.
 */
[class*="imobi-"][hidden],
[class*="imobi-"] [hidden] {
	display: none;
}

/**
 * Controles de formulário não herdam tipografia por decisão do user-agent: um
 * `<input>` sem regra nenhuma sai em Arial 13.33px, não na fonte da página.
 * Cada tema resolve isso do seu jeito — o hello-elementor declara
 * `font-family: inherit; font-size: 1rem; line-height: 1.5`, o Blocksy declara
 * outra coisa, e um tema que não declare nada deixa o Arial aparecer no meio do
 * formulário de contato.
 *
 * Herdar é o comportamento certo e o único que não depende de quem está
 * instalado. Fica em `:where()` pelo mesmo motivo do bloco acima: precisa ceder
 * para qualquer componente que defina a própria tipografia.
 */
:where([class*="imobi-"]) button,
:where([class*="imobi-"]) input,
:where([class*="imobi-"]) select,
:where([class*="imobi-"]) textarea {
	font-family: inherit;
	font-size: inherit;
	line-height: inherit;
}

/**
 * Os widgets ocupam a largura do container mesmo quando ele está com
 * `align-items` diferente de `stretch`. Sem isto, um widget sem conteúdo de
 * largura intrínseca (o mapa) colapsaria para 0px, e a galeria seria
 * dimensionada pela régua de miniaturas em vez do container.
 */
[class*="elementor-widget-imobipress-"] {
	width: 100%;
	min-width: 0;
}

.imobi-gallery,
.imobi-carousel,
.imobi-search,
.imobi-listing,
.imobi-section,
.imobi-map {
	min-width: 0;
}

.imobi-gallery__thumbs {
	min-width: 0;
	max-width: 100%;
}

.imobi-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	line-height: 1;
	flex-shrink: 0;
}

.imobi-icon svg {
	display: block;
	width: 1em;
	height: 1em;
}

/* --------------------------------------------------------------- Grade */

.imobi-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px;
}

.imobi-grid--cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
.imobi-grid--cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.imobi-grid--cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.imobi-grid--cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.imobi-grid--cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.imobi-grid--cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

@media (max-width: 1024px) {
	.imobi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 640px) {
	.imobi-grid { grid-template-columns: 1fr; }
}

/* Refazendo a busca após arrastar o mapa sincronizado. */
.imobi-listing.is-loading .imobi-grid {
	opacity: .5;
	pointer-events: none;
	transition: opacity .15s ease;
}

/* Alternância grade/lista pela barra de ordenação. */
.imobi-view-list .imobi-grid {
	grid-template-columns: 1fr !important;
}

.imobi-view-list .imobi-card {
	flex-direction: row;
}

.imobi-view-list .imobi-card__media {
	flex: 0 0 40%;
	max-width: 40%;
}

/* -------------------------------------------------------------- Cartão */

.imobi-card {
	position: relative;
	display: flex;
	flex-direction: column;
	background: var(--imobi-surface);
	border: 1px solid var(--imobi-border);
	border-radius: var(--imobi-radius);
	overflow: hidden;
	transition: box-shadow .25s ease, transform .25s ease, border-color .25s ease;
}

.imobi-card:hover {
	box-shadow: var(--imobi-shadow-lg);
}

.imobi-card--list {
	flex-direction: row;
}

.imobi-card--list .imobi-card__media {
	flex: 0 0 40%;
	max-width: 40%;
}

.imobi-card--overlay .imobi-card__body {
	position: absolute;
	inset: auto 0 0 0;
	z-index: 2;
	color: #fff;
	background: linear-gradient(to top, rgba(0, 0, 0, .82), rgba(0, 0, 0, 0));
}

.imobi-card--overlay .imobi-card__title a,
.imobi-card--overlay .imobi-card__address,
.imobi-card--overlay .imobi-card__price,
.imobi-card--overlay .imobi-details__value,
.imobi-card--overlay .imobi-details__label {
	color: inherit;
}

.imobi-card__media {
	position: relative;
	overflow: hidden;
}

.imobi-card__thumb {
	position: relative;
	display: block;
	height: 230px;
	overflow: hidden;
	background: var(--imobi-surface-alt);
}

.imobi-card__thumb::after {
	content: "";
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity .25s ease;
	pointer-events: none;
}

.imobi-card__image,
.imobi-card__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform .45s ease;
}

.imobi-card__placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	font-size: 32px;
	color: #c4c9d2;
}

.imobi-card__badges {
	position: absolute;
	top: var(--imobi-badge-offset, 12px);
	left: var(--imobi-badge-offset, 12px);
	z-index: 3;
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	/* Reserva a faixa dos botões de favoritar/comparar no canto oposto. */
	max-width: calc(100% - var(--imobi-badge-offset, 12px) - 92px);
}

.imobi-badges-top-right .imobi-card__badges,
.imobi-badges-bottom-right .imobi-card__badges {
	justify-content: flex-end;
}

.imobi-badges-bottom-left .imobi-card__badges,
.imobi-badges-bottom-right .imobi-card__badges {
	max-width: calc(100% - var(--imobi-badge-offset, 12px) * 2);
}

.imobi-badges-top-right .imobi-card__badges {
	left: auto;
	right: var(--imobi-badge-offset, 12px);
}

.imobi-badges-bottom-left .imobi-card__badges {
	top: auto;
	bottom: var(--imobi-badge-offset, 12px);
}

.imobi-badges-bottom-right .imobi-card__badges {
	top: auto;
	left: auto;
	right: var(--imobi-badge-offset, 12px);
	bottom: var(--imobi-badge-offset, 12px);
}

.imobi-badge {
	display: inline-flex;
	align-items: center;
	padding: 4px 10px;
	border-radius: 999px;
	font-size: 12px;
	font-weight: 600;
	line-height: 1.4;
	color: #fff;
	background: var(--imobi-accent);
	white-space: nowrap;
}

.imobi-badge--featured {
	background: #f79009;
}

.imobi-badge--label {
	background: #7a5af8;
}

.imobi-card__actions {
	position: absolute;
	top: 12px;
	right: 12px;
	z-index: 3;
	display: flex;
	gap: 6px;
	opacity: 0;
	transform: translateY(-4px);
	transition: opacity .25s ease, transform .25s ease;
}

.imobi-card:hover .imobi-card__actions,
.imobi-card__actions:focus-within {
	opacity: 1;
	transform: none;
}

.imobi-action {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, .92);
	color: var(--imobi-text);
	font-size: 16px;
	cursor: pointer;
	transition: background-color .2s ease, color .2s ease, transform .2s ease;
}

.imobi-action:hover {
	transform: scale(1.08);
}

.imobi-action.is-active {
	color: #f04438;
}

.imobi-action.is-active svg {
	fill: currentColor;
}

.imobi-card__photos {
	position: absolute;
	right: 12px;
	bottom: 12px;
	z-index: 3;
	display: inline-flex;
	align-items: center;
	gap: 5px;
	padding: 3px 9px;
	border-radius: 999px;
	background: rgba(16, 24, 40, .7);
	color: #fff;
	font-size: 12px;
	font-weight: 600;
}

.imobi-card__body {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 18px;
	flex: 1 1 auto;
}

.imobi-card__type {
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--imobi-accent);
}

.imobi-card__title {
	margin: 0;
	font-size: 18px;
	line-height: 1.35;
}

.imobi-card__title a {
	color: var(--imobi-text);
	text-decoration: none;
	transition: color .2s ease;
}

.imobi-card__address {
	display: flex;
	align-items: flex-start;
	gap: 6px;
	font-size: 14px;
	color: var(--imobi-muted);
	line-height: 1.4;
}

.imobi-card__excerpt {
	margin: 0;
	font-size: 14px;
	color: var(--imobi-muted);
	line-height: 1.55;
}

.imobi-card__footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: auto;
	padding-top: 4px;
}

.imobi-card__price {
	font-size: 20px;
	font-weight: 700;
	color: var(--imobi-text);
	line-height: 1.2;
}

.imobi-card__price-alt {
	display: block;
	font-size: 14px;
	font-weight: 500;
	color: var(--imobi-muted);
}

.imobi-card__ref {
	font-size: 12px;
	color: var(--imobi-muted);
}

.imobi-card__agent {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
	color: var(--imobi-muted);
}

/* A especificidade dupla é necessária: o Elementor 4 traz `.elementor img
   { border-radius: 0 }` (0,1,1), que vence um seletor de classe só. */
.imobi-card .imobi-card__agent-photo,
.imobi-card__agent .imobi-card__agent-photo {
	width: 30px;
	height: 30px;
	border-radius: 50%;
	object-fit: cover;
	flex-shrink: 0;
}

.imobi-card__button,
.imobi-button {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 10px 18px;
	border-radius: 8px;
	background: var(--imobi-accent);
	color: #fff;
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	transition: background-color .2s ease, color .2s ease;
}

/* ------------------------------------------------------------ Detalhes */

.imobi-details {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.imobi-details__item {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 14px;
	color: var(--imobi-muted);
}

.imobi-details__icon {
	font-size: 17px;
	color: var(--imobi-accent);
}

.imobi-details__value {
	font-weight: 600;
	color: var(--imobi-text);
}

.imobi-details--inline .imobi-details__label {
	display: none;
}

.imobi-details--stacked {
	flex-wrap: wrap;
}

.imobi-details--stacked .imobi-details__item {
	flex-direction: column;
	align-items: flex-start;
	gap: 2px;
}

.imobi-details--boxed .imobi-details__item {
	flex: 1 1 0;
	flex-direction: column;
	align-items: center;
	gap: 2px;
	padding: 10px 6px;
	border: 1px solid var(--imobi-border);
	border-radius: 8px;
	text-align: center;
}

/* ------------------------------------------------------------- Listagem */

.imobi-listing__count {
	margin-bottom: 16px;
	font-size: 15px;
	color: var(--imobi-muted);
}

.imobi-listing__footer {
	display: flex;
	justify-content: center;
	margin-top: 32px;
}

.imobi-load-more {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 12px 28px;
	border: 1px solid var(--imobi-border);
	border-radius: 999px;
	background: var(--imobi-surface);
	color: var(--imobi-text);
	font-size: 15px;
	font-weight: 600;
	cursor: pointer;
	transition: background-color .2s ease, color .2s ease;
}

.imobi-load-more__spinner {
	display: none;
	width: 16px;
	height: 16px;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	animation: imobi-spin .7s linear infinite;
}

.imobi-load-more.is-loading .imobi-load-more__spinner {
	display: block;
}

@keyframes imobi-spin {
	to { transform: rotate(360deg); }
}

.imobi-pagination__list {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0;
	padding: 0;
	list-style: none;
}

/* Só os filhos diretos do <li> são "botão". Sem o `>`, o <span> do ícone e o
   do rótulo dentro de Anterior/Próximo herdavam borda, fundo e min-width e
   apareciam como uma caixa dentro da caixa. */
.imobi-pagination__list > li > a,
.imobi-pagination__list > li > span {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-width: 40px;
	height: 40px;
	padding: 0 12px;
	border: 1px solid var(--imobi-border);
	border-radius: 8px;
	color: var(--imobi-text);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	justify-content: center;
}

.imobi-pagination .current {
	background: var(--imobi-accent);
	border-color: var(--imobi-accent);
	color: #fff;
}

/* Anterior/Próximo ficam quadrados como os números: o rótulo existe só para
   leitores de tela, o que se vê é a seta. */
.imobi-pagination .prev,
.imobi-pagination .next {
	padding: 0;
	gap: 0;
}

.imobi-pagination__label {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

.imobi-pagination a:hover,
.imobi-pagination a:focus-visible {
	border-color: var(--imobi-accent);
	color: var(--imobi-accent);
}

/* ------------------------------------------------------------- Vazio */

.imobi-empty {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 10px;
	padding: 48px 24px;
	border: 1px dashed var(--imobi-border);
	border-radius: var(--imobi-radius);
	color: var(--imobi-muted);
	text-align: center;
}

.imobi-empty__icon {
	font-size: 30px;
	opacity: .6;
}

.imobi-empty__text {
	margin: 0;
	font-size: 15px;
}

.imobi-editor-notice {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 18px 20px;
	border: 1px dashed #b4bcc9;
	border-radius: 10px;
	background: #f6f8fb;
	color: #5a6478;
	font-size: 14px;
}

.imobi-editor-notice__icon {
	font-size: 20px;
}

/* -------------------------------------------------------------- Campos */

.imobi-field {
	display: flex;
	flex-direction: column;
	gap: 6px;
	min-width: 0;
}

.imobi-field__label {
	font-size: 13px;
	font-weight: 600;
	color: var(--imobi-text);
}

.imobi-field__required {
	color: #f04438;
}

.imobi-field__control {
	position: relative;
	display: flex;
	align-items: center;
}

.imobi-field__icon {
	position: absolute;
	left: 12px;
	font-size: 17px;
	color: var(--imobi-muted);
	pointer-events: none;
}

.imobi-field__control:has(.imobi-field__icon) .imobi-field__input {
	padding-left: 38px;
}

.imobi-field__input {
	width: 100%;
	height: 46px;
	padding: 0 14px;
	border: 1px solid var(--imobi-border);
	border-radius: 8px;
	background: var(--imobi-surface);
	color: var(--imobi-text);
	font-size: 14px;
	font-family: inherit;
	line-height: 1.4;
	transition: border-color .2s ease, box-shadow .2s ease;
}

.imobi-field__input:focus {
	outline: none;
	border-color: var(--imobi-accent);
	box-shadow: 0 0 0 3px rgba(21, 112, 239, .12);
}

textarea.imobi-field__input,
.imobi-field__textarea {
	height: auto;
	padding: 12px 14px;
	resize: vertical;
}

select.imobi-field__input[multiple] {
	height: auto;
	padding: 8px;
}

.imobi-field__checkbox {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	font-size: 14px;
	color: var(--imobi-muted);
	cursor: pointer;
	line-height: 1.4;
}

.imobi-field__checkbox input {
	margin-top: 2px;
}

.imobi-field__checkbox-list {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
	gap: 8px 16px;
	width: 100%;
}

/* -------------------------------------------------------------- Busca */

.imobi-search {
	padding: 20px;
	border-radius: var(--imobi-radius);
	background: var(--imobi-surface);
	box-shadow: var(--imobi-shadow);
}

.imobi-search__fields {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	align-items: flex-end;
}

.imobi-search__fields > .imobi-field {
	flex: 1 1 200px;
	min-width: 140px;
}

.imobi-search__actions {
	flex: 0 0 auto;
}

.imobi-search__submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	height: 46px;
	padding: 0 26px;
	border: 0;
	border-radius: 8px;
	background: var(--imobi-accent);
	color: #fff;
	font-size: 15px;
	font-weight: 600;
	font-family: inherit;
	cursor: pointer;
	transition: background-color .2s ease;
	width: 100%;
}

.imobi-search__advanced {
	margin-top: 12px;
	padding-top: 12px;
	border-top: 1px solid var(--imobi-border);
}

.imobi-search__advanced[hidden] {
	display: none;
}

.imobi-search__bar {
	display: flex;
	align-items: center;
	gap: 16px;
	flex-wrap: wrap;
	margin-top: 12px;
}

.imobi-search__toggle {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 0;
	border: 0;
	background: none;
	color: var(--imobi-accent);
	font-size: 14px;
	font-weight: 600;
	font-family: inherit;
	cursor: pointer;
}

.imobi-search__count {
	font-size: 14px;
	color: var(--imobi-muted);
}

.imobi-search__reset {
	margin-left: auto;
	font-size: 14px;
	color: var(--imobi-muted);
	text-decoration: none;
}

.imobi-search__save {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 0;
	border: 0;
	background: none;
	color: var(--imobi-accent);
	font-size: 14px;
	font-weight: 600;
	font-family: inherit;
	cursor: pointer;
}

.imobi-search__bar {
	position: relative;
}

.imobi-search__save-popover {
	position: absolute;
	top: calc(100% + 8px);
	right: 0;
	z-index: 30;
	display: flex;
	flex-direction: column;
	gap: 8px;
	width: 260px;
	padding: 14px;
	border: 1px solid var(--imobi-border);
	border-radius: 10px;
	background: var(--imobi-surface);
	box-shadow: var(--imobi-shadow-lg);
}

.imobi-search__save-label {
	font-size: 13px;
	font-weight: 600;
	color: var(--imobi-text);
}

.imobi-search__save-input {
	height: 40px;
	padding: 0 12px;
	border: 1px solid var(--imobi-border);
	border-radius: 6px;
	font-family: inherit;
	font-size: 14px;
}

.imobi-search__save-actions {
	display: flex;
	gap: 8px;
}

.imobi-search__save-confirm,
.imobi-search__save-cancel {
	flex: 1 1 0;
	height: 36px;
	padding: 0 10px;
	border: 0;
	border-radius: 6px;
	font-family: inherit;
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
}

.imobi-search__save-confirm {
	background: var(--imobi-accent);
	color: #fff;
}

.imobi-search__save-cancel {
	background: var(--imobi-surface-alt);
	color: var(--imobi-text);
}

.imobi-search-layout-stacked .imobi-search__fields {
	flex-direction: column;
	align-items: stretch;
}

.imobi-search-layout-stacked .imobi-search__fields > .imobi-field {
	max-width: none !important;
	flex: 1 1 auto !important;
}

@media (max-width: 767px) {
	.imobi-search__fields > .imobi-field,
	.imobi-search__actions {
		flex: 1 1 100% !important;
		max-width: 100% !important;
	}
}

/* ---------------------------------------------------------- Ordenação */

.imobi-sortbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 14px;
	padding: 12px 0;
	font-size: 14px;
	color: var(--imobi-muted);
}

.imobi-sortbar__controls {
	display: flex;
	align-items: center;
	gap: 14px;
}

.imobi-sortbar__form {
	display: flex;
	align-items: center;
	gap: 8px;
}

/* O rótulo é curto e o <select> ao lado é elástico: sem isto o "Ordenar por:"
   quebra em duas linhas mesmo sobrando espaço na barra. */
.imobi-sortbar__label {
	white-space: nowrap;
}

.imobi-sortbar__select {
	height: 40px;
	padding: 0 12px;
	border: 1px solid var(--imobi-border);
	border-radius: 8px;
	background: var(--imobi-surface);
	color: inherit;
	font-family: inherit;
	font-size: 14px;
}

.imobi-sortbar__views {
	display: flex;
	gap: 4px;
}

.imobi-sortbar__view {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	border: 1px solid var(--imobi-border);
	border-radius: 8px;
	background: var(--imobi-surface);
	color: var(--imobi-muted);
	font-size: 17px;
	cursor: pointer;
}

/* Sem uma regra explícita de hover, o `button:hover { color: #c36 }` do
   hello-elementor (0,1,1) vence o seletor de classe do plugin e o ícone fica
   rosa. Vale para qualquer <button> do plugin — ver `.imobi-button-reset`. */
.imobi-sortbar__view:hover,
.imobi-sortbar__view:focus-visible {
	color: var(--imobi-accent);
	border-color: var(--imobi-accent);
	background: var(--imobi-surface);
}

.imobi-sortbar__view.is-active {
	color: var(--imobi-accent);
	border-color: var(--imobi-accent);
}

/* --------------------------------------------------------- Carrossel */

.imobi-carousel {
	position: relative;
}

.imobi-carousel__viewport {
	overflow: hidden;
}

.imobi-carousel__track {
	--imobi-slides: 3;
	--imobi-gap: 24px;
	display: flex;
	gap: var(--imobi-gap);
	transition: transform .45s cubic-bezier(.22, .61, .36, 1);
	will-change: transform;
}

.imobi-carousel__slide {
	flex: 0 0 calc((100% - (var(--imobi-slides) - 1) * var(--imobi-gap)) / var(--imobi-slides));
	min-width: 0;
}

.imobi-carousel__arrow {
	position: absolute;
	top: 40%;
	z-index: 4;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 42px;
	border: 0;
	border-radius: 50%;
	background: var(--imobi-surface);
	color: var(--imobi-text);
	box-shadow: var(--imobi-shadow);
	font-size: 18px;
	cursor: pointer;
	transition: background-color .2s ease, opacity .2s ease;
}

.imobi-carousel__arrow--prev { left: -18px; }
.imobi-carousel__arrow--next { right: -18px; }

.imobi-carousel__arrow[disabled] {
	opacity: .4;
	cursor: default;
}

.imobi-carousel__dots {
	display: flex;
	justify-content: center;
	gap: 8px;
	margin-top: 20px;
}

.imobi-carousel__dot {
	width: 8px;
	height: 8px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: #d0d5dd;
	cursor: pointer;
	transition: width .2s ease, background-color .2s ease;
}

.imobi-carousel__dot.is-active {
	width: 22px;
	border-radius: 999px;
	background: var(--imobi-accent);
}

/* -------------------------------------------------------------- Mapa */

.imobi-map {
	width: 100%;
	height: 500px;
	background: var(--imobi-surface-alt);
	z-index: 0;
}

/* A tela do Leaflet precisa herdar a altura definida no widget. */
.imobi-map .leaflet-container {
	width: 100%;
	height: 100%;
	font: inherit;
}

.imobi-map--fallback {
	display: flex;
	align-items: center;
	justify-content: center;
	border: 1px dashed var(--imobi-border);
	border-radius: inherit;
	padding: 28px;
}

.imobi-map__fallback {
	max-width: 520px;
	text-align: left;
}

.imobi-map__fallback-title {
	margin: 0 0 12px;
	font-size: 15px;
	font-weight: 600;
	color: var(--imobi-muted);
	text-align: center;
}

.imobi-map__fallback-list {
	margin: 0;
	padding: 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 7px;
}

.imobi-map__fallback-list li {
	display: flex;
	justify-content: space-between;
	gap: 14px;
	padding-bottom: 7px;
	border-bottom: 1px dashed var(--imobi-border);
	font-size: 14px;
}

.imobi-map__fallback-list a {
	color: var(--imobi-text);
	text-decoration: none;
}

.imobi-map__fallback-list strong {
	color: var(--imobi-accent);
	white-space: nowrap;
}

.imobi-marker {
	display: inline-flex;
	align-items: center;
	padding: 5px 10px;
	border-radius: 999px;
	background: var(--imobi-accent);
	color: #fff;
	font-size: 13px;
	font-weight: 700;
	white-space: nowrap;
	box-shadow: 0 2px 6px rgba(16, 24, 40, .25);
}

.imobi-marker--cluster {
	width: 42px;
	height: 42px;
	justify-content: center;
	border-radius: 50%;
	background: #f79009;
}

/* Destaque de sincronia entre a grade e o mapa (hover no cartão). */
.imobi-marker--active {
	z-index: 1000 !important;
	transition: transform .15s ease;
	transform: scale(1.15);
	filter: drop-shadow(0 4px 8px rgba(16, 24, 40, .35));
}

.imobi-marker--active .imobi-marker {
	background: var(--imobi-text);
}

.imobi-map-popup {
	width: 230px;
	font-family: inherit;
}

.imobi-map-popup img {
	width: 100%;
	height: 120px;
	object-fit: cover;
	border-radius: 8px;
	margin-bottom: 8px;
	display: block;
}

.imobi-map-popup__title {
	display: block;
	font-size: 14px;
	font-weight: 600;
	color: var(--imobi-text);
	text-decoration: none;
	line-height: 1.35;
}

.imobi-map-popup__price {
	display: block;
	margin-top: 4px;
	font-size: 15px;
	font-weight: 700;
	color: var(--imobi-accent);
}

.imobi-map-popup__meta {
	margin-top: 4px;
	font-size: 12px;
	color: var(--imobi-muted);
}

/* --------------------------------------------------- Grade de termos */

.imobi-taxgrid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 20px;
}

.imobi-taxgrid__item {
	position: relative;
	display: flex;
	align-items: flex-end;
	height: 220px;
	padding: 18px;
	border-radius: var(--imobi-radius);
	overflow: hidden;
	text-decoration: none;
	background: var(--imobi-surface-alt);
	isolation: isolate;
}

.imobi-taxgrid__image {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	z-index: -2;
	transition: transform .45s ease;
}

.imobi-taxgrid__item:hover .imobi-taxgrid__image {
	transform: scale(1.06);
}

.imobi-taxgrid__item::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(to top, rgba(0, 0, 0, .75), rgba(0, 0, 0, .05));
}

.imobi-taxgrid--overlay .imobi-taxgrid__content {
	color: #fff;
}

.imobi-taxgrid--card {
	--imobi-taxgrid-card: 1;
}

.imobi-taxgrid--card .imobi-taxgrid__item {
	flex-direction: column;
	align-items: stretch;
	justify-content: flex-end;
	padding: 0;
	border: 1px solid var(--imobi-border);
}

.imobi-taxgrid--card .imobi-taxgrid__item::after {
	display: none;
}

.imobi-taxgrid--card .imobi-taxgrid__image {
	position: static;
	z-index: 0;
	height: 100%;
}

.imobi-taxgrid--card .imobi-taxgrid__content {
	padding: 14px 16px;
	background: var(--imobi-surface);
	color: var(--imobi-text);
}

.imobi-taxgrid--text .imobi-taxgrid__item {
	height: auto;
	border: 1px solid var(--imobi-border);
	background: var(--imobi-surface);
}

.imobi-taxgrid--text .imobi-taxgrid__item::after {
	display: none;
}

.imobi-taxgrid--text .imobi-taxgrid__content {
	color: var(--imobi-text);
}

.imobi-taxgrid__content {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 2px;
	width: 100%;
}

.imobi-taxgrid__name {
	font-size: 18px;
	font-weight: 700;
	line-height: 1.3;
}

.imobi-taxgrid__count {
	font-size: 13px;
	opacity: .85;
}

/* --------------------------------------------------------- Contadores */

.imobi-stats-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px;
}

.imobi-stat-item {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 6px;
	text-align: center;
}

.imobi-stat-item__icon {
	font-size: 34px;
	color: var(--imobi-accent);
}

.imobi-stat-item__value {
	font-size: 38px;
	font-weight: 700;
	line-height: 1.1;
	color: var(--imobi-text);
}

.imobi-stat-item__label {
	font-size: 15px;
	color: var(--imobi-muted);
}

/* ---------------------------------------------------------- Corretores */

.imobi-agents {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 24px;
}

.imobi-agent-card {
	display: flex;
	flex-direction: column;
	background: var(--imobi-surface);
	border: 1px solid var(--imobi-border);
	border-radius: var(--imobi-radius);
	overflow: hidden;
}

.imobi-agent-card__photo {
	display: block;
	height: 260px;
	background: var(--imobi-surface-alt);
}

.imobi-agent-card__photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

/* O corpo estica para que o botão de contato fique alinhado entre os cartões
   da linha, mesmo quando um e-mail longo quebra em duas linhas. */
.imobi-agent-card__body {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: 18px;
	flex: 1;
}

/* Especificidade dupla para vencer o `margin-top: 10px` do bloco compartilhado
   de botões de WhatsApp, definido mais abaixo neste arquivo. */
.imobi-agent-card .imobi-agent-card__whatsapp {
	margin-top: auto;
}

/* Endereços de e-mail longos quebram dentro do cartão em vez de esticá-lo. */
.imobi-agent-card__contacts a {
	overflow-wrap: anywhere;
}

.imobi-agent-card__name {
	margin: 0;
	font-size: 17px;
}

.imobi-agent-card__name a {
	color: var(--imobi-text);
	text-decoration: none;
}

.imobi-agent-card__position {
	font-size: 13px;
	font-weight: 600;
	color: var(--imobi-accent);
}

.imobi-agent-card__meta,
.imobi-agent-card__bio {
	margin: 0;
	font-size: 13px;
	color: var(--imobi-muted);
	line-height: 1.5;
}

.imobi-agent-card__contacts {
	display: flex;
	flex-direction: column;
	gap: 4px;
	margin: 6px 0 0;
	padding: 0;
	list-style: none;
}

.imobi-agent-card__contacts a,
.imobi-agentbox__contacts a {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	font-size: 14px;
	color: var(--imobi-muted);
	text-decoration: none;
	word-break: break-word;
}

.imobi-agent-card__socials {
	display: flex;
	gap: 8px;
	margin-top: 6px;
}

.imobi-agent-card__socials a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	border: 1px solid var(--imobi-border);
	border-radius: 50%;
	color: var(--imobi-muted);
	text-decoration: none;
}

.imobi-agent-card__whatsapp,
.imobi-agentbox__whatsapp,
.imobi-form__whatsapp {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	margin-top: 10px;
	padding: 10px 18px;
	border-radius: 8px;
	background: #25d366;
	color: #fff;
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
}

/**
 * O ícone é dimensionado em `1em` (ver `.imobi-icon svg`), então acompanha o
 * tamanho do texto — e um glifo do WhatsApp com a mesma altura da letra fica
 * ilegível: o desenho tem muito detalhe interno e some. Marcas pedem um pouco
 * mais de corpo que a tipografia ao lado.
 */
.imobi-agent-card__whatsapp .imobi-icon,
.imobi-agentbox__whatsapp .imobi-icon,
.imobi-form__whatsapp .imobi-icon,
.imobi-contact-details__whatsapp .imobi-icon,
.imobi-actions__button--whatsapp .imobi-icon {
	font-size: 1.35em;
}

/* ------------------------------------------------------------ Galeria */

.imobi-gallery {
	--imobi-gallery-gap: 8px;
	display: flex;
	flex-direction: column;
	gap: var(--imobi-gallery-gap);
}

.imobi-gallery__main {
	position: relative;
	height: 480px;
	border-radius: var(--imobi-radius);
	overflow: hidden;
	background: var(--imobi-surface-alt);
}

.imobi-gallery__slide {
	position: absolute;
	inset: 0;
	margin: 0;
	opacity: 0;
	transition: opacity .4s ease;
	pointer-events: none;
}

.imobi-gallery__slide.is-active {
	opacity: 1;
	pointer-events: auto;
}

.imobi-gallery__slide img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	cursor: zoom-in;
}

.imobi-gallery__arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 3;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, .9);
	color: var(--imobi-text);
	font-size: 18px;
	cursor: pointer;
}

.imobi-gallery__arrow--prev { left: 14px; }
.imobi-gallery__arrow--next { right: 14px; }

.imobi-gallery__badges {
	position: absolute;
	top: 14px;
	left: 14px;
	z-index: 3;
	display: flex;
	gap: 6px;
	flex-wrap: wrap;
}

.imobi-gallery__counter {
	position: absolute;
	right: 14px;
	bottom: 14px;
	z-index: 3;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 5px 12px;
	border-radius: 999px;
	background: rgba(16, 24, 40, .72);
	color: #fff;
	font-size: 13px;
	font-weight: 600;
}

.imobi-gallery__thumbs {
	--imobi-thumb-size: 90px;
	display: flex;
	gap: var(--imobi-gallery-gap);
	overflow-x: auto;
	padding-bottom: 4px;
	scrollbar-width: thin;
}

.imobi-gallery__thumb {
	flex: 0 0 var(--imobi-thumb-size);
	height: calc(var(--imobi-thumb-size) * .72);
	padding: 0;
	border: 2px solid transparent;
	border-radius: 8px;
	overflow: hidden;
	background: none;
	cursor: pointer;
	opacity: .65;
	transition: opacity .2s ease, border-color .2s ease;
}

.imobi-gallery__thumb.is-active,
.imobi-gallery__thumb:hover {
	opacity: 1;
	border-color: var(--imobi-accent);
}

.imobi-gallery__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.imobi-gallery__items {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--imobi-gallery-gap);
}

.imobi-gallery--mosaic .imobi-gallery__items {
	grid-template-columns: repeat(4, minmax(0, 1fr));
	grid-auto-rows: calc(var(--imobi-mosaic-height, 480px) / 2);
}

.imobi-gallery--mosaic .imobi-gallery__item:first-child {
	grid-column: span 2;
	grid-row: span 2;
}

.imobi-gallery__item {
	margin: 0;
	border-radius: 10px;
	overflow: hidden;
	background: var(--imobi-surface-alt);
}

.imobi-gallery--grid .imobi-gallery__item {
	aspect-ratio: 4 / 3;
}

.imobi-gallery__item img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	cursor: zoom-in;
	transition: transform .4s ease;
}

.imobi-gallery__item:hover img {
	transform: scale(1.04);
}

/* Lightbox próprio. */
.imobi-lightbox {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: flex;
	align-items: center;
	justify-content: center;
	background: rgba(9, 12, 20, .94);
}

.imobi-lightbox img {
	max-width: 92vw;
	max-height: 86vh;
	object-fit: contain;
	border-radius: 6px;
}

.imobi-lightbox__close,
.imobi-lightbox__nav {
	position: absolute;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, .14);
	color: #fff;
	font-size: 20px;
	cursor: pointer;
}

.imobi-lightbox__close { top: 20px; right: 20px; }
.imobi-lightbox__nav--prev { left: 20px; top: 50%; transform: translateY(-50%); }
.imobi-lightbox__nav--next { right: 20px; top: 50%; transform: translateY(-50%); }

.imobi-lightbox__counter {
	position: absolute;
	bottom: 22px;
	left: 50%;
	transform: translateX(-50%);
	color: #fff;
	font-size: 14px;
}

/* --------------------------------------------------- Seções do imóvel */

.imobi-section {
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.imobi-section__title {
	margin: 0;
	font-size: 22px;
	line-height: 1.3;
	color: var(--imobi-text);
}

.imobi-pheader {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.imobi-pheader__badges {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.imobi-pheader__title {
	margin: 0;
	font-size: 32px;
	line-height: 1.25;
	color: var(--imobi-text);
}

.imobi-pheader__address {
	display: flex;
	align-items: center;
	gap: 7px;
	font-size: 16px;
	color: var(--imobi-muted);
}

.imobi-pheader__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 18px;
	font-size: 14px;
	color: var(--imobi-muted);
}

.imobi-pheader__meta span {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

.imobi-price {
	display: flex;
	flex-direction: column;
	gap: 8px;
	align-items: flex-start;
}

.imobi-price--inline {
	flex-direction: row;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 20px;
}

.imobi-price__main {
	font-size: 34px;
	font-weight: 700;
	line-height: 1.1;
	color: var(--imobi-text);
}

.imobi-price__extras {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 22px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.imobi-price__extra {
	display: flex;
	flex-direction: column;
	font-size: 14px;
	color: var(--imobi-muted);
}

.imobi-price__extra-value {
	font-weight: 600;
	color: var(--imobi-text);
}

.imobi-overview {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.imobi-overview__item {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 16px;
	border: 1px solid var(--imobi-border);
	border-radius: 10px;
}

.imobi-overview--inline .imobi-overview__item,
.imobi-overview--stacked .imobi-overview__item {
	padding: 0;
	border: 0;
}

.imobi-overview--stacked {
	grid-template-columns: 1fr;
}

.imobi-overview--stacked .imobi-overview__item {
	justify-content: flex-start;
	padding: 10px 0;
	border-bottom: 1px solid var(--imobi-border);
}

.imobi-overview__icon {
	font-size: 24px;
	color: var(--imobi-accent);
}

.imobi-overview__text {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.imobi-overview__value {
	font-size: 17px;
	font-weight: 700;
	color: var(--imobi-text);
	line-height: 1.2;
}

.imobi-overview__label {
	font-size: 13px;
	color: var(--imobi-muted);
}

.imobi-description__content.is-collapsed {
	max-height: var(--imobi-collapse-height, 220px);
	overflow: hidden;
	position: relative;
	-webkit-mask-image: linear-gradient(to bottom, #000 60%, transparent 100%);
	mask-image: linear-gradient(to bottom, #000 60%, transparent 100%);
}

.imobi-description__content > *:first-child {
	margin-top: 0;
}

.imobi-description__toggle {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	align-self: flex-start;
	padding: 0;
	border: 0;
	background: none;
	color: var(--imobi-accent);
	font-size: 15px;
	font-weight: 600;
	font-family: inherit;
	cursor: pointer;
}

.imobi-description__toggle.is-open .imobi-icon {
	transform: rotate(180deg);
}

.imobi-features__list {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.imobi-features__item {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 15px;
	color: var(--imobi-text);
}

.imobi-features__item a {
	color: inherit;
	text-decoration: none;
}

.imobi-features__icon {
	font-size: 17px;
	color: var(--imobi-success);
}

.imobi-attrs {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	/* Colunas precisam de respiro; linhas não, pois já têm separador. */
	column-gap: 36px;
	row-gap: 0;
	margin: 0;
	padding: 0;
	list-style: none;
}

/**
 * Separador por item em vez de zebrado: com o número de colunas configurável,
 * um `nth-child(odd)` colore em ziguezague em vez de por linha.
 */
.imobi-attrs__item {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	padding: 11px 2px;
	border-bottom: 1px solid var(--imobi-border);
	font-size: 15px;
}

.imobi-attrs__label {
	color: var(--imobi-muted);
}

.imobi-attrs__value {
	font-weight: 600;
	color: var(--imobi-text);
	text-align: right;
}

/* -------------------------------------------------------------- Plantas */

.imobi-plans__list {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.imobi-plans--grid .imobi-plans__list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 20px;
}

.imobi-plans__item {
	border: 1px solid var(--imobi-border);
	border-radius: 10px;
	overflow: hidden;
}

.imobi-plans__header {
	display: flex;
	align-items: center;
	gap: 12px;
	width: 100%;
	padding: 14px 16px;
	border: 0;
	background: var(--imobi-surface-alt);
	font-family: inherit;
	font-size: 15px;
	text-align: left;
	cursor: pointer;
}

.imobi-plans__title {
	font-weight: 600;
	color: var(--imobi-text);
}

.imobi-plans__meta {
	margin-left: auto;
	font-size: 13px;
	color: var(--imobi-muted);
}

.imobi-plans__header .imobi-icon {
	transition: transform .25s ease;
}

.imobi-plans__item.is-open .imobi-plans__header .imobi-icon {
	transform: rotate(180deg);
}

.imobi-plans__body {
	display: none;
	padding: 16px;
}

.imobi-plans--accordion .imobi-plans__item.is-open .imobi-plans__body,
.imobi-plans--grid .imobi-plans__body {
	display: block;
}

.imobi-plans--tabs .imobi-plans__item {
	border: 0;
}

.imobi-plans--tabs .imobi-plans__item.is-active .imobi-plans__body {
	display: block;
}

.imobi-plans__image img {
	width: 100%;
	height: auto;
	display: block;
	border-radius: 8px;
}

.imobi-plans__tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.imobi-plans__tab {
	padding: 9px 18px;
	border: 1px solid var(--imobi-border);
	border-radius: 999px;
	background: var(--imobi-surface);
	color: var(--imobi-muted);
	font-family: inherit;
	font-size: 14px;
	cursor: pointer;
}

.imobi-plans__tab.is-active {
	background: var(--imobi-accent);
	border-color: var(--imobi-accent);
	color: #fff;
}

.imobi-plans__description {
	margin: 12px 0 0;
	font-size: 14px;
	color: var(--imobi-muted);
}

/* ---------------------------------------------------- Vídeo e tour 360 */

.imobi-video__frame,
.imobi-tour__frame {
	position: relative;
	width: 100%;
	aspect-ratio: var(--imobi-ratio-16-9);
	border-radius: var(--imobi-radius);
	overflow: hidden;
	background: #0d1117;
}

.imobi-tour__frame {
	aspect-ratio: auto;
	height: 480px;
}

.imobi-video__frame iframe,
.imobi-tour__frame iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

.imobi-video__cover {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
}

.imobi-video__cover img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.imobi-video__play {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	font-size: 68px;
	color: #fff;
	filter: drop-shadow(0 4px 12px rgba(0, 0, 0, .4));
	transition: transform .25s ease;
}

.imobi-video__cover:hover .imobi-video__play {
	transform: translate(-50%, -50%) scale(1.08);
}

/* ------------------------------------------------------- Localização */

.imobi-location__address {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 16px;
	color: var(--imobi-muted);
}

.imobi-location__directions {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	align-self: flex-start;
	padding: 10px 18px;
	border-radius: 8px;
	background: var(--imobi-surface-alt);
	color: var(--imobi-text);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
}

.imobi-nearby {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 22px;
}

.imobi-nearby__category {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 8px;
	font-size: 16px;
	color: var(--imobi-text);
}

.imobi-nearby__list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.imobi-nearby__item {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
	padding: 8px 0;
	border-bottom: 1px dashed var(--imobi-border);
	font-size: 14px;
	color: var(--imobi-text);
}

.imobi-nearby__distance {
	font-weight: 600;
	color: var(--imobi-muted);
	white-space: nowrap;
}

/* ------------------------------------------------------------ Arquivos */

.imobi-files {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.imobi-files__item {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 12px 16px;
	border: 1px solid var(--imobi-border);
	border-radius: 8px;
	color: var(--imobi-text);
	font-size: 15px;
	text-decoration: none;
	transition: background-color .2s ease;
}

.imobi-files__item:hover {
	background: var(--imobi-surface-alt);
}

.imobi-files__size {
	margin-left: auto;
	font-size: 13px;
	color: var(--imobi-muted);
}

/* -------------------------------------------------------------- Ações */

.imobi-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
}

.imobi-actions__button {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 10px 16px;
	border: 1px solid var(--imobi-border);
	border-radius: 8px;
	background: var(--imobi-surface);
	color: var(--imobi-text);
	font-family: inherit;
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	cursor: pointer;
	transition: background-color .2s ease, color .2s ease;
}

/* Sem hover próprio, o `button:hover { color: #c36 }` do hello-elementor
   (0,1,1) vence a classe do plugin e o ícone fica rosa — ver armadilha #23. */
.imobi-actions__button:hover,
.imobi-actions__button:focus-visible {
	border-color: var(--imobi-accent);
	color: var(--imobi-accent);
	background: var(--imobi-surface);
}

/* O estado ativo manda no hover. A cor sai do próprio atributo que já
   identifica a ação — vermelho lê como "favoritado", e usá-lo também para
   "em comparação" confundia duas coisas diferentes no mesmo botão. */
.imobi-actions__button.is-active,
.imobi-actions__button.is-active:hover,
.imobi-actions__button.is-active:focus-visible {
	color: #f04438;
	border-color: currentColor;
}

.imobi-actions__button[data-imobi-compare].is-active,
.imobi-actions__button[data-imobi-compare].is-active:hover,
.imobi-actions__button[data-imobi-compare].is-active:focus-visible {
	color: var(--imobi-accent);
	border-color: currentColor;
}

.imobi-actions__button.is-active svg {
	fill: currentColor;
}

.imobi-actions--icons .imobi-actions__button {
	padding: 10px;
}

.imobi-actions__button--whatsapp {
	background: #25d366;
	border-color: #25d366;
	color: #fff;
}

.imobi-actions__share {
	position: relative;
}

.imobi-actions__dropdown {
	position: absolute;
	top: calc(100% + 6px);
	left: 0;
	z-index: 20;
	display: flex;
	flex-direction: column;
	min-width: 170px;
	padding: 6px;
	border: 1px solid var(--imobi-border);
	border-radius: 10px;
	background: var(--imobi-surface);
	box-shadow: var(--imobi-shadow-lg);
}

.imobi-actions__dropdown[hidden] {
	display: none;
}

.imobi-actions__dropdown a,
.imobi-actions__dropdown button {
	padding: 8px 12px;
	border: 0;
	border-radius: 6px;
	background: none;
	color: var(--imobi-text);
	font-family: inherit;
	font-size: 14px;
	text-align: left;
	text-decoration: none;
	cursor: pointer;
}

.imobi-actions__dropdown a:hover,
.imobi-actions__dropdown button:hover {
	background: var(--imobi-surface-alt);
}

/* ------------------------------------------------------ Card do agente */

.imobi-agentbox {
	display: flex;
	gap: 18px;
	padding: 20px;
	border: 1px solid var(--imobi-border);
	border-radius: var(--imobi-radius);
	background: var(--imobi-surface);
}

.imobi-agentbox--vertical {
	flex-direction: column;
	align-items: center;
	text-align: center;
}

.imobi-agentbox__photo {
	flex-shrink: 0;
	display: block;
	width: 96px;
	height: 96px;
	border-radius: 50%;
	overflow: hidden;
}

.imobi-agentbox__photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.imobi-agentbox__body {
	display: flex;
	flex-direction: column;
	gap: 5px;
	min-width: 0;
	flex: 1;
}

.imobi-agentbox--vertical .imobi-agentbox__body {
	align-items: center;
}

.imobi-agentbox__name {
	margin: 0;
	font-size: 18px;
}

.imobi-agentbox__name a {
	color: var(--imobi-text);
	text-decoration: none;
}

.imobi-agentbox__meta {
	font-size: 14px;
	color: var(--imobi-muted);
}

.imobi-agentbox__meta a {
	color: inherit;
}

.imobi-agentbox__bio {
	margin: 4px 0 0;
	font-size: 14px;
	color: var(--imobi-muted);
	line-height: 1.55;
}

.imobi-agentbox__contacts {
	display: flex;
	flex-direction: column;
	gap: 4px;
	margin: 8px 0 0;
	padding: 0;
	list-style: none;
}

.imobi-agentbox__buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	align-items: center;
}

.imobi-agentbox__link {
	margin-top: 10px;
	font-size: 14px;
	font-weight: 600;
	color: var(--imobi-accent);
	text-decoration: none;
}

/* --------------------------------------------------------- Formulário */

.imobi-form {
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding: 24px;
	border: 1px solid var(--imobi-border);
	border-radius: var(--imobi-radius);
	background: var(--imobi-surface);
}

.imobi-form__title {
	margin: 0;
	font-size: 20px;
	color: var(--imobi-text);
}

.imobi-form__subtitle {
	margin: -8px 0 0;
	font-size: 14px;
	color: var(--imobi-muted);
	line-height: 1.5;
}

.imobi-form__agent {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 12px;
	border-radius: 10px;
	background: var(--imobi-surface-alt);
}

.imobi-form__agent img {
	width: 48px;
	height: 48px;
	border-radius: 50%;
	object-fit: cover;
}

.imobi-form__agent div {
	display: flex;
	flex-direction: column;
	font-size: 14px;
}

.imobi-form__agent span {
	color: var(--imobi-muted);
	font-size: 13px;
}

.imobi-form__fields {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.imobi-form__row {
	display: flex;
	gap: 12px;
}

.imobi-form__row .imobi-field {
	flex: 1 1 0;
	min-width: 0;
}

@media (max-width: 480px) {
	.imobi-form__row {
		flex-direction: column;
	}
}

.imobi-form__hp {
	position: absolute !important;
	left: -9999px !important;
	width: 1px !important;
	height: 1px !important;
	opacity: 0 !important;
}

.imobi-form__actions {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
}

.imobi-form__submit {
	flex: 1 1 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-height: 48px;
	padding: 0 24px;
	border: 0;
	border-radius: 8px;
	background: var(--imobi-accent);
	color: #fff;
	font-family: inherit;
	font-size: 15px;
	font-weight: 600;
	cursor: pointer;
}

.imobi-form__submit[disabled] {
	opacity: .7;
	cursor: wait;
}

.imobi-form__spinner {
	display: none;
	width: 16px;
	height: 16px;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	animation: imobi-spin .7s linear infinite;
}

.imobi-form.is-loading .imobi-form__spinner {
	display: block;
}

.imobi-form__whatsapp {
	margin-top: 0;
}

.imobi-form__message {
	display: none;
	padding: 12px 14px;
	border-radius: 8px;
	font-size: 14px;
	line-height: 1.5;
}

.imobi-form__message.is-visible {
	display: block;
}

.imobi-form__message.is-success {
	background: #ecfdf3;
	color: #027a48;
}

.imobi-form__message.is-error {
	background: #fef3f2;
	color: #b42318;
}

/* ------------------------------------------------------- Login / senha */

.imobi-login-form__footer {
	margin: 0;
	text-align: center;
	font-size: 14px;
}

.imobi-login-form__link {
	color: var(--imobi-accent);
	text-decoration: none;
}

.imobi-login-form__link:hover {
	text-decoration: underline;
}

/* ---------------------------------------------------------- Simulador */

.imobi-mortgage {
	display: flex;
	flex-direction: column;
	gap: 16px;
	padding: 24px;
	border: 1px solid var(--imobi-border);
	border-radius: var(--imobi-radius);
	background: var(--imobi-surface);
}

.imobi-mortgage__title {
	margin: 0;
	font-size: 20px;
	color: var(--imobi-text);
}

.imobi-mortgage__system {
	display: inline-flex;
	gap: 4px;
	padding: 4px;
	border-radius: 999px;
	background: var(--imobi-surface-alt);
	align-self: flex-start;
}

.imobi-mortgage__system button {
	padding: 7px 20px;
	border: 0;
	border-radius: 999px;
	background: none;
	color: var(--imobi-muted);
	font-family: inherit;
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
}

.imobi-mortgage__system button.is-active {
	background: var(--imobi-accent);
	color: #fff;
}

.imobi-mortgage__fields {
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.imobi-mortgage__field {
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.imobi-mortgage__label {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
	font-size: 14px;
	color: var(--imobi-muted);
}

.imobi-mortgage__label strong {
	color: var(--imobi-text);
}

.imobi-mortgage__range {
	width: 100%;
	accent-color: var(--imobi-accent);
}

.imobi-mortgage__results {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
	padding-top: 16px;
	border-top: 1px solid var(--imobi-border);
}

.imobi-mortgage__result {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.imobi-mortgage__result-label {
	font-size: 13px;
	color: var(--imobi-muted);
}

.imobi-mortgage__result-value {
	font-size: 20px;
	font-weight: 700;
	color: var(--imobi-text);
}

.imobi-mortgage__disclaimer {
	margin: 0;
	font-size: 12px;
	color: var(--imobi-muted);
	line-height: 1.5;
}

/* ------------------------------------------------------------ Comparar */

/**
 * A tabela é o único componente do plugin em que a rolagem horizontal é
 * legítima: comparar exige as colunas lado a lado, e empilhá-las em cartões no
 * celular destruiria justamente o que o visitante veio fazer. Então a estratégia
 * responsiva é encolher, não reorganizar — largura de coluna, imagem e tipografia
 * diminuem para caber duas colunas na tela, e as demais entram por arraste com
 * encaixe (`scroll-snap`).
 */
.imobi-compare {
	--imobi-compare-label: 168px;
	--imobi-compare-col: 232px;
	--imobi-compare-media: 150px;
}

.imobi-compare__toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 12px;
	margin-bottom: 14px;
}

.imobi-compare__caption {
	margin: 0;
	color: var(--imobi-muted);
	font-size: 14px;
}

.imobi-compare__hint {
	display: none;
	margin-left: 8px;
	opacity: .8;
}

/* O scroll fica no invólucro, nunca no <body>: uma tabela de 4 colunas estoura
   qualquer largura de leitura e não pode arrastar a página inteira junto. */
.imobi-compare__scroll {
	overflow-x: auto;
	overscroll-behavior-x: contain;
	-webkit-overflow-scrolling: touch;
	scroll-snap-type: x proximity;
	/* Sem isto o encaixe alinha a coluna à borda do container — que fica por
	   baixo da coluna fixa de rótulos, escondendo o imóvel recém-encaixado. */
	scroll-padding-left: var(--imobi-compare-label);
}

.imobi-compare__scroll:focus-visible {
	outline: 2px solid var(--imobi-accent);
	outline-offset: 3px;
}

.imobi-compare__table {
	width: 100%;
	border-collapse: separate;
	border-spacing: 0;
	font-size: 15px;
}

.imobi-compare__table th,
.imobi-compare__table td {
	padding: 14px 16px;
	border-bottom: 1px solid var(--imobi-border);
	text-align: left;
	vertical-align: top;
}

/**
 * A coluna de rótulos acompanha a rolagem horizontal — sem isso, ao arrastar
 * para ver o 4º imóvel o visitante perde a referência de qual linha está lendo.
 * É `position: sticky` numa célula, não o sticky do Elementor Pro (esse vira
 * `fixed` e escapa do fluxo — ver armadilha #3).
 */
.imobi-compare__label {
	position: sticky;
	left: 0;
	z-index: 2;
	width: var(--imobi-compare-label);
	min-width: var(--imobi-compare-label);
	background: var(--imobi-surface-alt);
	color: var(--imobi-muted);
	font-weight: 600;
	line-height: 1.35;
}

/* Sombra à direita da coluna fixa: sinaliza que há conteúdo passando por baixo
   dela. Um pseudo-elemento evita mexer no `border` que os controles do widget
   estilizam. */
.imobi-compare__label::after {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	width: 10px;
	height: 100%;
	transform: translateX(100%);
	background: linear-gradient(to right, rgba(16, 24, 40, .08), transparent);
	pointer-events: none;
}

.imobi-compare__value {
	width: var(--imobi-compare-col);
	min-width: var(--imobi-compare-col);
	color: var(--imobi-text);
	line-height: 1.45;
}

.imobi-compare__empty {
	color: var(--imobi-muted);
}

.imobi-compare__row--diff {
	background: rgba(21, 112, 239, .05);
}

/* Cabeçalho: gruda no topo na rolagem vertical, para que o valor lido lá
   embaixo continue tendo a que imóvel pertence. */
.imobi-compare__head {
	position: sticky;
	top: 0;
	z-index: 1;
	width: var(--imobi-compare-col);
	min-width: var(--imobi-compare-col);
	scroll-snap-align: start;
	background: var(--imobi-surface);
	vertical-align: bottom;
}

.imobi-compare__label--corner {
	z-index: 3;
	top: 0;
	background: var(--imobi-surface-alt);
}

.imobi-compare__media-link {
	display: block;
	position: relative;
}

.imobi-compare__media {
	width: 100%;
	height: var(--imobi-compare-media);
	object-fit: cover;
	border-radius: 10px;
	display: block;
	margin-bottom: 10px;
}

.imobi-compare__type {
	display: block;
	margin-bottom: 2px;
	color: var(--imobi-accent);
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 1px;
}

.imobi-compare__title {
	display: block;
	margin-bottom: 6px;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.35;
}

.imobi-compare__title a {
	color: var(--imobi-text);
	text-decoration: none;
}

.imobi-compare__price {
	display: block;
	color: var(--imobi-text);
	font-size: 18px;
	font-weight: 700;
}

.imobi-compare__remove {
	position: absolute;
	top: 8px;
	right: 8px;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, .94);
	color: var(--imobi-text);
	font-size: 15px;
	cursor: pointer;
	box-shadow: var(--imobi-shadow);
}

.imobi-compare__remove:hover,
.imobi-compare__remove:focus-visible {
	background: #fff;
	color: var(--imobi-accent);
}

.imobi-compare__cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	padding: 11px 20px;
	border-radius: 8px;
	background: var(--imobi-accent);
	color: #fff;
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
}

.imobi-compare__clear {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 9px 16px;
	border: 1px solid var(--imobi-border);
	border-radius: 8px;
	background: none;
	color: var(--imobi-muted);
	font-family: inherit;
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
}

.imobi-compare__clear:hover,
.imobi-compare__clear:focus-visible {
	border-color: var(--imobi-accent);
	color: var(--imobi-accent);
	background: none;
}

.imobi-empty__button {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: 6px;
	padding: 11px 22px;
	border-radius: 8px;
	background: var(--imobi-accent);
	color: #fff;
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
}

@media (max-width: 1024px) {
	.imobi-compare {
		--imobi-compare-label: 140px;
		--imobi-compare-col: 200px;
		--imobi-compare-media: 128px;
	}
}

@media (max-width: 767px) {
	.imobi-compare {
		--imobi-compare-label: 108px;
		--imobi-compare-col: 156px;
		--imobi-compare-media: 96px;
	}

	.imobi-compare__hint {
		display: block;
		margin: 2px 0 0;
		font-size: 13px;
	}

	.imobi-compare__table {
		font-size: 14px;
	}

	.imobi-compare__table th,
	.imobi-compare__table td {
		padding: 11px 12px;
	}

	.imobi-compare__label {
		font-size: 12px;
	}

	.imobi-compare__title {
		font-size: 14px;
	}

	.imobi-compare__price {
		font-size: 16px;
	}

	.imobi-compare__type {
		font-size: 10px;
		letter-spacing: .6px;
	}

	.imobi-compare__remove {
		width: 26px;
		height: 26px;
		font-size: 13px;
	}

	.imobi-compare__cta {
		padding: 9px 12px;
		font-size: 13px;
	}

	.imobi-compare__toolbar {
		align-items: flex-start;
		flex-direction: column;
	}
}

/* --------------------------------------------- Barra do comparador */

.imobi-compare-bar {
	position: fixed;
	left: 50%;
	bottom: 22px;
	z-index: 9990;
	display: flex;
	align-items: center;
	gap: 14px;
	max-width: calc(100vw - 32px);
	padding: 12px 14px 12px 18px;
	border-radius: 999px;
	background: var(--imobi-text);
	color: #fff;
	box-shadow: var(--imobi-shadow-lg);
	transform: translate(-50%, 130%);
	opacity: 0;
	transition: transform .25s ease, opacity .25s ease;
}

.imobi-compare-bar.is-visible {
	transform: translate(-50%, 0);
	opacity: 1;
}

.imobi-compare-bar__icon {
	display: inline-flex;
	font-size: 19px;
	opacity: .75;
}

.imobi-compare-bar__text {
	font-size: 14px;
	font-weight: 600;
	white-space: nowrap;
}

.imobi-compare-bar__link {
	padding: 9px 18px;
	border-radius: 999px;
	background: #fff;
	color: var(--imobi-text);
	font-size: 14px;
	font-weight: 700;
	text-decoration: none;
	white-space: nowrap;
}

.imobi-compare-bar__clear {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: none;
	color: #fff;
	font-size: 15px;
	opacity: .7;
	cursor: pointer;
}

.imobi-compare-bar__clear:hover,
.imobi-compare-bar__clear:focus-visible {
	color: #fff;
	opacity: 1;
}

@media (max-width: 600px) {
	.imobi-compare-bar {
		left: 16px;
		right: 16px;
		bottom: 16px;
		max-width: none;
		justify-content: space-between;
		transform: translateY(130%);
	}

	.imobi-compare-bar.is-visible {
		transform: translateY(0);
	}

	.imobi-compare-bar__icon {
		display: none;
	}
}

/* ------------------------------------------ Tabelas: reset do tema */

/**
 * O hello-elementor tem opinião formada sobre `<table>` e a distribui em
 * **três** regras de peso crescente, no `reset.css`:
 *
 *   table td, table th                          { border: 1px solid … }   (0,0,2)
 *   table tbody > tr:nth-child(odd) > td        { background-color: … }   (0,1,3)
 *   table thead:first-child tr:first-child th   { border-block-start: … } (0,2,4)
 *
 * Neutralizar só a primeira — o que um `.imobi-tabela th, td` (0,1,1) faz —
 * deixa as outras duas em pé: o zebrado continua, e a primeira linha do
 * cabeçalho ganha uma borda de topo que, dentro de um invólucro com moldura,
 * parece uma segunda linha ou uma sombra. Por isso o reset é escrito em três
 * níveis, cada um pesando mais que a regra que ele desfaz.
 *
 * Só `> td` no zebrado, de propósito: as células fixas do comparador são `th`
 * e dependem do próprio fundo para serem opacas na rolagem horizontal.
 *
 * E só as três faces que o tema acrescenta, nunca `border: 0` — este bloco
 * vem depois das regras dos componentes no arquivo, e zerar tudo apagaria o
 * `border-bottom` que cada um define como separador de linha.
 */
.imobi-dashboard-table th,
.imobi-dashboard-table td,
.imobi-compare__table th,
.imobi-compare__table td {
	border-top: 0;
	border-right: 0;
	border-left: 0;
}

.imobi-dashboard-table tbody > tr:nth-child(odd) > td,
.imobi-dashboard-table tbody > tr:nth-child(even) > td,
.imobi-compare__table tbody > tr:nth-child(odd) > td,
.imobi-compare__table tbody > tr:nth-child(even) > td {
	background-color: transparent;
}

.imobi-dashboard-table thead:first-child tr:first-child th,
.imobi-dashboard-table thead:first-child tr:first-child td,
.imobi-compare__table thead:first-child tr:first-child th,
.imobi-compare__table thead:first-child tr:first-child td {
	border-top: 0;
}

/* ------------------------------------------- Hover dos botões do plugin */

/**
 * O hello-elementor pinta TODO <button> com a paleta dele, em `reset.css`:
 *
 *     [type=button],[type=submit],button { color:#c36; border:1px solid #c36 }
 *     button:hover, button:focus { background-color:#c36; color:#fff }
 *
 * A regra base (0,0,1) perde para qualquer classe do plugin, então o estado
 * normal sempre saiu certo. Mas a de hover é (0,1,1) e **vence** um seletor de
 * classe única — daí o rosa forte aparecer só ao passar o mouse, em botão
 * nenhum em particular e em todos ao mesmo tempo. Não é cor padrão do plugin:
 * o padrão do plugin é `--imobi-accent`.
 *
 * Não dá para neutralizar isso de forma genérica: uma regra "cancela o hover"
 * teria de repor o valor que a regra base do componente definiu, e CSS não tem
 * como dizer isso. Então cada botão declara o próprio hover, abaixo. Ao criar
 * um componente novo com <button>, declare o dele junto — senão ele nasce
 * rosa. Onde o hover é decisão de projeto (e não estrutura), existe também um
 * controle no widget correspondente.
 */

/* Botões que se comportam como link. */
.imobi-search__toggle:hover,
.imobi-search__toggle:focus-visible,
.imobi-search__save:hover,
.imobi-search__save:focus-visible,
.imobi-description__toggle:hover,
.imobi-description__toggle:focus-visible {
	background: none;
	text-decoration: underline;
}

/* "Editar" é <a> e "Excluir" é <button>: a cor precisa ser reafirmada no hover
   para o <a> não cair na regra genérica de link. */
.imobi-dashboard-link:hover,
.imobi-dashboard-link:focus-visible {
	background: none;
	color: var(--imobi-accent);
	text-decoration: underline;
}

.imobi-dashboard-link--danger,
.imobi-dashboard-link--danger:hover,
.imobi-dashboard-link--danger:focus-visible {
	color: #d92d20;
}

.imobi-search__reset:hover,
.imobi-search__reset:focus-visible {
	text-decoration: underline;
}

/* Botões preenchidos: escurecem um pouco, sem trocar de cor. */
.imobi-search__submit:hover,
.imobi-search__submit:focus-visible,
.imobi-form__submit:hover,
.imobi-form__submit:focus-visible,
.imobi-property-form__submit:hover,
.imobi-property-form__submit:focus-visible {
	background: var(--imobi-accent);
	color: #fff;
	filter: brightness(.93);
}

/* Botões contornados. */
.imobi-load-more:hover,
.imobi-load-more:focus-visible,
.imobi-plans__tab:hover,
.imobi-plans__tab:focus-visible,
.imobi-plans__header:hover,
.imobi-plans__header:focus-visible {
	background: var(--imobi-surface);
	border-color: var(--imobi-accent);
	color: var(--imobi-accent);
}

/* O estado ativo manda no hover. */
.imobi-plans__tab.is-active:hover,
.imobi-plans__tab.is-active:focus-visible {
	background: var(--imobi-accent);
	border-color: var(--imobi-accent);
	color: #fff;
}

/* Setas de carrossel e de galeria: mantêm a própria superfície. */
.imobi-carousel__arrow:hover,
.imobi-carousel__arrow:focus-visible,
.imobi-gallery__arrow:hover,
.imobi-gallery__arrow:focus-visible {
	background: var(--imobi-surface);
	color: var(--imobi-accent);
}

/**
 * Links (<a>) que definem cor própria precisam declarar o hover pelo mesmo
 * motivo dos botões: a regra `:where([class*="imobi-"]) a:hover` lá em cima é
 * (0,1,1) — o mínimo para vencer o `a:hover` do tema — e portanto passa por
 * cima de uma cor definida com classe única (0,1,0). Aqui cada um fica em
 * (0,2,0) e volta a mandar no próprio estado.
 */
.imobi-agent-card__whatsapp:hover,
.imobi-agent-card__whatsapp:focus-visible,
.imobi-agentbox__whatsapp:hover,
.imobi-agentbox__whatsapp:focus-visible,
.imobi-form__whatsapp:hover,
.imobi-form__whatsapp:focus-visible,
.imobi-contact-details__whatsapp:hover,
.imobi-contact-details__whatsapp:focus-visible {
	color: #fff;
	filter: brightness(.94);
}

.imobi-agentbox__link:hover,
.imobi-agentbox__link:focus-visible {
	color: var(--imobi-accent);
	text-decoration: underline;
}

.imobi-compare-bar__link:hover,
.imobi-compare-bar__link:focus-visible {
	color: var(--imobi-text);
	filter: brightness(.94);
}

.imobi-dashboard-menu__link:hover,
.imobi-dashboard-menu__link:focus-visible {
	background: var(--imobi-surface-alt);
	color: var(--imobi-accent);
}

.imobi-dashboard-tabs__link:hover,
.imobi-dashboard-tabs__link:focus-visible {
	background: var(--imobi-surface-alt);
	color: var(--imobi-text);
}

/* O estado ativo manda no hover. */
.imobi-dashboard-tabs__link.is-active,
.imobi-dashboard-tabs__link.is-active:hover,
.imobi-dashboard-tabs__link.is-active:focus-visible {
	background: var(--imobi-accent);
	color: #fff;
}

/* ------------------------------------------------------------- Toast */

.imobi-toast {
	position: fixed;
	right: 24px;
	bottom: 24px;
	z-index: 99998;
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 13px 20px;
	border-radius: 10px;
	background: #1d2939;
	color: #fff;
	font-size: 14px;
	box-shadow: var(--imobi-shadow-lg);
	opacity: 0;
	transform: translateY(12px);
	transition: opacity .25s ease, transform .25s ease;
}

.imobi-toast.is-visible {
	opacity: 1;
	transform: none;
}

.imobi-toast--error {
	background: #b42318;
}

/* ----------------------------------------------------------- Responsivo */

@media (max-width: 1024px) {
	.imobi-overview { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.imobi-agents { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.imobi-taxgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.imobi-features__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.imobi-gallery__main { height: 380px; }
	.imobi-carousel__arrow--prev { left: 6px; }
	.imobi-carousel__arrow--next { right: 6px; }
}

@media (max-width: 767px) {
	.imobi-card--list,
	.imobi-view-list .imobi-card {
		flex-direction: column;
	}

	.imobi-card--list .imobi-card__media,
	.imobi-view-list .imobi-card__media {
		flex: 1 1 auto;
		max-width: 100%;
	}

	.imobi-overview,
	.imobi-attrs,
	.imobi-nearby,
	.imobi-stats-grid,
	.imobi-agents,
	.imobi-taxgrid,
	.imobi-features__list,
	.imobi-mortgage__results,
	.imobi-plans--grid .imobi-plans__list,
	.imobi-gallery__items {
		grid-template-columns: 1fr;
	}

	.imobi-gallery--mosaic .imobi-gallery__items {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		grid-auto-rows: 140px;
	}

	.imobi-pheader__title { font-size: 24px; }
	.imobi-price__main { font-size: 26px; }
	.imobi-gallery__main { height: 260px; }
	.imobi-agentbox { flex-direction: column; }
	.imobi-card__actions { opacity: 1; transform: none; }
}

/* ------------------------------------------------------- Painel do usuário */

.imobi-dashboard-menu {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.imobi-dashboard-menu__link {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 10px 14px;
	border-radius: 8px;
	color: var(--imobi-text);
	text-decoration: none;
	font-size: 14px;
	font-weight: 600;
	transition: background-color .15s ease, color .15s ease;
}

.imobi-dashboard-menu__link:hover {
	background: var(--imobi-surface-alt);
}

.imobi-dashboard-menu__link.is-active {
	background: var(--imobi-accent);
	color: #fff;
}

.imobi-dashboard-menu__link--logout {
	margin-top: 8px;
	border-top: 1px solid var(--imobi-border);
	padding-top: 18px;
	color: var(--imobi-muted);
}

.imobi-dashboard-content__title {
	margin: 0 0 20px;
	font-size: 22px;
	font-weight: 700;
	color: var(--imobi-text);
}

.imobi-dashboard-screen__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 12px;
	margin-bottom: 18px;
}

.imobi-dashboard-screen__subtitle {
	margin: 0 0 12px;
	font-size: 15px;
	font-weight: 600;
	color: var(--imobi-text);
}

.imobi-dashboard-empty {
	padding: 32px;
	border: 1px dashed var(--imobi-border);
	border-radius: 10px;
	color: var(--imobi-muted);
	text-align: center;
}

.imobi-dashboard-button {
	display: inline-flex;
	align-items: center;
	height: 40px;
	padding: 0 18px;
	border-radius: 8px;
	background: var(--imobi-accent);
	color: #fff;
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	transition: filter .2s ease;
}

.imobi-dashboard-button:hover,
.imobi-dashboard-button:focus-visible {
	color: #fff;
	filter: brightness(.93);
}

/* Ação de linha: mesma aparência para o <a> "Editar" e o <button> "Excluir",
   que só diferem por serem navegação e ação. O sublinhado fica para o hover —
   uma linha inteira de ações sublinhadas compete com o conteúdo da tabela. */
.imobi-dashboard-link {
	padding: 0;
	border: 0;
	background: none;
	color: var(--imobi-accent);
	font-family: inherit;
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	text-decoration: none;
}

.imobi-dashboard-link--danger {
	color: #d92d20;
}

/* Estatísticas da Visão geral. */

.imobi-dashboard-stats {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	gap: 16px;
	margin-bottom: 28px;
}

.imobi-dashboard-stat {
	padding: 18px;
	border: 1px solid var(--imobi-border);
	border-radius: 10px;
	background: var(--imobi-surface);
}

.imobi-dashboard-stat__value {
	display: block;
	font-size: 26px;
	font-weight: 700;
	color: var(--imobi-text);
}

.imobi-dashboard-stat__label {
	display: block;
	margin-top: 4px;
	font-size: 13px;
	color: var(--imobi-muted);
}

.imobi-overview-chart__svg {
	width: 100%;
	height: 140px;
}

.imobi-overview-chart__bar {
	fill: var(--imobi-accent);
}

.imobi-overview-chart__table-toggle {
	margin-top: 12px;
	font-size: 13px;
	color: var(--imobi-muted);
}

.imobi-overview-chart__table-toggle summary {
	cursor: pointer;
	color: var(--imobi-accent);
	font-weight: 600;
}

/* Tabelas do painel (Meus imóveis). */

.imobi-dashboard-tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.imobi-dashboard-tabs__link {
	padding: 8px 14px;
	border-radius: 999px;
	color: var(--imobi-muted);
	font-size: 13px;
	font-weight: 600;
	text-decoration: none;
}

.imobi-dashboard-tabs__link:hover {
	background: var(--imobi-surface-alt);
}

.imobi-dashboard-tabs__link.is-active {
	background: var(--imobi-accent);
	color: #fff;
}

/**
 * A moldura fica no invólucro, não na `<table>`: com `border-collapse:
 * collapse` o arredondamento não recorta os cantos das células, e é o
 * invólucro que já precisa existir para a rolagem horizontal. O `overflow-x`
 * também é o que faz o recorte respeitar o raio.
 */
.imobi-dashboard-table-wrap {
	overflow-x: auto;
	border: 1px solid var(--imobi-border);
	border-radius: 12px;
	background: var(--imobi-surface);
}

/**
 * O hello-elementor estiliza `table` inteira no `reset.css`: borda em todas as
 * quatro faces de cada célula, zebrado em `tr:nth-child(odd)`, realce no hover
 * da linha e `padding: 15px`. Declarar só `border-bottom` aqui deixava as
 * outras três faces do tema no lugar — daí a célula parecer ter uma caixa
 * dentro da outra. Por isso as bordas e os fundos são zerados de forma
 * explícita antes de o componente definir os seus.
 */
.imobi-dashboard-table {
	width: 100%;
	margin: 0;
	border-collapse: collapse;
	font-size: 14px;
}

.imobi-dashboard-table th,
.imobi-dashboard-table td {
	padding: 14px 16px;
	border: 0;
	border-bottom: 1px solid var(--imobi-border);
	background: none;
	text-align: left;
	vertical-align: middle;
	line-height: 1.45;
}

/* O cabeçalho é a régua da tabela: fundo próprio para se separar do corpo sem
   precisar de linhas verticais, e caixa alta pequena para não competir com o
   conteúdo das linhas. */
.imobi-dashboard-table thead th {
	padding-top: 12px;
	padding-bottom: 12px;
	background: var(--imobi-surface-alt);
	border-bottom: 1px solid var(--imobi-border);
	color: var(--imobi-muted);
	font-weight: 700;
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: .07em;
	white-space: nowrap;
}

/* Zebrado do tema desligado: a leitura aqui é por linha, e o realce de hover
   já dá o rastreamento horizontal sem pintar metade da tabela. */
.imobi-dashboard-table tbody tr:nth-child(odd) > td,
.imobi-dashboard-table tbody tr:nth-child(even) > td {
	background: none;
}

.imobi-dashboard-table tbody tr:hover > td {
	background: var(--imobi-surface-alt);
}

.imobi-dashboard-table tbody tr:last-child > td {
	border-bottom: 0;
}

/* A primeira coluna é o nome do imóvel: pode quebrar. As demais são curtas e
   ficam melhores em uma linha só. */
.imobi-dashboard-table tbody td:first-child {
	width: 42%;
	font-weight: 600;
}

.imobi-dashboard-table td:not(:first-child):not(.imobi-dashboard-table__owner) {
	white-space: nowrap;
}

.imobi-dashboard-table__actions-inner {
	display: flex;
	gap: 14px;
}

/* Coluna "Corretor" — só aparece para quem enxerga os imóveis de todo mundo. */
.imobi-dashboard-table__owner {
	line-height: 1.35;
}

.imobi-dashboard-owner__agent {
	display: block;
	color: inherit;
	font-weight: 600;
	text-decoration: none;
}

.imobi-dashboard-owner__agent:hover,
.imobi-dashboard-owner__agent:focus-visible {
	text-decoration: underline;
}

.imobi-dashboard-owner__author {
	display: block;
	color: var(--imobi-muted);
	font-size: 12px;
}

.imobi-dashboard-owner__none {
	color: var(--imobi-muted);
	font-style: italic;
}

.imobi-dashboard-badge {
	display: inline-flex;
	padding: 3px 10px;
	border-radius: 999px;
	background: var(--imobi-surface-alt);
	color: var(--imobi-text);
	font-size: 12px;
	font-weight: 600;
}

.imobi-dashboard-badge--publish { background: #ecfdf3; color: #027a48; }
.imobi-dashboard-badge--pending { background: #fffaeb; color: #b54708; }
.imobi-dashboard-badge--draft   { background: var(--imobi-surface-alt); color: var(--imobi-muted); }
.imobi-dashboard-badge--trash   { background: #fef3f2; color: #d92d20; }

/* Leads. */

.imobi-dashboard-leads {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.imobi-dashboard-lead {
	border: 1px solid var(--imobi-border);
	border-radius: 10px;
	background: var(--imobi-surface);
}

.imobi-dashboard-lead__summary {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 10px;
	padding: 14px 16px;
	cursor: pointer;
	list-style: none;
}

.imobi-dashboard-lead__summary::-webkit-details-marker {
	display: none;
}

.imobi-dashboard-lead__name {
	font-weight: 700;
	color: var(--imobi-text);
}

.imobi-dashboard-lead__property {
	font-size: 13px;
	color: var(--imobi-muted);
}

/* A data da visita é o dado que a tela "Minhas visitas" existe para mostrar —
   ganha destaque próprio no resumo. Vazia, some sem deixar buraco no flex. */
.imobi-dashboard-lead__schedule:not(:empty) {
	padding: 3px 9px;
	border-radius: 999px;
	background: var(--imobi-surface-alt);
	color: var(--imobi-text);
	font-size: 13px;
	font-weight: 600;
}

.imobi-dashboard-lead__schedule:empty {
	display: none;
}

/* Data já passada: continua listada (serve de histórico), mas não compete com
   as visitas que ainda vão acontecer. */
.imobi-dashboard-lead__schedule.is-past {
	opacity: .55;
	text-decoration: line-through;
}

.imobi-dashboard-lead__visit {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px;
	margin: 14px 0;
}

.imobi-dashboard-lead__visit input {
	height: 36px;
	padding: 0 10px;
	border: 1px solid var(--imobi-border);
	border-radius: 6px;
	font-family: inherit;
}

.imobi-dashboard-lead__visit-clear {
	padding: 0;
	border: 0;
	background: none;
	color: var(--imobi-muted);
	font-family: inherit;
	font-size: 13px;
	text-decoration: underline;
	cursor: pointer;
}

.imobi-dashboard-lead__visit-clear:hover,
.imobi-dashboard-lead__visit-clear:focus-visible {
	color: var(--imobi-danger);
}

.imobi-dashboard-button--small {
	height: 36px;
	padding: 0 14px;
	border: 0;
	font-size: 13px;
	cursor: pointer;
}

.imobi-dashboard-empty__hint {
	margin: 8px 0 0;
	font-size: 13px;
}

.imobi-dashboard-lead__body {
	padding: 0 16px 16px;
	border-top: 1px solid var(--imobi-border);
	font-size: 14px;
}

.imobi-dashboard-lead__body p {
	margin: 12px 0;
}

.imobi-dashboard-lead__status {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 14px 0;
}

.imobi-dashboard-lead__status select {
	height: 36px;
	border: 1px solid var(--imobi-border);
	border-radius: 6px;
	padding: 0 10px;
	font-family: inherit;
}

.imobi-dashboard-lead__notes {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin-bottom: 12px;
}

.imobi-dashboard-lead__note {
	padding: 10px 12px;
	border-radius: 8px;
	background: var(--imobi-surface-alt);
}

.imobi-dashboard-lead__note-date {
	display: block;
	margin-bottom: 4px;
	font-size: 12px;
	color: var(--imobi-muted);
}

.imobi-dashboard-lead__note p {
	margin: 0;
}

.imobi-dashboard-lead__add-note {
	display: flex;
	gap: 8px;
}

.imobi-dashboard-lead__add-note textarea {
	flex: 1;
	min-height: 40px;
	padding: 8px 10px;
	border: 1px solid var(--imobi-border);
	border-radius: 6px;
	font-family: inherit;
	resize: vertical;
}

.imobi-dashboard-lead__add-note button {
	padding: 0 16px;
	border: 0;
	border-radius: 6px;
	background: var(--imobi-accent);
	color: #fff;
	font-family: inherit;
	font-weight: 600;
	cursor: pointer;
}

/* Buscas salvas. */

.imobi-dashboard-saved-searches {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.imobi-dashboard-saved-search {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 12px 16px;
	border: 1px solid var(--imobi-border);
	border-radius: 10px;
}

.imobi-dashboard-saved-search__title {
	font-weight: 600;
	color: var(--imobi-text);
	text-decoration: none;
}

.imobi-dashboard-saved-search__frequency {
	margin-left: auto;
	font-size: 12px;
	color: var(--imobi-muted);
}

/* ---------------------------------------------- Formulário de imóvel/perfil */

.imobi-property-form {
	display: flex;
	flex-direction: column;
	gap: 24px;
}

.imobi-property-form__notice {
	padding: 12px 16px;
	border-radius: 8px;
	font-size: 14px;
}

.imobi-property-form__notice--success {
	background: #ecfdf3;
	color: #027a48;
}

.imobi-property-form__notice--error {
	background: #fef3f2;
	color: #d92d20;
}

.imobi-property-form__group {
	margin: 0;
	padding: 0;
	border: 0;
}

.imobi-property-form__group-title {
	padding: 0 0 12px;
	margin-bottom: 16px;
	border-bottom: 1px solid var(--imobi-border);
	font-size: 16px;
	font-weight: 700;
	color: var(--imobi-text);
	width: 100%;
}

.imobi-property-form__fields {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
}

.imobi-property-form__fields .imobi-field--full { flex-basis: 100%; }
.imobi-property-form__fields .imobi-field--half { flex: 1 1 calc(50% - 8px); }
.imobi-property-form__fields .imobi-field--third { flex: 1 1 calc(33.333% - 11px); }

@media (max-width: 640px) {
	.imobi-property-form__fields .imobi-field--half,
	.imobi-property-form__fields .imobi-field--third {
		flex-basis: 100%;
	}
}

.imobi-property-form__submit {
	align-self: flex-start;
	height: 46px;
	padding: 0 28px;
	border: 0;
	border-radius: 8px;
	background: var(--imobi-accent);
	color: #fff;
	font-family: inherit;
	font-size: 15px;
	font-weight: 600;
	cursor: pointer;
}

.imobi-field__media {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
}

.imobi-field__media-preview img {
	display: block;
	width: 64px;
	height: 64px;
	object-fit: cover;
	border-radius: 8px;
}

.imobi-field__file-name {
	font-size: 13px;
	color: var(--imobi-muted);
}

.imobi-field__gallery-list {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin: 0 0 12px;
	padding: 0;
	list-style: none;
}

.imobi-field__gallery-list li {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 6px;
}

.imobi-field__gallery-list img {
	width: 80px;
	height: 80px;
	object-fit: cover;
	border-radius: 8px;
}

/* Seletor de mapa do formulário (frontend). */

.imobi-map-picker__search {
	display: flex;
	gap: 8px;
	margin-bottom: 10px;
}

.imobi-map-picker__input {
	flex: 1;
	height: 40px;
	padding: 0 12px;
	border: 1px solid var(--imobi-border);
	border-radius: 6px;
	font-family: inherit;
}

.imobi-map-picker__button {
	padding: 0 16px;
	border: 0;
	border-radius: 6px;
	background: var(--imobi-surface-alt);
	color: var(--imobi-text);
	font-family: inherit;
	font-weight: 600;
	cursor: pointer;
}

.imobi-map-picker__canvas {
	width: 100%;
	height: 320px;
	border: 1px solid var(--imobi-border);
	border-radius: 8px;
	background: var(--imobi-surface-alt);
}

/* ------------------------------- Ficha de corretor / imobiliária */

.imobi-contact-header {
	display: flex;
	align-items: center;
	gap: 24px;
}

.imobi-contact-header--vertical {
	flex-direction: column;
	align-items: center;
	text-align: center;
}

.imobi-contact-header__photo {
	flex-shrink: 0;
	width: 140px;
	height: 140px;
	border-radius: 50%;
	overflow: hidden;
	background: var(--imobi-surface-alt);
}

.imobi-contact-header__photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.imobi-contact-header__body {
	display: flex;
	flex-direction: column;
	gap: 6px;
	min-width: 0;
}

.imobi-contact-header--vertical .imobi-contact-header__body {
	align-items: center;
}

.imobi-contact-header__name {
	margin: 0;
	font-size: 28px;
	line-height: 1.2;
	color: var(--imobi-text);
}

.imobi-contact-header__meta {
	font-size: 15px;
	color: var(--imobi-muted);
}

.imobi-contact-header__meta a {
	color: inherit;
}

.imobi-contact-header__badges {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 4px;
}

.imobi-contact-header__badge {
	display: inline-flex;
	align-items: center;
	padding: 4px 10px;
	border-radius: 999px;
	background: var(--imobi-surface-alt);
	color: var(--imobi-text);
	font-size: 13px;
	line-height: 1.4;
}

.imobi-contact-bio__heading,
.imobi-contact-details__heading,
.imobi-contact-socials__heading {
	margin: 0 0 12px;
	font-size: 20px;
	color: var(--imobi-text);
}

.imobi-contact-bio__text {
	color: var(--imobi-text);
}

.imobi-contact-bio__text > *:first-child {
	margin-top: 0;
}

.imobi-contact-bio__text > *:last-child {
	margin-bottom: 0;
}

.imobi-contact-details__list {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.imobi-contact-details__item {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	font-size: 15px;
	color: var(--imobi-text);
	min-width: 0;
}

.imobi-contact-details__item svg {
	flex-shrink: 0;
	margin-top: 3px;
	font-size: 17px;
	color: var(--imobi-muted);
}

.imobi-contact-details__item a {
	color: inherit;
	text-decoration: none;
	overflow-wrap: anywhere;
}

.imobi-contact-details__item a:hover {
	text-decoration: underline;
}

.imobi-contact-details__whatsapp {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	margin-top: 16px;
	padding: 12px 20px;
	border-radius: 999px;
	background: var(--imobi-success);
	color: #fff;
	font-weight: 600;
	text-decoration: none;
}


.imobi-contact-socials__list {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

/* O botão é quadrado por padrão — e é o que faz o arredondamento funcionar.
   `border-radius: 50%` significa "metade da largura na horizontal, metade da
   altura na vertical": numa caixa que não é quadrada isso desenha uma elipse,
   não um círculo. Era o que acontecia aqui, porque a largura vinha de
   `min-width` mais o espaçamento interno e nunca batia com a altura.

   Com a caixa quadrada e raio em pixels grandes, o mesmo valor resolve os dois
   casos: num quadrado 999px vira círculo, e no botão com rótulo (largura livre)
   vira cápsula. */
.imobi-contact-socials__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: var(--imobi-social-size, 40px);
	height: var(--imobi-social-size, 40px);
	padding: 0;
	border-radius: 999px;
	background: var(--imobi-surface-alt);
	color: var(--imobi-text);
	text-decoration: none;
	transition: background-color .15s ease, color .15s ease;
}

/* Com o nome da rede o botão deixa de ser quadrado de propósito: a largura
   passa a acompanhar o texto, e o tamanho escolhido vira o piso. */
.imobi-contact-socials__link--labeled {
	width: auto;
	min-width: var(--imobi-social-size, 40px);
	padding: 0 16px;
}

.imobi-contact-socials__link svg {
	flex-shrink: 0;
	font-size: 18px;
}

.imobi-contact-socials__label {
	font-size: 14px;
}

/* ------------------------------------------ Ficha de empreendimento */

.imobi-devdetails__heading,
.imobi-units__heading {
	margin: 0 0 16px;
	font-size: 22px;
	color: var(--imobi-text);
}

.imobi-devdetails__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
}

.imobi-devdetails__item {
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: 12px 14px;
	border: 1px solid var(--imobi-border);
	border-radius: var(--imobi-radius);
	background: var(--imobi-surface);
	min-width: 0;
}

.imobi-devdetails__label {
	font-size: 13px;
	color: var(--imobi-muted);
}

.imobi-devdetails__value {
	font-size: 16px;
	font-weight: 600;
	color: var(--imobi-text);
	overflow-wrap: anywhere;
}

.imobi-devdetails__bars {
	display: flex;
	flex-direction: column;
	gap: 16px;
	margin-top: 20px;
}

.imobi-devbar__head {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 12px;
	margin-bottom: 6px;
}

.imobi-devbar__label {
	font-size: 14px;
	color: var(--imobi-text);
}

.imobi-devbar__detail {
	font-size: 14px;
	font-weight: 600;
	color: var(--imobi-muted);
}

.imobi-devbar__track {
	height: 10px;
	border-radius: 999px;
	background: var(--imobi-surface-alt);
	overflow: hidden;
}

.imobi-devbar__fill {
	height: 100%;
	border-radius: inherit;
	background: var(--imobi-accent);
}

.imobi-units__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 16px;
}

.imobi-units__card {
	display: flex;
	flex-direction: column;
	border: 1px solid var(--imobi-border);
	border-radius: var(--imobi-radius);
	background: var(--imobi-surface);
	overflow: hidden;
	min-width: 0;
}

.imobi-units__media {
	aspect-ratio: var(--imobi-ratio-4-3);
	background: var(--imobi-surface-alt);
}

.imobi-units__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.imobi-units__body {
	display: flex;
	flex-direction: column;
	gap: 10px;
	padding: 16px;
	flex: 1;
}

.imobi-units__top {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 10px;
}

.imobi-units__name {
	margin: 0;
	font-size: 17px;
	color: var(--imobi-text);
}

.imobi-units__attrs {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 14px;
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: 14px;
	color: var(--imobi-muted);
}

.imobi-units__attrs li {
	display: inline-flex;
	align-items: center;
	gap: 5px;
}

.imobi-units__price {
	display: flex;
	flex-direction: column;
	gap: 2px;
	margin-top: auto;
	color: var(--imobi-text);
}

.imobi-units__price-label {
	font-size: 12px;
	color: var(--imobi-muted);
}

.imobi-units__price strong {
	font-size: 19px;
}

.imobi-units__badge {
	flex-shrink: 0;
	display: inline-flex;
	align-items: center;
	padding: 3px 9px;
	border-radius: 999px;
	background: var(--imobi-surface-alt);
	font-size: 12px;
	font-weight: 600;
	line-height: 1.5;
	white-space: nowrap;
}

.imobi-units__badge--yes {
	background: rgba(18, 183, 106, .12);
	color: #027a48;
}

.imobi-units__badge--no {
	background: rgba(102, 112, 133, .12);
	color: var(--imobi-muted);
}

/* Tabela larga rola dentro do próprio bloco, sem estourar a página. */
.imobi-units__scroll {
	overflow-x: auto;
}

.imobi-units__table {
	width: 100%;
	border-collapse: collapse;
	border: 1px solid var(--imobi-border);
	border-radius: var(--imobi-radius);
	overflow: hidden;
	background: var(--imobi-surface);
}

.imobi-units__table th,
.imobi-units__table td {
	padding: 12px 14px;
	text-align: left;
	font-size: 15px;
	white-space: nowrap;
}

.imobi-units__table thead th {
	background: var(--imobi-surface-alt);
	color: var(--imobi-muted);
	font-size: 13px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .04em;
}

.imobi-units__table tbody tr + tr td {
	border-top: 1px solid var(--imobi-border);
}

/* ------------------------------------------- Cabeçalho de arquivo */

.imobi-archive-title {
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.imobi-archive-title__taxonomy {
	font-size: 13px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .06em;
	color: var(--imobi-muted);
}

.imobi-archive-title__title {
	margin: 0;
	font-size: 34px;
	line-height: 1.2;
	color: var(--imobi-text);
}

.imobi-archive-title__count {
	font-size: 15px;
	color: var(--imobi-muted);
}

.imobi-archive-title__description {
	color: var(--imobi-muted);
	max-width: 70ch;
}

.imobi-archive-title__description > *:first-child {
	margin-top: 0;
}

.imobi-archive-title__description > *:last-child {
	margin-bottom: 0;
}

@media (max-width: 767px) {
	.imobi-contact-header {
		flex-direction: column;
		align-items: center;
		text-align: center;
	}

	.imobi-contact-header__body {
		align-items: center;
	}

	.imobi-devdetails__grid,
	.imobi-units__grid {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* ------------------------------------------------------------ Impressão */

@media print {
	.imobi-actions,
	.imobi-form,
	.imobi-card__actions,
	.imobi-search,
	.imobi-sortbar {
		display: none !important;
	}
}

/* ------------------------------------ Campo de localização com digitação

   O `<select>` continua no formulário — é ele que é enviado. O que o
   JavaScript acrescenta por cima é a caixa de digitação e a lista. Enquanto o
   JavaScript não roda (ou se estiver desligado), o `<select>` fica visível e o
   campo funciona como sempre funcionou; a classe `--ready` é o interruptor. */

.imobi-combo {
	position: relative;
	width: 100%;
}

.imobi-combo--ready > select {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	border: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
}

.imobi-combo__input {
	padding-right: 34px;
}

.imobi-combo__clear {
	position: absolute;
	top: 50%;
	right: 8px;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 22px;
	height: 22px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--imobi-surface-alt);
	color: var(--imobi-muted);
	font-size: 15px;
	line-height: 1;
	cursor: pointer;
	transform: translateY(-50%);
}

.imobi-combo__clear:hover,
.imobi-combo__clear:focus-visible {
	background: var(--imobi-border);
	color: var(--imobi-text);
}

/* Enquanto a consulta ao servidor não volta, o campo precisa dizer que está
   fazendo algo — senão digitar num catálogo grande parece travar. */
.imobi-combo.is-loading .imobi-combo__input {
	background-image: linear-gradient(90deg, transparent, rgba(21, 112, 239, .12), transparent);
	background-size: 40% 100%;
	background-repeat: no-repeat;
	animation: imobi-combo-loading 1s linear infinite;
}

@keyframes imobi-combo-loading {
	from { background-position: -40% 0; }
	to   { background-position: 140% 0; }
}

@media (prefers-reduced-motion: reduce) {
	.imobi-combo.is-loading .imobi-combo__input {
		animation: none;
	}
}

.imobi-combo__list {
	position: absolute;
	z-index: 30;
	top: calc(100% + 4px);
	left: 0;
	right: 0;
	max-height: 260px;
	margin: 0;
	padding: 4px;
	border: 1px solid var(--imobi-border);
	border-radius: 8px;
	background: var(--imobi-surface);
	box-shadow: var(--imobi-shadow-lg);
	list-style: none;
	overflow-y: auto;
}

.imobi-combo__option {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	padding: 9px 10px;
	border-radius: 6px;
	color: var(--imobi-text);
	font-size: 14px;
	cursor: pointer;
}

.imobi-combo__option.is-active,
.imobi-combo__option:hover {
	background: var(--imobi-surface-alt);
}

.imobi-combo__count {
	flex-shrink: 0;
	color: var(--imobi-muted);
	font-size: 12px;
	font-variant-numeric: tabular-nums;
}

.imobi-combo__message {
	padding: 10px;
	color: var(--imobi-muted);
	font-size: 13px;
}

/* --------------------------------------------------- Aviso de cookies */

/*
 * O aviso nasce com `hidden` no HTML e o JavaScript o revela. Assim ele não
 * pisca na tela de quem já respondeu — o cookie é lido no navegador, depois
 * de a página já ter sido montada e possivelmente servida de cache.
 *
 * O peso (0,2,0) do seletor de ocultação é deliberado: o `reset.css` do
 * hello-elementor declara `[hidden]{display:none}` e, mais abaixo no mesmo
 * arquivo, `button{display:inline-block}` — mesmo peso, e o segundo vence.
 * Ver a regra geral em `.claude/rules/css-e-js.md`.
 */
.imobi-consent[hidden] {
	display: none;
}

.imobi-consent {
	position: fixed;
	right: 16px;
	bottom: 16px;
	left: 16px;
	z-index: 9999;
	max-width: 560px;
	margin-inline: auto;
	padding: 16px 18px;
	background: var(--imobi-surface);
	border: 1px solid var(--imobi-border);
	border-radius: var(--imobi-radius);
	box-shadow: var(--imobi-shadow-lg);
}

.imobi-consent__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px;
	justify-content: space-between;
}

.imobi-consent__text {
	flex: 1 1 260px;
	margin: 0;
	color: var(--imobi-text);
	font-size: 14px;
	line-height: 1.5;
}

.imobi-consent__link {
	color: var(--imobi-accent);
	text-decoration: underline;
}

.imobi-consent__link:hover {
	color: var(--imobi-accent);
	text-decoration: none;
}

.imobi-consent__actions {
	display: flex;
	flex-shrink: 0;
	gap: 8px;
}

.imobi-consent__button {
	padding: 9px 18px;
	background: var(--imobi-accent);
	border: 1px solid var(--imobi-accent);
	border-radius: 999px;
	color: #fff;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.2;
	cursor: pointer;
}

.imobi-consent__button:hover {
	background: var(--imobi-text);
	border-color: var(--imobi-text);
	color: #fff;
}

.imobi-consent__button--ghost {
	background: transparent;
	border-color: var(--imobi-border);
	color: var(--imobi-muted);
}

.imobi-consent__button--ghost:hover {
	background: var(--imobi-surface-alt);
	border-color: var(--imobi-border);
	color: var(--imobi-text);
}
