:root {
  --cor-primaria: #0b6e4f;
  --cor-primaria-escura: #084d38;
  --cor-primaria-clara: #e6f4ef;
  --cor-destaque: #ff7a30;
  --cor-texto: #1e2328;
  --cor-texto-suave: #5b6570;
  --cor-borda: #e2e6ea;
  --cor-fundo: #f6f8f7;
  --cor-branco: #ffffff;
  --cor-erro: #c0392b;
  --cor-sucesso: #1c8a52;

  --fonte-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;

  --espaco-1: 4px;
  --espaco-2: 8px;
  --espaco-3: 12px;
  --espaco-4: 16px;
  --espaco-5: 24px;
  --espaco-6: 32px;
  --espaco-7: 48px;
  --espaco-8: 64px;

  --raio: 10px;
  --raio-grande: 16px;
  --sombra: 0 2px 10px rgba(20, 30, 25, 0.07);
  --sombra-forte: 0 8px 30px rgba(20, 30, 25, 0.12);

  --largura-maxima: 1200px;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  font-family: var(--fonte-base);
  color: var(--cor-texto);
  background: var(--cor-fundo);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

img {
  max-width: 100%;
  display: block;
}

a {
  color: inherit;
  text-decoration: none;
}

ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

h1, h2, h3, h4, h5, h6 {
  margin: 0 0 var(--espaco-3);
  line-height: 1.25;
  font-weight: 700;
}

h1 { font-size: clamp(1.6rem, 1.3rem + 1.2vw, 2.2rem); }
h2 { font-size: clamp(1.3rem, 1.1rem + 0.8vw, 1.7rem); }
h3 { font-size: 1.15rem; }

p { margin: 0 0 var(--espaco-3); }

.container {
  width: 100%;
  max-width: var(--largura-maxima);
  margin: 0 auto;
  padding: 0 var(--espaco-4);
}

.secao {
  padding: var(--espaco-7) 0;
}

.flex { display: flex; }
.flex-col { flex-direction: column; }
.items-center { align-items: center; }
.justify-between { justify-content: space-between; }
.gap-2 { gap: var(--espaco-2); }
.gap-3 { gap: var(--espaco-3); }
.gap-4 { gap: var(--espaco-4); }
.flex-wrap { flex-wrap: wrap; }

.texto-suave { color: var(--cor-texto-suave); }
.texto-centro { text-align: center; }
.mt-0 { margin-top: 0; }
.mb-0 { margin-bottom: 0; }

.grid-imoveis {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(270px, 1fr));
  gap: var(--espaco-5);
}

.botao {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--espaco-2);
  border: none;
  border-radius: var(--raio);
  padding: 12px 20px;
  font-size: 0.95rem;
  font-weight: 600;
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}

.botao-primario {
  background: var(--cor-primaria);
  color: var(--cor-branco);
}

.botao-primario:hover {
  background: var(--cor-primaria-escura);
}

.botao-secundario {
  background: var(--cor-branco);
  color: var(--cor-primaria);
  border: 1px solid var(--cor-primaria);
}

.botao-secundario:hover {
  background: var(--cor-primaria-clara);
}

.botao-bloco {
  width: 100%;
}

.badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.badge-destaque {
  background: var(--cor-destaque);
  color: var(--cor-branco);
}

.badge-sucesso {
  background: var(--cor-sucesso);
  color: var(--cor-branco);
}

.campo {
  margin-bottom: var(--espaco-4);
}

.campo label {
  display: block;
  font-size: 0.85rem;
  font-weight: 600;
  margin-bottom: var(--espaco-1);
  color: var(--cor-texto-suave);
}

.campo input,
.campo select,
.campo textarea {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  font-size: 0.95rem;
  font-family: inherit;
  background: var(--cor-branco);
  color: var(--cor-texto);
}

.campo input:focus,
.campo select:focus,
.campo textarea:focus {
  outline: 2px solid var(--cor-primaria);
  outline-offset: 1px;
}

.alerta {
  padding: var(--espaco-3) var(--espaco-4);
  border-radius: var(--raio);
  margin-bottom: var(--espaco-4);
  font-size: 0.9rem;
}

.alerta-sucesso {
  background: #e5f6ec;
  color: var(--cor-sucesso);
  border: 1px solid #b9e5cb;
}

.alerta-erro {
  background: #fdecea;
  color: var(--cor-erro);
  border: 1px solid #f4c1ba;
}

@media (max-width: 640px) {
  .secao { padding: var(--espaco-6) 0; }
}
