/**
 * Chatbot público. Sem dependências externas. Usa os tokens do design system,
 * portanto o modo escuro MANUAL ([data-theme]) funciona sem depender do SO.
 * Área de toque adequada, foco visível e prefers-reduced-motion respeitados.
 */
/*
 * O balão é o último elemento do canto inferior direito, mas não é o único:
 * a barra de comparação e o CTA fixo do imóvel também vivem colados ao
 * rodapé. Quando um deles aparece, o balão SOBE — em vez de cobrir o botão
 * "Comparar imóveis", que é justamente a ação que o visitante quer nesse
 * momento.
 *
 * `--ie-compare-bar-h` é publicada por compare.js com a altura real da barra;
 * o `max()` garante o deslocamento mínimo pedido mesmo se a barra encolher.
 */
.ie-chatbot { --ie-chatbot-lift: 0px; }
body.ie-has-compare-bar .ie-chatbot {
	--ie-chatbot-lift: max(80px, calc(var(--ie-compare-bar-h, 0px) + .75rem));
}

.ie-chatbot {
	position: fixed;
	right: 1rem;
	bottom: calc(1rem + var(--ie-chatbot-lift, 0px));
	z-index: var(--ie-z-toast, 1100);
	font-size: 1rem;
	transition: bottom .25s ease;
}
@media (prefers-reduced-motion: reduce) {
	.ie-chatbot { transition: none; }
}
.ie-chatbot__toggle {
	display: flex; align-items: center; justify-content: center;
	height: 52px; width: 52px; padding: 0; border-radius: var(--ie-radius-pill, 999px);
	border: 0; cursor: pointer; background: var(--ie-brand-fill, #17539a); color: var(--ie-brand-ink, #ffffff);
	box-shadow: var(--ie-shadow-md, 0 4px 14px rgba(0,0,0,.25));
}
.ie-chatbot__toggle .ie-icon { width: 24px; height: 24px; }
.ie-chatbot__toggle-avatar { width: 100%; height: 100%; object-fit: cover; border-radius: inherit; }
.ie-chatbot__toggle-initial { font-size: 1.05rem; font-weight: 800; line-height: 1; }
.ie-chatbot__panel {
	/* Ancorado à própria caixa do botão (não a uma altura fixa presumida) —
	   nunca sobrepõe o botão, independente do tamanho real dele. */
	position: absolute; right: 0; bottom: 100%; margin-bottom: .75rem;
	width: min(360px, calc(100vw - 2rem));
	max-height: min(70vh, 560px); display: flex; flex-direction: column;
	background: var(--ie-surface, #fff); color: var(--ie-text, #111);
	border: 1px solid var(--ie-border, #e2e2e2);
	border-radius: var(--ie-radius, 12px); overflow: hidden;
	box-shadow: var(--ie-shadow-lg, 0 12px 40px rgba(0,0,0,.3));
}
/* A prioridade normal do CSS de autor vence a regra nativa `[hidden]{display:none}`
   do user-agent sempre que `display` é redeclarado no elemento — por isso o
   painel ficava sempre visível mesmo com o atributo `hidden` presente. Uma
   regra de autor mais específica reafirma o comportamento nativo. */
.ie-chatbot__panel[hidden] { display: none; }
.ie-chatbot__header { display: flex; align-items: center; justify-content: space-between; gap: .65rem; padding: .55rem .65rem; background: var(--ie-brand-fill, #17539a); color: var(--ie-brand-ink, #ffffff); }
.ie-chatbot__identity { min-width: 0; display: flex; align-items: center; gap: .55rem; }
.ie-chatbot__identity-copy { min-width: 0; }
.ie-chatbot__avatar { flex: 0 0 auto; width: 36px; height: 36px; border-radius: 50%; object-fit: cover; border: 2px solid rgba(255,255,255,.5); }
.ie-chatbot__avatar--initial { display: inline-flex; align-items: center; justify-content: center; background: rgba(255,255,255,.17); color: inherit; font-size: .82rem; font-weight: 800; }
.ie-chatbot__title { margin: 0; font-size: .96rem; line-height: 1.15; color: inherit; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ie-chatbot__status { margin: .16rem 0 0; display: flex; align-items: center; gap: .3rem; font-size: .69rem; line-height: 1.2; opacity: .9; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ie-chatbot__online-dot { width: 6px; height: 6px; border-radius: 50%; background: #78e08f; box-shadow: 0 0 0 2px rgba(120,224,143,.18); flex: 0 0 auto; }
.ie-chatbot__close {
	display: flex; align-items: center; justify-content: center;
	background: transparent; border: 0; color: inherit; cursor: pointer;
	min-height: 44px; min-width: 44px; border-radius: var(--ie-radius-sm, 8px);
}
.ie-chatbot__close:hover { background: rgba(0,0,0,.08); }
.ie-chatbot__consent-step {
	padding: 1rem;
	display: flex;
	flex-direction: column;
	gap: .8rem;
}
.ie-chatbot__consent-step[hidden], .ie-chatbot__conversation[hidden] { display: none; }
.ie-chatbot__consent-copy strong { display: block; margin-bottom: .25rem; font-size: .95rem; }
.ie-chatbot__consent-copy p { margin: 0; font-size: .82rem; line-height: 1.45; color: var(--ie-text-muted, #666); }
.ie-chatbot__conversation { min-height: 0; flex: 1 1 auto; display: flex; flex-direction: column; }
.ie-chatbot__form[hidden] { display: none; }
.ie-chatbot__log { flex: 1 1 auto; min-height: 120px; overflow-y: auto; padding: .8rem; display: flex; flex-direction: column; gap: .5rem; }
.ie-chatbot__msg { max-width: 85%; padding: .5rem .7rem; border-radius: var(--ie-radius, 12px); line-height: 1.4; }
.ie-chatbot__msg--user { align-self: flex-end; background: color-mix(in srgb, var(--ie-brand) 16%, var(--ie-surface)); color: var(--ie-text, #111); }
.ie-chatbot__msg-row { display: flex; align-items: flex-end; gap: .38rem; max-width: 92%; }
.ie-chatbot__msg-row--bot { align-self: flex-start; }
.ie-chatbot__msg-row--bot .ie-chatbot__msg { align-self: auto; }
.ie-chatbot__msg-avatar { width: 25px; height: 25px; flex: 0 0 25px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; overflow: hidden; background: var(--ie-brand-fill, #17539a); color: var(--ie-brand-ink, #fff); font-size: .65rem; font-weight: 800; }
.ie-chatbot__msg-avatar img { width: 100%; height: 100%; object-fit: cover; }
.ie-chatbot__msg--bot { align-self: flex-start; background: var(--ie-chatbot-agent-bubble, var(--ie-surface-strong, #f1f1f1)); color: var(--ie-chatbot-agent-text, var(--ie-text, #111)); }
.ie-chatbot__msg--bot strong { font-weight: 700; }
.ie-chatbot__msg--bot p { margin: 0 0 .48rem; }
.ie-chatbot__msg--bot p:last-child { margin-bottom: 0; }
.ie-chatbot__msg--bot ul,
.ie-chatbot__msg--bot ol { margin: .35rem 0 .45rem; padding-left: 1.25rem; }
.ie-chatbot__msg--bot ul:last-child,
.ie-chatbot__msg--bot ol:last-child { margin-bottom: 0; }
.ie-chatbot__msg--bot li { margin: .18rem 0; }
.ie-chatbot__quick {
	align-self: flex-start; display: flex; flex-wrap: wrap; gap: .4rem; max-width: 100%;
}
.ie-chatbot__quick-btn {
	min-height: 38px; padding: .45rem .7rem; border-radius: var(--ie-radius-pill, 999px);
	border: 1px solid var(--ie-border, #d7e0ea); background: var(--ie-surface, #fff);
	color: var(--ie-brand-fill, #17539a); cursor: pointer; font: inherit; font-size: .82rem; font-weight: 650;
}
.ie-chatbot__quick-btn:hover { background: var(--ie-surface-strong, #f1f1f1); }
.ie-chatbot__cards { display: grid; gap: .5rem; }
.ie-chatbot__error {
	margin: 0; padding: .55rem .8rem; font-size: .82rem;
	background: var(--ie-danger-soft, #fbe4e1);
	color: var(--ie-danger, #c0392b); border-top: 1px solid var(--ie-border, #e2e2e2);
}
.ie-chatbot__error[hidden] { display: none; }
.ie-chatbot__form { border-top: 1px solid var(--ie-border, #e2e2e2); padding: .6rem; display: flex; flex-direction: column; gap: .4rem; }
.ie-chatbot__consent { font-size: .8rem; display: flex; gap: .5rem; align-items: flex-start; color: var(--ie-text-muted, #666); line-height: 1.4; cursor: pointer; }
.ie-chatbot__consent input { margin-top: .15rem; flex: 0 0 auto; }
.ie-chatbot__consent-note { margin: 0; font-size: .74rem; line-height: 1.45; color: var(--ie-text-muted, #666); }
.ie-chatbot__consent-confirm {
	min-height: 44px;
	padding: 0 .9rem;
	border: 0;
	border-radius: var(--ie-radius-sm, 8px);
	background: var(--ie-brand-fill, #17539a);
	color: var(--ie-brand-ink, #ffffff);
	cursor: pointer;
	font: inherit;
	font-weight: 700;
}
.ie-chatbot__consent-confirm:hover:not(:disabled) { background: var(--ie-brand-fill-hover, #123f78); }
.ie-chatbot__consent-confirm:disabled { opacity: .5; cursor: not-allowed; }
.ie-chatbot__inputrow { display: flex; gap: .4rem; }
.ie-chatbot__text { flex: 1 1 auto; min-height: 44px; padding: 0 .6rem; border: 1px solid var(--ie-border, #cfcfcf); border-radius: var(--ie-radius-sm, 8px); background: var(--ie-bg, #fff); color: var(--ie-text, #111); font: inherit; }
.ie-chatbot__text:disabled { opacity: .6; }
.ie-chatbot__send { min-height: 44px; padding: 0 .9rem; border: 0; border-radius: var(--ie-radius-sm, 8px); background: var(--ie-brand-fill, #17539a); color: var(--ie-brand-ink, #ffffff); cursor: pointer; }
.ie-chatbot__send:hover { background: var(--ie-brand-fill-hover, #ffdc70); color: var(--ie-brand-ink, #ffffff); }
.ie-chatbot__send:disabled { opacity: .6; cursor: not-allowed; }
.ie-chatbot :focus-visible { outline: none; box-shadow: var(--ie-focus-ring, 0 0 0 3px rgba(24,24,24,.55)); }

.ie-chatbot__utility { border-top: 1px solid var(--ie-border, #e2e2e2); padding: .45rem .6rem; display: flex; align-items: center; gap: .4rem; background: color-mix(in srgb, var(--ie-surface, #fff) 94%, var(--ie-brand, #17539a)); }
.ie-chatbot__utility[hidden] { display: none; }
.ie-chatbot__utility::before { content: 'Se precisar'; margin-right: auto; font-size: .68rem; color: var(--ie-text-muted, #667085); }
.ie-chatbot__utility-link { display: inline-flex; align-items: center; justify-content: center; min-height: 30px; padding: .28rem .52rem; border: 1px solid var(--ie-border, #d7e0ea); border-radius: var(--ie-radius-pill, 999px); background: var(--ie-surface, #fff); color: var(--ie-brand-fill, #17539a); text-decoration: none; font-size: .7rem; font-weight: 700; }
.ie-chatbot__utility-link:hover { background: var(--ie-surface-strong, #f1f1f1); color: var(--ie-brand-fill-hover, #123f78); }

/* Mobile: preserva margens laterais/inferiores, respeita a área segura do
   sistema (home indicator) e nunca deixa a janela maior que a viewport. */
@media (max-width: 480px) {
	.ie-chatbot {
		--ie-chatbot-edge: max(.75rem, env(safe-area-inset-bottom));
		right: max(.75rem, env(safe-area-inset-right));
		/* O deslocamento das barras fixas continua valendo no celular, onde
		   a sobreposição é ainda mais cara: o polegar tem menos espaço. */
		bottom: calc(var(--ie-chatbot-edge) + var(--ie-chatbot-lift, 0px));
	}
	.ie-chatbot__panel {
		/* Fixo à viewport (não mais ao container) para poder somar, com
		   precisão, a altura real do botão (52px) ao respiro entre os dois. */
		position: fixed;
		right: max(.75rem, env(safe-area-inset-right));
		left: max(.75rem, env(safe-area-inset-left));
		bottom: calc(var(--ie-chatbot-edge) + var(--ie-chatbot-lift, 0px) + 52px + .75rem);
		width: auto;
		max-height: min(65dvh, 520px);
	}
}

@media ( prefers-reduced-motion: reduce ) {
	.ie-chatbot * { transition: none !important; animation: none !important; }
}

.ie-chatbot__handoff,.ie-chatbot__context-actions{padding:.2rem .8rem .75rem;display:flex;flex-wrap:wrap;gap:.5rem}.ie-chatbot__handoff-btn{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:.55rem .8rem;border-radius:var(--ie-radius-sm,8px);background:var(--ie-brand-fill,#17539a);color:var(--ie-brand-ink,#fff);text-decoration:none;font-weight:700}.ie-chatbot__handoff-btn:hover{background:var(--ie-brand-fill-hover,#123f78);color:var(--ie-brand-ink,#fff)}

/* =====================================================================
 * MODO DE LEITURA AMPLIADO — resultados imobiliários.
 *
 * O widget continua compacto para dúvidas rápidas. Quando a resposta traz
 * imóveis, o JavaScript abre automaticamente este modo para que mensagem e
 * cards sejam lidos como um conjunto, sem transformar uma coluna de 360px em
 * uma lista vertical interminável. O visitante pode minimizar/maximizar a
 * qualquer momento pelo cabeçalho.
 * ================================================================== */
.ie-chatbot__header-actions {
	display: flex;
	align-items: center;
	gap: .15rem;
}
.ie-chatbot__expand,
.ie-chatbot__close {
	display: flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding: 0;
	border: 0;
	border-radius: var(--ie-radius-sm, 8px);
	background: transparent;
	color: inherit;
	cursor: pointer;
}
.ie-chatbot__expand:hover,
.ie-chatbot__close:hover { background: rgba(0,0,0,.08); }
.ie-chatbot__collapse-icon { display: none; }
.ie-chatbot[data-expanded="true"] .ie-chatbot__expand-icon { display: none; }
.ie-chatbot[data-expanded="true"] .ie-chatbot__collapse-icon { display: inline-flex; }

.ie-chatbot[data-expanded="true"] .ie-chatbot__panel {
	position: fixed;
	left: 50%;
	top: 50%;
	right: auto;
	bottom: auto;
	width: min(980px, calc(100vw - 3rem));
	height: min(95vh, 760px);
	height: min(95dvh, 760px);
	max-height: none;
	margin: 0;
	transform: translate(-50%, -50%);
	border-radius: clamp(12px, 1.5vw, 20px);
}
.ie-chatbot[data-expanded="true"] .ie-chatbot__log {
	padding: 1rem;
	gap: .75rem;
}
.ie-chatbot[data-expanded="true"] .ie-chatbot__msg { max-width: min(72%, 680px); }
.ie-chatbot[data-expanded="true"] .ie-chatbot__msg-row { max-width: min(78%, 735px); }
.ie-chatbot[data-expanded="true"] .ie-chatbot__cards {
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: .9rem;
	width: 100%;
}

/* No assistente, o card precisa ser informativo sem tomar a janela inteira.
   A página de listagem continua usando as dimensões normais do componente. */
.ie-chatbot__card { min-width: 0; }
.ie-chatbot__card .ie-card { border-radius: 16px; }
.ie-chatbot__card .ie-card__media { height: 180px; }
.ie-chatbot__card .ie-card__body { padding: 14px; }
.ie-chatbot__card .ie-card__price-now { font-size: 1.2rem; }
.ie-chatbot__card .ie-card__title { font-size: .88rem; }
.ie-chatbot__card .ie-card__specs { gap: 7px 10px; margin-top: 10px; padding-top: 10px; }
.ie-chatbot__card .ie-card__footer { padding-top: 9px; }

@media (min-width: 701px) and (max-width: 940px) {
	.ie-chatbot[data-expanded="true"] .ie-chatbot__cards {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* Celular: o modo ampliado vira uma folha praticamente em tela cheia. Os
   imóveis deixam de empilhar verticalmente e passam a ser um carrossel nativo
   por gesto, com parte do próximo card aparecendo para comunicar o swipe. */
@media (max-width: 700px) {
	body.ie-has-mobile-cta .ie-chatbot {
		--ie-chatbot-lift: max(80px, calc(var(--ie-compare-bar-h, 0px) + 4.2rem));
	}
	.ie-chatbot[data-expanded="true"] .ie-chatbot__panel {
		left: max(.45rem, env(safe-area-inset-left));
		right: max(.45rem, env(safe-area-inset-right));
		top: max(.45rem, env(safe-area-inset-top));
		bottom: max(.45rem, env(safe-area-inset-bottom));
		width: auto;
		height: auto;
		max-height: none;
		transform: none;
		border-radius: 14px;
	}
	.ie-chatbot[data-expanded="true"] .ie-chatbot__msg {
		max-width: 90%;
	}
	.ie-chatbot__cards,
	.ie-chatbot[data-expanded="true"] .ie-chatbot__cards {
		display: grid;
		grid-template-columns: none;
		grid-auto-flow: column;
		grid-auto-columns: min(84%, 330px);
		gap: .75rem;
		overflow-x: auto;
		overflow-y: hidden;
		padding: .1rem .1rem .55rem;
		scroll-snap-type: x mandatory;
		scroll-padding-inline: .1rem;
		overscroll-behavior-inline: contain;
		-webkit-overflow-scrolling: touch;
	}
	.ie-chatbot__card {
		scroll-snap-align: start;
		scroll-snap-stop: always;
	}
	.ie-chatbot__card .ie-card__media { height: 175px; }
	.ie-chatbot__card .ie-card__body { padding: 13px; }
	.ie-chatbot__form { padding-bottom: max(.6rem, env(safe-area-inset-bottom)); }
}

/* Handoff sem IA: captação única após limite de recomendações ou bloqueio. */
.ie-chatbot__lead {
	margin: .35rem 0 .2rem;
	padding: 1rem;
	border: 1px solid var(--ie-border, #d7e0ea);
	border-radius: 14px;
	background: #fff;
}
.ie-chatbot__lead h3 { margin: 0 0 .35rem; font-size: 1rem; }
.ie-chatbot__lead > p { margin: 0 0 .85rem; color: var(--ie-muted, #607087); font-size: .86rem; line-height: 1.45; }
.ie-chatbot__lead-form { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .7rem; }
.ie-chatbot__visit-property { grid-column: 1 / -1; margin: 0; padding: .65rem .75rem; border: 1px solid var(--ie-border, #d9e3ef); border-radius: 9px; background: var(--ie-bg, #fff); color: var(--ie-text, #17233b); font-size: .82rem; font-weight: 750; line-height: 1.4; }
.ie-chatbot__lead-field { display: grid; gap: .3rem; font-size: .78rem; font-weight: 700; color: var(--ie-text, #17233b); }
.ie-chatbot__lead-field:has(textarea) { grid-column: 1 / -1; }
.ie-chatbot__lead-field input,
.ie-chatbot__lead-field textarea {
	width: 100%; box-sizing: border-box; border: 1px solid #c8d5e4; border-radius: 9px;
	padding: .65rem .72rem; background: #fff; color: inherit; font: inherit; font-weight: 400;
}
.ie-chatbot__lead-field input:focus,
.ie-chatbot__lead-field textarea:focus { outline: 2px solid rgba(29,94,168,.28); border-color: #1d5ea8; }
.ie-chatbot__lead-consent { grid-column: 1 / -1; display: flex; gap: .5rem; align-items: flex-start; font-size: .76rem; line-height: 1.4; }
.ie-chatbot__lead-consent input { margin-top: .15rem; }
.ie-chatbot__lead-submit { grid-column: 1 / -1; border: 0; border-radius: 9px; padding: .72rem 1rem; background: var(--ie-primary, #1d5ea8); color: #fff; font-weight: 800; cursor: pointer; }
.ie-chatbot__lead-submit:disabled { opacity: .6; cursor: wait; }
.ie-chatbot__lead-status { grid-column: 1 / -1; margin: 0; color: #a22; font-size: .78rem; }
.ie-chatbot__lead-success { margin: .65rem 0 0; font-weight: 700; color: #236b45; }
@media (max-width: 700px) {
	.ie-chatbot__lead-form { grid-template-columns: 1fr; }
	.ie-chatbot__lead-field:has(textarea), .ie-chatbot__lead-consent, .ie-chatbot__lead-submit, .ie-chatbot__lead-status { grid-column: auto; }
}

/* Respostas antigas podem conter links externos; nunca deixe uma URL forçar
   largura maior que o balão ou criar rolagem horizontal no chat. */
.ie-chatbot__msg--bot a { overflow-wrap: anywhere; word-break: break-word; }
