/**
 * DVP Imóveis — front-end
 * Identidade visual: preto #040608, ciano #05EFEF, cinza #E2DEE0, azul-noite #0A193C
 */

:root {
	--dvp-preto: #040608;
	--dvp-ciano: #05EFEF;
	--dvp-ciano-escuro: #04c4c4;
	--dvp-teal: #4CBABC;
	--dvp-noite: #0A193C;
	--dvp-cinza: #E2DEE0;
	--dvp-cinza-claro: #F6F5F6;
	--dvp-texto: #1a1d21;
	--dvp-texto-suave: #5b636d;
	--dvp-branco: #ffffff;
	--dvp-raio: 14px;
	--dvp-raio-sm: 8px;
	--dvp-sombra: 0 1px 2px rgba(4, 6, 8, .04), 0 8px 24px rgba(4, 6, 8, .06);
	--dvp-sombra-forte: 0 12px 40px rgba(4, 6, 8, .14);
	--dvp-transicao: 180ms cubic-bezier(.4, 0, .2, 1);
}

/* ---------- Base ---------- */

.dvp-seccao {
	margin-block: clamp(2.5rem, 6vw, 4.5rem);
}

.dvp-seccao__titulo {
	font-size: clamp(1.6rem, 3.5vw, 2.4rem);
	font-weight: 700;
	letter-spacing: -.02em;
	color: var(--dvp-preto);
	margin: 0 0 1.75rem;
}

.dvp-vazio {
	padding: 2.5rem;
	text-align: center;
	background: var(--dvp-cinza-claro);
	border-radius: var(--dvp-raio);
	color: var(--dvp-texto-suave);
}

/* ---------- Botões ---------- */

.dvp-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	padding: .85rem 1.6rem;
	border: 1px solid transparent;
	border-radius: 999px;
	font-size: .95rem;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	cursor: pointer;
	transition: background var(--dvp-transicao), color var(--dvp-transicao), transform var(--dvp-transicao), border-color var(--dvp-transicao);
}

.dvp-btn:focus-visible {
	outline: 3px solid var(--dvp-ciano);
	outline-offset: 2px;
}

.dvp-btn--primario {
	background: var(--dvp-preto);
	color: var(--dvp-branco);
}

.dvp-btn--primario:hover {
	background: var(--dvp-noite);
	color: var(--dvp-ciano);
	transform: translateY(-1px);
}

.dvp-btn--ciano {
	background: var(--dvp-ciano);
	color: var(--dvp-preto);
}

.dvp-btn--ciano:hover {
	background: var(--dvp-ciano-escuro);
	transform: translateY(-1px);
}

.dvp-btn--contorno {
	background: transparent;
	border-color: rgba(4, 6, 8, .18);
	color: var(--dvp-preto);
}

.dvp-btn--contorno:hover {
	border-color: var(--dvp-preto);
	background: var(--dvp-preto);
	color: var(--dvp-branco);
}

.dvp-btn--texto {
	background: none;
	padding-inline: .5rem;
	color: var(--dvp-texto-suave);
	text-decoration: underline;
}

.dvp-btn--bloco {
	width: 100%;
}

.dvp-btn[disabled] {
	opacity: .55;
	cursor: not-allowed;
	transform: none;
}

/* ---------- Grelha de cartões ---------- */

.dvp-grid {
	display: grid;
	gap: 1.5rem;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
}

.dvp-grid--2 { grid-template-columns: repeat(auto-fill, minmax(min(100%, 380px), 1fr)); }
.dvp-grid--4 { grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); }

/* ---------- Cartão de imóvel ---------- */

.dvp-card {
	display: flex;
	flex-direction: column;
	background: var(--dvp-branco);
	border: 1px solid rgba(4, 6, 8, .07);
	border-radius: var(--dvp-raio);
	overflow: hidden;
	transition: box-shadow var(--dvp-transicao), transform var(--dvp-transicao), border-color var(--dvp-transicao);
}

.dvp-card:hover {
	transform: translateY(-3px);
	box-shadow: var(--dvp-sombra-forte);
	border-color: rgba(5, 239, 239, .5);
}

.dvp-card__media {
	position: relative;
	display: block;
	aspect-ratio: 4 / 3;
	background: var(--dvp-cinza-claro);
	overflow: hidden;
}

.dvp-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 400ms cubic-bezier(.4, 0, .2, 1);
}

.dvp-card:hover .dvp-card__media img {
	transform: scale(1.04);
}

.dvp-card__placeholder {
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
	font-size: 2rem;
	font-weight: 700;
	letter-spacing: .2em;
	color: rgba(4, 6, 8, .18);
}

.dvp-card__estado,
.dvp-card__finalidade {
	position: absolute;
	top: .85rem;
	padding: .35rem .75rem;
	border-radius: 999px;
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
}

.dvp-card__finalidade {
	left: .85rem;
	background: rgba(4, 6, 8, .82);
	color: var(--dvp-ciano);
	backdrop-filter: blur(6px);
}

.dvp-card__estado {
	right: .85rem;
	background: var(--dvp-ciano);
	color: var(--dvp-preto);
}

.dvp-card--vendido .dvp-card__media img,
.dvp-card--arrendado .dvp-card__media img {
	filter: grayscale(.75);
}

.dvp-card__body {
	display: flex;
	flex-direction: column;
	gap: .6rem;
	padding: 1.25rem;
	flex: 1;
}

.dvp-card__zona {
	margin: 0;
	font-size: .78rem;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--dvp-teal);
}

.dvp-card__titulo {
	margin: 0;
	font-size: 1.1rem;
	font-weight: 600;
	line-height: 1.35;
}

.dvp-card__titulo a {
	color: var(--dvp-preto);
	text-decoration: none;
}

.dvp-card__titulo a:hover {
	color: var(--dvp-noite);
}

.dvp-card__preco {
	margin: 0;
	font-size: 1.45rem;
	font-weight: 700;
	letter-spacing: -.02em;
	color: var(--dvp-preto);
}

.dvp-card__specs {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem 1.1rem;
	margin: 0;
	padding: .75rem 0 0;
	border-top: 1px solid rgba(4, 6, 8, .07);
	list-style: none;
	font-size: .875rem;
	color: var(--dvp-texto-suave);
}

.dvp-card__specs li {
	display: flex;
	align-items: center;
	gap: .35rem;
}

.dvp-card__specs span {
	color: var(--dvp-teal);
}

.dvp-card__link {
	margin-top: auto;
	padding-top: .5rem;
	font-size: .9rem;
	font-weight: 600;
	color: var(--dvp-preto);
	text-decoration: none;
}

.dvp-card__link::after {
	content: " →";
	transition: margin var(--dvp-transicao);
}

.dvp-card__link:hover::after {
	margin-left: .25rem;
}

/* ---------- Filtros ---------- */

.dvp-filtros {
	display: flex;
	flex-direction: column;
	gap: 1rem;
	padding: 1.5rem;
	background: var(--dvp-branco);
	border: 1px solid rgba(4, 6, 8, .08);
	border-radius: var(--dvp-raio);
	box-shadow: var(--dvp-sombra);
}

.dvp-filtros__linha {
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr));
}

.dvp-filtros__acoes {
	display: flex;
	align-items: center;
	gap: .75rem;
	flex-wrap: wrap;
}

.dvp-campo {
	display: flex;
	flex-direction: column;
	gap: .35rem;
	min-width: 0;
}

.dvp-campo--wide {
	grid-column: span 2;
}

@media (max-width: 640px) {
	.dvp-campo--wide {
		grid-column: span 1;
	}
}

.dvp-campo > span {
	font-size: .78rem;
	font-weight: 600;
	letter-spacing: .05em;
	text-transform: uppercase;
	color: var(--dvp-texto-suave);
}

.dvp-campo input,
.dvp-campo select,
.dvp-campo textarea {
	width: 100%;
	padding: .7rem .9rem;
	border: 1px solid rgba(4, 6, 8, .16);
	border-radius: var(--dvp-raio-sm);
	background: var(--dvp-branco);
	font-size: .95rem;
	font-family: inherit;
	color: var(--dvp-texto);
	transition: border-color var(--dvp-transicao), box-shadow var(--dvp-transicao);
}

.dvp-campo input:focus,
.dvp-campo select:focus,
.dvp-campo textarea:focus {
	outline: none;
	border-color: var(--dvp-ciano);
	box-shadow: 0 0 0 3px rgba(5, 239, 239, .22);
}

.dvp-campo textarea {
	resize: vertical;
}

/* ---------- Formulários ---------- */

.dvp-form-wrap {
	display: grid;
	gap: 2.5rem;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
	align-items: start;
	padding: clamp(1.5rem, 4vw, 3rem);
	background: var(--dvp-preto);
	border-radius: var(--dvp-raio);
	color: var(--dvp-branco);
}

.dvp-form-wrap--simples {
	grid-template-columns: 1fr;
	background: var(--dvp-cinza-claro);
	color: var(--dvp-texto);
}

@media (max-width: 900px) {
	.dvp-form-wrap {
		grid-template-columns: 1fr;
	}
}

.dvp-form-wrap h2 {
	margin: 0 0 .75rem;
	font-size: clamp(1.5rem, 3.5vw, 2.2rem);
	font-weight: 700;
	letter-spacing: -.02em;
	color: inherit;
}

.dvp-form-wrap__intro p {
	margin: 0 0 1.5rem;
	color: rgba(255, 255, 255, .74);
	line-height: 1.6;
}

.dvp-beneficios {
	margin: 0;
	padding: 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: .7rem;
}

.dvp-beneficios li {
	position: relative;
	padding-left: 1.75rem;
	color: rgba(255, 255, 255, .88);
	font-size: .95rem;
}

.dvp-beneficios li::before {
	content: "✓";
	position: absolute;
	left: 0;
	color: var(--dvp-ciano);
	font-weight: 700;
}

.dvp-form {
	padding: 1.75rem;
	background: var(--dvp-branco);
	border-radius: var(--dvp-raio);
	color: var(--dvp-texto);
}

.dvp-form-wrap--simples .dvp-form {
	border: 1px solid rgba(4, 6, 8, .08);
}

.dvp-form__grid {
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	margin-bottom: 1.25rem;
}

@media (max-width: 560px) {
	.dvp-form__grid {
		grid-template-columns: 1fr;
	}
}

.dvp-consentimento {
	display: flex;
	align-items: flex-start;
	gap: .6rem;
	margin-bottom: 1.25rem;
	font-size: .85rem;
	line-height: 1.5;
	color: var(--dvp-texto-suave);
}

.dvp-consentimento input {
	margin-top: .2rem;
	flex-shrink: 0;
	accent-color: var(--dvp-preto);
}

.dvp-consentimento a {
	color: var(--dvp-preto);
}

.dvp-hp {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.dvp-form__resposta {
	margin: 1rem 0 0;
	font-size: .9rem;
	line-height: 1.5;
}

.dvp-form__resposta:empty {
	display: none;
}

.dvp-form__resposta.is-sucesso {
	padding: .85rem 1rem;
	background: rgba(5, 239, 239, .12);
	border-left: 3px solid var(--dvp-ciano);
	border-radius: var(--dvp-raio-sm);
	color: var(--dvp-noite);
}

.dvp-form__resposta.is-erro {
	padding: .85rem 1rem;
	background: rgba(220, 38, 38, .08);
	border-left: 3px solid #dc2626;
	border-radius: var(--dvp-raio-sm);
	color: #991b1b;
}

/* ---------- Arquivo ---------- */

.dvp-arquivo {
	max-width: 1200px;
	margin-inline: auto;
	padding: clamp(1.5rem, 4vw, 3rem) 1.25rem;
}

.dvp-arquivo__cabecalho {
	margin-bottom: 2rem;
}

.dvp-arquivo__cabecalho h1 {
	margin: 0 0 .5rem;
	font-size: clamp(1.8rem, 4vw, 2.75rem);
	font-weight: 700;
	letter-spacing: -.025em;
	color: var(--dvp-preto);
}

.dvp-arquivo__contagem {
	margin: 0;
	color: var(--dvp-texto-suave);
}

.dvp-arquivo__resultados {
	margin-top: 2rem;
}

.dvp-paginacao {
	display: flex;
	justify-content: center;
	gap: .4rem;
	margin-top: 3rem;
	flex-wrap: wrap;
}

.dvp-paginacao .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 42px;
	height: 42px;
	padding-inline: .75rem;
	border: 1px solid rgba(4, 6, 8, .12);
	border-radius: var(--dvp-raio-sm);
	color: var(--dvp-preto);
	text-decoration: none;
	font-weight: 600;
	transition: all var(--dvp-transicao);
}

.dvp-paginacao .page-numbers:hover,
.dvp-paginacao .page-numbers.current {
	background: var(--dvp-preto);
	border-color: var(--dvp-preto);
	color: var(--dvp-ciano);
}

/* ---------- Ficha do imóvel ---------- */

.dvp-imovel {
	max-width: 1200px;
	margin-inline: auto;
	padding: clamp(1.5rem, 4vw, 3rem) 1.25rem;
}

.dvp-imovel__migalhas {
	margin-bottom: 1.25rem;
	font-size: .85rem;
	color: var(--dvp-texto-suave);
}

.dvp-imovel__migalhas a {
	color: var(--dvp-texto-suave);
	text-decoration: none;
}

.dvp-imovel__migalhas a:hover {
	color: var(--dvp-preto);
}

.dvp-imovel__topo {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: 1.75rem;
}

.dvp-imovel__titulo {
	margin: 0 0 .35rem;
	font-size: clamp(1.6rem, 4vw, 2.5rem);
	font-weight: 700;
	letter-spacing: -.025em;
	color: var(--dvp-preto);
}

.dvp-imovel__local {
	margin: 0;
	color: var(--dvp-texto-suave);
}

.dvp-imovel__preco {
	font-size: clamp(1.6rem, 4vw, 2.4rem);
	font-weight: 700;
	letter-spacing: -.02em;
	color: var(--dvp-preto);
	white-space: nowrap;
}

.dvp-imovel__ref {
	display: block;
	font-size: .8rem;
	font-weight: 500;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--dvp-texto-suave);
}

.dvp-galeria-front {
	display: grid;
	gap: .75rem;
	grid-template-columns: 2fr 1fr;
	margin-bottom: 2.5rem;
	border-radius: var(--dvp-raio);
	overflow: hidden;
}

@media (max-width: 700px) {
	.dvp-galeria-front {
		grid-template-columns: 1fr;
	}
}

.dvp-galeria-front__principal img,
.dvp-galeria-front__secundarias img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.dvp-galeria-front__principal {
	aspect-ratio: 4 / 3;
	background: var(--dvp-cinza-claro);
}

.dvp-galeria-front__secundarias {
	display: grid;
	gap: .75rem;
	grid-template-rows: repeat(2, 1fr);
}

.dvp-galeria-front__secundarias figure {
	margin: 0;
	position: relative;
	aspect-ratio: 4 / 3;
	background: var(--dvp-cinza-claro);
	overflow: hidden;
}

.dvp-galeria-front__mais {
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
	background: rgba(4, 6, 8, .62);
	color: var(--dvp-branco);
	font-weight: 700;
	font-size: 1.1rem;
	text-decoration: none;
}

.dvp-imovel__conteudo {
	display: grid;
	gap: 2.5rem;
	grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
	align-items: start;
}

@media (max-width: 900px) {
	.dvp-imovel__conteudo {
		grid-template-columns: 1fr;
	}
}

.dvp-specs {
	display: grid;
	gap: 1px;
	grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
	margin-bottom: 2rem;
	background: rgba(4, 6, 8, .09);
	border: 1px solid rgba(4, 6, 8, .09);
	border-radius: var(--dvp-raio);
	overflow: hidden;
}

.dvp-specs__item {
	padding: 1.1rem 1rem;
	background: var(--dvp-branco);
}

.dvp-specs__rotulo {
	display: block;
	margin-bottom: .25rem;
	font-size: .72rem;
	font-weight: 600;
	letter-spacing: .07em;
	text-transform: uppercase;
	color: var(--dvp-texto-suave);
}

.dvp-specs__valor {
	font-size: 1.05rem;
	font-weight: 600;
	color: var(--dvp-preto);
}

.dvp-descricao {
	line-height: 1.75;
	color: var(--dvp-texto);
}

.dvp-descricao h2,
.dvp-descricao h3 {
	color: var(--dvp-preto);
}

.dvp-imovel__mapa {
	margin-top: 2.5rem;
	border-radius: var(--dvp-raio);
	overflow: hidden;
	border: 1px solid rgba(4, 6, 8, .09);
}

.dvp-imovel__mapa iframe {
	display: block;
	width: 100%;
	height: 340px;
	border: 0;
}

.dvp-aside {
	position: sticky;
	top: 2rem;
	display: flex;
	flex-direction: column;
	gap: 1.25rem;
}

@media (max-width: 900px) {
	.dvp-aside {
		position: static;
	}
}

.dvp-aside__cartao {
	padding: 1.5rem;
	background: var(--dvp-preto);
	border-radius: var(--dvp-raio);
	color: var(--dvp-branco);
}

.dvp-aside__cartao h3 {
	margin: 0 0 .5rem;
	font-size: 1.15rem;
	color: var(--dvp-branco);
}

.dvp-aside__cartao p {
	margin: 0 0 1.25rem;
	font-size: .9rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, .72);
}

.dvp-aside__acoes {
	display: flex;
	flex-direction: column;
	gap: .6rem;
}

.dvp-badge {
	display: inline-block;
	padding: .2rem .6rem;
	border-radius: 999px;
	font-size: .75rem;
	font-weight: 600;
}

.dvp-badge--disponivel { background: rgba(5, 239, 239, .18); color: #056b6b; }
.dvp-badge--reservado  { background: rgba(245, 158, 11, .16); color: #92400e; }
.dvp-badge--vendido,
.dvp-badge--arrendado  { background: rgba(4, 6, 8, .09); color: #4b5563; }
