.ai-bubble { position: fixed; right: 22px; bottom: 92px; z-index: 60; }

.ai-bubble__toggle {
  width: 58px; height: 58px; border-radius: 50%; border: none; cursor: pointer;
  background: #1F463D; color: #F3EFE7; font-size: 24px;
  box-shadow: 0 10px 30px rgba(15, 36, 31, .35);
}
.ai-bubble__toggle:focus-visible { outline: 3px solid #F3EFE7; outline-offset: 2px; }

.ai-bubble__panel {
  position: absolute; right: 0; bottom: 70px; width: min(340px, calc(100vw - 44px));
  background: #fff; border-radius: 14px; overflow: hidden;
  box-shadow: 0 18px 48px rgba(15, 36, 31, .28); display: flex; flex-direction: column;
}
.ai-bubble__header { background: #1F463D; color: #F3EFE7; padding: 14px 16px; font-weight: 600; }
.ai-bubble__log { max-height: 300px; overflow-y: auto; padding: 14px 16px; font-size: 14px; }
.ai-bubble__msg { margin: 0 0 10px; line-height: 1.5; }
.ai-bubble__msg--user { text-align: right; color: #17322C; font-weight: 600; }
.ai-bubble__form { display: flex; gap: 8px; padding: 12px; border-top: 1px solid #E6E1D7; }
.ai-bubble__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.ai-bubble__input { flex: 1; min-height: 44px; padding: 0 12px; border: 1px solid #C9C2B4; border-radius: 8px; }
.ai-bubble__send { min-height: 44px; padding: 0 16px; border: none; border-radius: 8px; background: #1F463D; color: #F3EFE7; cursor: pointer; }

@media (max-width: 480px) { .ai-bubble { right: 16px; bottom: 86px; } }
/* ==========================================================================
   TERRENO JOÁ — grupoanacintra.com.br/joa
   View: app/views/pages/gac/joa.html.erb

   Destino da campanha de Meta Ads do terreno.

   Visual reconstruído em 28/08/2026 a partir do handoff do designer
   ("Landing page para terreno Joá.zip"), aprovado pela Ana. Mudanças em
   relação à primeira versão: paleta verde-escura no lugar do azul-noite,
   Newsreader + Archivo no lugar de Albert Sans, header e barra fixos,
   preço no hero, e duas seções novas.

   TODA classe leva o prefixo .joa- porque o application.css faz require_tree
   e o bundle é global: classe sem prefixo aqui quebra o layout de outra LP.

   ⚠️ home.css:53 tem `h1, h2, h3 { color: var(--ink) }` — regra de ELEMENTO,
   sem prefixo, que atinge os títulos daqui e VENCE a cor herdada de `.joa`
   (herança nunca ganha de uma regra que mira o elemento). Já derrubou o
   título do hero para preto sobre foto clara uma vez. Por isso a cor dos
   títulos é declarada explicitamente logo abaixo. Não remova.
   ========================================================================== */

.joa {
  --joa-fundo:      #0e100f;
  --joa-fundo-alt:  #161917;
  --joa-texto:      #f2efe9;
  --joa-texto-2:    #ded9cf;
  --joa-texto-3:    #c9c4ba;
  --joa-suave:      #a9a49a;
  --joa-fraco:      #8d8a83;
  --joa-minimo:     #6f6c66;
  --joa-acento:     #d8a25e;
  --joa-acento-luz: #eab97c;
  --joa-sobre-acento: #14110c;
  --joa-linha:      rgba(242,239,233,.14);
  --joa-borda:      rgba(242,239,233,.16);
  --joa-borda-btn:  rgba(242,239,233,.35);

  --joa-serif: Newsreader, Georgia, "Times New Roman", serif;
  --joa-sans:  Archivo, Helvetica, -apple-system, "Segoe UI", sans-serif;
  --joa-estreita: "Archivo Narrow", Archivo, Helvetica, sans-serif;

  background: var(--joa-fundo);
  color: var(--joa-texto-3);
  font-family: var(--joa-sans);
  font-weight: 400;
  line-height: 1.6;
  /* Espaço para a barra fixa não cobrir o fim do rodapé. */
  padding-bottom: 4.5rem;
}

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

.joa figure { margin: 0; }
.joa img,
.joa video { display: block; max-width: 100%; }

/* ⚠️ REGRA DEFENSIVA — não remova.
   Toda <img> aqui traz os atributos width/height do arquivo, que valem como
   altura FIXA. Enquanto essa altura vale, `aspect-ratio` é simplesmente
   ignorado: a imagem estica. Esse bug apareceu três vezes em 28/08/2026 —
   nas duas fotos da vista (562×703 em vez de 358×448) e na foto da Ana
   (544×900 em vez de quadrada). Zerar a altura aqui, uma vez, evita a
   quarta. As exceções que precisam de altura própria vêm abaixo, com
   especificidade maior. */
.joa img { height: auto; }
.joa .joa-hero__bg { height: 100%; }

.joa h1, .joa h2, .joa h3 {
  color: var(--joa-texto);
  font-family: var(--joa-serif);
  font-weight: 300;
  margin: 0;
  text-wrap: balance;
}
.joa p { margin: 0; }

/* ------------------------------------------------------------- tipografia */
.joa-kicker {
  margin: 0;
  font-family: var(--joa-estreita);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--joa-acento);
}

.joa-h2 {
  font-size: clamp(30px, 4vw, 48px);
  line-height: 1.06;
  letter-spacing: -.02em;
}
.joa-h3 {
  font-size: 32px;
  line-height: 1.15;
  letter-spacing: -.01em;
}
.joa-lede {
  font-family: var(--joa-serif);
  font-weight: 300;
  font-size: 19px;
  line-height: 1.55;
  color: var(--joa-texto-3);
}

/* ----------------------------------------------------------------- layout */
.joa-wrap {
  width: min(1200px, 100%);
  margin-inline: auto;
  padding-inline: 28px;
}
.joa-sec { padding: clamp(56px, 10vw, 96px) 0; }
.joa-sec--alt { background: var(--joa-fundo-alt); }

.joa-cab {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 48px;
  align-items: end;
}
.joa-cab__titulo { display: flex; flex-direction: column; gap: 14px; }

/* --------------------------------------------------------------- botões */
.joa-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  font-family: var(--joa-sans);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.2;
  text-decoration: none;
  border: 1px solid transparent;
  border-radius: 2px;
  padding: 15px 26px;
  cursor: pointer;
  transition: background-color .2s ease, border-color .2s ease, color .2s ease;
}
.joa-btn--primario {
  background: var(--joa-acento);
  color: var(--joa-sobre-acento);
}
.joa-btn--primario:hover { background: var(--joa-acento-luz); }
.joa-btn--secundario {
  background: transparent;
  border-color: var(--joa-borda-btn);
  color: var(--joa-texto);
}
.joa-btn--secundario:hover { border-color: var(--joa-acento); color: var(--joa-acento); }
.joa-btn--bloco { width: 100%; padding: 18px 24px; }
.joa-btn:focus-visible { outline: 2px solid var(--joa-acento); outline-offset: 3px; }

/* ---------------------------------------------------------- header fixo */
.joa-topo {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 50;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 16px 28px;
  background: linear-gradient(180deg, rgba(14,16,15,.85), rgba(14,16,15,0));
}
.joa-topo__marca {
  font-family: var(--joa-estreita);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: #d9d4c9;
}
.joa-topo__cta {
  font-family: var(--joa-sans);
  font-size: 13px;
  font-weight: 500;
  text-decoration: none;
  color: var(--joa-texto);
  border: 1px solid var(--joa-borda-btn);
  border-radius: 999px;
  padding: 9px 18px;
  transition: border-color .2s ease, color .2s ease;
}
.joa-topo__cta:hover { border-color: var(--joa-acento); color: var(--joa-acento); }

/* ------------------------------------------------------------------ hero */
.joa-hero {
  position: relative;
  min-height: 100svh;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
}
.joa-hero__bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.joa-hero__veu {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg,
    rgba(14,16,15,.55) 0%,
    rgba(14,16,15,.15) 35%,
    rgba(14,16,15,.92) 100%);
}
.joa-hero__wrap {
  position: relative;
  width: min(1200px, 100%);
  margin-inline: auto;
  padding: 0 28px 56px;
  animation: joaFade .9s ease both;
}
.joa-hero__titulo {
  margin-top: 14px;
  font-size: clamp(40px, 7vw, 92px);
  line-height: 1.02;
  letter-spacing: -.02em;
  max-width: 15ch;
}
.joa-hero__sub {
  margin-top: 20px;
  font-family: var(--joa-serif);
  font-weight: 300;
  font-size: clamp(17px, 2vw, 22px);
  line-height: 1.5;
  color: var(--joa-texto-2);
  max-width: 46ch;
}
.joa-hero__barra {
  margin-top: 40px;
  padding-top: 32px;
  border-top: 1px solid rgba(242,239,233,.18);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 32px 48px;
}
.joa-hero__acoes { display: flex; flex-wrap: wrap; gap: 12px; }

@keyframes joaFade {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: none; }
}

/* ------------------------------------------------------------- preço */
.joa-preco__rotulo {
  font-family: var(--joa-estreita);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--joa-suave);
}
.joa-preco__valor {
  font-family: var(--joa-serif);
  font-weight: 300;
  font-size: clamp(30px, 4vw, 46px);
  line-height: 1.05;
  color: var(--joa-texto);
  font-variant-numeric: tabular-nums;
}
.joa-preco__m2 {
  margin-top: 4px;
  font-size: 13px;
  color: var(--joa-suave);
}

/* --------------------------------------------------------------- grades */
/* Divisórias de 1px feitas com gap sobre fundo — sem bordas duplicadas. */
.joa-grade {
  margin-top: 40px;
  display: grid;
  gap: 1px;
  background: var(--joa-linha);
  border: 1px solid var(--joa-linha);
}
.joa-grade--4 { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.joa-grade--cards { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }

.joa-cel {
  background: var(--joa-fundo);
  padding: 32px 26px;
}
.joa-sec--alt .joa-cel { background: var(--joa-fundo-alt); }

.joa-num {
  font-family: var(--joa-serif);
  font-weight: 300;
  font-size: 46px;
  line-height: 1;
  color: var(--joa-texto);
  font-variant-numeric: tabular-nums;
}
.joa-num span { font-size: 22px; color: var(--joa-suave); margin-left: 6px; }
.joa-cel__rotulo { margin-top: 10px; font-size: 14px; color: var(--joa-texto-2); }
.joa-cel__nota   { margin-top: 6px; font-size: 13px; color: var(--joa-fraco); line-height: 1.5; }

.joa-cel h3 {
  font-family: var(--joa-sans);
  font-size: 16px;
  font-weight: 600;
  color: var(--joa-texto);
}
.joa-cel p { margin-top: 10px; font-size: 15px; line-height: 1.6; color: var(--joa-texto-2); }
.joa-cel__extra {
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--joa-linha);
  font-size: 14px;
  color: var(--joa-texto-3);
}

/* Três notas soltas abaixo da grade de medidas. */
.joa-notas {
  margin-top: 28px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 28px;
  list-style: none;
  padding: 0;
}
.joa-notas li { margin: 0; font-size: 15px; line-height: 1.6; color: var(--joa-texto-3); }
.joa-notas strong { color: var(--joa-texto); font-weight: 600; }

/* ------------------------------------------------------------------ vídeo */
.joa-video {
  position: relative;
  margin-top: 40px;
  background: #000;
  border: 1px solid var(--joa-linha);
}
.joa-video video { width: 100%; height: auto; }

/* Com preload leve o poster parece foto e o filme passa despercebido — a Ana
   chegou a perguntar se o vídeo não ia ser usado. Some no primeiro toque. */
.joa-play {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  gap: 14px;
  width: 100%;
  border: 0;
  background: linear-gradient(rgba(14,16,15,.15), rgba(14,16,15,.5));
  color: var(--joa-texto);
  font-family: inherit;
  cursor: pointer;
  transition: background-color .25s ease;
}
.joa-play:hover { background: linear-gradient(rgba(14,16,15,.05), rgba(14,16,15,.38)); }
.joa-play[hidden] { display: none; }
.joa-play__disco {
  width: clamp(56px, 8vw, 78px);
  aspect-ratio: 1;
  border-radius: 50%;
  border: 1px solid rgba(242,239,233,.55);
  background: rgba(14,16,15,.42);
  display: grid;
  place-items: center;
  transition: background-color .2s ease, border-color .2s ease;
}
.joa-play:hover .joa-play__disco { background: var(--joa-acento); border-color: var(--joa-acento); }
.joa-play__disco svg { width: 38%; height: 38%; fill: #fff; margin-left: 12%; }
.joa-play:hover .joa-play__disco svg { fill: var(--joa-sobre-acento); }
.joa-play__txt {
  font-family: var(--joa-estreita);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .2em;
  text-transform: uppercase;
  text-shadow: 0 1px 6px rgba(0,0,0,.6);
}
.joa-play:focus-visible { outline: 2px solid var(--joa-acento); outline-offset: -4px; }

/* ---------------------------------------------------------------- vistas */
/* ⚠️ O limite de largura é o que segura a ALTURA. Sem ele, na faixa de 1200 px
   cada foto vai a 562×703 — mais alta que a tela do notebook. Já aconteceu duas
   vezes (a Ana pegou a primeira pelo print). Medir a altura resultante, não só
   a proporção. */
.joa-vistas {
  margin-top: 40px;
  max-width: 46rem;
  margin-inline: auto;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 20px;
}
/* ⚠️ As duas fotos são VERTICAIS (3:4 e 9:16). O handoff pedia 4:3, que é
   deitado e as decepava; 4:5 foi a proporção que a Ana escolheu olhando quatro
   opções lado a lado. `height: auto` é obrigatório: com os atributos
   width/height do arquivo valendo, o aspect-ratio é ignorado. */
.joa-vista img {
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 5;
  object-fit: cover;
}
.joa-vista--entardecer img { object-position: center 85%; }
.joa-vista--lua img        { object-position: center 62%; }
.joa-vista figcaption { margin-top: 10px; font-size: 13px; color: var(--joa-fraco); }

/* -------------------------------------------------------------- conceito */
.joa-conceito {
  margin-top: 48px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 40px;
  align-items: center;
}
.joa-conceito img { width: 100%; height: auto; }
.joa-conceito__txt { display: flex; flex-direction: column; gap: 14px; }
.joa-aviso {
  font-size: 13px;
  line-height: 1.6;
  color: var(--joa-fraco);
  border-left: 1px solid rgba(216,162,94,.5);
  padding-left: 14px;
}
.joa-aviso strong { color: var(--joa-texto-3); font-weight: 600; }

/* ------------------------------------------------------------ localização */
.joa-local { display: grid; gap: 48px; align-items: center; }
.joa-local__txt { display: flex; flex-direction: column; gap: 18px; }
.joa-linhas { margin: 6px 0 0; padding: 0; list-style: none; }
.joa-linhas li {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  padding: 14px 0;
  border-bottom: 1px solid var(--joa-linha);
  font-size: 15px;
  color: var(--joa-texto-2);
}
.joa-linhas li span { color: var(--joa-fraco); text-align: right; }

/* ------------------------------------------------------------ autoridade */
.joa-ana {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 56px;
  align-items: center;
  border-top: 1px solid var(--joa-linha);
  padding-top: 72px;
}
.joa-ana__foto { width: 100%; aspect-ratio: 1; object-fit: cover; }
.joa-ana__txt { display: flex; flex-direction: column; gap: 18px; align-items: flex-start; }
.joa-ana__lista { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 14px; }
.joa-ana__lista li {
  display: flex;
  gap: 14px;
  font-size: 15px;
  line-height: 1.65;
  color: var(--joa-texto-2);
}
.joa-ana__lista li::before { content: "·"; color: var(--joa-acento); font-weight: 700; }
.joa-ana__assinatura { font-size: 14px; color: var(--joa-fraco); }

/* ------------------------------------------------------------- conversar */
.joa-conversar {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 64px;
  align-items: start;
}
.joa-conversar__esq { display: flex; flex-direction: column; gap: 18px; }
.joa-conversar__esq .joa-h2 { font-size: clamp(32px, 4.5vw, 52px); max-width: 14ch; }

.joa-caixa {
  border: 1px solid var(--joa-borda);
  padding: 28px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.joa-caixa__valor {
  font-family: var(--joa-serif);
  font-weight: 300;
  font-size: clamp(34px, 5vw, 52px);
  line-height: 1.05;
  color: var(--joa-texto);
  font-variant-numeric: tabular-nums;
}
.joa-caixa__linha { font-size: 14px; color: var(--joa-texto-3); }
.joa-caixa__nota  { font-size: 13px; color: var(--joa-fraco); line-height: 1.6; }

.joa-form-caixa {
  border: 1px solid var(--joa-borda);
  padding: 36px 32px;
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.joa-rotulo {
  font-family: var(--joa-estreita);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--joa-suave);
}

/* Seletor de interesse: alimenta a mensagem do WhatsApp e o campo do
   formulário ao mesmo tempo. */
.joa-interesse { display: flex; flex-direction: column; gap: 10px; }
.joa-opcao {
  padding: 14px 18px;
  border-radius: 2px;
  border: 1px solid rgba(242,239,233,.22);
  background: transparent;
  color: var(--joa-texto-3);
  font-family: var(--joa-sans);
  font-size: 15px;
  text-align: left;
  cursor: pointer;
  transition: background-color .2s ease, border-color .2s ease, color .2s ease;
}
.joa-opcao:hover { border-color: rgba(242,239,233,.4); }
.joa-opcao[aria-pressed="true"] {
  background: rgba(216,162,94,.14);
  border-color: var(--joa-acento);
  color: var(--joa-texto);
}
.joa-opcao:focus-visible { outline: 2px solid var(--joa-acento); outline-offset: 2px; }

.joa-nota-cta { font-size: 13px; line-height: 1.6; color: var(--joa-fraco); }
.joa-ligar {
  margin-top: 4px;
  padding-top: 18px;
  border-top: 1px solid var(--joa-linha);
  font-size: 14px;
  color: var(--joa-texto-3);
}
.joa-ligar a { color: var(--joa-texto); text-decoration: none; }
.joa-ligar a:hover { color: var(--joa-acento); }

/* ----------------------------------------------------------- formulário */
.joa-form { display: flex; flex-direction: column; gap: 14px; }
.joa-form__intro { font-size: 14px; color: var(--joa-fraco); line-height: 1.6; }
.joa-form label {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 13px;
  color: var(--joa-suave);
}
.joa-form input,
.joa-form textarea {
  width: 100%;
  padding: 13px 14px;
  border: 1px solid rgba(242,239,233,.22);
  border-radius: 2px;
  background: rgba(242,239,233,.03);
  color: var(--joa-texto);
  font-family: var(--joa-sans);
  font-size: 15px;
}
.joa-form textarea { resize: vertical; }
.joa-form input::placeholder,
.joa-form textarea::placeholder { color: var(--joa-fraco); }
.joa-form input:focus-visible,
.joa-form textarea:focus-visible {
  outline: 2px solid var(--joa-acento);
  outline-offset: 1px;
  border-color: transparent;
}
.joa-form__fine { font-size: 12px; line-height: 1.55; color: var(--joa-minimo); }

/* ------------------------------------------------------------ barra fixa */
.joa-barra {
  position: fixed;
  inset: auto 0 0 0;
  z-index: 60;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 14px 28px;
  background: rgba(14,16,15,.94);
  backdrop-filter: blur(10px);
  border-top: 1px solid var(--joa-borda);
  transform: translateY(110%);
  transition: transform .35s ease;
}
.joa-barra--visivel { transform: translateY(0); }
.joa-barra__valor {
  font-family: var(--joa-serif);
  font-weight: 300;
  font-size: 24px;
  line-height: 1.1;
  color: var(--joa-texto);
  font-variant-numeric: tabular-nums;
}
.joa-barra__sub { font-size: 13px; color: var(--joa-suave); }
.joa-barra .joa-btn { padding: 12px 20px; font-size: 14px; }

@media (max-width: 30rem) {
  .joa-barra { padding: 12px 16px; }
  .joa-barra__valor { font-size: 20px; }
  .joa-barra .joa-btn { padding: 11px 14px; font-size: 13px; }
  .joa-topo { padding: 12px 16px; }
  .joa-wrap { padding-inline: 20px; }
  .joa-hero__wrap { padding-inline: 20px; }
}

@media (prefers-reduced-motion: reduce) {
  .joa-hero__wrap { animation: none; }
  .joa-barra, .joa-btn, .joa-opcao, .joa-play { transition: none; }
}

/* ------------------------------------------------------------- rodapé
   ⚠️ O rodapé compartilhado declara as próprias variáveis DENTRO de `.rlp`
   (ver rodape_lp.css: `.rlp { --rlp-fundo: #0A2C35 }`). Variável declarada no
   próprio elemento vence a herdada do ancestral — por isso pôr `--rlp-*` em
   `.joa` NÃO funciona, e o rodapé ficou azul-petróleo sobre a página verde até
   a Ana apontar em 28/08/2026. A sobrescrita tem de mirar `.joa .rlp`, como o
   Elos já fazia.

   Escopado em `.joa`: um `.rlp` solto aqui pintaria o rodapé de todas as
   outras LPs, já que o CSS é um bundle global. */
.joa .rlp {
  --rlp-fundo: #0a0c0b;
  --rlp-texto: #c9c4ba;
  --rlp-claro: #f2efe9;
  --rlp-linha: rgba(242,239,233,.14);
  --rlp-fraco: #8d8a83;
}

/* O botão flutuante do WhatsApp vem da mesma peça e usa o acento da LP. */
.joa .rlp-wa {
  background: var(--joa-acento);
  color: var(--joa-sobre-acento);
}
.joa .rlp-wa:hover { background: var(--joa-acento-luz); }
.joa .rlp-wa svg { fill: currentColor; }
/* PÁGINA DE LINKS (bio do Instagram) — grupoanacintra.com.br/links
   Tudo prefixado .lnk- : o bundle é global (application.css faz require_tree).

   ⚠️ home.css declara `h1, h2, h3 { color: var(--ink) }` — regra de ELEMENTO,
   sem prefixo, no mesmo bundle. Herança NÃO vence uma regra que mira o
   elemento, então num fundo escuro os títulos sobem pretos e somem. Foi o que
   aconteceu no hero do Joá. Por isso h1 e h2 têm cor declarada aqui.

   Desenhada para o celular, dentro do navegador do Instagram: coluna única,
   linha inteira clicável, alvo de toque alto. Nada de menu. */

.lnk {
  --lnk-fundo:   #0f100e;
  --lnk-cartao:  #191b18;
  --lnk-linha:   #2b2e29;
  --lnk-texto:   #eceee9;
  --lnk-suave:   #a3a89e;
  --lnk-ouro:    #d8a25e;
  --lnk-ouro-fraco: #6b5230;

  max-width: 30rem;
  margin: 0 auto;
  padding: 2.5rem 1.1rem 3rem;
  background: var(--lnk-fundo);
  color: var(--lnk-texto);
  font-family: "Archivo", -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  line-height: 1.5;
  min-height: 100vh;
}
.lnk *, .lnk *::before, .lnk *::after { box-sizing: border-box; }
.lnk img { max-width: 100%; height: auto; display: block; }
.lnk figure { margin: 0; }
.lnk p { margin: 0; }
.lnk ul { margin: 0; padding: 0; list-style: none; }

/* ---------- topo ---------- */
.lnk-topo { text-align: center; margin-bottom: 2.25rem; }
.lnk-topo__foto {
  width: 5.5rem; height: 5.5rem; border-radius: 50%;
  object-fit: cover; margin: 0 auto 0.9rem;
  border: 2px solid var(--lnk-ouro-fraco);
}
.lnk h1 {
  color: var(--lnk-texto);          /* vence a regra de elemento do home.css */
  font-size: 1.45rem; font-weight: 600; letter-spacing: -0.01em;
  margin: 0 0 0.3rem;
}
.lnk-topo__linha { color: var(--lnk-suave); font-size: 0.95rem; }
.lnk-topo__creci {
  color: var(--lnk-ouro); font-size: 0.72rem; letter-spacing: 0.1em;
  text-transform: uppercase; margin-top: 0.55rem;
}

/* ---------- blocos ---------- */
.lnk-bloco { margin-bottom: 2.25rem; }
.lnk h2 {
  color: var(--lnk-texto);          /* idem: home.css pinta h2 de preto */
  font-size: 1.05rem; font-weight: 600; margin: 0 0 0.35rem;
  display: flex; align-items: baseline; gap: 0.5rem; flex-wrap: wrap;
}
.lnk h2 span {
  color: var(--lnk-ouro); font-size: 0.7rem; font-weight: 600;
  letter-spacing: 0.12em; text-transform: uppercase;
}
.lnk-bloco__lead {
  color: var(--lnk-suave); font-size: 0.88rem; margin-bottom: 1rem;
}

/* ---------- item da lista ---------- */
.lnk-lista { display: flex; flex-direction: column; gap: 0.6rem; }
.lnk-item {
  display: flex; align-items: center; gap: 0.85rem;
  padding: 0.6rem 0.85rem 0.6rem 0.6rem;
  background: var(--lnk-cartao);
  border: 1px solid var(--lnk-linha);
  border-radius: 10px;
  color: inherit; text-decoration: none;
  transition: border-color .18s ease, transform .18s ease;
}
.lnk-item:hover, .lnk-item:focus-visible {
  border-color: var(--lnk-ouro); transform: translateY(-1px);
}
.lnk-item:focus-visible { outline: 2px solid var(--lnk-ouro); outline-offset: 2px; }
.lnk-item img {
  width: 4.25rem; height: 4.25rem; flex: none;
  border-radius: 7px; object-fit: cover;
}
.lnk-item__texto { flex: 1 1 auto; min-width: 0; }
.lnk-item__texto strong {
  display: block; font-size: 1rem; font-weight: 600; color: var(--lnk-texto);
}
.lnk-item__texto strong em {
  font-style: normal; font-weight: 500; font-size: 0.72rem;
  color: var(--lnk-ouro); letter-spacing: 0.08em; text-transform: uppercase;
  margin-left: 0.4rem;
}
.lnk-item__texto small {
  display: block; font-size: 0.8rem; color: var(--lnk-suave); margin-top: 0.15rem;
}
.lnk-item__seta { flex: none; color: var(--lnk-ouro); font-size: 1.1rem; }

/* 100% vendido: continua clicável (avisa sobre revenda), mas não compete
   visualmente com quem ainda tem unidade. */
.lnk-item--vendido { opacity: 0.62; }
.lnk-item--vendido .lnk-item__seta { color: var(--lnk-suave); }

/* ---------- WhatsApp ---------- */
.lnk-fala { text-align: center; margin: 2.5rem 0 2.75rem; }
.lnk-fala p { color: var(--lnk-suave); font-size: 0.88rem; margin-bottom: 0.85rem; }
.lnk-wa {
  display: inline-block; padding: 0.85rem 1.6rem;
  background: var(--lnk-ouro); color: #14150f;
  font-weight: 600; font-size: 0.95rem;
  border-radius: 999px; text-decoration: none;
}
.lnk-wa:hover, .lnk-wa:focus-visible { background: #e6b573; }
.lnk-wa:focus-visible { outline: 2px solid var(--lnk-texto); outline-offset: 3px; }

/* ---------- rodapé ---------- */
.lnk-pe {
  border-top: 1px solid var(--lnk-linha); padding-top: 1.5rem;
  text-align: center; color: var(--lnk-suave); font-size: 0.8rem;
}
.lnk-pe img { width: 8.5rem; margin: 0 auto 0.9rem; }
.lnk-pe p { margin-bottom: 0.7rem; line-height: 1.6; }
.lnk-pe a { color: var(--lnk-suave); }
.lnk-pe__aviso { font-size: 0.72rem; color: #7c8177; }

@media (prefers-reduced-motion: reduce) {
  .lnk-item { transition: none; }
  .lnk-item:hover { transform: none; }
}
/* ============================================================================
   ONLIFE 5817 — Estrada dos Bandeirantes, 5817 · Jacarepaguá, RJ
   Porte fiel do projeto React/Tailwind "essence-canvas-engine" para CSS puro.
   Design system: papel off-white, arquitetura grafite, acento âmbar "on".
   Tudo escopado em .onlife (application.css usa require_tree).
   ========================================================================== */

.onlife {
  /* --- Paleta do book ONLIFE: laranja #D86018 + indigo #301878 --- */
  --ol-paper: oklch(0.985 0.004 80);
  --ol-ink: oklch(0.14 0.01 260);
  --ol-graphite: oklch(0.28 0.008 260);
  --ol-graphite-soft: oklch(0.42 0.008 260);
  --ol-accent: oklch(0.655 0.176 43);
  --ol-accent-soft: oklch(0.78 0.14 48);
  --ol-accent-fg: oklch(0.15 0.02 40);
  --ol-indigo: #301878;

  --ol-bg: var(--ol-paper);
  --ol-fg: var(--ol-ink);
  --ol-secondary: oklch(0.95 0.005 80);
  --ol-secondary-60: oklch(0.964 0.0046 80);
  --ol-secondary-50: oklch(0.9675 0.0045 80);
  --ol-muted: oklch(0.94 0.004 80);
  --ol-muted-fg: var(--ol-graphite-soft);
  --ol-border: oklch(0.9 0.006 80);

  --ol-font-display: "Sora", ui-sans-serif, system-ui, sans-serif;
  --ol-font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;

  --ol-max: 80rem;
  --ol-pad: 1.25rem;

  min-height: 100vh;
  background-color: var(--ol-bg);
  color: var(--ol-fg);
  font-family: var(--ol-font-sans);
  font-feature-settings: "ss01", "cv11";
  -webkit-font-smoothing: antialiased;
  line-height: 1.5;
}

@media (min-width: 768px) {
  .onlife { --ol-pad: 2rem; }
}

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

.onlife h1,
.onlife h2,
.onlife h3,
.onlife h4 {
  font-family: var(--ol-font-display);
  letter-spacing: -0.01em;
  margin: 0;
  font-weight: 400;
}

/* :where() zera a especificidade: o reset continua valendo como "padrão",
   mas qualquer regra de componente (.ol-*__lead, .ol-*__checks, etc.) que
   defina margin/padding vence — senão este reset zerava os espaçamentos. */
:where(.onlife) p { margin: 0; }
:where(.onlife) ul { margin: 0; padding: 0; list-style: none; }
.onlife img,
.onlife video { display: block; max-width: 100%; }
/* :where() zera a especificidade — senão esta regra vence a cor dos botões
   (.ol-btn--ghost, .ol-nav__cta, .ol-wa) e o texto some no fundo escuro. */
:where(.onlife a) { color: inherit; text-decoration: none; }
.onlife a { text-decoration: none; }

.onlife svg {
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.ol-shell {
  max-width: var(--ol-max);
  margin: 0 auto;
  padding-left: var(--ol-pad);
  padding-right: var(--ol-pad);
}

/* Eyebrows em laranja (pedido da Ana — sem cinza) */
.ol-eyebrow {
  font-size: 0.75rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.34em;
  color: var(--ol-accent);
}
.ol-eyebrow .ol-slash { color: color-mix(in oklab, var(--ol-accent) 55%, transparent); }

.ol-h2 {
  margin-top: 1rem;
  font-size: 1.875rem;
  font-weight: 300;
  line-height: 1.15;
  color: var(--ol-fg);
}
/* Segunda parte do título sempre em laranja */
.ol-h2 em { font-style: normal; color: var(--ol-accent); }
@media (min-width: 768px) { .ol-h2 { font-size: 3rem; } }

/* ============================ NAV ============================ */
/* Barra escura: o menu fica sobre o vídeo do hero (escuro) e faz par com o
   rodapé. É o que permite usar a logo branca oficial, com o miolo laranja. */
.ol-nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 40;
  border-bottom: 1px solid color-mix(in oklab, var(--ol-bg) 12%, transparent);
  background: color-mix(in oklab, var(--ol-fg) 88%, transparent);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
.ol-nav__inner {
  display: flex;
  height: 4rem;
  align-items: center;
  justify-content: space-between;
}
.ol-nav__brand {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-family: var(--ol-font-display);
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-size: 15px;
  color: var(--ol-fg);
}
.ol-nav__brand img { height: 1.375rem; width: auto; }
.ol-nav__num { margin-left: 0.125rem; color: var(--ol-muted-fg); }

.ol-nav__links {
  display: none;
  align-items: center;
  gap: 2rem;
  font-size: 0.875rem;
  color: color-mix(in oklab, var(--ol-bg) 72%, transparent);
}
.ol-nav__links a { transition: color .2s; }
.ol-nav__links a:hover { color: var(--ol-accent); }
@media (min-width: 768px) { .ol-nav__links { display: flex; } }

/* Botão claro sobre a barra escura — o laranja fica reservado para o CTA
   principal do hero, logo abaixo, para os dois não competirem. */
.ol-nav__cta {
  display: none;
  align-items: center;
  gap: 0.5rem;
  border-radius: 0.125rem;
  background: var(--ol-bg);
  padding: 0.5rem 1rem;
  font-size: 0.75rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--ol-fg);
  transition: background-color .2s, color .2s;
}
.ol-nav__cta:hover { background: var(--ol-accent); color: var(--ol-accent-fg); }
@media (min-width: 640px) { .ol-nav__cta { display: inline-flex; } }

/* ============================ HERO ============================ */
.ol-hero {
  position: relative;
  min-height: 100svh;
  width: 100%;
  overflow: hidden;
}
.ol-hero__img {
  position: absolute;
  inset: 0;
  height: 100%;
  width: 100%;
  object-fit: cover;
  animation: onlife-zoom 1600ms ease-out both;
}
.ol-hero__scrim {
  position: absolute; inset: 0;
  background: linear-gradient(to bottom, rgba(0,0,0,.7), rgba(0,0,0,.45) 50%, rgba(0,0,0,.85));
}
.ol-hero__scrim--side {
  position: absolute; inset: 0;
  background: linear-gradient(to right, rgba(0,0,0,.4), transparent);
}
.ol-hero__inner {
  position: relative;
  z-index: 10;
  display: flex;
  min-height: 100svh;
  flex-direction: column;
  justify-content: flex-end;
  padding-top: 8rem;
  padding-bottom: 4rem;
}
@media (min-width: 768px) { .ol-hero__inner { padding-bottom: 6rem; } }

.ol-hero__anim { animation: onlife-fade-up 900ms ease-out both; }

.ol-hero__place {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 1.5rem;
  border-left: 2px solid var(--ol-accent);
  padding-left: 0.75rem;
  font-size: 11px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.34em;
  color: color-mix(in oklab, var(--ol-accent) 90%, transparent);
}
.ol-hero__place .ol-sep { color: rgba(255,255,255,.4); }

.ol-hero__title {
  max-width: 56rem;
  font-family: var(--ol-font-display);
  font-size: 2.25rem;
  font-weight: 300;
  line-height: 1.1;
  color: #fff;
}
.ol-hero__title em { font-style: normal; font-weight: 400; color: var(--ol-accent); }
@media (min-width: 768px) { .ol-hero__title { font-size: 3.75rem; } }
@media (min-width: 1024px) { .ol-hero__title { font-size: 4.5rem; } }

.ol-hero__lead {
  margin-top: 1.75rem;
  max-width: 36rem;
  font-size: 1rem;
  line-height: 1.65;
  color: rgba(255,255,255,.7);
}
@media (min-width: 768px) { .ol-hero__lead { font-size: 1.125rem; } }

.ol-hero__actions {
  margin-top: 2.25rem;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
@media (min-width: 640px) { .ol-hero__actions { flex-direction: row; align-items: center; } }

.ol-hero__line {
  pointer-events: none;
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, color-mix(in oklab, var(--ol-accent) 70%, transparent), transparent);
}

/* ============================ BOTÕES ============================ */
.ol-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  border-radius: 0.125rem;
  padding: 1rem 1.75rem;
  font-size: 0.875rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  transition: background-color .2s, filter .2s, transform .2s;
  cursor: pointer;
  border: 0;
  font-family: inherit;
  text-align: center;
}
.ol-btn--accent {
  background: var(--ol-accent);
  color: var(--ol-accent-fg);
  box-shadow: 0 20px 60px -20px rgba(232,163,90,.6);
}
.ol-btn--accent:hover { filter: brightness(1.05); }
.ol-btn--accent .ol-arrow { transition: transform .2s; }
.ol-btn--accent:hover .ol-arrow { transform: translateX(4px); }

.ol-btn--ghost {
  border: 1px solid rgba(255,255,255,.25);
  background: rgba(255,255,255,.05);
  color: #fff;
  gap: 0.5rem;
}
.ol-btn--ghost:hover { background: rgba(255,255,255,.1); }

.ol-btn--dark {
  background: var(--ol-fg);
  color: var(--ol-bg);
}
.ol-btn--dark:hover { background: var(--ol-graphite-soft); }

/* ============================ SEÇÕES ============================ */
.ol-section { border-bottom: 1px solid var(--ol-border); }
.ol-section__pad { padding-top: 5rem; padding-bottom: 5rem; }
@media (min-width: 768px) { .ol-section__pad { padding-top: 7rem; padding-bottom: 7rem; } }

.ol-grid12 { display: grid; gap: 2.5rem; }
@media (min-width: 768px) {
  .ol-grid12 { grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 3rem; }
  .ol-col4 { grid-column: span 4; }
  .ol-col5 { grid-column: span 5; }
  .ol-col7 { grid-column: span 7; }
  .ol-col8 { grid-column: span 8; }
}

.ol-pilares__title { margin-top: 1rem; }
.ol-pilares__text { font-size: 1rem; line-height: 1.6; color: var(--ol-muted-fg); }
@media (min-width: 768px) { .ol-pilares__text { font-size: 1.125rem; } }

.ol-nums {
  margin-top: 2.5rem;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.5rem;
}
@media (min-width: 768px) { .ol-nums { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.ol-num { border-left: 1px solid var(--ol-border); padding-left: 1rem; }
.ol-num__k { font-family: var(--ol-font-display); font-size: 1.5rem; font-weight: 500; color: var(--ol-fg); }
.ol-num__v { margin-top: 0.25rem; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.18em; color: var(--ol-muted-fg); }

/* ============================ GALERIAS ============================ */
.ol-galerias { background: var(--ol-secondary-60); }
.ol-galerias__head {
  margin-bottom: 3rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
@media (min-width: 768px) {
  .ol-galerias__head { flex-direction: row; align-items: flex-end; justify-content: space-between; }
}
.ol-galerias__note { max-width: 28rem; font-size: 0.875rem; color: var(--ol-muted-fg); }

/* Respiro entre galerias + filete de separação: sem isso as sete galerias
   viravam um bloco só e os títulos passavam despercebidos. */
.ol-galeria + .ol-galeria {
  margin-top: 5rem;
  padding-top: 3.5rem;
  border-top: 1px solid var(--ol-border);
}
@media (min-width: 768px) {
  .ol-galeria + .ol-galeria { margin-top: 6rem; padding-top: 4rem; }
}

.ol-galeria__head {
  margin-bottom: 1.75rem;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem;
}
.ol-galeria__title {
  font-family: var(--ol-font-display);
  font-size: 1.25rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--ol-fg);
}
@media (min-width: 768px) { .ol-galeria__title { font-size: 1.5rem; } }

/* Marcador laranja acima do título — mesma linguagem dos eyebrows da página */
.ol-galeria__title::before {
  content: "";
  display: block;
  width: 2.5rem;
  height: 2px;
  margin-bottom: 0.875rem;
  background: var(--ol-accent);
}
.ol-galeria__count { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.22em; color: var(--ol-muted-fg); white-space: nowrap; }

.ol-galeria__tools { display: flex; align-items: center; gap: 1rem; }
.ol-galeria__nav { display: flex; gap: 0.375rem; }
.ol-galeria__arrow {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  border: 1px solid var(--ol-border);
  border-radius: 9999px;
  background: transparent;
  color: var(--ol-fg);
  cursor: pointer;
  transition: background-color .2s, color .2s, border-color .2s, opacity .2s;
}
.ol-galeria__arrow:hover { background: var(--ol-accent); border-color: var(--ol-accent); color: var(--ol-accent-fg); }
.ol-galeria__arrow[disabled] { opacity: 0.3; cursor: default; }
.ol-galeria__arrow[disabled]:hover { background: transparent; border-color: var(--ol-border); color: var(--ol-fg); }
.ol-galeria__arrow svg { width: 1.125rem; height: 1.125rem; }

/* Carrossel horizontal: cada galeria ocupa UMA faixa, não importa quantas fotos
   tenha. É o que segura a altura da página com 54 imagens. Rola com dedo,
   trackpad, setas do teclado e os botões do cabeçalho. */
.ol-galeria__grid {
  --ol-gap: 0.75rem;
  --ol-item: 78%;
  display: flex;
  gap: var(--ol-gap);
  overflow-x: auto;
  /* `proximity` e não `mandatory`: a foto assenta alinhada ao parar o arrasto,
     mas o navegador não é obrigado a realinhar durante o carregamento. */
  scroll-snap-type: x proximity;
  scroll-behavior: smooth;
  scrollbar-width: none;
  -ms-overflow-style: none;
  overflow-anchor: none;
  /* Impede que o arrasto lateral no carrossel vire "voltar página" no celular */
  overscroll-behavior-x: contain;
  padding-bottom: 0.25rem;
}
.ol-galeria__grid::-webkit-scrollbar { display: none; }

@media (min-width: 640px) {
  .ol-galeria__grid { --ol-item: calc((100% - var(--ol-gap)) / 2); }
}
@media (min-width: 768px) {
  .ol-galeria__grid { --ol-gap: 1rem; --ol-item: calc((100% - 2 * var(--ol-gap)) / 3); }
}

/* Cada galeria declara a proporção das SUAS fotos, para não cortar.
   Sem isso tudo virava quadrado: as deitadas perdiam 35% da largura e as
   em pé perdiam 25% da altura. Ao trocar imagens, confira a proporção. */
/* Guardado como número (e não "4 / 3") para poder entrar em calc() no tile largo. */
.ol-galeria--r43   { --ol-tile-r: 1.3333; }   /* decorado, cobertura, tipo */
.ol-galeria--r32   { --ol-tile-r: 1.5; }      /* lazer, portaria e acessos */
.ol-galeria--r34   { --ol-tile-r: 0.75; }     /* fotos reais da obra (celular) */


.ol-tile {
  position: relative;
  overflow: hidden;
  background: var(--ol-muted);
  aspect-ratio: var(--ol-tile-r, 1);
  padding: 0;
  border: 0;
  cursor: pointer;
  display: block;
  flex: 0 0 auto;
  width: var(--ol-item);
  scroll-snap-align: start;
}

.ol-tile img {
  height: 100%;
  width: 100%;
  object-fit: cover;
  transition: transform .7s;
}
.ol-tile:hover img { transform: scale(1.04); }
.ol-tile__veil {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,.5), transparent 55%);
  opacity: 0;
  transition: opacity .2s;
}
.ol-tile:hover .ol-tile__veil { opacity: 1; }
.ol-tile__cap {
  position: absolute;
  bottom: 0.75rem;
  left: 0.75rem;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  color: #fff;
  opacity: 0;
  transition: opacity .2s;
}
.ol-tile:hover .ol-tile__cap { opacity: 1; }

/* Foto larga: vale 2 quadros na horizontal, mantendo a mesma altura dos vizinhos.
   Largura = 2 itens + 1 vão; a proporção acompanha, senão a foto cresceria na
   vertical e criaria um degrau na faixa. */
@media (min-width: 640px) {
  .ol-tile--wide {
    width: calc(var(--ol-item) * 2 + var(--ol-gap));
    aspect-ratio: calc(var(--ol-tile-r, 1) * 2.04);
  }
}
.ol-tile--wide img { object-position: center; }
/* Enquadramento puxado para cima — no pórtico o corte comia o topo da torre */
.ol-tile--top img { object-position: center 38%; }

/* Em celular e tablet não existe hover — sem isto a legenda nunca apareceria. */
@media (hover: none) {
  .ol-tile__veil,
  .ol-tile__cap { opacity: 1; }
}

/* Plantas: são documentos largos com cotas — precisam caber inteiras, nunca cortadas.
   Por isso `contain` sobre branco, proporção 4/3 e legenda sempre visível. */
.ol-galeria--plantas .ol-tile {
  aspect-ratio: 4 / 3;
  background: #fff;
  border: 1px solid var(--ol-border);
  padding-bottom: 2.25rem;
}
.ol-galeria--plantas .ol-tile img {
  object-fit: contain;
  padding: 0.75rem;
}
.ol-galeria--plantas .ol-tile:hover img { transform: none; }
.ol-galeria--plantas .ol-tile__veil { display: none; }
.ol-galeria--plantas .ol-tile__cap {
  opacity: 1;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 0.625rem 0.75rem;
  border-top: 1px solid var(--ol-border);
  background: var(--ol-bg);
  color: var(--ol-fg);
  /* 10px com espacejamento largo ficava no limite do legivel para uma
     informacao que decide a escolha (metragem e coluna). Sobe um ponto e
     aperta o espacejamento — mesma familia, mesmo caixa alta. */
  font-size: 11px;
  letter-spacing: 0.1em;
  text-align: center;
  transition: color .2s;
}
.ol-galeria--plantas .ol-tile:hover .ol-tile__cap { color: var(--ol-accent); }

/* ============================ TECNOLOGIA (fundo escuro) ============================ */
.ol-tech {
  border-top: 1px solid var(--ol-border);
  border-bottom: 1px solid var(--ol-border);
  background: var(--ol-fg);
  color: var(--ol-bg);
}
.ol-tech .ol-eyebrow { color: var(--ol-accent); }
.ol-tech .ol-h2 { color: var(--ol-bg); }
.ol-tech__lead { margin-top: 1.5rem; font-size: 0.875rem; line-height: 1.6; color: color-mix(in oklab, var(--ol-bg) 70%, transparent); }

.ol-tech__list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1px;
  overflow: hidden;
  border: 1px solid color-mix(in oklab, var(--ol-bg) 10%, transparent);
  background: color-mix(in oklab, var(--ol-bg) 10%, transparent);
}
@media (min-width: 640px) { .ol-tech__list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.ol-tech__item {
  display: flex;
  align-items: center;
  gap: 1rem;
  background: var(--ol-fg);
  padding: 1.5rem;
  transition: background-color .2s;
}
.ol-tech__item:hover { background: var(--ol-graphite-soft); }
.ol-tech__item svg { width: 1.5rem; height: 1.5rem; color: var(--ol-accent); stroke-width: 1.4; }

/* ============================ LOCALIZAÇÃO ============================ */
.ol-local__addr {
  margin-top: 1.5rem;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.875rem;
  color: var(--ol-muted-fg);
}
.ol-local__addr svg { color: var(--ol-accent); }
.ol-local__link {
  margin-top: 2rem;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  border-bottom: 1px solid var(--ol-fg);
  padding-bottom: 0.25rem;
  font-size: 0.875rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--ol-fg);
  transition: color .2s, border-color .2s;
}
.ol-local__link:hover { color: var(--ol-accent); border-color: var(--ol-accent); }

.ol-local__list > li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 0;
  border-top: 1px solid var(--ol-border);
}
.ol-local__list > li:first-child { border-top: 0; }
.ol-local__poi { display: flex; align-items: center; gap: 1rem; }
.ol-local__poi svg { width: 1.25rem; height: 1.25rem; color: var(--ol-graphite-soft); stroke-width: 1.4; }
.ol-local__poi span { font-size: 0.875rem; color: var(--ol-fg); }
@media (min-width: 768px) { .ol-local__poi span { font-size: 1rem; } }
.ol-local__time {
  font-family: var(--ol-font-display);
  font-size: 0.875rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--ol-fg);
  white-space: nowrap;
}

/* ============================ OBRAS ============================ */
.ol-obras { position: relative; overflow: hidden; }
.ol-obras__img { position: absolute; inset: 0; height: 100%; width: 100%; object-fit: cover; }
/* Véu mais forte à direita agora que o player ocupa esse lado */
.ol-obras__veil {
  position: absolute; inset: 0;
  background: linear-gradient(to right,
    var(--ol-bg) 0%,
    color-mix(in oklab, var(--ol-bg) 94%, transparent) 45%,
    color-mix(in oklab, var(--ol-bg) 78%, transparent) 100%);
}
.ol-obras__inner { position: relative; padding-top: 5rem; padding-bottom: 5rem; }
@media (min-width: 768px) { .ol-obras__inner { padding-top: 7rem; padding-bottom: 7rem; } }

.ol-obras__grid { display: grid; gap: 3rem; align-items: center; }
@media (min-width: 900px) {
  .ol-obras__grid { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 3.5rem; }
}
.ol-obras__box { max-width: 36rem; }

/* Player: pôster + botão; o vídeo só carrega quando a pessoa clica (preload="none") */
.ol-player {
  position: relative;
  overflow: hidden;
  border-radius: 0.125rem;
  background: var(--ol-fg);
  box-shadow: 0 30px 70px -30px rgba(0,0,0,.45);
}
.ol-player video {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  background: var(--ol-fg);
}
.ol-player__cover {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.875rem;
  border: 0;
  cursor: pointer;
  background: linear-gradient(to top, rgba(0,0,0,.65), rgba(0,0,0,.15));
  color: #fff;
  font-family: inherit;
  transition: opacity .25s;
}
.ol-player.is-playing .ol-player__cover { opacity: 0; pointer-events: none; }
.ol-player__play {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 4rem;
  height: 4rem;
  border-radius: 9999px;
  background: var(--ol-accent);
  color: var(--ol-accent-fg);
  box-shadow: 0 16px 40px -12px rgba(216,96,24,.7);
  transition: transform .2s;
}
.ol-player__play svg { width: 1.5rem; height: 1.5rem; margin-left: 3px; }
.ol-player__cover:hover .ol-player__play { transform: scale(1.06); }
.ol-player__label {
  font-size: 0.8125rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.2em;
}
.ol-player__time {
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  color: rgba(255,255,255,.6);
}
.ol-obras__lead { margin-top: 1.25rem; font-size: 1rem; color: var(--ol-muted-fg); }
.ol-obras__lead strong { font-weight: 500; color: var(--ol-fg); }
.ol-obras__checks { margin-top: 2rem; display: grid; gap: 1rem; font-size: 0.875rem; }
.ol-obras__checks li { display: flex; align-items: flex-start; gap: 0.75rem; line-height: 1.5; color: var(--ol-fg); }
.ol-obras__checks svg { margin-top: 0.25rem; color: var(--ol-accent); }

/* ============================ VISITA GUIADA (vídeo vertical) ============================ */
.ol-visita { background: var(--ol-secondary-60); }
.ol-visita__grid { display: grid; gap: 2.5rem; align-items: center; }
@media (min-width: 900px) {
  .ol-visita__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 360px); gap: 4rem; }
}
.ol-visita__text { margin-top: 1.5rem; font-size: 1rem; line-height: 1.6; color: var(--ol-muted-fg); max-width: 34rem; }
.ol-visita__cta { margin-top: 2rem; }

/* Vídeo de celular: 9/16. Fica limitado a 360px para não virar um poste. */
.ol-player--vertical { max-width: 360px; width: 100%; margin: 0 auto; }
.ol-player--vertical video { aspect-ratio: 9 / 16; }

/* ============================ POR QUE FALAR COM A ANA ============================ */
/* Paleta da própria LP: grafite escuro + laranja (mesma linguagem da seção Tecnologia) */
.ol-ana {
  border-top: 1px solid var(--ol-border);
  border-bottom: 1px solid var(--ol-border);
  background: var(--ol-fg);
  color: var(--ol-bg);
}
.ol-ana .ol-eyebrow { color: var(--ol-accent); }

.ol-ana__grid { display: grid; gap: 2.5rem; align-items: center; }
@media (min-width: 900px) {
  .ol-ana__grid { grid-template-columns: minmax(0, 380px) minmax(0, 1fr); gap: 3.5rem; }
}

/* A foto é 1024x1024. `width:100%` + `height:auto` mantém a proporção original
   sempre — sem aspect-ratio e sem object-fit, que já esticaram a imagem numa
   tira vertical. Nunca troque por object-fit: cover aqui. */
.ol-ana__figure { margin: 0; max-width: 380px; align-self: start; }
.ol-ana__figure img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: auto;
  border-radius: 0.125rem;
}
.ol-ana__card {
  margin-top: 1.25rem;
  padding-top: 1rem;
  border-top: 1px solid color-mix(in oklab, var(--ol-bg) 22%, transparent);
  display: grid;
  gap: 0.3125rem;
}
.ol-ana__nome {
  font-family: var(--ol-font-display);
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--ol-bg);
}
.ol-ana__papel {
  font-size: 0.6875rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--ol-accent);
}
.ol-ana__creci {
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: color-mix(in oklab, var(--ol-bg) 50%, transparent);
}

.ol-ana__title {
  margin-top: 0.875rem;
  font-size: 1.5rem;
  font-weight: 300;
  color: var(--ol-bg);
}
@media (min-width: 768px) { .ol-ana__title { font-size: 2.125rem; } }

.ol-ana__text {
  margin-top: 1.25rem;
  font-size: 0.9375rem;
  line-height: 1.6;
  color: color-mix(in oklab, var(--ol-bg) 72%, transparent);
}

.ol-ana__checks { margin-top: 2rem; display: grid; gap: 1rem; }
.ol-ana__checks li {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  line-height: 1.5;
  font-size: 0.9375rem;
  color: color-mix(in oklab, var(--ol-bg) 90%, transparent);
}
.ol-ana__checks svg { width: 1rem; height: 1rem; margin-top: 0.25rem; color: var(--ol-accent); stroke-width: 2.4; }

.ol-ana__cta { margin-top: 2rem; }

/* ============================ FAQ ============================ */
.ol-faq__head { margin-bottom: 3rem; max-width: 44rem; }

.ol-faq__list { border-top: 1px solid var(--ol-border); }

.ol-faq__item { border-bottom: 1px solid var(--ol-border); }

.ol-faq__q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding: 1.5rem 0;
  cursor: pointer;
  list-style: none;
  font-family: var(--ol-font-display);
  font-size: 1rem;
  font-weight: 500;
  color: var(--ol-fg);
  transition: color .2s;
}
.ol-faq__q::-webkit-details-marker { display: none; }
.ol-faq__q:hover { color: var(--ol-accent); }
@media (min-width: 768px) { .ol-faq__q { font-size: 1.125rem; } }

/* Sinal de + que vira − ao abrir */
.ol-faq__sign {
  position: relative;
  flex-shrink: 0;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 9999px;
  background: color-mix(in oklab, var(--ol-accent) 12%, transparent);
  transition: background-color .2s;
}
.ol-faq__sign::before,
.ol-faq__sign::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0.75rem;
  height: 2px;
  background: var(--ol-accent);
  transform: translate(-50%, -50%);
  transition: transform .2s, opacity .2s;
}
.ol-faq__sign::after { transform: translate(-50%, -50%) rotate(90deg); }
.ol-faq__item[open] .ol-faq__sign { background: var(--ol-accent); }
.ol-faq__item[open] .ol-faq__sign::before,
.ol-faq__item[open] .ol-faq__sign::after { background: var(--ol-bg); }
.ol-faq__item[open] .ol-faq__sign::after { transform: translate(-50%, -50%) rotate(0deg); opacity: 0; }

.ol-faq__a {
  padding: 0 4rem 1.75rem 0;
  animation: onlife-fade 220ms ease-out;
}
.ol-faq__a p {
  max-width: 52rem;
  font-size: 0.9375rem;
  line-height: 1.6;
  color: var(--ol-muted-fg);
}

.ol-faq__foot {
  margin-top: 2.5rem;
  font-size: 0.875rem;
  color: var(--ol-muted-fg);
}
.ol-faq__foot a {
  color: var(--ol-accent);
  border-bottom: 1px solid color-mix(in oklab, var(--ol-accent) 45%, transparent);
  padding-bottom: 1px;
}
.ol-faq__foot a:hover { border-bottom-color: var(--ol-accent); }

/* ============================ CONTATO ============================ */
.ol-contato {
  border-top: 1px solid var(--ol-border);
  border-bottom: 1px solid var(--ol-border);
  background: var(--ol-secondary-50);
}
.ol-contato__grid {
  display: grid;
  gap: 3rem;
  padding-top: 5rem;
  padding-bottom: 5rem;
}
@media (min-width: 768px) {
  .ol-contato__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); padding-top: 7rem; padding-bottom: 7rem; }
}
.ol-contato__text { margin-top: 1.5rem; font-size: 0.875rem; line-height: 1.6; color: var(--ol-muted-fg); }
.ol-contato__text strong { font-weight: 500; color: var(--ol-fg); }
.ol-contato__links { margin-top: 2rem; display: grid; gap: 0.75rem; font-size: 0.875rem; }
.ol-contato__links a,
.ol-contato__links div { display: flex; align-items: center; gap: 0.75rem; color: var(--ol-fg); transition: color .2s; }
.ol-contato__links a:hover { color: var(--ol-accent); }
.ol-contato__links svg { color: var(--ol-accent); }
.ol-contato__links div { color: var(--ol-muted-fg); }

.ol-form {
  border-radius: 0.125rem;
  border: 1px solid var(--ol-border);
  background: var(--ol-bg);
  padding: 1.5rem;
}
@media (min-width: 768px) { .ol-form { padding: 2.5rem; } }
.ol-form__tag {
  margin-bottom: 1.5rem;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  color: var(--ol-graphite-soft);
}
.ol-form__tag i { display: block; height: 1px; width: 2rem; background: var(--ol-accent); }
.ol-form__fields { display: grid; gap: 1rem; }
@media (min-width: 640px) {
  .ol-form__fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ol-form__full { grid-column: span 2; }
}
.ol-form label {
  margin-bottom: 0.5rem;
  display: block;
  font-size: 11px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  color: var(--ol-graphite-soft);
}
.ol-form input,
.ol-form select {
  width: 100%;
  border-radius: 0.125rem;
  border: 1px solid var(--ol-border);
  background: var(--ol-bg);
  padding: 0.75rem 1rem;
  font-size: 0.875rem;
  font-family: inherit;
  color: var(--ol-fg);
}
.ol-form input::placeholder { color: var(--ol-muted-fg); }
.ol-form input:focus,
.ol-form select:focus { outline: none; border-color: var(--ol-accent); }
.ol-form__submit { margin-top: 2rem; width: 100%; }
@media (min-width: 640px) { .ol-form__submit { width: auto; } }
/* Book liberado após o cadastro */
.ol-book {
  margin-top: 1.75rem;
  padding: 1.5rem;
  border: 1px solid color-mix(in oklab, var(--ol-accent) 35%, transparent);
  border-radius: 0.125rem;
  background: color-mix(in oklab, var(--ol-accent) 7%, transparent);
  animation: onlife-fade-up 400ms ease-out both;
}
.ol-book[hidden] { display: none; }
.ol-book__title {
  font-family: var(--ol-font-display);
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--ol-fg);
}
.ol-book__text { margin-top: 0.5rem; font-size: 0.875rem; line-height: 1.6; color: var(--ol-muted-fg); }
.ol-book__cta { margin-top: 1.25rem; }

.ol-form__legal {
  margin-top: 1rem;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  color: var(--ol-muted-fg);
}

/* ============================ REALIZAÇÃO ============================ */
.ol-realiza__pad { padding-top: 4rem; padding-bottom: 4rem; }
@media (min-width: 768px) { .ol-realiza__pad { padding-top: 5rem; padding-bottom: 5rem; } }
.ol-realiza__grid { margin-top: 2rem; display: grid; gap: 2.5rem; }
@media (min-width: 768px) { .ol-realiza__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.ol-realiza__name {
  font-family: var(--ol-font-display);
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-size: 0.875rem;
  color: var(--ol-fg);
}
.ol-realiza__desc { margin-top: 0.75rem; font-size: 0.875rem; line-height: 1.6; color: var(--ol-muted-fg); }

/* ============================ FOOTER ============================ */
.ol-footer { background: var(--ol-fg); color: color-mix(in oklab, var(--ol-bg) 80%, transparent); }
.ol-footer__inner {
  display: grid;
  gap: 2.5rem;
  padding-top: 3.5rem;
  padding-bottom: 3.5rem;
}
@media (min-width: 768px) {
  .ol-footer__inner { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 3rem; }
}

.ol-footer__logo { height: 1.75rem; width: auto; margin-bottom: 1.75rem; }

.ol-footer__head {
  margin-bottom: 1.5rem;
  font-family: var(--ol-font-display);
  font-size: 0.6875rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  color: var(--ol-bg);
}

.ol-footer__text {
  font-size: 0.875rem;
  line-height: 1.6;
  color: color-mix(in oklab, var(--ol-bg) 72%, transparent);
}
.ol-footer__text + .ol-footer__text { margin-top: 0.75rem; }
.ol-footer__text strong { font-weight: 600; color: var(--ol-bg); }
.ol-footer__text--dim { font-size: 0.8125rem; color: color-mix(in oklab, var(--ol-bg) 50%, transparent); }

.ol-footer__list { display: grid; gap: 0.875rem; }
.ol-footer__list li {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  font-size: 0.875rem;
  color: color-mix(in oklab, var(--ol-bg) 82%, transparent);
}
.ol-footer__list svg { color: var(--ol-accent); }
.ol-footer__list a { color: inherit; transition: color .2s; }
.ol-footer__list a:hover { color: var(--ol-accent); }

.ol-footer__gac { height: 2.75rem; width: auto; margin-bottom: 1.25rem; }
.ol-footer__legal { border-top: 1px solid color-mix(in oklab, var(--ol-bg) 10%, transparent); }
.ol-footer__legal p {
  padding-top: 1rem;
  padding-bottom: 1rem;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  color: color-mix(in oklab, var(--ol-bg) 50%, transparent);
}

/* ============================ WHATSAPP FLUTUANTE ============================ */
.ol-wa {
  position: fixed;
  bottom: 1.25rem;
  right: 1.25rem;
  z-index: 30;
  display: flex;
  height: 3.5rem;
  width: 3.5rem;
  align-items: center;
  justify-content: center;
  border-radius: 9999px;
  background: #25D366;
  color: #fff;
  box-shadow: 0 16px 40px -8px rgba(37,211,102,.55);
  transition: transform .2s;
}
.ol-wa:hover { transform: scale(1.05); }
.ol-wa svg { width: 1.5rem; height: 1.5rem; }

/* ============================ LIGHTBOX ============================ */
.ol-lb {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: none;
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,.95);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
.ol-lb.is-open { display: flex; animation: onlife-fade 220ms ease-out; }

.ol-lb__btn {
  position: absolute;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 9999px;
  border: 1px solid rgba(255,255,255,.15);
  background: rgba(255,255,255,.05);
  color: rgba(255,255,255,.8);
  cursor: pointer;
  transition: background-color .2s, color .2s;
}
.ol-lb__btn:hover { background: rgba(255,255,255,.15); color: #fff; }
.ol-lb__close { top: 1rem; right: 1rem; height: 2.75rem; width: 2.75rem; border-color: rgba(255,255,255,.2); }
.ol-lb__prev, .ol-lb__next { height: 3rem; width: 3rem; }
.ol-lb__prev { left: 1rem; }
.ol-lb__next { right: 1rem; }
@media (min-width: 768px) { .ol-lb__prev { left: 2rem; } .ol-lb__next { right: 2rem; } }
.ol-lb__btn svg { width: 1.5rem; height: 1.5rem; }
.ol-lb__close svg { width: 1.25rem; height: 1.25rem; }

.ol-lb__fig {
  display: flex;
  height: 100%;
  width: 100%;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 4rem 1rem;
}
@media (min-width: 768px) { .ol-lb__fig { padding-left: 4rem; padding-right: 4rem; } }
.ol-lb__fig img {
  max-height: 85vh;
  max-width: 100%;
  object-fit: contain;
}
.ol-lb__cap {
  margin-top: 1rem;
  text-align: center;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.24em;
  color: rgba(255,255,255,.6);
}
.ol-lb__n { margin-left: 0.75rem; color: rgba(255,255,255,.4); }

body.ol-lb-open { overflow: hidden; }

/* ============================ HERO — DESTAQUES COMERCIAIS ============================ */
/* Responde de imediato: quanto custa, como pago e quando entro no imóvel.
   Mesma linguagem do ol-hero__place (filete laranja à esquerda). */
.ol-hero__facts {
  margin-top: 3rem;
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem 2.5rem;
  max-width: 44rem;
}
.ol-hero__fact { border-left: 2px solid var(--ol-accent); padding-left: 0.875rem; }
.ol-hero__fact-k {
  display: block;
  font-family: var(--ol-font-display);
  font-size: 1.0625rem;
  font-weight: 500;
  line-height: 1.2;
  color: #fff;
}
@media (min-width: 768px) { .ol-hero__fact-k { font-size: 1.1875rem; } }
.ol-hero__fact-v {
  display: block;
  margin-top: 0.3125rem;
  font-size: 0.625rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: color-mix(in oklab, var(--ol-accent) 88%, white);
}

/* ============================ MOMENTO DE COMPRAR ============================ */
.ol-momento__text { font-size: 1rem; line-height: 1.6; color: var(--ol-muted-fg); }
@media (min-width: 768px) { .ol-momento__text { font-size: 1.125rem; } }

/* Grade de 1px sobre papel — mesmo desenho da lista de tecnologia, invertido para claro. */
.ol-momento__cards {
  margin-top: 3rem;
  display: grid;
  grid-template-columns: 1fr;
  gap: 1px;
  overflow: hidden;
  border: 1px solid var(--ol-border);
  border-radius: 0.125rem;
  background: var(--ol-border);
}
@media (min-width: 640px) { .ol-momento__cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 900px) { .ol-momento__cards { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.ol-momento__card {
  display: flex;
  align-items: center;
  gap: 0.875rem;
  background: var(--ol-bg);
  padding: 1.5rem;
  transition: background-color .2s;
}
.ol-momento__card:hover { background: var(--ol-secondary-60); }
.ol-momento__card svg { width: 1.25rem; height: 1.25rem; color: var(--ol-accent); stroke-width: 2.2; }
.ol-momento__card span {
  font-size: 0.9375rem;
  font-weight: 500;
  color: var(--ol-fg);
}

/* ============================ TECNOLOGIA — RÓTULO + BENEFÍCIO ============================ */
.ol-tech__item { align-items: flex-start; }
.ol-tech__item svg { margin-top: 0.125rem; }
.ol-tech__text { display: flex; flex-direction: column; gap: 0.3125rem; }
.ol-tech__label {
  font-size: 0.875rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: color-mix(in oklab, var(--ol-bg) 90%, transparent);
}
.ol-tech__benefit {
  font-size: 0.8125rem;
  line-height: 1.55;
  color: color-mix(in oklab, var(--ol-bg) 58%, transparent);
}

/* ============================ MORAR / INVESTIR + ESTUDO ============================ */
.ol-invest { background: var(--ol-secondary-60); }
.ol-invest__lead { font-size: 1rem; line-height: 1.6; color: var(--ol-muted-fg); }
@media (min-width: 768px) { .ol-invest__lead { font-size: 1.125rem; } }

.ol-invest__perfis { margin-top: 2rem; display: grid; gap: 1.5rem; }
@media (min-width: 640px) { .ol-invest__perfis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.ol-invest__perfil { border-left: 2px solid var(--ol-accent); padding-left: 1.25rem; }
.ol-invest__perfil h3 {
  font-family: var(--ol-font-display);
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--ol-accent);
}
.ol-invest__perfil p { margin-top: 0.625rem; font-size: 0.9375rem; line-height: 1.65; color: var(--ol-muted-fg); }

.ol-invest__link {
  margin-top: 2rem;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  border-bottom: 1px solid var(--ol-fg);
  padding-bottom: 0.25rem;
  font-size: 0.875rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--ol-fg);
  transition: color .2s, border-color .2s;
}
.ol-invest__link:hover { color: var(--ol-accent); border-color: var(--ol-accent); }

/* Callout do estudo: caixa com fundo/borda âmbar suave — mesma receita do ol-book. */
.ol-estudo {
  margin-top: 3rem;
  display: grid;
  gap: 1.5rem;
  align-items: center;
  padding: 2rem;
  border: 1px solid color-mix(in oklab, var(--ol-accent) 35%, transparent);
  border-radius: 0.125rem;
  background: color-mix(in oklab, var(--ol-accent) 7%, transparent);
  scroll-margin-top: 5rem;
}
@media (min-width: 768px) {
  .ol-estudo { grid-template-columns: minmax(0, 1fr) auto; gap: 2.5rem; padding: 2.5rem 3rem; }
}
.ol-estudo__title {
  margin-top: 0.75rem;
  font-family: var(--ol-font-display);
  font-size: 1.375rem;
  font-weight: 500;
  line-height: 1.2;
  color: var(--ol-fg);
}
@media (min-width: 768px) { .ol-estudo__title { font-size: 1.625rem; } }
.ol-estudo__text { margin-top: 0.875rem; font-size: 0.9375rem; line-height: 1.6; color: var(--ol-muted-fg); max-width: 42rem; }
.ol-estudo__cta { width: 100%; }
@media (min-width: 768px) { .ol-estudo__cta { width: auto; white-space: nowrap; } }

/* ============================ CONHEÇA ANTES DE DECIDIR ============================ */
.ol-conheca__text { font-size: 1rem; line-height: 1.6; color: var(--ol-muted-fg); }
@media (min-width: 768px) { .ol-conheca__text { font-size: 1.125rem; } }
.ol-conheca__checks { margin-top: 2rem; display: grid; gap: 1rem; }
.ol-conheca__checks li {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  line-height: 1.5;
  font-size: 1rem;
  color: var(--ol-fg);
}
.ol-conheca__checks svg { margin-top: 0.25rem; color: var(--ol-accent); stroke-width: 2.4; }
.ol-conheca__note { margin-top: 1.5rem; font-size: 0.9375rem; line-height: 1.6; color: var(--ol-muted-fg); }
.ol-conheca__mob {
  margin-top: 1.25rem;
  padding-left: 1.25rem;
  border-left: 2px solid color-mix(in oklab, var(--ol-accent) 45%, transparent);
  font-size: 0.875rem;
  line-height: 1.6;
  color: var(--ol-muted-fg);
}

/* ============================ CONTATO — LISTA DE BENEFÍCIOS ============================ */
.ol-contato__list { margin-top: 2rem; display: grid; gap: 1rem; }
.ol-contato__list li {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  line-height: 1.5;
  font-size: 0.9375rem;
  color: var(--ol-fg);
}
.ol-contato__list svg { margin-top: 0.25rem; color: var(--ol-accent); stroke-width: 2.4; }

/* ============================ ANIMAÇÕES ============================ */
@keyframes onlife-fade-up {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes onlife-fade {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes onlife-zoom {
  from { transform: scale(1.08); }
  to { transform: scale(1); }
}

@media (prefers-reduced-motion: reduce) {
  .onlife *, .onlife *::before, .onlife *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}


/* ======================================================================
   HERÓI EM DUAS COLUNAS + FORMULÁRIO DA PRIMEIRA DOBRA
   ----------------------------------------------------------------------
   Antes o único formulário era o do rodapé e todo CTA acima levava ao
   WhatsApp: a visitante saía da página antes de virar lead. O formulário
   curto (nome + WhatsApp) passa a existir já na primeira dobra.

   No celular a ordem é texto → formulário → botões, porque o formulário
   precisa vir logo depois do preço. No desktop ele vai para a coluna da
   direita e os botões voltam para baixo do texto.
   ====================================================================== */
.ol-hero__cols { display: grid; gap: 1.5rem; width: 100%; }

/* No celular a ordem do HTML colocaria os botoes antes do formulario. O
   formulario precisa vir logo depois do preco — e o que a primeira dobra
   tem de mais importante —, entao a ordem visual e reescrita aqui. */
@media (max-width: 1023px) {
  .ol-hero__anim    { order: 1; }
  .ol-herof         { order: 2; }
  .ol-hero__actions { order: 3; margin-top: 0; }
  /* 8rem de topo empurravam o formulario para fora da tela. O cabecalho
     fixo tem ~64px; 6rem ja da folga. */
  .ol-hero__inner   { padding-top: 6rem; }
}

@media (min-width: 1024px) {
  .ol-hero__cols {
    grid-template-columns: minmax(0, 1.15fr) minmax(340px, 0.85fr);
    align-items: end;
    column-gap: 3.5rem;
  }
  .ol-hero__anim    { grid-column: 1; grid-row: 1; }
  .ol-hero__actions { grid-column: 1; grid-row: 2; }
  .ol-herof         { grid-column: 2; grid-row: 1 / span 2; align-self: end; }
}

/* O herói tem `overflow:hidden` para segurar o zoom do vídeo. Com o
   formulário dentro, o conteúdo pode passar de 100svh no celular — o
   padding de baixo garante respiro em vez de corte rente. */
@media (max-width: 1023px) {
  .ol-hero__inner { padding-bottom: 3rem; }
}

.ol-herof { width: 100%; }
.ol-herof__card {
  background: rgba(12, 12, 12, .62);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, .16);
  border-radius: 0.125rem;
  padding: 1.5rem;
}
@media (min-width: 768px) { .ol-herof__card { padding: 1.75rem; } }

.ol-herof__eyebrow {
  display: flex; align-items: center; gap: 0.5rem;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.28em;
  color: var(--ol-accent);
  margin: 0 0 0.75rem;
}
/* Prefixado com .onlife de proposito: o reset `.onlife h2 { margin: 0 }` tem
   especificidade maior e comeria a margem de baixo deste titulo. */
.onlife .ol-herof__title {
  font-family: var(--ol-font-display);
  font-size: 1.25rem;
  line-height: 1.25;
  font-weight: 400;
  color: #fff;
  margin: 0 0 1.25rem;
}
.ol-herof__fields { display: grid; gap: 0.875rem; }
.ol-herof__fields label {
  display: block;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  color: rgba(255,255,255,.66);
  margin-bottom: 0.375rem;
}
.ol-herof__fields input {
  width: 100%;
  background: rgba(255,255,255,.07);
  border: 1px solid rgba(255,255,255,.22);
  border-radius: 0.125rem;
  padding: 0.8125rem 0.875rem;
  color: #fff;
  font-family: inherit;
  font-size: 1rem; /* 16px: abaixo disso o iOS dá zoom ao focar o campo */
}
.ol-herof__fields input::placeholder { color: rgba(255,255,255,.4); }
.ol-herof__fields input:focus {
  outline: none;
  border-color: var(--ol-accent);
  background: rgba(255,255,255,.1);
}
.ol-herof__submit { width: 100%; margin-top: 1.125rem; }
.ol-herof__legal {
  font-size: 11px;
  line-height: 1.5;
  color: rgba(255,255,255,.55);
  margin: 0.75rem 0 0;
  text-align: center;
}
.ol-herof__ok {
  margin-top: 1.125rem;
  border-top: 1px solid rgba(255,255,255,.16);
  padding-top: 1.125rem;
}
.ol-herof__ok-title {
  font-size: 0.875rem;
  color: #fff;
  margin: 0 0 0.75rem;
}
.ol-herof__ok-cta { width: 100%; }

/* ======================================================================
   OBRA: status e vídeo dentro da seção de fotos reais
   ----------------------------------------------------------------------
   A seção "Obras avançadas" foi absorvida aqui — dizia a mesma coisa que
   "A obra hoje", logo acima. Este bloco é o que sobrou dela.
   ====================================================================== */
.ol-obrastat {
  display: grid;
  gap: 2rem;
  margin-bottom: 3rem;
  padding-bottom: 2.5rem;
  border-bottom: 1px solid var(--ol-border);
}
@media (min-width: 900px) {
  .ol-obrastat { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; column-gap: 3rem; }
}
.ol-obrastat__lead {
  font-size: 1.0625rem;
  line-height: 1.6;
  color: var(--ol-fg);
  margin: 0 0 1.25rem;
}
.ol-obrastat__checks { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.625rem; }
.ol-obrastat__checks li {
  display: flex;
  align-items: flex-start;
  gap: 0.625rem;
  font-size: 0.9375rem;
  line-height: 1.5;
  color: var(--ol-fg);
}
.ol-obrastat__checks svg { flex: 0 0 auto; width: 18px; height: 18px; color: var(--ol-accent); margin-top: 2px; }

/* ======================================================================
   LOCALIZAÇÃO: mapa ao lado da lista de tempos
   ====================================================================== */
.ol-local__right { display: grid; gap: 1.5rem; }
.ol-local__map {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  border: 1px solid var(--ol-border);
  border-radius: 0.125rem;
  overflow: hidden;
  background: var(--ol-bg);
}
.ol-local__map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; }

/* CTA da seção de visita */
.ol-conheca__cta { margin-top: 1.75rem; }
/* ============================================================================
   SYMPHONY — Marquês de Abrantes, 55 · Flamengo, Rio de Janeiro
   Wellness, Lifestyle + Residences · Realização BTG Pactual e New View
   Porte fiel do projeto React/Tailwind (Lovable) para CSS puro.
   Design system: madeira/nogueira escura + dourado + creme. Tema música/harmonia.
   Tudo escopado em .symphony (application.css usa require_tree).
   ========================================================================== */

.symphony {
  /* --- Paleta do book Symphony: madeira #2E1E12 + dourado #C9A227 + creme #F5EFE4 --- */
  --sy-wood-deep: #241711;
  --sy-wood: #2e1e12;
  --sy-wood-soft: #3d2817;
  --sy-cream: #f5efe4;
  --sy-cream-deep: #efe6d6;
  --sy-card: #fbf6ec;
  --sy-ink: #1c140d;
  --sy-gold: #c9a227;
  --sy-gold-2: #d8b44a;
  --sy-gold-soft: #e6cf8f;

  --sy-max: 72rem;
  --sy-pad: 1.5rem;
  --sy-ease: cubic-bezier(0.22, 1, 0.36, 1);

  --sy-font-serif: "Cormorant Garamond", Georgia, "Times New Roman", serif;
  --sy-font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
  --sy-font-label: "Jost", ui-sans-serif, system-ui, sans-serif;

  min-height: 100vh;
  background-color: var(--sy-cream);
  color: var(--sy-ink);
  font-family: var(--sy-font-sans);
  -webkit-font-smoothing: antialiased;
  line-height: 1.5;
  overflow-x: hidden;
}

@media (min-width: 768px) {
  .symphony { --sy-pad: 2rem; }
}

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

.symphony h1,
.symphony h2,
.symphony h3,
.symphony blockquote {
  font-family: var(--sy-font-serif);
  font-weight: 300;
  letter-spacing: -0.01em;
  margin: 0;
  line-height: 1.12;
}

/* Rótulos em caixa-alta usam Jost (igual ao Lovable) */
.sy-label,
.sy-hero__eyebrow,
.sy-stats dd,
.sy-tipo__area,
.sy-oport__label,
.sy-oport__meta,
.sy-ficha__k,
.sy-ana__sign,
.sy-video__cap,
.sy-loc__cap,
.sy-btn { font-family: var(--sy-font-label); }
:where(.symphony) p { margin: 0; }
:where(.symphony) ul { margin: 0; padding: 0; list-style: none; }
:where(.symphony a) { color: inherit; text-decoration: none; }

/* Texto só para buscador e leitor de tela. Usado no H1 do hero, que na tela
   mostra apenas a marca SYMPHONY. `display:none` NÃO serve aqui: o leitor de
   tela pula e o Google desconsidera — o texto precisa continuar no fluxo,
   apenas recortado a 1px. */
.sy-sr {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.symphony img,
.symphony video { display: block; max-width: 100%; }
/* Zera a margem padrão que o navegador dá em <figure> (40px laterais + 16px embaixo).
   Sem isso, todo card de foto e a imagem do casarão ficam estreitos e desalinhados.
   :where() tem especificidade ZERO — assim regras específicas (ex.: .sy-casarao__img
   margin-top) continuam valendo, em vez de serem atropeladas pelo reset. */
.symphony :where(figure) { margin: 0; }

/* ---------- Helpers ---------- */
.sy-wrap { max-width: var(--sy-max); margin-inline: auto; }
.sy-section { padding-block: 7rem; padding-inline: var(--sy-pad); }
@media (min-width: 640px) { .sy-section { padding-block: 9rem; } }
.sy-bg-cream { background: var(--sy-cream); }
.sy-bg-cream-deep { background: var(--sy-cream-deep); }
.sy-bg-wood { background: var(--sy-wood); }
.sy-bg-wood-grad { background: linear-gradient(160deg, var(--sy-wood) 0%, var(--sy-wood-deep) 100%); }

.sy-serif { font-family: var(--sy-font-serif); }
.sy-gold { color: var(--sy-gold); }
.sy-em { font-style: italic; color: var(--sy-gold); }

/* Rótulos em caixa-alta espaçada */
.sy-label {
  display: inline-flex;
  align-items: center;
  gap: 0.9rem;
  font-size: 0.6875rem;
  font-weight: 400;
  letter-spacing: 0.34em;
  text-transform: uppercase;
  color: var(--sy-gold);
}
.sy-label--onwood { color: var(--sy-gold-2); }

.sy-hairline {
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--sy-gold), transparent);
  border: 0;
}

/* ---------- Barras do logo (equalizador) ---------- */
.sy-bars { display: inline-flex; align-items: flex-end; gap: 3px; height: 1.5rem; }
.sy-bars span {
  width: 2px;
  background: var(--sy-gold);
  border-radius: 9999px;
  height: 40%;
}
.sy-bars span:nth-child(1) { height: 55%; }
.sy-bars span:nth-child(2) { height: 90%; }
.sy-bars span:nth-child(3) { height: 35%; }
.sy-bars span:nth-child(4) { height: 100%; }
.sy-bars span:nth-child(5) { height: 60%; }
.sy-bars span:nth-child(6) { height: 80%; }
.sy-bars span:nth-child(7) { height: 45%; }
.sy-bars span:nth-child(8) { height: 95%; }
.sy-bars span:nth-child(9) { height: 50%; }
.sy-bars--animated span { animation: sy-dance 0.8s ease-in-out infinite alternate; }
.sy-bars--animated span:nth-child(2) { animation-delay: 0.12s; }
.sy-bars--animated span:nth-child(3) { animation-delay: 0.24s; }
.sy-bars--animated span:nth-child(4) { animation-delay: 0.36s; }
.sy-bars--animated span:nth-child(5) { animation-delay: 0.1s; }
.sy-bars--animated span:nth-child(6) { animation-delay: 0.3s; }
.sy-bars--animated span:nth-child(7) { animation-delay: 0.18s; }
.sy-bars--animated span:nth-child(8) { animation-delay: 0.05s; }
.sy-bars--animated span:nth-child(9) { animation-delay: 0.26s; }
@keyframes sy-dance { from { transform: scaleY(0.3); } to { transform: scaleY(1); } }
@media (prefers-reduced-motion: reduce) {
  .sy-bars--animated span { animation: none; }
}

/* ---------- Botões / CTAs ---------- */
.sy-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  padding: 0.95rem 2rem;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  cursor: pointer;
  transition: transform 0.3s var(--sy-ease), background 0.3s, color 0.3s, box-shadow 0.3s;
  border: 1px solid transparent;
}
.sy-btn--gold {
  background: linear-gradient(120deg, var(--sy-gold-2), var(--sy-gold));
  color: var(--sy-wood-deep);
  box-shadow: 0 10px 30px -12px rgba(201, 162, 39, 0.6);
}
.sy-btn--gold:hover { transform: translateY(-2px); box-shadow: 0 16px 36px -12px rgba(201, 162, 39, 0.7); }
.sy-btn--outline-gold { border-color: rgba(216, 180, 74, 0.55); color: var(--sy-gold-2); }
.sy-btn--outline-gold:hover { background: rgba(216, 180, 74, 0.1); }
.sy-btn--outline-ink { border-color: rgba(46, 30, 18, 0.35); color: var(--sy-wood); }
.sy-btn--outline-ink:hover { background: rgba(46, 30, 18, 0.06); }

/* O WhatsApp flutuante do Symphony saiu daqui em 09/08/2026: agora vem do
   rodapé compartilhado (`.rlp-wa`, em rodape_lp.css), igual em todas as LPs.
   Ele tem rótulo escrito "Falar com a Ana", que converte melhor que um ícone
   solto. Estas regras foram apagadas, e não só desligadas, porque o CSS é um
   bundle global: regra morta aqui continuaria pesando em todas as páginas. */

/* ---------- Reveal on scroll ---------- */
.sy-reveal { opacity: 0; transform: translateY(26px); transition: opacity 0.9s var(--sy-ease), transform 0.9s var(--sy-ease); }
.sy-reveal.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .sy-reveal { opacity: 1; transform: none; }
}

/* ============================================================================
   1 — HERO
   ========================================================================== */
.sy-hero {
  position: relative;
  min-height: 100svh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding-inline: var(--sy-pad);
  background: var(--sy-wood-deep);
  overflow: hidden;
}
.sy-hero__bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.55;
}
.sy-hero__veil {
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at center, transparent 5%, rgba(36, 23, 17, 0.82) 78%);
}
.sy-hero__veil-b {
  position: absolute;
  inset-inline: 0;
  bottom: 0;
  height: 14rem;
  background: linear-gradient(to top, var(--sy-wood-deep), transparent);
}
.sy-hero__inner { position: relative; z-index: 2; display: flex; flex-direction: column; align-items: center; padding-block: 7rem; }

.sy-wordmark { display: inline-flex; flex-direction: column; align-items: center; gap: 0.8rem; }
.sy-wordmark__bars { height: 1.6rem; }
.sy-wordmark__name {
  font-family: var(--sy-font-serif);
  font-weight: 400;
  letter-spacing: 0.42em;
  color: var(--sy-gold-2);
  line-height: 1;
}
.sy-wordmark--lg .sy-wordmark__name { font-size: clamp(2.6rem, 8vw, 5.5rem); padding-left: 0.42em; }
.sy-wordmark--sm .sy-wordmark__name { font-size: 1.6rem; padding-left: 0.42em; }

.sy-hero__tagline { margin-top: 2.4rem; font-family: var(--sy-font-serif); font-weight: 300; font-size: clamp(1.6rem, 4vw, 2.9rem); color: var(--sy-cream); }
.sy-hero__sub { margin-top: 1.2rem; max-width: 34rem; font-size: 1rem; line-height: 1.7; color: rgba(245, 239, 228, 0.72); }
.sy-hero__rule { width: 10rem; margin-block: 2.2rem; }
.sy-hero__harmonia { font-family: var(--sy-font-serif); font-style: italic; font-weight: 300; font-size: 1.25rem; color: var(--sy-gold-2); }
.sy-hero__eyebrow { margin-top: 1.5rem; max-width: 28rem; font-size: 0.72rem; letter-spacing: 0.22em; text-transform: uppercase; color: rgba(245, 239, 228, 0.6); line-height: 1.8; }
.sy-hero__cta { margin-top: 3.5rem; display: flex; flex-direction: column; gap: 1rem; align-items: stretch; }
@media (min-width: 640px) { .sy-hero__cta { flex-direction: row; } }
.sy-hero__scroll { position: absolute; bottom: 2rem; left: 50%; transform: translateX(-50%); z-index: 2; opacity: 0.7; }

/* ============================================================================
   Cabeçalhos de seção
   ========================================================================== */
.sy-head { }
.sy-head--center { text-align: center; }
.sy-head--center .sy-label { justify-content: center; }
.sy-title { margin-top: 2rem; font-size: clamp(2rem, 5vw, 3.5rem); color: var(--sy-wood-deep); }
.sy-bg-wood .sy-title, .sy-bg-wood-grad .sy-title { color: var(--sy-cream); }
.sy-lead { margin-top: 2rem; max-width: 42rem; font-size: 1rem; line-height: 1.75; color: rgba(28, 20, 13, 0.7); }
.sy-bg-wood-grad .sy-lead { color: rgba(245, 239, 228, 0.78); }

/* ============================================================================
   2 — VÍDEO
   ========================================================================== */
.sy-video { max-width: 68rem; margin-inline: auto; }
.sy-video__frame { position: relative; aspect-ratio: 16 / 9; overflow: hidden; background: #000; box-shadow: 0 40px 80px -40px rgba(36, 23, 17, 0.5); }
.sy-video__frame video { width: 100%; height: 100%; object-fit: cover; }
.sy-video__cap { margin-top: 1rem; font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(28, 20, 13, 0.5); text-align: center; }

/* ============================================================================
   3 — CONCEITO
   ========================================================================== */
.sy-concept { max-width: 48rem; margin-inline: auto; text-align: center; }
.sy-concept__bars { margin-top: 2.5rem; display: flex; justify-content: center; }
.sy-concept__bars .sy-bars { height: 2.5rem; }
.symphony .sy-concept__quote { margin-top: 3.5rem; font-family: var(--sy-font-serif); font-style: italic; font-weight: 300; font-size: clamp(1.4rem, 3vw, 2rem); color: var(--sy-wood); }
.sy-concept__divider { margin-top: 3.5rem; display: flex; align-items: center; justify-content: center; gap: 1.5rem; }
.sy-concept__divider .sy-hairline { width: 4rem; }
@media (min-width: 640px) { .sy-concept__divider .sy-hairline { width: 8rem; } }
.sy-concept__divider .sy-bars { height: 3rem; }

/* ============================================================================
   4 — EMPREENDIMENTO
   ========================================================================== */
.sy-split { display: grid; gap: 4rem; align-items: center; }
@media (min-width: 900px) { .sy-split { grid-template-columns: 1fr 1fr; } }
.sy-fig { position: relative; }
.sy-fig img { width: 100%; aspect-ratio: 4 / 3; height: auto; object-fit: cover; box-shadow: 0 40px 80px -40px rgba(36, 23, 17, 0.45); }
.sy-fig__corner { position: absolute; bottom: -1rem; left: -1rem; width: 6rem; height: 6rem; border-bottom: 1px solid rgba(216, 180, 74, 0.6); border-left: 1px solid rgba(216, 180, 74, 0.6); }
@media (max-width: 640px) { .sy-fig__corner { display: none; } }

.sy-stats { margin-top: 3rem; display: grid; grid-template-columns: 1fr 1fr; gap: 2.5rem 2rem; border-top: 1px solid rgba(46, 30, 18, 0.15); padding-top: 2.5rem; }
@media (min-width: 640px) { .sy-stats { grid-template-columns: repeat(3, 1fr); } }
.sy-stats dt { font-family: var(--sy-font-serif); font-size: 1.85rem; color: var(--sy-gold); }
.sy-stats dd { margin-top: 0.5rem; font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(46, 30, 18, 0.55); }

/* ============================================================================
   5 — CASARÃO
   ========================================================================== */
.sy-casarao__title { max-width: 40rem; }
.sy-casarao__img { margin-top: 5rem; }
.sy-casarao__img img { width: 100%; height: 42vh; object-fit: cover; box-shadow: 0 40px 80px -40px rgba(0, 0, 0, 0.6); }
@media (min-width: 640px) { .sy-casarao__img img { height: 68vh; } }
/* Prefixado com .symphony p/ vencer o reset ".symphony blockquote{margin:0}" (senão o respiro some e o texto cola na foto). */
.symphony .sy-casarao__quote { margin-top: 4rem; text-align: center; font-family: var(--sy-font-serif); font-style: italic; font-weight: 300; font-size: clamp(1.5rem, 3.4vw, 2.4rem); color: var(--sy-gold-2); }
.symphony .sy-casarao__cols { margin-top: 4rem; }
.sy-casarao__cols { margin-top: 3.5rem; display: grid; gap: 2.5rem; }
@media (min-width: 768px) { .sy-casarao__cols { grid-template-columns: 1fr 1fr; } }
.sy-casarao__cols p { font-size: 1.05rem; line-height: 1.75; color: rgba(245, 239, 228, 0.75); }

/* ============================================================================
   Cards de foto (lazer / wellness / decorados)
   ========================================================================== */
.sy-grid { margin-top: 3.5rem; display: grid; gap: 2rem; grid-template-columns: 1fr; }
@media (min-width: 640px) { .sy-grid--2 { grid-template-columns: 1fr 1fr; } }
@media (min-width: 640px) { .sy-grid--3 { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .sy-grid--3 { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 640px) { .sy-grid--4 { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .sy-grid--4 { grid-template-columns: repeat(4, 1fr); } }

.sy-card { display: flex; flex-direction: column; height: 100%; background: var(--sy-card); }
/* toda foto ampliável mostra a lupa, esteja em galeria ou avulsa */
.symphony [data-lightbox] { cursor: zoom-in; }
.sy-card__img { position: relative; overflow: hidden; height: 18rem; cursor: zoom-in; }
@media (min-width: 640px) { .sy-card__img { height: 20rem; } }
.sy-card__img img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.4s var(--sy-ease); }
.sy-card:hover .sy-card__img img { transform: scale(1.05); }
.sy-card__body { flex: 1; display: flex; flex-direction: column; gap: 0.5rem; padding: 1.5rem; }
.sy-card__body .sy-bars { height: 0.85rem; }
.sy-card__title { margin-top: 0.25rem; font-family: var(--sy-font-serif); font-size: 1.5rem; color: var(--sy-wood-deep); }
.sy-card__legend { font-size: 0.9rem; color: rgba(28, 20, 13, 0.6); }
.sy-card--wide { grid-column: 1 / -1; }
@media (min-width: 1000px) { .sy-card--wide { grid-column: span 2; } }

/* ============================================================================
   8 — Infraestrutura
   ========================================================================== */
.sy-infra { margin-top: 2rem; display: grid; gap: 1px; background: rgba(46, 30, 18, 0.1); grid-template-columns: 1fr; }
@media (min-width: 640px) { .sy-infra { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .sy-infra { grid-template-columns: repeat(3, 1fr); } }
.sy-infra li { display: flex; align-items: center; gap: 1rem; background: var(--sy-cream); padding: 1.5rem; font-size: 0.9rem; color: rgba(28, 20, 13, 0.75); }
.sy-infra li .sy-bars { height: 0.85rem; flex-shrink: 0; }

/* ============================================================================
   9 — Tipologias
   ========================================================================== */
.sy-tipos { margin-top: 4rem; display: grid; gap: 1px; background: rgba(46, 30, 18, 0.1); grid-template-columns: 1fr; }
@media (min-width: 640px) { .sy-tipos { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .sy-tipos { grid-template-columns: repeat(4, 1fr); } }
.sy-tipo { display: flex; flex-direction: column; justify-content: space-between; background: var(--sy-cream); padding: 2.5rem; transition: background 0.5s; }
.sy-tipo:hover { background: var(--sy-card); }
.sy-tipo .sy-bars { height: 1.5rem; }
.sy-tipo__name { margin-top: 2rem; font-family: var(--sy-font-serif); font-size: 1.85rem; color: var(--sy-wood-deep); }
.sy-tipo__area { margin-top: 1rem; font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--sy-gold); }
.sy-tipo__note { margin-top: 2.5rem; font-size: 0.9rem; line-height: 1.7; color: rgba(28, 20, 13, 0.6); }

/* ============================================================================
   10 — Oportunidades
   ========================================================================== */
.sy-oport { margin-top: 3.5rem; display: grid; gap: 1px; background: rgba(46, 30, 18, 0.1); grid-template-columns: 1fr; }
@media (min-width: 1000px) { .sy-oport { grid-template-columns: repeat(3, 1fr); } }
.sy-oport__card { display: flex; flex-direction: column; justify-content: space-between; background: var(--sy-card); padding: 2.5rem; }
.sy-oport__card .sy-bars { height: 1.25rem; }
.sy-oport__tipo { margin-top: 2rem; font-family: var(--sy-font-serif); font-size: 1.85rem; color: var(--sy-wood-deep); }
.sy-oport__meta { margin-top: 1rem; font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(46, 30, 18, 0.55); }
.sy-oport__foot { margin-top: 2.5rem; border-top: 1px solid rgba(46, 30, 18, 0.15); padding-top: 2rem; }
.sy-oport__label { font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--sy-gold); }
.sy-oport__val { margin-top: 0.75rem; font-family: var(--sy-font-serif); font-size: 2.25rem; color: var(--sy-wood-deep); }
.sy-oport__fine { margin-top: 0.75rem; font-size: 0.75rem; line-height: 1.6; color: rgba(28, 20, 13, 0.55); }

/* ============================================================================
   11 — Localização (empilhado)
   ========================================================================== */
.sy-loc__callout { margin-top: 2rem; max-width: 42rem; border-left: 3px solid var(--sy-gold); background: var(--sy-card); padding: 1.5rem 1.75rem; }
.sy-loc__callout strong { display: block; font-family: var(--sy-font-serif); font-weight: 500; font-size: 1.25rem; color: var(--sy-wood-deep); }
.sy-loc__callout span { display: block; margin-top: 0.5rem; font-size: 0.9rem; line-height: 1.6; color: rgba(28, 20, 13, 0.65); }
.sy-loc__fig { margin-top: 3rem; position: relative; aspect-ratio: 16 / 9; overflow: hidden; }
.sy-loc__fig img { width: 100%; height: 100%; object-fit: cover; box-shadow: 0 40px 80px -40px rgba(36, 23, 17, 0.45); }
.sy-loc__cap { position: absolute; bottom: 0; left: 0; background: rgba(36, 23, 17, 0.9); color: rgba(245, 239, 228, 0.85); padding: 0.9rem 1.5rem; font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; }
.sy-loc__list { margin-top: 3rem; display: grid; gap: 1px; background: rgba(46, 30, 18, 0.1); grid-template-columns: 1fr; }
@media (min-width: 640px) { .sy-loc__list { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .sy-loc__list { grid-template-columns: repeat(3, 1fr); } }
.sy-loc__list li { background: var(--sy-cream); padding: 1.1rem 1.25rem; font-size: 0.9rem; color: rgba(28, 20, 13, 0.75); }
.sy-loc__list li.is-hl { display: flex; align-items: center; gap: 0.75rem; font-weight: 700; color: var(--sy-gold); }
.sy-loc__list li.is-hl .sy-bars { height: 0.8rem; flex-shrink: 0; }

/* ============================================================================
   12 — Ficha técnica
   ========================================================================== */
.sy-ficha { max-width: 56rem; margin-inline: auto; }
.sy-ficha__list { margin-top: 3rem; border-top: 1px solid rgba(46, 30, 18, 0.15); border-bottom: 1px solid rgba(46, 30, 18, 0.15); }
.sy-ficha__row { display: grid; gap: 0.5rem; padding-block: 1.5rem; border-top: 1px solid rgba(46, 30, 18, 0.12); }
.sy-ficha__row:first-child { border-top: 0; }
@media (min-width: 640px) { .sy-ficha__row { grid-template-columns: 180px 1fr; gap: 2rem; } }
.sy-ficha__k { font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(46, 30, 18, 0.5); }
.sy-ficha__v { color: rgba(28, 20, 13, 0.8); }

/* ============================================================================
   13 — Por que falar com a Ana
   ========================================================================== */
.sy-ana { display: grid; gap: 3.5rem; align-items: center; }
@media (min-width: 900px) { .sy-ana { grid-template-columns: 0.85fr 1fr; } }
.sy-ana__fig { position: relative; }
.sy-ana__fig img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 1rem; box-shadow: 0 40px 80px -40px rgba(36, 23, 17, 0.45); }
.sy-ana__reasons { margin-top: 2.5rem; display: flex; flex-direction: column; gap: 1.5rem; }
.sy-ana__reasons li { display: flex; gap: 1rem; }
.sy-ana__dot { margin-top: 0.55rem; width: 0.6rem; height: 0.6rem; flex-shrink: 0; border-radius: 50%; background: linear-gradient(120deg, var(--sy-gold-2), var(--sy-gold)); }
.sy-ana__reasons p { line-height: 1.7; color: rgba(28, 20, 13, 0.75); }
.sy-ana__sign { margin-top: 2.5rem; font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(46, 30, 18, 0.55); }

/* ============================================================================
   FAQ
   ========================================================================== */
.sy-faq { max-width: 48rem; margin-inline: auto; }
.sy-faq__list { margin-top: 3.5rem; }
.sy-faq__item { border-bottom: 1px solid rgba(36, 23, 17, 0.12); }
.sy-faq__q {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding: 1.35rem 0;
  background: none;
  border: 0;
  cursor: pointer;
  text-align: left;
  font-family: var(--sy-font-serif);
  font-size: 1.1rem;
  color: var(--sy-wood-deep);
}
@media (min-width: 640px) { .sy-faq__q { font-size: 1.25rem; } }
.sy-faq__q svg { width: 1.1rem; height: 1.1rem; stroke: var(--sy-gold); stroke-width: 2; fill: none; flex-shrink: 0; transition: transform 0.35s var(--sy-ease); }
.sy-faq__item.is-open .sy-faq__q svg { transform: rotate(180deg); }
.sy-faq__a { overflow: hidden; max-height: 0; transition: max-height 0.4s var(--sy-ease); }
.sy-faq__a > div { padding-bottom: 1.35rem; font-size: 1rem; line-height: 1.7; color: rgba(28, 20, 13, 0.75); }
.sy-faq__cta { margin-top: 3rem; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem; text-align: center; }
@media (min-width: 640px) { .sy-faq__cta { flex-direction: row; } }
.sy-faq__cta span { font-size: 0.8rem; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(28, 20, 13, 0.6); }

/* ============================================================================
   14 — CTA final + formulário
   ========================================================================== */
.sy-final { display: grid; gap: 4rem; align-items: center; max-width: 60rem; margin-inline: auto; }
@media (min-width: 900px) { .sy-final { grid-template-columns: 1fr 1fr; } }
.sy-form { width: 100%; max-width: 26rem; background: var(--sy-card); padding: 2rem; box-shadow: 0 40px 80px -50px rgba(36, 23, 17, 0.4); }
.sy-form h3 { font-family: var(--sy-font-serif); font-size: 1.5rem; color: var(--sy-wood-deep); }
.sy-form label { display: block; margin-top: 1rem; font-size: 0.72rem; letter-spacing: 0.14em; text-transform: uppercase; color: rgba(46, 30, 18, 0.6); }
.sy-form input, .sy-form textarea {
  width: 100%;
  margin-top: 0.4rem;
  padding: 0.75rem 0.9rem;
  border: 1px solid rgba(46, 30, 18, 0.2);
  background: #fff;
  font: inherit;
  color: var(--sy-ink);
  border-radius: 2px;
}
.sy-form input:focus, .sy-form textarea:focus { outline: 2px solid var(--sy-gold); border-color: transparent; }
.sy-form .sy-btn { width: 100%; margin-top: 1.5rem; }
.sy-form__fine { margin-top: 1rem; font-size: 0.72rem; color: rgba(28, 20, 13, 0.5); text-align: center; }

/* ============================================================================
   15 — Rodapé padrão (peça compartilhada `.rlp`)
   O rodapé próprio do Symphony foi trocado pelo de todas as LPs em 09/08/2026.
   Aqui ficam só as cores: a estrutura vive em rodape_lp.css e vale para as duas
   marcas. Trocar cor é seguro; mexer na estrutura afeta o site inteiro.
   ========================================================================== */
.symphony .rlp {
  --rlp-fundo: var(--sy-wood);
  --rlp-texto: rgba(245, 239, 228, 0.78);
  --rlp-claro: var(--sy-cream);
  --rlp-linha: rgba(245, 239, 228, 0.16);
  --rlp-fraco: rgba(245, 239, 228, 0.5);
}
/* O rótulo das colunas usa o dourado do Symphony, como era no rodapé antigo. */
.symphony .rlp__col h3 { color: var(--sy-gold-2); font-family: var(--sy-font-label); }
.symphony .rlp__links a:hover { color: var(--sy-gold-2); }
/* O Symphony não tem arquivo de logo próprio: o nome entra como texto. A serifa
   dourada mantém a cara da marca dentro da estrutura padrão. */
.symphony .rlp__nome {
  font-family: var(--sy-font-serif);
  font-weight: 400;
  letter-spacing: 0.3em;
  color: var(--sy-gold-2);
}

/* ============================================================================
   Lightbox
   ========================================================================== */
.sy-lightbox {
  position: fixed;
  inset: 0;
  z-index: 90;
  background: rgba(20, 12, 8, 0.92);
  display: none;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
}
.sy-lightbox.is-open { display: flex; }
.sy-lightbox img { max-width: 95vw; max-height: 84vh; object-fit: contain; box-shadow: 0 40px 100px -30px rgba(0, 0, 0, 0.8); }
.sy-lightbox__close { position: absolute; top: 1.25rem; right: 1.5rem; width: 2.75rem; height: 2.75rem; border-radius: 50%; background: rgba(245, 239, 228, 0.12); border: 0; color: var(--sy-cream); cursor: pointer; font-size: 1.5rem; line-height: 1; }
.sy-lightbox__close:hover { background: rgba(245, 239, 228, 0.22); }
/* Navegação da galeria ampliada (setas + legenda/contador) */
.sy-lightbox__nav { position: absolute; top: 50%; transform: translateY(-50%); width: 3rem; height: 3rem; border-radius: 50%; background: rgba(245, 239, 228, 0.12); border: 0; color: var(--sy-cream); cursor: pointer; font-size: 1.85rem; line-height: 1; display: flex; align-items: center; justify-content: center; transition: background .25s var(--sy-ease); }
.sy-lightbox__nav:hover { background: rgba(245, 239, 228, 0.24); }
.sy-lightbox__nav[hidden] { display: none; }
.sy-lightbox__nav--prev { left: max(0.6rem, 2vw); }
.sy-lightbox__nav--next { right: max(0.6rem, 2vw); }
.sy-lightbox__cap { position: absolute; left: 50%; bottom: 1.35rem; transform: translateX(-50%); margin: 0; max-width: min(86vw, 40rem); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; background: rgba(20, 12, 8, 0.55); color: var(--sy-cream); font-family: var(--sy-font-label); font-size: 0.72rem; letter-spacing: 0.14em; text-transform: uppercase; padding: 0.5rem 1.05rem; border-radius: 100px; }
.sy-lightbox__cap[hidden] { display: none; }
.sy-lightbox__cap b { color: var(--sy-gold); font-weight: 400; }
@media (max-width: 640px) {
  .sy-lightbox__nav { width: 2.6rem; height: 2.6rem; font-size: 1.5rem; }
  .sy-lightbox img { max-height: 76vh; }
}
/* Grupo Ana Cintra — home / landing
 * Design system: docs/apple-design-system.md (canvas branco, ink #080808,
 * acentos cromáticos como fills de card, Inter 400/500/600, radius 4/8px). */

:root {
  --ink: #080808;
  --ink-strong: #222222;
  --body: #363636;
  --body-mid: #5a5a5a;
  --mute: #898989;
  --canvas: #ffffff;
  --hairline: #d8d8d8;

  --accent-purple: #7a3dff;
  --accent-pink: #ed52cb;
  --accent-blue: #3b89ff;
  --accent-blue-info: #146ef5;
  --accent-orange: #ff6b00;
  --accent-green: #00d722;

  --rounded-sm: 4px;
  --rounded-md: 8px;

  --space-sm: 8px;
  --space-md: 12px;
  --space-lg: 16px;
  --space-xl: 20px;
  --space-2xl: 24px;
  --space-3xl: 32px;

  --shadow-layered: 0 84px 24px rgba(0, 0, 0, 0), 0 54px 22px rgba(0, 0, 0, 0.01),
    0 30px 18px rgba(0, 0, 0, 0.04), 0 13px 13px rgba(0, 0, 0, 0.08),
    0 3px 7px rgba(0, 0, 0, 0.09);

  --font-sans: "Inter", Arial, sans-serif;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--canvas);
  color: var(--body);
  font-family: var(--font-sans);
  font-size: 16px;
  line-height: 1.6;
  letter-spacing: -0.16px;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3 { color: var(--ink); margin: 0; }
p { margin: 0; }
img { display: block; max-width: 100%; }

.container {
  max-width: 1200px;
  margin: 0 auto;
  padding-left: var(--space-3xl);
  padding-right: var(--space-3xl);
}

/* ---- Typography roles ---- */

.eyebrow {
  font-size: 15px;
  font-weight: 500;
  line-height: 1.3;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--body-mid);
  margin-bottom: var(--space-lg);
}

.eyebrow--light { color: rgba(255, 255, 255, 0.7); }

.section-title {
  font-size: clamp(32px, 4.5vw, 44.8px);
  font-weight: 600;
  line-height: 1.04;
  letter-spacing: -0.4px;
  margin-bottom: var(--space-lg);
}

.section-lead {
  font-size: 18px;
  color: var(--body-mid);
  max-width: 640px;
  margin-bottom: calc(var(--space-3xl) + var(--space-lg));
}

/* ---- Buttons ---- */

.btn {
  display: inline-block;
  font-family: var(--font-sans);
  font-size: 16px;
  font-weight: 500;
  line-height: 25.6px;
  letter-spacing: -0.16px;
  padding: var(--space-md) var(--space-xl);
  border-radius: var(--rounded-sm);
  text-decoration: none;
  transition: opacity 120ms ease, background-color 120ms ease;
}

.btn--primary {
  background: var(--ink);
  color: #ffffff;
}

.btn--primary:hover { opacity: 0.85; }

.btn--secondary {
  background: var(--canvas);
  color: var(--ink);
  border: 1px solid var(--hairline);
}

.btn--secondary:hover { border-color: var(--ink); }

.btn--inverted {
  background: #ffffff;
  color: var(--ink);
}

.btn--inverted:hover { opacity: 0.9; }

.btn--lg { padding: var(--space-lg) var(--space-2xl); }

/* ---- Nav ---- */

.site-nav {
  position: sticky;
  top: 0;
  z-index: 50;
  background: var(--canvas);
  border-bottom: 1px solid var(--hairline);
}

.site-nav__inner {
  display: flex;
  align-items: center;
  gap: var(--space-3xl);
  padding-top: var(--space-lg);
  padding-bottom: var(--space-lg);
}

.site-nav__brand {
  font-size: 20px;
  font-weight: 400;
  color: var(--ink);
  text-decoration: none;
  white-space: nowrap;
}

.site-nav__brand strong { font-weight: 600; }

.site-nav__links {
  display: flex;
  gap: var(--space-2xl);
  margin-left: auto;
}

.site-nav__links a {
  font-size: 14px;
  font-weight: 500;
  color: var(--ink);
  text-decoration: none;
}

.site-nav__links a:hover { color: var(--body-mid); }

/* ---- Hero ---- */

.hero {
  position: relative;
  padding: calc(var(--space-3xl) * 4) 0 calc(var(--space-3xl) * 3.5);
  background-image:
    linear-gradient(180deg, rgba(8, 8, 8, 0.5) 0%, rgba(8, 8, 8, 0.66) 100%),
    url(/img/ilha-pura-aereo.jpg);
  background-size: cover;
  background-position: center 45%;
  background-repeat: no-repeat;
}

.hero .eyebrow { color: rgba(255, 255, 255, 0.82); }

.hero__title {
  color: #ffffff;
  font-size: clamp(44px, 7.5vw, 80px);
  font-weight: 600;
  line-height: 1.04;
  letter-spacing: -0.8px;
  max-width: 900px;
  text-shadow: 0 1px 30px rgba(0, 0, 0, 0.28);
}

.hero__lead {
  font-size: clamp(18px, 2.2vw, 22px);
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.9);
  max-width: 660px;
  margin-top: var(--space-2xl);
}

/* CTAs sobre a foto: primário fica ink; secundário vira contorno branco */
.hero .btn--secondary {
  background: transparent;
  color: #ffffff;
  border-color: rgba(255, 255, 255, 0.55);
}

.hero .btn--secondary:hover {
  border-color: #ffffff;
  background: rgba(255, 255, 255, 0.08);
}

.hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-lg);
  margin-top: var(--space-3xl);
}

.hero__reveal {
  opacity: 0;
  transform: translateY(14px);
  animation: hero-reveal 640ms cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

.hero__reveal:nth-child(2) { animation-delay: 90ms; }
.hero__reveal:nth-child(3) { animation-delay: 180ms; }
.hero__reveal:nth-child(4) { animation-delay: 270ms; }

@keyframes hero-reveal {
  to { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  .hero__reveal { animation: none; opacity: 1; transform: none; }
  html { scroll-behavior: auto; }
}

/* ---- Stats band ---- */

.stats {
  border-top: 1px solid var(--hairline);
  border-bottom: 1px solid var(--hairline);
  padding: var(--space-3xl) 0;
}

.stats__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-3xl);
}

.stats__item { display: flex; flex-direction: column; gap: 4px; }

.stats__value {
  font-size: 32px;
  font-weight: 600;
  line-height: 1.3;
  color: var(--ink);
}

.stats__label { font-size: 14px; color: var(--body-mid); }

/* ---- Empreendimentos ---- */

.devs { padding: calc(var(--space-3xl) * 2.5) 0; }

/* Lançamentos fora do Ilha Pura: segue a seção anterior, sem dobrar o respiro */
.devs--outros { padding-top: 0; }

.dev-card__media { display: block; }

.devs__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-3xl);
}

.dev-card {
  display: flex;
  flex-direction: column;
  background: var(--canvas);
  border: 1px solid var(--hairline);
  border-radius: var(--rounded-md);
  overflow: hidden;
  scroll-margin-top: 96px;
}

.dev-card--featured {
  grid-column: 1 / -1;
  box-shadow: var(--shadow-layered);
}

.dev-card__media img {
  width: 100%;
  aspect-ratio: 1024 / 424;
  object-fit: cover;
}

.dev-card__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
  padding: var(--space-3xl);
  flex: 1;
}

.dev-card__meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-md);
}

.badge {
  display: inline-block;
  font-size: 12.8px;
  font-weight: 550;
  line-height: 1.2;
  padding: 4px 8px;
  border-radius: var(--rounded-sm);
  color: #ffffff;
}

.badge--building { background: var(--accent-blue-info); }
.badge--ready { background: var(--accent-green); color: var(--ink); }

.dev-card__delivery {
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.6px;
  text-transform: uppercase;
  color: var(--mute);
}

.dev-card__name {
  font-size: 24px;
  font-weight: 500;
  line-height: 1.3;
}

.dev-card--featured .dev-card__name { font-size: 32px; }

.dev-card__desc { color: var(--body-mid); }

.dev-card__specs {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.dev-card__specs li {
  font-size: 14px;
  line-height: 1.6;
  color: var(--body);
  padding-left: var(--space-xl);
  position: relative;
}

.dev-card__specs li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 9px;
  width: 6px;
  height: 6px;
  border-radius: 9999px;
  background: var(--ink);
}

.dev-card__actions { margin-top: auto; padding-top: var(--space-sm); }

/* ---- Por que Ilha Pura ---- */

.why { padding: 0 0 calc(var(--space-3xl) * 2.5); }

.why__grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: var(--space-xl);
}

.why-card {
  border-radius: var(--rounded-md);
  padding: var(--space-3xl);
  color: #ffffff;
  grid-column: span 2;
}

.why-card:nth-child(4) { grid-column: 1 / span 3; }
.why-card:nth-child(5) { grid-column: 4 / span 3; }

.why-card h3 {
  color: inherit;
  font-size: 20px;
  font-weight: 500;
  line-height: 1.4;
  margin-bottom: var(--space-sm);
}

.why-card p { font-size: 14px; line-height: 1.6; opacity: 0.92; }

.why-card--blue { background: var(--accent-blue); }
.why-card--orange { background: var(--accent-orange); }
.why-card--green { background: var(--accent-green); color: var(--ink); }
.why-card--purple { background: var(--accent-purple); }
.why-card--pink { background: var(--accent-pink); }

/* ---- Sobre (banda escura) ---- */

.about {
  background: var(--ink);
  padding: calc(var(--space-3xl) * 2.5) 0;
}

.about__inner { max-width: 800px; }

.about__title {
  color: #ffffff;
  font-size: clamp(32px, 4.5vw, 44.8px);
  font-weight: 600;
  line-height: 1.04;
  letter-spacing: -0.4px;
  margin-bottom: var(--space-xl);
}

.about__text {
  color: rgba(255, 255, 255, 0.78);
  font-size: 18px;
  margin-bottom: var(--space-3xl);
}

/* ---- Footer ---- */

.site-footer {
  border-top: 1px solid var(--hairline);
  padding: var(--space-3xl) 0;
  font-size: 14px;
  color: var(--body-mid);
}

.site-footer__inner {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--space-3xl);
}

.site-footer__brand {
  font-size: 18px;
  color: var(--ink);
  margin-bottom: var(--space-sm);
}

.site-footer__brand strong { font-weight: 600; }

.site-footer__contact {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.site-footer__contact a {
  color: var(--ink);
  font-weight: 500;
  text-decoration: none;
}

.site-footer__contact a:hover { color: var(--body-mid); }

.site-footer__legal {
  margin-top: var(--space-3xl);
  padding-top: var(--space-xl);
  font-size: 12px;
  color: var(--mute);
}

/* ---- Responsivo ---- */

@media (max-width: 991px) {
  .devs__grid { grid-template-columns: 1fr; }
  .stats__grid { grid-template-columns: repeat(2, 1fr); }
  .why__grid { grid-template-columns: repeat(2, 1fr); }
  .why-card,
  .why-card:nth-child(4),
  .why-card:nth-child(5) { grid-column: span 1; }
  .why-card:nth-child(5) { grid-column: span 2; }
}

@media (max-width: 767px) {
  .container { padding-left: var(--space-xl); padding-right: var(--space-xl); }
  .site-nav__links { display: none; }
  .site-nav__cta { margin-left: auto; }
  .hero { padding: calc(var(--space-3xl) * 1.5) 0 calc(var(--space-3xl) * 1.5); }
  .why__grid { grid-template-columns: 1fr; }
  .why-card:nth-child(5) { grid-column: span 1; }
  .dev-card__body { padding: var(--space-2xl); }
  .site-footer__inner { flex-direction: column; }
}
/* ============================================================================
   ASTRA — Ilha Pura · Barra da Tijuca, RJ
   Design system do empreendimento: papel branco/off-white, tinta teal-petróleo
   #265560 (cor da marca e do lobby), madeira quente e verde das plantas como
   apoio. Tipografia fina e geométrica (Jost display + Inter corpo), muito
   respiro — minimalista, alto padrão, celeste (Astra = estrelas; blocos
   Luna, Lyra, Selene, Gaia). Tudo escopado em .astra (application.css usa
   require_tree, então o namespace é obrigatório).
   ========================================================================== */

.astra {
  --as-paper: #FCFCFA;
  --as-surface: #F4F4EF;
  --as-surface-2: #EFEFE9;
  --as-ink: #16242B;
  --as-graphite: #35474E;
  --as-graphite-soft: #4E5F66;
  --as-teal: #265560;
  --as-teal-deep: #17383F;
  --as-teal-soft: #3C737F;
  --as-wood: #B0824F;
  --as-muted-fg: #667279;
  --as-border: #E5E4DC;
  --as-border-soft: #EDECE5;

  --as-bg: var(--as-paper);
  --as-fg: var(--as-ink);

  --as-font-display: "Jost", ui-sans-serif, system-ui, sans-serif;
  --as-font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;

  --as-max: 80rem;
  --as-pad: 1.25rem;

  min-height: 100vh;
  background-color: var(--as-bg);
  color: var(--as-fg);
  font-family: var(--as-font-sans);
  -webkit-font-smoothing: antialiased;
  line-height: 1.5;
}

@media (min-width: 768px) { .astra { --as-pad: 2rem; } }

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

.astra h1,
.astra h2,
.astra h3,
.astra h4 {
  font-family: var(--as-font-display);
  letter-spacing: -0.01em;
  margin: 0;
  font-weight: 400;
}
/* :where() zera a especificidade: o reset continua como "padrão", mas qualquer
   regra de componente (.as-*__lead, .as-*__checks, etc.) que defina margin vence.
   Sem isso, este reset zerava os espaçamentos das listas/parágrafos. */
:where(.astra) p { margin: 0; }
:where(.astra) ul { margin: 0; padding: 0; list-style: none; }
.astra img,
.astra video { display: block; max-width: 100%; }
:where(.astra a) { color: inherit; text-decoration: none; }
.astra a { text-decoration: none; }

.astra svg {
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.6;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.as-shell {
  max-width: var(--as-max);
  margin: 0 auto;
  padding-left: var(--as-pad);
  padding-right: var(--as-pad);
}

/* Eyebrow em teal, fininho e espaçado */
.as-eyebrow {
  font-size: 0.6875rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.34em;
  color: var(--as-teal);
}
.as-eyebrow .as-slash { color: color-mix(in oklab, var(--as-teal) 45%, transparent); }

.as-h2 {
  margin-top: 1rem;
  font-size: 1.875rem;
  font-weight: 300;
  line-height: 1.12;
  letter-spacing: -0.015em;
  color: var(--as-fg);
}
.as-h2 em { font-style: normal; color: var(--as-teal); }
@media (min-width: 768px) { .as-h2 { font-size: 3rem; } }

/* ============================ NAV (barra clara) ============================ */
.as-nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 40;
  border-bottom: 1px solid transparent;
  background: transparent;
  transition: background-color .3s, border-color .3s, backdrop-filter .3s;
}
/* Fica opaca ao rolar (classe adicionada via JS) */
.as-nav.is-stuck {
  background: color-mix(in oklab, var(--as-paper) 85%, transparent);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom-color: var(--as-border);
}
.as-nav__inner {
  display: flex;
  height: 4.5rem;
  align-items: center;
  justify-content: space-between;
}
.as-nav__brand { display: flex; align-items: center; }
/* No topo (sobre o hero escuro) a logo é branca; ao grudar, vira teal */
.as-nav__brand img { height: 1.5rem; width: auto; transition: opacity .3s; }
.as-nav__brand .as-logo-dark { display: none; }
.as-nav.is-stuck .as-nav__brand .as-logo-light { display: none; }
.as-nav.is-stuck .as-nav__brand .as-logo-dark { display: block; }

.as-nav__links {
  display: none;
  align-items: center;
  gap: 2rem;
  font-size: 0.8125rem;
  letter-spacing: 0.02em;
  color: rgba(255,255,255,.85);
  transition: color .3s;
}
.as-nav.is-stuck .as-nav__links { color: var(--as-graphite-soft); }
.as-nav__links a { transition: color .2s; }
.as-nav__links a:hover { color: var(--as-teal-soft); }
.as-nav.is-stuck .as-nav__links a:hover { color: var(--as-teal); }
@media (min-width: 900px) { .as-nav__links { display: flex; } }

.as-nav__cta {
  display: none;
  align-items: center;
  gap: 0.5rem;
  border: 1px solid rgba(255,255,255,.4);
  border-radius: 999px;
  padding: 0.5rem 1.125rem;
  font-size: 0.6875rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: #fff;
  transition: background-color .2s, color .2s, border-color .2s;
}
.as-nav__cta:hover { background: #fff; color: var(--as-teal); border-color: #fff; }
.as-nav.is-stuck .as-nav__cta { border-color: var(--as-teal); color: var(--as-teal); }
.as-nav.is-stuck .as-nav__cta:hover { background: var(--as-teal); color: #fff; }
@media (min-width: 640px) { .as-nav__cta { display: inline-flex; } }

/* ============================ HERO ============================ */
.as-hero {
  position: relative;
  min-height: 100svh;
  width: 100%;
  overflow: hidden;
  background: var(--as-teal-deep);
}
.as-hero__media {
  position: absolute;
  inset: 0;
  height: 100%;
  width: 100%;
  object-fit: cover;
  animation: astra-zoom 1800ms ease-out both;
}
.as-hero__scrim {
  position: absolute; inset: 0;
  background: linear-gradient(to bottom, rgba(10,28,33,.55), rgba(10,28,33,.30) 45%, rgba(10,28,33,.85));
}
.as-hero__scrim--side {
  position: absolute; inset: 0;
  background: linear-gradient(to right, rgba(10,28,33,.5), transparent 60%);
}
.as-hero__inner {
  position: relative;
  z-index: 10;
  display: flex;
  min-height: 100svh;
  flex-direction: column;
  justify-content: flex-end;
  padding-top: 9rem;
  padding-bottom: 4rem;
}
@media (min-width: 768px) { .as-hero__inner { padding-bottom: 6rem; } }

.as-hero__anim { animation: astra-fade-up 900ms ease-out both; }

.as-hero__place {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 1.5rem;
  border-left: 2px solid var(--as-teal-soft);
  padding-left: 0.75rem;
  font-size: 11px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.32em;
  color: rgba(255,255,255,.85);
}
.as-hero__place .as-sep { color: rgba(255,255,255,.4); }

.as-hero__title {
  max-width: 60rem;
  font-family: var(--as-font-display);
  font-size: 2.375rem;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: -0.015em;
  color: #fff;
}
.as-hero__title em { font-style: normal; font-weight: 400; color: #fff; }
@media (min-width: 768px) { .as-hero__title { font-size: 3.5rem; } }
@media (min-width: 1024px) { .as-hero__title { font-size: 4.25rem; } }

.as-hero__lead {
  margin-top: 1.75rem;
  max-width: 38rem;
  font-size: 1rem;
  line-height: 1.6;
  color: rgba(255,255,255,.82);
}
@media (min-width: 768px) { .as-hero__lead { font-size: 1.125rem; } }

/* Destaques comerciais do hero */
.as-hero__facts {
  margin-top: 3rem;
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem 2.5rem;
  max-width: 46rem;
}
.as-hero__fact { border-left: 1px solid rgba(255,255,255,.28); padding-left: 1rem; }
.as-hero__fact-k {
  display: block;
  font-family: var(--as-font-display);
  font-size: 1.125rem;
  font-weight: 400;
  line-height: 1.2;
  color: #fff;
}
.as-hero__fact-v {
  display: block;
  margin-top: 0.3125rem;
  font-size: 0.625rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: rgba(255,255,255,.6);
}

.as-hero__actions {
  margin-top: 2.25rem;
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
}
@media (min-width: 640px) { .as-hero__actions { flex-direction: row; align-items: center; } }

/* ============================ BOTÕES ============================ */
.as-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  border-radius: 999px;
  padding: 0.9375rem 1.75rem;
  font-size: 0.75rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  transition: background-color .2s, color .2s, filter .2s, transform .2s, border-color .2s;
  cursor: pointer;
  border: 1px solid transparent;
  font-family: inherit;
  text-align: center;
}
.as-btn--accent {
  background: var(--as-teal);
  color: #fff;
  box-shadow: 0 18px 50px -18px rgba(38,85,96,.7);
}
.as-btn--accent:hover { background: var(--as-teal-deep); }
.as-btn--accent .as-arrow { transition: transform .2s; }
.as-btn--accent:hover .as-arrow { transform: translateX(4px); }

.as-btn--ghost {
  border-color: rgba(255,255,255,.4);
  background: rgba(255,255,255,.06);
  color: #fff;
  gap: 0.5rem;
}
.as-btn--ghost:hover { background: rgba(255,255,255,.14); }

.as-btn--outline {
  border-color: var(--as-teal);
  color: var(--as-teal);
  background: transparent;
}
.as-btn--outline:hover { background: var(--as-teal); color: #fff; }

/* ============================ SEÇÕES ============================ */
.as-section { border-bottom: 1px solid var(--as-border); }
.as-section__pad { padding-top: 5.5rem; padding-bottom: 5.5rem; }
@media (min-width: 768px) { .as-section__pad { padding-top: 7.5rem; padding-bottom: 7.5rem; } }

.as-grid12 { display: grid; gap: 2.5rem; }
@media (min-width: 768px) {
  .as-grid12 { grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 3rem; }
  .as-col4 { grid-column: span 4; }
  .as-col5 { grid-column: span 5; }
  .as-col6 { grid-column: span 6; }
  .as-col7 { grid-column: span 7; }
  .as-col8 { grid-column: span 8; }
}

/* ============================ CONCEITO / PILARES ============================ */
.as-pilares__text { margin-top: 0.5rem; font-size: 1rem; line-height: 1.6; color: var(--as-muted-fg); }
@media (min-width: 768px) { .as-pilares__text { font-size: 1.125rem; } }
.as-pilares__text + .as-pilares__text { margin-top: 1.25rem; }

.as-nums {
  margin-top: 2.5rem;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.5rem;
}
@media (min-width: 768px) { .as-nums { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.as-num { border-left: 1px solid var(--as-border); padding-left: 1rem; }
.as-num__k { font-family: var(--as-font-display); font-size: 1.5rem; font-weight: 400; color: var(--as-fg); }
.as-num__v { margin-top: 0.375rem; font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.18em; color: var(--as-muted-fg); }

/* ============================ GALERIAS ============================ */
.as-galerias { background: var(--as-surface); }
.as-galerias__head {
  margin-bottom: 3rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
@media (min-width: 768px) {
  .as-galerias__head { flex-direction: row; align-items: flex-end; justify-content: space-between; }
}
.as-galerias__note { max-width: 28rem; font-size: 0.875rem; line-height: 1.6; color: var(--as-muted-fg); }

.as-galeria + .as-galeria {
  margin-top: 5rem;
  padding-top: 3.5rem;
  border-top: 1px solid var(--as-border);
}
@media (min-width: 768px) {
  .as-galeria + .as-galeria { margin-top: 6rem; padding-top: 4rem; }
}

.as-galeria__head {
  margin-bottom: 1.75rem;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem;
}
.as-galeria__title {
  font-family: var(--as-font-display);
  font-size: 1.25rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--as-fg);
}
@media (min-width: 768px) { .as-galeria__title { font-size: 1.5rem; } }
.as-galeria__title::before {
  content: "";
  display: block;
  width: 2.5rem;
  height: 2px;
  margin-bottom: 0.875rem;
  background: var(--as-teal);
}
.as-galeria__count { font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.22em; color: var(--as-muted-fg); white-space: nowrap; }

.as-galeria__nav { display: flex; gap: 0.375rem; }
.as-galeria__arrow {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  border: 1px solid var(--as-border);
  border-radius: 9999px;
  background: var(--as-bg);
  color: var(--as-fg);
  cursor: pointer;
  transition: background-color .2s, color .2s, border-color .2s, opacity .2s;
}
.as-galeria__arrow:hover { background: var(--as-teal); border-color: var(--as-teal); color: #fff; }
.as-galeria__arrow[disabled] { opacity: 0.3; cursor: default; }
.as-galeria__arrow[disabled]:hover { background: var(--as-bg); border-color: var(--as-border); color: var(--as-fg); }
.as-galeria__arrow svg { width: 1.125rem; height: 1.125rem; }

.as-galeria__grid {
  --as-gap: 0.75rem;
  --as-item: 78%;
  display: flex;
  gap: var(--as-gap);
  overflow-x: auto;
  scroll-snap-type: x proximity;
  scroll-behavior: smooth;
  scrollbar-width: none;
  -ms-overflow-style: none;
  overflow-anchor: none;
  overscroll-behavior-x: contain;
  padding-bottom: 0.25rem;
}
.as-galeria__grid::-webkit-scrollbar { display: none; }
@media (min-width: 640px) {
  .as-galeria__grid { --as-item: calc((100% - var(--as-gap)) / 2); }
}
@media (min-width: 768px) {
  .as-galeria__grid { --as-gap: 1rem; --as-item: calc((100% - 2 * var(--as-gap)) / 3); }
}

.as-galeria--r43 { --as-tile-r: 1.3333; }
.as-galeria--r32 { --as-tile-r: 1.5; }
.as-galeria--r34 { --as-tile-r: 0.75; }

.as-tile {
  position: relative;
  overflow: hidden;
  background: var(--as-surface-2);
  aspect-ratio: var(--as-tile-r, 1);
  padding: 0;
  border: 0;
  cursor: pointer;
  display: block;
  flex: 0 0 auto;
  width: var(--as-item);
  scroll-snap-align: start;
}
.as-tile img {
  height: 100%;
  width: 100%;
  object-fit: cover;
  transition: transform .7s;
}
.as-tile:hover img { transform: scale(1.04); }
.as-tile__veil {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(10,28,33,.55), transparent 55%);
  opacity: 0;
  transition: opacity .2s;
}
.as-tile:hover .as-tile__veil { opacity: 1; }
.as-tile__cap {
  position: absolute;
  bottom: 0.875rem;
  left: 0.875rem;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: #fff;
  opacity: 0;
  transition: opacity .2s;
}
.as-tile:hover .as-tile__cap { opacity: 1; }

@media (min-width: 640px) {
  .as-tile--wide {
    width: calc(var(--as-item) * 2 + var(--as-gap));
    aspect-ratio: calc(var(--as-tile-r, 1) * 2.04);
  }
}
.as-tile--wide img { object-position: center; }

@media (hover: none) {
  .as-tile__veil,
  .as-tile__cap { opacity: 1; }
}

/* Plantas */
.as-galeria--plantas .as-tile {
  aspect-ratio: 4 / 3;
  background: #fff;
  border: 1px solid var(--as-border);
  padding-bottom: 2.25rem;
}
.as-galeria--plantas .as-tile img { object-fit: contain; padding: 0.75rem; }
.as-galeria--plantas .as-tile:hover img { transform: none; }
.as-galeria--plantas .as-tile__veil { display: none; }
.as-galeria--plantas .as-tile__cap {
  opacity: 1;
  left: 0; right: 0; bottom: 0;
  padding: 0.625rem 0.75rem;
  border-top: 1px solid var(--as-border);
  background: var(--as-bg);
  color: var(--as-fg);
  font-size: 10px;
  letter-spacing: 0.14em;
  text-align: center;
  transition: color .2s;
}
.as-galeria--plantas .as-tile:hover .as-tile__cap { color: var(--as-teal); }

/* ============================ DIFERENCIAIS DO APÊ (cards claros) ============================ */
.as-difs__text { margin-top: 0.5rem; font-size: 1rem; line-height: 1.6; color: var(--as-muted-fg); }
.as-difs__cards {
  margin-top: 3rem;
  display: grid;
  grid-template-columns: 1fr;
  gap: 1px;
  overflow: hidden;
  border: 1px solid var(--as-border);
  background: var(--as-border);
}
@media (min-width: 640px) { .as-difs__cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 900px) { .as-difs__cards { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.as-difs__card {
  display: flex;
  align-items: center;
  gap: 0.875rem;
  background: var(--as-bg);
  padding: 1.5rem;
  transition: background-color .2s;
}
.as-difs__card:hover { background: var(--as-surface); }
.as-difs__card svg { width: 1.25rem; height: 1.25rem; color: var(--as-teal); stroke-width: 1.6; }
.as-difs__card span { font-size: 0.9375rem; font-weight: 500; color: var(--as-fg); }

/* ============================ SEÇÃO ESCURA (teal) ============================ */
.as-dark {
  border-top: 1px solid var(--as-border);
  border-bottom: 1px solid var(--as-border);
  background: var(--as-teal-deep);
  color: #fff;
}
.as-dark .as-eyebrow { color: color-mix(in oklab, var(--as-teal-soft) 80%, white); }
.as-dark .as-h2 { color: #fff; }
.as-dark .as-h2 em { color: color-mix(in oklab, var(--as-teal-soft) 70%, white); }
.as-dark__lead { margin-top: 1.5rem; font-size: 0.9375rem; line-height: 1.6; color: rgba(255,255,255,.72); }

.as-dark__list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.14);
  background: rgba(255,255,255,.14);
}
@media (min-width: 640px) { .as-dark__list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.as-dark__item {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  background: var(--as-teal-deep);
  padding: 1.5rem;
  transition: background-color .2s;
}
.as-dark__item:hover { background: var(--as-teal); }
.as-dark__item svg { width: 1.5rem; height: 1.5rem; color: color-mix(in oklab, var(--as-teal-soft) 60%, white); stroke-width: 1.4; margin-top: 0.125rem; }
.as-dark__text { display: flex; flex-direction: column; gap: 0.3125rem; }
.as-dark__label { font-size: 0.875rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.12em; color: #fff; }
.as-dark__benefit { font-size: 0.8125rem; line-height: 1.55; color: rgba(255,255,255,.6); }

/* ============================ VISITA / PLAYER DE VÍDEO ============================ */
.as-visita { background: var(--as-surface); }
.as-visita__grid { display: grid; gap: 2.5rem; align-items: center; }
@media (min-width: 900px) {
  .as-visita__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 380px); gap: 4rem; }
}
.as-visita__text { margin-top: 1.5rem; font-size: 1rem; line-height: 1.6; color: var(--as-muted-fg); max-width: 34rem; }
.as-visita__cta { margin-top: 2rem; }

.as-player {
  position: relative;
  overflow: hidden;
  border-radius: 0.25rem;
  background: var(--as-teal-deep);
  box-shadow: 0 30px 70px -30px rgba(23,56,63,.5);
}
.as-player video { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; background: var(--as-teal-deep); }
.as-player__cover {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.875rem;
  border: 0;
  cursor: pointer;
  background: linear-gradient(to top, rgba(10,28,33,.6), rgba(10,28,33,.15));
  color: #fff;
  font-family: inherit;
  transition: opacity .25s;
}
.as-player.is-playing .as-player__cover { opacity: 0; pointer-events: none; }
.as-player__play {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 4rem;
  height: 4rem;
  border-radius: 9999px;
  background: #fff;
  color: var(--as-teal);
  box-shadow: 0 16px 40px -12px rgba(0,0,0,.5);
  transition: transform .2s;
}
.as-player__play svg { width: 1.5rem; height: 1.5rem; margin-left: 3px; }
.as-player__cover:hover .as-player__play { transform: scale(1.06); }
.as-player__label { font-size: 0.8125rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.2em; }
.as-player__time { font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.22em; color: rgba(255,255,255,.6); }

/* ============================ LOCALIZAÇÃO ============================ */
.as-local__addr {
  margin-top: 1.5rem;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.875rem;
  color: var(--as-muted-fg);
}
.as-local__addr svg { color: var(--as-teal); }
.as-local__link {
  margin-top: 2rem;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  border-bottom: 1px solid var(--as-fg);
  padding-bottom: 0.25rem;
  font-size: 0.8125rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--as-fg);
  transition: color .2s, border-color .2s;
}
.as-local__link:hover { color: var(--as-teal); border-color: var(--as-teal); }

.as-local__list > li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.9375rem 0;
  border-top: 1px solid var(--as-border);
}
.as-local__list > li:first-child { border-top: 0; }
.as-local__poi { display: flex; align-items: center; gap: 1rem; }
.as-local__poi svg { width: 1.125rem; height: 1.125rem; color: var(--as-graphite-soft); }
.as-local__poi span { font-size: 0.875rem; color: var(--as-fg); }
@media (min-width: 768px) { .as-local__poi span { font-size: 0.9375rem; } }
.as-local__time {
  font-family: var(--as-font-display);
  font-size: 0.875rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--as-fg);
  white-space: nowrap;
}

/* ============================ MORAR / INVESTIR + ESTUDO ============================ */
.as-invest { background: var(--as-surface); }
.as-invest__lead { font-size: 1rem; line-height: 1.6; color: var(--as-muted-fg); }
@media (min-width: 768px) { .as-invest__lead { font-size: 1.125rem; } }
.as-invest__perfis { margin-top: 2rem; display: grid; gap: 1.5rem; }
@media (min-width: 640px) { .as-invest__perfis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.as-invest__perfil { border-left: 2px solid var(--as-teal); padding-left: 1.25rem; }
.as-invest__perfil h3 {
  font-family: var(--as-font-display);
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--as-teal);
}
.as-invest__perfil p { margin-top: 0.625rem; font-size: 0.9375rem; line-height: 1.65; color: var(--as-muted-fg); }

.as-estudo {
  margin-top: 3rem;
  display: grid;
  gap: 1.5rem;
  align-items: center;
  padding: 2rem;
  border: 1px solid color-mix(in oklab, var(--as-teal) 30%, transparent);
  border-radius: 0.25rem;
  background: color-mix(in oklab, var(--as-teal) 6%, transparent);
  scroll-margin-top: 5rem;
}
@media (min-width: 768px) {
  .as-estudo { grid-template-columns: minmax(0, 1fr) auto; gap: 2.5rem; padding: 2.5rem 3rem; }
}
.as-estudo__title {
  margin-top: 0.75rem;
  font-family: var(--as-font-display);
  font-size: 1.375rem;
  font-weight: 400;
  line-height: 1.2;
  color: var(--as-fg);
}
@media (min-width: 768px) { .as-estudo__title { font-size: 1.625rem; } }
.as-estudo__text { margin-top: 0.875rem; font-size: 0.9375rem; line-height: 1.6; color: var(--as-muted-fg); max-width: 42rem; }
.as-estudo__cta { white-space: nowrap; }

/* ============================ SEÇÃO DA ANA ============================ */
.as-ana {
  border-top: 1px solid var(--as-border);
  border-bottom: 1px solid var(--as-border);
  background: var(--as-teal-deep);
  color: #fff;
}
.as-ana .as-eyebrow { color: color-mix(in oklab, var(--as-teal-soft) 80%, white); }
.as-ana__grid { display: grid; gap: 2.5rem; align-items: center; }
@media (min-width: 900px) {
  .as-ana__grid { grid-template-columns: minmax(0, 380px) minmax(0, 1fr); gap: 3.5rem; }
}
.as-ana__figure { margin: 0; max-width: 380px; align-self: start; }
.as-ana__figure img { display: block; width: 100%; height: auto; border-radius: 0.25rem; }
.as-ana__card {
  margin-top: 1.25rem;
  padding-top: 1rem;
  border-top: 1px solid rgba(255,255,255,.22);
  display: grid;
  gap: 0.3125rem;
}
.as-ana__nome { font-family: var(--as-font-display); font-size: 1.0625rem; font-weight: 500; color: #fff; }
.as-ana__papel { font-size: 0.6875rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.2em; color: color-mix(in oklab, var(--as-teal-soft) 70%, white); }
.as-ana__creci { font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.2em; color: rgba(255,255,255,.5); }
.as-ana__title { margin-top: 0.875rem; font-size: 1.5rem; font-weight: 300; color: #fff; }
.as-ana__title em { font-style: normal; color: color-mix(in oklab, var(--as-teal-soft) 70%, white); }
@media (min-width: 768px) { .as-ana__title { font-size: 2.125rem; } }
.as-ana__text { margin-top: 1.25rem; font-size: 0.9375rem; line-height: 1.6; color: rgba(255,255,255,.72); }
.as-ana__checks { margin-top: 2rem; display: grid; gap: 1rem; }
.as-ana__checks li { display: flex; align-items: flex-start; gap: 0.75rem; line-height: 1.5; font-size: 0.9375rem; color: rgba(255,255,255,.9); }
.as-ana__checks svg { width: 1rem; height: 1rem; margin-top: 0.25rem; color: color-mix(in oklab, var(--as-teal-soft) 60%, white); stroke-width: 2; }
.as-ana__cta { margin-top: 2rem; }

/* ============================ FAQ ============================ */
.as-faq__head { margin-bottom: 3rem; max-width: 44rem; }
.as-faq__list { border-top: 1px solid var(--as-border); }
.as-faq__item { border-bottom: 1px solid var(--as-border); }
.as-faq__q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding: 1.5rem 0;
  cursor: pointer;
  list-style: none;
  font-family: var(--as-font-display);
  font-size: 1rem;
  font-weight: 500;
  color: var(--as-fg);
  transition: color .2s;
}
.as-faq__q::-webkit-details-marker { display: none; }
.as-faq__q:hover { color: var(--as-teal); }
@media (min-width: 768px) { .as-faq__q { font-size: 1.125rem; } }
.as-faq__sign {
  position: relative;
  flex-shrink: 0;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 9999px;
  background: color-mix(in oklab, var(--as-teal) 10%, transparent);
  transition: background-color .2s;
}
.as-faq__sign::before,
.as-faq__sign::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0.75rem;
  height: 2px;
  background: var(--as-teal);
  transform: translate(-50%, -50%);
  transition: transform .2s, opacity .2s;
}
.as-faq__sign::after { transform: translate(-50%, -50%) rotate(90deg); }
.as-faq__item[open] .as-faq__sign { background: var(--as-teal); }
.as-faq__item[open] .as-faq__sign::before,
.as-faq__item[open] .as-faq__sign::after { background: #fff; }
.as-faq__item[open] .as-faq__sign::after { transform: translate(-50%, -50%) rotate(0deg); opacity: 0; }
.as-faq__a { padding: 0 4rem 1.75rem 0; animation: astra-fade 220ms ease-out; }
.as-faq__a p { max-width: 52rem; font-size: 0.9375rem; line-height: 1.6; color: var(--as-muted-fg); }
.as-faq__foot { margin-top: 2.5rem; font-size: 0.875rem; color: var(--as-muted-fg); }
.as-faq__foot a { color: var(--as-teal); border-bottom: 1px solid color-mix(in oklab, var(--as-teal) 45%, transparent); padding-bottom: 1px; }
.as-faq__foot a:hover { border-bottom-color: var(--as-teal); }

/* ============================ CONHEÇA ANTES DE DECIDIR ============================ */
.as-conheca__text { font-size: 1rem; line-height: 1.6; color: var(--as-muted-fg); }
@media (min-width: 768px) { .as-conheca__text { font-size: 1.125rem; } }
.as-conheca__checks { margin-top: 2rem; display: grid; gap: 1rem; }
.as-conheca__checks li { display: flex; align-items: flex-start; gap: 0.75rem; line-height: 1.5; font-size: 1rem; color: var(--as-fg); }
.as-conheca__checks svg { margin-top: 0.25rem; color: var(--as-teal); stroke-width: 2; }
.as-conheca__note { margin-top: 1.5rem; padding-left: 1.25rem; border-left: 2px solid var(--as-teal); font-size: 0.9375rem; line-height: 1.6; color: var(--as-muted-fg); }

/* ============================ CONTATO ============================ */
.as-contato {
  border-top: 1px solid var(--as-border);
  border-bottom: 1px solid var(--as-border);
  background: var(--as-surface);
}
.as-contato__grid { display: grid; gap: 3rem; padding-top: 5.5rem; padding-bottom: 5.5rem; }
@media (min-width: 768px) {
  .as-contato__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); padding-top: 7.5rem; padding-bottom: 7.5rem; }
}
.as-contato__text { margin-top: 1.5rem; font-size: 0.9375rem; line-height: 1.6; color: var(--as-muted-fg); }
.as-contato__text strong { font-weight: 600; color: var(--as-fg); }
.as-contato__list { margin-top: 2rem; display: grid; gap: 1rem; }
.as-contato__list li { display: flex; align-items: flex-start; gap: 0.75rem; line-height: 1.5; font-size: 0.9375rem; color: var(--as-fg); }
.as-contato__list svg { margin-top: 0.25rem; color: var(--as-teal); stroke-width: 2; }
.as-contato__links { margin-top: 2rem; display: grid; gap: 0.75rem; font-size: 0.875rem; }
.as-contato__links a, .as-contato__links div { display: flex; align-items: center; gap: 0.75rem; color: var(--as-fg); transition: color .2s; }
.as-contato__links a:hover { color: var(--as-teal); }
.as-contato__links svg { color: var(--as-teal); }
.as-contato__links div { color: var(--as-muted-fg); }

.as-form { border-radius: 0.25rem; border: 1px solid var(--as-border); background: var(--as-bg); padding: 1.5rem; }
@media (min-width: 768px) { .as-form { padding: 2.5rem; } }
.as-form__tag {
  margin-bottom: 1.5rem;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--as-graphite-soft);
}
.as-form__tag i { display: block; height: 1px; width: 2rem; background: var(--as-teal); }
.as-form__fields { display: grid; gap: 1rem; }
@media (min-width: 640px) {
  .as-form__fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .as-form__full { grid-column: span 2; }
}
.as-form label { margin-bottom: 0.5rem; display: block; font-size: 11px; font-weight: 500; text-transform: uppercase; letter-spacing: 0.2em; color: var(--as-graphite-soft); }
.as-form input, .as-form select {
  width: 100%;
  border-radius: 0.25rem;
  border: 1px solid var(--as-border);
  background: var(--as-bg);
  padding: 0.8125rem 1rem;
  font-size: 0.875rem;
  font-family: inherit;
  color: var(--as-fg);
}
.as-form input::placeholder { color: var(--as-muted-fg); }
.as-form input:focus, .as-form select:focus { outline: none; border-color: var(--as-teal); }
.as-form__submit { margin-top: 2rem; width: 100%; }
@media (min-width: 640px) { .as-form__submit { width: auto; } }
.as-form__legal { margin-top: 1rem; font-size: 11px; text-transform: uppercase; letter-spacing: 0.2em; color: var(--as-muted-fg); }

/* ============================ REALIZAÇÃO ============================ */
.as-realiza__pad { padding-top: 4.5rem; padding-bottom: 4.5rem; }
@media (min-width: 768px) { .as-realiza__pad { padding-top: 5.5rem; padding-bottom: 5.5rem; } }
.as-realiza__grid { margin-top: 2rem; display: grid; gap: 2.5rem; }
@media (min-width: 768px) { .as-realiza__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.as-realiza__name { font-family: var(--as-font-display); font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; font-size: 0.875rem; color: var(--as-fg); }
.as-realiza__desc { margin-top: 0.75rem; font-size: 0.875rem; line-height: 1.6; color: var(--as-muted-fg); }

/* ============================ FOOTER ============================ */
.as-footer { background: var(--as-teal-deep); color: rgba(255,255,255,.8); }
.as-footer__inner { display: grid; gap: 2.5rem; padding-top: 3.5rem; padding-bottom: 3.5rem; }
@media (min-width: 768px) { .as-footer__inner { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 3rem; } }
.as-footer__logo { height: 1.75rem; width: auto; margin-bottom: 1.75rem; }
.as-footer__head { margin-bottom: 1.5rem; font-family: var(--as-font-display); font-size: 0.6875rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.22em; color: #fff; }
.as-footer__text { font-size: 0.875rem; line-height: 1.6; color: rgba(255,255,255,.72); }
.as-footer__text + .as-footer__text { margin-top: 0.75rem; }
.as-footer__text strong { font-weight: 600; color: #fff; }
.as-footer__text--dim { font-size: 0.8125rem; color: rgba(255,255,255,.5); }
.as-footer__list { display: grid; gap: 0.875rem; }
.as-footer__list li { display: flex; align-items: center; gap: 0.75rem; font-size: 0.875rem; color: rgba(255,255,255,.82); }
.as-footer__list svg { color: color-mix(in oklab, var(--as-teal-soft) 60%, white); }
.as-footer__list a { color: inherit; transition: color .2s; }
.as-footer__list a:hover { color: #fff; }
.as-footer__gac { height: 2.75rem; width: auto; margin-bottom: 1.25rem; }
.as-footer__legal { border-top: 1px solid rgba(255,255,255,.1); }
.as-footer__legal p { padding-top: 1rem; padding-bottom: 1rem; font-size: 10px; text-transform: uppercase; letter-spacing: 0.2em; color: rgba(255,255,255,.5); }

/* ============================ WHATSAPP FLUTUANTE ============================ */
.as-wa {
  position: fixed;
  bottom: 1.25rem;
  right: 1.25rem;
  z-index: 30;
  display: flex;
  height: 3.5rem;
  width: 3.5rem;
  align-items: center;
  justify-content: center;
  border-radius: 9999px;
  background: #25D366;
  color: #fff;
  box-shadow: 0 16px 40px -8px rgba(37,211,102,.55);
  transition: transform .2s;
}
.as-wa:hover { transform: scale(1.05); }
.as-wa svg { width: 1.5rem; height: 1.5rem; }

/* ============================ LIGHTBOX ============================ */
.as-lb {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: none;
  align-items: center;
  justify-content: center;
  background: rgba(10,20,24,.96);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
.as-lb.is-open { display: flex; animation: astra-fade 220ms ease-out; }
.as-lb__btn {
  position: absolute;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 9999px;
  border: 1px solid rgba(255,255,255,.15);
  background: rgba(255,255,255,.05);
  color: rgba(255,255,255,.8);
  cursor: pointer;
  transition: background-color .2s, color .2s;
}
.as-lb__btn:hover { background: rgba(255,255,255,.15); color: #fff; }
.as-lb__close { top: 1rem; right: 1rem; height: 2.75rem; width: 2.75rem; border-color: rgba(255,255,255,.2); }
.as-lb__prev, .as-lb__next { height: 3rem; width: 3rem; }
.as-lb__prev { left: 1rem; }
.as-lb__next { right: 1rem; }
@media (min-width: 768px) { .as-lb__prev { left: 2rem; } .as-lb__next { right: 2rem; } }
.as-lb__btn svg { width: 1.5rem; height: 1.5rem; }
.as-lb__close svg { width: 1.25rem; height: 1.25rem; }
.as-lb__fig {
  display: flex;
  height: 100%;
  width: 100%;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 4rem 1rem;
}
@media (min-width: 768px) { .as-lb__fig { padding-left: 4rem; padding-right: 4rem; } }
.as-lb__fig img { max-height: 85vh; max-width: 100%; object-fit: contain; }
.as-lb__cap { margin-top: 1rem; text-align: center; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.24em; color: rgba(255,255,255,.6); }
.as-lb__n { margin-left: 0.75rem; color: rgba(255,255,255,.4); }
body.as-lb-open { overflow: hidden; }

/* ============================ CONDIÇÕES DE PAGAMENTO ============================ */
.as-pgto__head { max-width: 46rem; margin-bottom: 3rem; }
.as-pgto__intro { margin-top: 1.5rem; font-size: 1rem; line-height: 1.6; color: var(--as-muted-fg); }
@media (min-width: 768px) { .as-pgto__intro { font-size: 1.0625rem; } }

.as-pgto__grid { display: grid; gap: 1.25rem; align-items: start; }
@media (min-width: 900px) { .as-pgto__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.as-pgto__card {
  display: flex;
  flex-direction: column;
  padding: 2rem 1.75rem;
  border: 1px solid var(--as-border);
  border-radius: 0.25rem;
  background: var(--as-bg);
  transition: transform .28s ease, box-shadow .28s ease, border-color .28s ease;
}
.as-pgto__card:hover {
  transform: translateY(-6px);
  border-color: var(--as-teal);
  box-shadow: 0 26px 55px -28px rgba(38,85,96,.45);
}
.as-pgto__card--destaque {
  border-color: var(--as-teal);
  box-shadow: 0 24px 60px -30px rgba(38,85,96,.5);
}
.as-pgto__card--destaque:hover { box-shadow: 0 30px 65px -28px rgba(38,85,96,.55); }
.as-pgto__badge {
  align-self: flex-start;
  margin-bottom: 1.125rem;
  padding: 0.3125rem 0.75rem;
  border-radius: 999px;
  background: var(--as-teal);
  color: #fff;
  font-size: 0.625rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.16em;
}
.as-pgto__nome { font-family: var(--as-font-display); font-size: 1.125rem; font-weight: 500; color: var(--as-fg); }
.as-pgto__entrega {
  margin-top: 0.5rem;
  margin-bottom: 1.5rem;
  font-size: 0.6875rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--as-teal);
}
.as-pgto__list { display: grid; gap: 1rem; }
.as-pgto__list li {
  position: relative;
  padding-left: 1.5rem;
  font-size: 0.9375rem;
  line-height: 1.5;
  color: var(--as-graphite-soft);
}
.as-pgto__list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.5rem;
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: var(--as-teal);
}
.as-pgto__obs { margin-top: 2rem; max-width: 54rem; font-size: 0.8125rem; line-height: 1.65; color: var(--as-muted-fg); }
.as-pgto__cta { margin-top: 2rem; }

/* ============================ ANIMAÇÕES ============================ */
@keyframes astra-fade-up {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes astra-fade {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes astra-zoom {
  from { transform: scale(1.08); }
  to { transform: scale(1); }
}
@media (prefers-reduced-motion: reduce) {
  .astra *, .astra *::before, .astra *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}
/* ===========================================================================
   ELOS — Ilha Pura · /elos
   TODAS as classes começam com .elos. O application.css faz require_tree, ou
   seja, este arquivo entra num bundle global junto com onlife.css, astra.css e
   symphony.css — sem o prefixo, uma regra daqui quebraria as outras LPs.
   =========================================================================== */

/* Paleta e tipografia lidas da LP oficial do Elos
   (ilhapura.com.br/empreendimentos/elos), não inventadas. A regra do projeto é
   que cada LP acompanhe o design system da construtora — o do Grupo Ana Cintra
   fica reservado para a home da Ana.
   O que mudou em relação à primeira versão: os teais eram os do bairro Ilha
   Pura, o acento era um areia quente que não existe na marca, e os títulos
   usavam serifa. A construtora usa Albert Sans em tudo e neutros cinza puros. */
.elos {
  --elos-deep:   #004964;   /* teal mais escuro — seções escuras e títulos */
  --elos-teal:   #1B4A61;   /* superfície principal da marca — botões */
  --elos-teal-2: #48A5C9;   /* teal claro — acentos sobre fundo escuro */
  --elos-teal-3: #3C8AA4;   /* teal médio — filetes e detalhes */
  --elos-cream:  #F0F0F0;   /* neutro claro — seções alternadas */
  --elos-paper:  #FFFFFF;
  --elos-ink:    #323232;   /* texto */
  --elos-mute:   #6B6B6B;   /* texto secundário */
  --elos-line:   #E0E0E0;

  /* Uma família só, como na LP oficial. As variáveis --elos-serif/--elos-sans
     continuam existindo para não ter que reescrever cada regra; ambas apontam
     para Albert Sans, e o peso é que diferencia título de texto. */
  --elos-serif: "Albert Sans", system-ui, -apple-system, sans-serif;
  --elos-sans:  "Albert Sans", system-ui, -apple-system, sans-serif;

  --elos-pad: clamp(1.25rem, 5vw, 2.5rem);

  font-family: var(--elos-sans);
  color: var(--elos-ink);
  background: var(--elos-paper);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

/* Reset local. O seletor precisa ser prefixado nos DOIS níveis: um
   `.elos ul{margin:0}` solto venceria por especificidade qualquer margem que
   as regras de filho tentassem aplicar depois. */
.elos figure { margin: 0; }
.elos img { max-width: 100%; height: auto; display: block; }
.elos h1, .elos h2, .elos h3 { margin: 0; font-weight: 400; letter-spacing: -0.01em; }
.elos p { margin: 0; }
.elos ul { margin: 0; padding: 0; list-style: none; }
.elos table { border-collapse: collapse; width: 100%; }
.elos dl, .elos dd, .elos dt { margin: 0; }
.elos *, .elos *::before, .elos *::after { box-sizing: border-box; }

.elos-wrap {
  width: 100%;
  max-width: 1180px;
  margin-inline: auto;
  padding-inline: var(--elos-pad);
}
.elos-wrap--narrow { max-width: 820px; }

/* --- Blocos de seção ------------------------------------------------------ */

.elos-sec { padding-block: clamp(3.5rem, 9vw, 7rem); }
.elos-sec--light { background: var(--elos-cream); }
.elos-sec--dark  { background: var(--elos-deep); color: #EAF1F3; }

.elos-head { max-width: 46rem; margin-bottom: clamp(2rem, 5vw, 3.5rem); }
/* 11/08/2026: medida a página oficial do Elos — os títulos de seção lá são
   Albert Sans peso 200 em preto (#000/#323232), e os nossos estavam em peso 400
   coloridos de azul. Mesma correção feita no Pura: o sistema do Ilha Pura é uma
   base só (Albert Sans, título fino e preto, neutros #F0F0F0/#323232) com UMA
   cor por empreendimento — #1B4A61 no Elos, #3C8AA4 no Pura. */
.elos-head h2 {
  font-family: var(--elos-serif);
  font-size: clamp(1.9rem, 4.6vw, 3.1rem);
  font-weight: 200;
  line-height: 1.12;
  color: var(--elos-ink);
}
.elos-head--invert h2 { color: #FFFFFF; }
.elos-head--invert .elos-lead { color: #C2D4DA; }

.elos-eyebrow {
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--elos-teal);
  margin-bottom: 0.9rem !important;
}
.elos-sec--dark .elos-eyebrow { color: var(--elos-teal-2); }

.elos-lead {
  margin-top: 1.1rem !important;
  font-size: clamp(1rem, 1.9vw, 1.15rem);
  color: var(--elos-mute);
  max-width: 42rem;
}

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

.elos-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;               /* alvo de toque confortável */
  padding: 0.85rem 1.6rem;
  border: 1px solid transparent;
  border-radius: 4px;
  font-family: var(--elos-sans);
  font-size: 0.95rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  text-decoration: none;
  cursor: pointer;
  transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}
.elos-btn--primary { background: var(--elos-teal); color: #FFFFFF; }
.elos-btn--primary:hover { background: var(--elos-deep); }
.elos-btn--ghost {
  background: transparent;
  color: var(--elos-deep);
  border-color: var(--elos-deep);
}
.elos-btn--ghost:hover { background: var(--elos-deep); color: #FFFFFF; }
.elos-sec--dark .elos-btn--ghost { color: #FFFFFF; border-color: rgba(255,255,255,.55); }
.elos-sec--dark .elos-btn--ghost:hover { background: #FFFFFF; color: var(--elos-deep); }

/* --- Hero ----------------------------------------------------------------- */

/* Tela cheia com vídeo de fundo. `svh` em vez de `vh`: no celular, `100vh`
   conta a barra do navegador que some ao rolar, e o hero fica alto demais. */
.elos-hero {
  position: relative;
  min-height: 100svh;
  width: 100%;
  overflow: hidden;
  background: var(--elos-deep);
}
.elos-hero__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* Escurecimento mais forte embaixo, onde fica o texto, e no topo, para o
   conteúdo não competir com o céu claro do vídeo. */
.elos-hero__scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom,
    rgba(6, 28, 34, .72) 0%,
    rgba(6, 28, 34, .40) 42%,
    rgba(6, 28, 34, .88) 100%);
}
.elos-hero__inner {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 100svh;
  max-width: 1180px;
  margin-inline: auto;
  padding: 7rem var(--elos-pad) 3.5rem;
}
@media (min-width: 768px) { .elos-hero__inner { padding-bottom: 5rem; } }

.elos-hero__anim { animation: elos-fade-up 900ms ease-out both; }
@keyframes elos-fade-up {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: none; }
}

.elos-hero__logo {
  width: clamp(130px, 18vw, 180px);
  height: auto;
  margin-bottom: 1.5rem;
  filter: drop-shadow(0 2px 12px rgba(0,0,0,.45));
}
.elos-hero__place {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 1.25rem !important;
  padding-left: 0.75rem;
  border-left: 2px solid var(--elos-teal-2);
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: #CFE4EA;
}
.elos-hero__place span { color: rgba(255,255,255,.4); }

.elos-hero__title {
  max-width: 20ch;
  font-family: var(--elos-serif);
  font-size: clamp(2.4rem, 8vw, 4.4rem);
  font-weight: 200;
  line-height: 1.06;
  color: #FFFFFF;
  text-shadow: 0 2px 24px rgba(0,0,0,.35);
}
/* O `.elos` na frente é obrigatório: `.elos h1{font-weight:400}` tem
   especificidade maior que `.elos-hero__title`, então o peso declarado ali em
   cima nunca chegou a valer — o título do hero sempre saiu em 400. */
.elos .elos-hero__title { font-weight: 200; }
.elos-hero__title em { font-style: normal; font-weight: 500; color: var(--elos-teal-2); }

.elos-hero__lead {
  margin-top: 1.25rem !important;
  max-width: 40rem;
  font-size: clamp(0.98rem, 1.9vw, 1.12rem);
  color: #D6E4E8;
  text-shadow: 0 1px 12px rgba(0,0,0,.4);
}
.elos-hero__lead strong { color: #FFFFFF; font-weight: 600; }

.elos-hero__facts {
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem 2.5rem;
  max-width: 48rem;
  margin-top: 2.25rem !important;
}
.elos-hero__fact { border-left: 2px solid var(--elos-teal-3); padding-left: 0.875rem; }
.elos-hero__fact-k {
  display: block;
  font-family: var(--elos-serif);
  font-size: clamp(1.05rem, 2.2vw, 1.25rem);
  font-weight: 500;
  line-height: 1.2;
  color: #FFFFFF;
}
.elos-hero__fact-v {
  display: block;
  margin-top: 0.2rem;
  font-size: 0.78rem;
  color: #A9C4CB;
}

.elos-hero__actions { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 2.25rem; }

/* Botão secundário sobre o vídeo: contorno claro, sem fundo. */
.elos-btn--onvideo {
  background: rgba(255,255,255,.08);
  color: #FFFFFF;
  border-color: rgba(255,255,255,.55);
  backdrop-filter: blur(2px);
}
.elos-btn--onvideo:hover { background: #FFFFFF; color: var(--elos-deep); border-color: #FFFFFF; }

@media (prefers-reduced-motion: reduce) {
  .elos-hero__anim { animation: none; }
}

/* --- Tour em vídeo do decorado ------------------------------------------- */

/* Prefixado: é uma <figure>, e `.elos figure { margin: 0 }` vencia — o vídeo do
   tour ficava colado no que vem depois. */
.elos .elos-tour { margin-bottom: clamp(2rem, 5vw, 3rem); }
.elos-tour video {
  width: 100%;
  aspect-ratio: 16 / 9;
  border-radius: 6px;
  background: #0A2C35;
  display: block;
}
.elos-tour figcaption { padding-top: 0.75rem; }
.elos-tour figcaption strong {
  display: block;
  font-size: 0.98rem;
  font-weight: 500;
  color: var(--elos-deep);
}
.elos-tour figcaption span {
  display: block;
  margin-top: 0.15rem;
  font-size: 0.85rem;
  color: var(--elos-mute);
}

/* --- Por que falar com a Ana ---------------------------------------------- */

.elos-ana { display: grid; gap: clamp(1.75rem, 5vw, 3.5rem); align-items: center; }
@media (min-width: 880px) { .elos-ana { grid-template-columns: 0.8fr 1fr; } }

.elos-ana__fig img {
  width: 100%;
  max-width: 420px;
  border-radius: 8px;
  aspect-ratio: 1 / 1;
  object-fit: cover;
}
.elos-ana__texto h2 {
  font-family: var(--elos-serif);
  font-size: clamp(1.8rem, 4.2vw, 2.7rem);
  line-height: 1.12;
  color: var(--elos-deep);
}
.elos-ana__razoes { display: grid; gap: 1rem; margin-top: 1.75rem !important; }
.elos-ana__razoes li { display: flex; gap: 0.75rem; align-items: flex-start; }
.elos-ana__dot {
  flex: 0 0 auto;
  width: 8px;
  height: 8px;
  margin-top: 0.5rem;
  border-radius: 50%;
  background: var(--elos-teal-3);
}
.elos-ana__razoes p { font-size: 0.95rem; color: var(--elos-mute); }
.elos-ana__assina {
  margin-top: 1.75rem !important;
  margin-bottom: 1.25rem !important;
  font-size: 0.88rem;
  font-weight: 500;
  color: var(--elos-deep);
}

/* --- Oferta ITBI + RGI ---------------------------------------------------- */

.elos-oferta {
  background: var(--elos-deep);
  padding: clamp(2.5rem, 6vw, 4rem) var(--elos-pad);
}
.elos-oferta__box {
  max-width: 640px;
  margin-inline: auto;
  text-align: center;
  color: #EAF1F3;
}
.elos-oferta__tag {
  font-size: 0.72rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--elos-teal-3);
  margin-bottom: 1rem !important;
}
.elos-oferta h2 {
  font-family: var(--elos-serif);
  font-size: clamp(1.9rem, 5.5vw, 3rem);
  font-weight: 200;
  line-height: 1.16;
  color: #FFFFFF;
}
.elos-oferta h2 strong { font-weight: 500; color: var(--elos-teal-2); }
.elos-oferta__texto {
  margin-top: 1.25rem !important;
  color: #C2D4DA;
  font-size: 1.02rem;
}
.elos-oferta__prazo {
  margin-top: 1.25rem !important;
  font-size: 0.92rem;
  color: #EAF1F3;
}
.elos-oferta__prazo strong { color: var(--elos-teal-3); }
.elos-oferta .elos-btn { margin-top: 1.75rem; }
.elos-oferta__fine {
  margin-top: 1rem !important;
  font-size: 0.78rem;
  color: #8FA9B1;
}

/* --- Números -------------------------------------------------------------- */

.elos-numeros {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  background: var(--elos-line);
  border-block: 1px solid var(--elos-line);
}
.elos-numero {
  background: var(--elos-paper);
  padding: clamp(1.5rem, 4vw, 2.5rem) 1.25rem;
  text-align: center;
}
.elos-numero__n {
  display: block;
  font-family: var(--elos-serif);
  font-size: clamp(2rem, 5vw, 3rem);
  line-height: 1;
  color: var(--elos-teal);
}
.elos-numero__l {
  display: block;
  margin-top: 0.4rem;
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--elos-deep);
}
.elos-numero__d {
  display: block;
  margin-top: 0.35rem;
  font-size: 0.78rem;
  color: var(--elos-mute);
}
@media (min-width: 720px) { .elos-numeros { grid-template-columns: repeat(4, 1fr); } }

/* --- Grades de cards ------------------------------------------------------ */

.elos-grid { display: grid; gap: clamp(1rem, 2.5vw, 1.5rem); grid-template-columns: 1fr; }
@media (min-width: 640px) {
  .elos-grid--2, .elos-grid--3, .elos-grid--4 { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 980px) {
  .elos-grid--3 { grid-template-columns: repeat(3, 1fr); }
  .elos-grid--4 { grid-template-columns: repeat(4, 1fr); }
}

.elos-card { display: flex; flex-direction: column; }
.elos-card__btn {
  display: block;
  width: 100%;
  padding: 0;
  border: 0;
  background: var(--elos-line);
  border-radius: 5px;
  overflow: hidden;
  cursor: zoom-in;
}
.elos-card__btn img {
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  transition: transform .5s ease;
}
.elos-card__btn:hover img { transform: scale(1.03); }
.elos-card figcaption { padding-top: 0.75rem; }
.elos-card figcaption strong {
  display: block;
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--elos-deep);
}
.elos-card figcaption span {
  display: block;
  margin-top: 0.15rem;
  font-size: 0.83rem;
  color: var(--elos-mute);
  line-height: 1.45;
}
.elos-card--dark figcaption strong { color: #FFFFFF; }
.elos-card--dark figcaption span { color: #9FB8BF; }
.elos-card--dark .elos-card__btn { background: #10454F; }

/* Plantas são desenhos técnicos: fundo branco e a imagem inteira à vista. */
.elos-grid--plantas { margin-top: clamp(2rem, 5vw, 3rem); }
.elos-card--planta .elos-card__btn { background: var(--elos-paper); border: 1px solid var(--elos-line); }
/* A proporção fica fixa mesmo antes da imagem carregar. Com `aspect-ratio:auto`
   o botão colapsava para ~26px e a grade inteira pulava quando a planta
   (lazy) chegava. */
.elos-card--planta .elos-card__btn img {
  aspect-ratio: 7 / 6;
  object-fit: contain;
  padding: 0.75rem;
}

/* --- Diferenciais --------------------------------------------------------- */

.elos-difs {
  display: grid;
  gap: 1.5rem;
  margin-top: clamp(2.5rem, 6vw, 4rem);
}
@media (min-width: 820px) { .elos-difs { grid-template-columns: 1.4fr 1fr; } }

.elos-difs__col {
  padding: clamp(1.5rem, 3.5vw, 2.25rem);
  background: var(--elos-paper);
  border: 1px solid var(--elos-line);
  border-radius: 6px;
}
.elos-difs__col--accent { background: var(--elos-deep); border-color: var(--elos-deep); }
.elos-difs__col h3 {
  font-family: var(--elos-serif);
  font-size: 1.4rem;
  color: var(--elos-deep);
  margin-bottom: 1rem;
}
.elos-difs__col--accent h3 { color: #FFFFFF; }
.elos-difs__col ul { display: grid; gap: 0.6rem; }
.elos-difs__col li {
  position: relative;
  padding-left: 1.35rem;
  font-size: 0.93rem;
  color: var(--elos-mute);
}
.elos-difs__col li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.6em;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--elos-teal-3);
}
.elos-difs__col--accent li { color: #C2D4DA; }

/* --- Tipologias ----------------------------------------------------------- */

.elos-tipos { display: grid; gap: 1.5rem; }
@media (min-width: 760px) { .elos-tipos { grid-template-columns: repeat(2, 1fr); } }

.elos-tipo {
  padding: clamp(1.25rem, 3vw, 2rem);
  border: 1px solid var(--elos-line);
  border-radius: 6px;
  background: var(--elos-cream);
}
.elos-tipo h3 {
  font-family: var(--elos-serif);
  font-size: 1.5rem;
  color: var(--elos-deep);
  margin-bottom: 0.75rem;
}
.elos-tipo tr { border-top: 1px solid var(--elos-line); }
.elos-tipo tr:first-child { border-top: 0; }
.elos-tipo th {
  text-align: left;
  padding: 0.7rem 0;
  font-weight: 500;
  font-size: 0.95rem;
  color: var(--elos-ink);
}
.elos-tipo th span {
  display: block;
  font-weight: 400;
  font-size: 0.78rem;
  color: var(--elos-mute);
}
.elos-tipo td {
  text-align: right;
  padding: 0.7rem 0;
  font-size: 0.95rem;
  color: var(--elos-teal);
  white-space: nowrap;
}

.elos-nota {
  margin-top: 1.5rem !important;
  font-size: 0.78rem;
  color: var(--elos-mute);
  max-width: 44rem;
}

/* --- Momentos de lazer ---------------------------------------------------- */

.elos-momento { margin-top: clamp(2.5rem, 6vw, 4rem); }
.elos-momento:first-of-type { margin-top: 0; }
.elos-momento__head { margin-bottom: 1.5rem; max-width: 40rem; }
.elos-momento__head h3 {
  font-family: var(--elos-serif);
  font-size: clamp(1.4rem, 3vw, 1.9rem);
  color: #FFFFFF;
}
.elos-momento__head p {
  margin-top: 0.5rem !important;
  font-size: 0.95rem;
  color: #9FB8BF;
}

.elos-facilities {
  margin-top: clamp(2.5rem, 6vw, 4rem);
  padding-top: clamp(1.75rem, 4vw, 2.5rem);
  border-top: 1px solid rgba(255,255,255,.16);
}
.elos-facilities h3 {
  font-family: var(--elos-serif);
  font-size: 1.3rem;
  color: #FFFFFF;
  margin-bottom: 1rem;
}
.elos-facilities ul { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.elos-facilities li {
  padding: 0.45rem 0.95rem;
  border: 1px solid rgba(255,255,255,.25);
  border-radius: 999px;
  font-size: 0.85rem;
  color: #C2D4DA;
}

/* --- Design e segurança --------------------------------------------------- */

.elos-seg { display: grid; gap: 1.25rem; }
@media (min-width: 720px) { .elos-seg { grid-template-columns: repeat(2, 1fr); } }
.elos-seg__item {
  padding: clamp(1.25rem, 3vw, 1.75rem);
  background: var(--elos-paper);
  border-left: 3px solid var(--elos-teal-3);
  border-radius: 0 5px 5px 0;
}
.elos-seg__item h3 {
  font-size: 1.02rem;
  font-weight: 500;
  color: var(--elos-deep);
}
.elos-seg__item p {
  margin-top: 0.35rem !important;
  font-size: 0.9rem;
  color: var(--elos-mute);
}

/* --- Ficha técnica -------------------------------------------------------- */

.elos-ficha { border-top: 1px solid var(--elos-line); }
.elos-ficha__row {
  display: grid;
  gap: 0.15rem;
  padding: 0.9rem 0;
  border-bottom: 1px solid var(--elos-line);
}
.elos-ficha dt {
  font-size: 0.78rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--elos-mute);
}
.elos-ficha dd { font-size: 0.98rem; color: var(--elos-ink); }
@media (min-width: 640px) {
  .elos-ficha__row { grid-template-columns: 15rem 1fr; gap: 1.5rem; align-items: baseline; }
}

/* --- CTA e formulário ----------------------------------------------------- */

.elos-cta__grid { display: grid; gap: clamp(2rem, 5vw, 3.5rem); }
@media (min-width: 900px) { .elos-cta__grid { grid-template-columns: 1fr 26rem; align-items: start; } }

.elos-cta__texto h2 {
  font-family: var(--elos-serif);
  font-size: clamp(1.9rem, 4.5vw, 2.9rem);
  line-height: 1.12;
  color: #FFFFFF;
}
.elos-cta__texto .elos-lead { color: #C2D4DA; }
.elos-cta__flag {
  margin-top: 1.5rem !important;
  padding: 0.7rem 1rem;
  border-left: 3px solid var(--elos-teal-3);
  background: rgba(255,255,255,.06);
  border-radius: 0 4px 4px 0;
  font-size: 0.92rem;
  color: #EAF1F3;
}
.elos-cta__assina { margin-top: 1.75rem !important; }
.elos-cta__assina strong { display: block; font-size: 1.05rem; color: #FFFFFF; font-weight: 500; }
.elos-cta__assina span { font-size: 0.88rem; color: #9FB8BF; }

.elos-form {
  padding: clamp(1.5rem, 4vw, 2.25rem);
  background: var(--elos-paper);
  border-radius: 8px;
  color: var(--elos-ink);
}
.elos-form h3 {
  font-family: var(--elos-serif);
  font-size: 1.5rem;
  color: var(--elos-deep);
  margin-bottom: 1.25rem;
}
.elos-form label {
  display: block;
  margin-bottom: 0.9rem;
  font-size: 0.82rem;
  font-weight: 500;
  color: var(--elos-deep);
}
.elos-form__opt { font-weight: 400; color: var(--elos-mute); }
.elos-form input,
.elos-form select,
.elos-form textarea {
  display: block;
  width: 100%;
  min-height: 46px;
  margin-top: 0.35rem;
  padding: 0.7rem 0.85rem;
  border: 1px solid var(--elos-line);
  border-radius: 4px;
  font-family: var(--elos-sans);
  font-size: 0.95rem;
  font-weight: 400;
  color: var(--elos-ink);
  background: var(--elos-paper);
}
.elos-form textarea { min-height: auto; resize: vertical; }
.elos-form input:focus,
.elos-form select:focus,
.elos-form textarea:focus {
  outline: 2px solid var(--elos-teal);
  outline-offset: 1px;
  border-color: transparent;
}
.elos-form__submit { width: 100%; margin-top: 0.5rem; }
.elos-form__fine {
  margin-top: 0.9rem !important;
  font-size: 0.75rem;
  color: var(--elos-mute);
  line-height: 1.5;
}

/* --- Vitrine dos condomínios vizinhos ------------------------------------- */
/* O componente é compartilhado e traz as próprias cores padrão; aqui só
   amarramos ele à paleta desta LP. Ver ilhapura_condominios.css. */
.elos .ipc {
  --ipc-fundo:  var(--elos-cream);
  --ipc-acento: var(--elos-teal);
  --ipc-escuro: var(--elos-deep);
  --ipc-tinta:  var(--elos-ink);
  --ipc-suave:  var(--elos-mute);
  --ipc-linha:  var(--elos-line);
}
.elos .ipc h2, .elos .ipc h3 { font-family: var(--elos-serif); }

/* --- Rodapé compartilhado ------------------------------------------------- */
/* O rodapé e o botão flutuante vêm de shared/_rodape_lp, com CSS próprio.
   Aqui só amarramos as cores dele à paleta desta LP. */
/* Escopado em `.elos`: um `.rlp` solto aqui pintaria o rodapé de todas as
   outras LPs com a paleta do Elos, já que o CSS é um bundle global. */
.elos .rlp {
  --rlp-fundo: #05323F;
  --rlp-texto: #A9C4CB;
  --rlp-linha: rgba(255,255,255,.14);
  --rlp-fraco: #7F9BA3;
}

/* --- Lightbox ------------------------------------------------------------- */

.elos-lb {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: grid;
  place-items: center;
  padding: clamp(1rem, 4vw, 3rem);
  background: rgba(8, 20, 24, .93);
}
.elos-lb[hidden] { display: none; }
.elos-lb figure { max-width: min(1100px, 100%); max-height: 100%; }
.elos-lb img {
  max-height: 78vh;
  width: auto;
  margin-inline: auto;
  border-radius: 4px;
  object-fit: contain;
}
.elos-lb figcaption {
  margin-top: 0.9rem;
  text-align: center;
  font-size: 0.9rem;
  color: #C2D4DA;
}
.elos-lb__close {
  position: absolute;
  top: 0.75rem;
  right: 0.75rem;
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 50%;
  background: rgba(255,255,255,.12);
  color: #FFFFFF;
  font-size: 1.6rem;
  line-height: 1;
  cursor: pointer;
}
.elos-lb__close:hover { background: rgba(255,255,255,.24); }

/* --- Revelação no scroll -------------------------------------------------- */

.elos-reveal {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity .6s ease, transform .6s ease;
}
.elos-reveal.is-visible { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  .elos-reveal { opacity: 1; transform: none; transition: none; }
  .elos-card__btn img { transition: none; }
  .elos-faq__item summary,
  .elos-faq__sinal { transition: none; }
}

/* ============================================================================
   Localização + o bairro (seções fundidas) e Ir e vir sem barreiras
   Conteúdo clonado do Astra: é o mesmo bairro para todo condomínio do Ilha
   Pura. Aqui só a roupagem muda, para o design system do Elos.
   ========================================================================== */

/* Âncora invisível: `#bairro` era o id da seção antiga e pode estar em link
   já compartilhado. Fica com scroll-margin para o título não colar no topo. */
.elos-ancora { display: block; height: 0; scroll-margin-top: 2rem; }

.elos-loc {
  display: grid;
  gap: clamp(2rem, 5vw, 3.5rem);
  margin-bottom: clamp(2.5rem, 6vw, 4rem);
}
@media (min-width: 900px) { .elos-loc { grid-template-columns: 1fr 1.15fr; align-items: start; } }

.elos .elos-loc__texto h3 {
  margin: 0 0 1rem;
  font-size: clamp(1.4rem, 3vw, 2.1rem);
  line-height: 1.15;
  color: var(--elos-deep);
}
.elos .elos-loc__texto p {
  margin: 0 0 1.6rem;
  font-size: clamp(1rem, 1.9vw, 1.08rem);
  line-height: 1.7;
  color: var(--elos-mute);
  max-width: 40ch;
}

/* Grade de duas colunas com filete de 1px: o próprio `gap` sobre um fundo
   colorido desenha as linhas, sem precisar de border em cada célula. */
.elos-loc__lista {
  margin: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: var(--elos-line);
  border: 1px solid var(--elos-line);
}
.elos-loc__item {
  background: var(--elos-paper);
  padding: 0.95rem 1.1rem;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
}
.elos .elos-loc__item dt {
  font-size: 0.92rem;
  font-weight: 500;
  color: var(--elos-ink);
}
/* `dd` tem margin-left de 40px por padrão no navegador e desmontaria a grade. */
.elos .elos-loc__item dd {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--elos-teal-3);
  white-space: nowrap;
}
.elos-sec--light .elos-loc__item { background: var(--elos-paper); }

/* --- Ir e vir sem barreiras (seção escura) -------------------------------- */

.elos-acess { display: grid; gap: clamp(2rem, 5vw, 3.5rem); }
@media (min-width: 900px) { .elos-acess { grid-template-columns: 1fr 1.1fr; align-items: center; } }

.elos-acess__fig { margin: 0; }
.elos-acess__fig img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 8px;
}

.elos-sec--dark .elos-acess__texto h2 { color: #FFFFFF; }
.elos-acess__texto h2 em { font-style: italic; color: var(--elos-teal-2); }
.elos-sec--dark .elos-acess__texto .elos-lead { color: #C2D4DA; }

/* Prefixado: é um <dl>, e `.elos dl { margin: 0 }` vencia. */
.elos .elos-acess__lista {
  margin: clamp(1.75rem, 4vw, 2.5rem) 0 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: rgba(255, 255, 255, 0.18);
  border: 1px solid rgba(255, 255, 255, 0.18);
}
.elos-acess__item { background: var(--elos-deep); padding: 1.1rem 1.2rem; }
.elos .elos-acess__item dt {
  margin-bottom: 0.3rem;
  font-size: 1.05rem;
  font-weight: 600;
  color: #FFFFFF;
}
.elos .elos-acess__item dd {
  margin: 0;
  font-size: 0.86rem;
  line-height: 1.5;
  color: #A8C2CA;
}

/* ============================================================================
   Perguntas frequentes — <details>/<summary> nativo, sem JS
   ========================================================================== */
.elos-faq { border-top: 1px solid var(--elos-line); }

.elos-faq__item { border-bottom: 1px solid var(--elos-line); }

.elos-faq__item summary {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1.5rem;
  padding-block: 1.15rem;
  cursor: pointer;
  font-size: clamp(1rem, 1.9vw, 1.1rem);
  font-weight: 500;
  color: var(--elos-deep);
  line-height: 1.45;
  transition: color 0.2s ease;
}
/* O triângulo padrão do navegador não é estilizável e aparece diferente em cada
   um. Tirado nos dois dialetos: `list-style` cobre Chrome/Firefox, o
   pseudo-elemento `::-webkit-details-marker` cobre o Safari. */
.elos-faq__item summary { list-style: none; }
.elos-faq__item summary::-webkit-details-marker { display: none; }
.elos-faq__item summary:hover { color: var(--elos-teal-3); }
.elos-faq__item summary:focus-visible {
  outline: 2px solid var(--elos-teal-2);
  outline-offset: 3px;
  border-radius: 2px;
}

/* Sinal de + que vira − quando abre. Feito com dois traços em vez de texto: não
   depende de fonte e fica alinhado em qualquer tamanho de tela. */
.elos-faq__sinal {
  position: relative;
  flex: 0 0 auto;
  width: 0.85rem;
  height: 0.85rem;
  margin-top: 0.35rem;
  transition: transform 0.25s ease;
}
.elos-faq__sinal::before,
.elos-faq__sinal::after {
  content: "";
  position: absolute;
  inset: 50% 0 auto 0;
  height: 1.5px;
  background: var(--elos-teal-3);
}
.elos-faq__sinal::after { transform: rotate(90deg); }
.elos-faq__item[open] .elos-faq__sinal { transform: rotate(45deg); }
.elos-faq__item[open] summary { color: var(--elos-teal-3); }

/* `.elos p { margin: 0 }` tem a mesma especificidade que `.elos-faq__resposta p`
   e venceria por ordem se este arquivo mudasse de posição. O `.elos` na frente
   garante a margem independente disso. */
.elos-faq__resposta { padding: 0 0 1.4rem; max-width: 46rem; }
.elos .elos-faq__resposta p {
  margin: 0;
  font-size: clamp(0.95rem, 1.7vw, 1.03rem);
  line-height: 1.7;
  color: var(--elos-mute);
}

.elos .elos-faq__rodape {
  margin-top: 2rem;
  font-size: 0.95rem;
  color: var(--elos-mute);
}
.elos-faq__rodape a {
  color: var(--elos-teal);
  font-weight: 500;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.elos-faq__rodape a:hover { color: var(--elos-teal-3); }
/* ===========================================================================
   ORO BY ORNARE — Ilha Pura · /oro-by-ornare
   TODAS as classes começam com .oro. O application.css faz require_tree, ou
   seja, este arquivo entra num bundle global junto com elos.css, pura.css,
   onlife.css, astra.css e symphony.css — sem o prefixo, uma regra daqui
   quebraria as outras LPs.
   =========================================================================== */

/* Paleta e tipografia MEDIDAS na página oficial do Oro
   (ilhapura.com.br/empreendimentos/oro-by-ornare) em 12/08/2026, com
   getComputedStyle — não inventadas, não tiradas do logo.

   ⚠️ O slug certo é `oro-by-ornare`. `/empreendimentos/oro` também responde
   200, mas carrega uma página parcial — foi a mesma armadilha do Pura.

   Como funciona o sistema do Ilha Pura: TODOS os empreendimentos usam a mesma
   base (Albert Sans, títulos peso 200 em preto, neutros #F0F0F0/#323232) e cada
   um tem UMA cor própria. Elos #1B4A61 · Pura #3C8AA4 · ORO #EF7003, que
   apareceu 35 vezes na página (botões, selos, olhos de seção). O hero deles
   roda sobre um bronze #825127, medido no mesmo passe. */
.oro {
  /* Bronze escurecido para as seções escuras. #825127 puro é a cor do hero
     oficial, mas em bloco grande ele fica ácido; escurecido dá 10,3:1 com
     texto branco em vez de 6,6:1. */
  --oro-deep:   #5C3819;
  --oro-bronze: #825127;   /* o bronze do hero oficial — botões e destaques */
  /* A COR DO ORO. Texto branco sobre ela dá 3,0:1, abaixo do mínimo de
     leitura — mesma situação do #3C8AA4 no Pura. Por isso ela fica em filete,
     olho de seção e detalhe, e o botão vai no bronze escuro. */
  --oro-gold:   #EF7003;
  --oro-sand:   #E8A76B;   /* claro — texto de apoio sobre fundo escuro (5,0:1) */
  --oro-cream:  #F0F0F0;   /* neutro claro do portal — seções alternadas */
  --oro-paper:  #FFFFFF;
  --oro-ink:    #323232;   /* texto e TÍTULOS (no site oficial eles são pretos) */
  --oro-mute:   #6B6B6B;
  --oro-line:   #E0E0E0;

  /* Albert Sans em tudo, como no site inteiro do Ilha Pura. Títulos peso 200. */
  --oro-serif: "Albert Sans", system-ui, -apple-system, sans-serif;
  --oro-sans:  "Albert Sans", system-ui, -apple-system, sans-serif;

  --oro-pad: clamp(1.25rem, 5vw, 2.5rem);

  font-family: var(--oro-sans);
  color: var(--oro-ink);
  background: var(--oro-paper);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

/* Reset local. O seletor precisa ser prefixado nos DOIS níveis: um
   `.oro ul{margin:0}` solto vence por especificidade qualquer margem que as
   regras de filho tentem aplicar depois (gotcha registrado no CLAUDE.md). */
.oro figure { margin: 0; }
.oro img { max-width: 100%; height: auto; display: block; }
.oro h1, .oro h2, .oro h3 { margin: 0; font-weight: 400; letter-spacing: -0.01em; }
.oro p { margin: 0; }
.oro ul { margin: 0; padding: 0; list-style: none; }
.oro table { border-collapse: collapse; width: 100%; }
.oro dl, .oro dd, .oro dt { margin: 0; }
.oro *, .oro *::before, .oro *::after { box-sizing: border-box; }

.oro-wrap {
  width: 100%;
  max-width: 1180px;
  margin-inline: auto;
  padding-inline: var(--oro-pad);
}
.oro-wrap--narrow { max-width: 820px; }

/* --- Blocos de seção ------------------------------------------------------ */

.oro-sec { padding-block: clamp(3.5rem, 9vw, 7rem); }
.oro-sec--light { background: var(--oro-cream); }
.oro-sec--dark  { background: var(--oro-deep); color: #F2E7DC; }

.oro-head { max-width: 46rem; margin-bottom: clamp(2rem, 5vw, 3.5rem); }
.oro-head h2 {
  font-family: var(--oro-serif);
  font-size: clamp(1.9rem, 4.6vw, 3.1rem);
  font-weight: 200;
  line-height: 1.12;
  color: var(--oro-ink);
}
.oro-head--invert h2 { color: #FFFFFF; }
.oro-head--invert .oro-lead { color: #DCC6AF; }

.oro-eyebrow {
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--oro-bronze);
  margin-bottom: 0.9rem !important;
}
.oro-sec--dark .oro-eyebrow { color: var(--oro-sand); }

.oro-lead {
  margin-top: 1.1rem !important;
  font-size: clamp(1rem, 1.9vw, 1.15rem);
  color: var(--oro-mute);
  max-width: 42rem;
}

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

.oro-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;               /* alvo de toque confortável */
  padding: 0.85rem 1.6rem;
  border: 1px solid transparent;
  border-radius: 4px;
  font-family: var(--oro-sans);
  font-size: 0.95rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  text-decoration: none;
  cursor: pointer;
  transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}
.oro-btn--primary { background: var(--oro-bronze); color: #FFFFFF; }
.oro-btn--primary:hover { background: var(--oro-deep); }
.oro-btn--ghost {
  background: transparent;
  color: var(--oro-deep);
  border-color: var(--oro-deep);
}
.oro-btn--ghost:hover { background: var(--oro-deep); color: #FFFFFF; }
.oro-sec--dark .oro-btn--ghost { color: #FFFFFF; border-color: rgba(255,255,255,.55); }
.oro-sec--dark .oro-btn--ghost:hover { background: #FFFFFF; color: var(--oro-deep); }

/* --- Hero ----------------------------------------------------------------- */

/* Imagem de fundo, não vídeo: o material do Oro tem vídeos, mas todos com
   texto queimado na imagem, que brigaria com o título. A perspectiva do Deck
   Sunset no fim de tarde já traz o bronze da marca e deixa a parte de baixo
   escura, que é onde o texto entra.
   `svh` em vez de `vh`: no celular, `100vh` conta a barra do navegador que
   some ao rolar, e o hero fica alto demais. */
.oro-hero {
  position: relative;
  min-height: 100svh;
  width: 100%;
  overflow: hidden;
  background: var(--oro-deep);
}
/* 🚨 O prefixo `.oro` salva o topo inteiro. Sem ele, `.oro img { height: auto }`
   (0,1,1) vence `.oro-hero__bg` (0,1,0) e a foto de fundo perde a altura: fica
   uma FAIXA de 211px no celular, com o resto do topo em marrom liso. No desktop
   quase não se via, porque a 1280px de largura a imagem 16:9 já dá ~720px de
   altura e cobre quase tudo. Achado em 14/08/2026 por um print da Ana. */
.oro .oro-hero__bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.oro-hero__scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom,
    rgba(28, 16, 6, .70) 0%,
    rgba(28, 16, 6, .34) 40%,
    rgba(28, 16, 6, .90) 100%);
}
.oro-hero__inner {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 100svh;
  max-width: 1180px;
  margin-inline: auto;
  padding: 7rem var(--oro-pad) 3.5rem;
}
@media (min-width: 768px) { .oro-hero__inner { padding-bottom: 5rem; } }

.oro-hero__anim { animation: oro-fade-up 900ms ease-out both; }
@keyframes oro-fade-up {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: none; }
}

/* Piso baixado de 150px para 110px em 14/08/2026 (Ana: a logo estava grande
   demais no celular). Só o piso mudou — de 550px de janela para cima o
   `20vw` continua mandando e o desktop está igual ao que era. */
.oro-hero__logo {
  width: clamp(110px, 20vw, 210px);
  height: auto;
  margin-bottom: 1.5rem;
  filter: drop-shadow(0 2px 12px rgba(0,0,0,.5));
}
.oro-hero__place {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 1.25rem !important;
  padding-left: 0.75rem;
  border-left: 2px solid var(--oro-gold);
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: #EBD8C4;
}
.oro-hero__place span { color: rgba(255,255,255,.4); }

.oro-hero__title {
  max-width: 20ch;
  font-family: var(--oro-serif);
  font-size: clamp(2.4rem, 8vw, 4.4rem);
  font-weight: 200;
  line-height: 1.06;
  color: #FFFFFF;
  text-shadow: 0 2px 24px rgba(0,0,0,.4);
}
/* Mesma armadilha do reset: `.oro h1{font-weight:400}` tem especificidade
   maior que `.oro-hero__title`, então o peso fino do título do hero não
   valeria. Com o `.oro` na frente, vale. */
.oro .oro-hero__title { font-weight: 200; }
.oro-hero__title em { font-style: normal; font-weight: 500; color: var(--oro-sand); }

.oro-hero__lead {
  margin-top: 1.25rem !important;
  max-width: 40rem;
  font-size: clamp(0.98rem, 1.9vw, 1.12rem);
  color: #E3D2C1;
  text-shadow: 0 1px 12px rgba(0,0,0,.45);
}
.oro-hero__lead strong { color: #FFFFFF; font-weight: 600; }

.oro-hero__facts {
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem 2.5rem;
  max-width: 48rem;
}
/* 🚨 Precisa do `.oro` na frente: sem ele o reset `.oro ul{margin:0}` vence
   por especificidade e a margem simplesmente não acontece. */
.oro .oro-hero__facts { margin-top: 2.25rem; }
.oro-hero__fact { border-left: 2px solid var(--oro-gold); padding-left: 0.875rem; }
.oro-hero__fact-k {
  display: block;
  font-family: var(--oro-serif);
  font-size: clamp(1.05rem, 2.2vw, 1.25rem);
  font-weight: 500;
  line-height: 1.2;
  color: #FFFFFF;
}
.oro-hero__fact-v {
  display: block;
  margin-top: 0.2rem;
  font-size: 0.78rem;
  color: #C9B49F;
}

.oro-hero__actions { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 2.25rem; }

/* Botão secundário sobre a foto: contorno claro, sem fundo. */
.oro-btn--onphoto {
  background: rgba(255,255,255,.08);
  color: #FFFFFF;
  border-color: rgba(255,255,255,.55);
  backdrop-filter: blur(2px);
}
.oro-btn--onphoto:hover { background: #FFFFFF; color: var(--oro-deep); border-color: #FFFFFF; }

@media (prefers-reduced-motion: reduce) {
  .oro-hero__anim { animation: none; }
}

/* --- Oferta: parcelas fixas ------------------------------------------------
   Bloco escuro entre o hero e os números, como no Elos e no Pura. Quem sinaliza
   a oferta aqui é o contraste com as seções claras em volta, não uma cor de
   fora da paleta — a arte da campanha é bronze com dourado, que já é
   exatamente o sistema do Oro. */

.oro-oferta {
  background: var(--oro-deep);
  padding: clamp(2.5rem, 6vw, 4.25rem) var(--oro-pad);
}
.oro-oferta__box {
  max-width: 700px;
  margin-inline: auto;
  text-align: center;
  color: #F2E7DC;
}
.oro-oferta__tag {
  font-size: 0.72rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--oro-gold);
  margin-bottom: 1rem !important;
}
.oro-oferta h2 {
  font-family: var(--oro-serif);
  font-size: clamp(1.9rem, 5.5vw, 3rem);
  font-weight: 200;
  /* Fonte fina e corpo grande em duas linhas precisam de respiro: 1.1 deixava a
     segunda linha encostada na primeira. */
  line-height: 1.16;
  color: #FFFFFF;
}
.oro-oferta h2 strong { font-weight: 500; color: var(--oro-sand); }
.oro-oferta__texto {
  margin-top: 1.75rem !important;
  color: #DCC6AF;
  font-size: 1.02rem;
}
.oro-oferta__prazo {
  margin-top: 1.25rem !important;
  font-size: 0.92rem;
  color: #F2E7DC;
}
.oro-oferta__prazo strong { color: var(--oro-gold); }
/* Dentro do bloco escuro, o botão bronze sumiria no fundo. Branco com texto
   escuro é o que mais salta — e é o contraste mais alto da página. */
.oro-oferta .oro-btn { margin-top: 1.75rem; }
.oro-oferta .oro-btn--primary { background: #FFFFFF; color: var(--oro-deep); }
.oro-oferta .oro-btn--primary:hover { background: var(--oro-gold); color: #FFFFFF; }
.oro-oferta__fine {
  margin-top: 1rem !important;
  font-size: 0.78rem;
  color: #B99C81;
}

/* Aviso da mesma condição, repetido ao lado do formulário. */
.oro-cta__flag {
  margin-top: 1.5rem !important;
  padding: 0.7rem 1rem;
  border-left: 3px solid var(--oro-gold);
  background: rgba(255,255,255,.06);
  border-radius: 0 4px 4px 0;
  font-size: 0.92rem;
  color: #F2E7DC;
}

/* --- Números -------------------------------------------------------------- */

.oro-numeros {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  background: var(--oro-line);
  border-block: 1px solid var(--oro-line);
}
.oro-numero {
  background: var(--oro-paper);
  padding: clamp(1.5rem, 4vw, 2.5rem) 1.25rem;
  text-align: center;
}
.oro-numero__n {
  display: block;
  font-family: var(--oro-serif);
  font-size: clamp(2rem, 5vw, 3rem);
  line-height: 1;
  color: var(--oro-bronze);
}
.oro-numero__l {
  display: block;
  margin-top: 0.4rem;
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--oro-deep);
}
.oro-numero__d {
  display: block;
  margin-top: 0.35rem;
  font-size: 0.78rem;
  color: var(--oro-mute);
}
@media (min-width: 720px) { .oro-numeros { grid-template-columns: repeat(4, 1fr); } }

/* --- Ornare: a assinatura ------------------------------------------------- */
/* Bloco próprio do Oro, que não existe nas outras LPs: a marca de mobiliário
   é o argumento central do produto, e as praças internacionais dela (Hudson
   Yards, Ritz-Carlton, Fendi Château) fazem o trabalho de posicionamento
   melhor do que qualquer adjetivo que eu escrevesse. */
.oro-marca { display: grid; gap: clamp(1.75rem, 5vw, 3rem); }
@media (min-width: 900px) { .oro-marca { grid-template-columns: 1fr 1fr; align-items: center; } }

.oro-marca__enderecos {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  background: rgba(255,255,255,.18);
  border: 1px solid rgba(255,255,255,.18);
}
.oro-marca__end { background: var(--oro-deep); padding: 1.1rem 1.2rem; }
.oro-marca__end strong {
  display: block;
  font-size: 0.98rem;
  font-weight: 500;
  color: #FFFFFF;
  line-height: 1.3;
}
.oro-marca__end span {
  display: block;
  margin-top: 0.25rem;
  font-size: 0.78rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--oro-sand);
}
.oro .oro-marca__entrega { margin-top: 0; display: grid; gap: 0.6rem; }
.oro-marca__entrega li {
  position: relative;
  padding-left: 1.35rem;
  font-size: 0.95rem;
  color: #DCC6AF;
}
.oro-marca__entrega li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.62em;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--oro-gold);
}

/* --- Grades de cards ------------------------------------------------------ */

.oro-grid { display: grid; gap: clamp(1rem, 2.5vw, 1.5rem); grid-template-columns: 1fr; }
@media (min-width: 640px) {
  .oro-grid--2, .oro-grid--3, .oro-grid--4 { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 980px) {
  .oro-grid--3 { grid-template-columns: repeat(3, 1fr); }
  .oro-grid--4 { grid-template-columns: repeat(4, 1fr); }
}

.oro-card { display: flex; flex-direction: column; }
.oro-card__btn {
  display: block;
  width: 100%;
  padding: 0;
  border: 0;
  background: var(--oro-line);
  border-radius: 5px;
  overflow: hidden;
  cursor: zoom-in;
}
.oro-card__btn img {
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  transition: transform .5s ease;
}
.oro-card__btn:hover img { transform: scale(1.03); }
.oro-card figcaption { padding-top: 0.75rem; }
.oro-card figcaption strong {
  display: block;
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--oro-deep);
}
.oro-card figcaption span {
  display: block;
  margin-top: 0.15rem;
  font-size: 0.83rem;
  color: var(--oro-mute);
  line-height: 1.45;
}
.oro-card--dark figcaption strong { color: #FFFFFF; }
.oro-card--dark figcaption span { color: #C2A78E; }
.oro-card--dark .oro-card__btn { background: #43290F; }

/* --- Grade "de revista" (decorado de 227 m²) -------------------------------
   Pedido da Ana em 13/08/2026: a varanda e a suíte ocupam o dobro da largura.
   A ordem da lista `dec227` é calculada para fechar 3 linhas cheias — 2+1+1+
   1+1+2+1 = 9 células. Mexer na quantidade de fotos sem refazer a conta abre um
   buraco na grade. */
@media (min-width: 640px) {
  .oro-grid--revista .oro-card--destaque { grid-column: span 2; }
  /* Recorte mais panorâmico no card largo: com 3/2 ele ficaria muito mais alto
     que as vizinhas e a linha inteira ganharia um degrau. */
  .oro-grid--revista .oro-card--destaque .oro-card__btn img { aspect-ratio: 21 / 9; }
  /* E as vizinhas crescem para acompanhar a altura da linha, em vez de deixarem
     um vão embaixo. O aspect-ratio continua servindo de altura mínima nas
     linhas que não têm card largo nenhum. */
  .oro-grid--revista .oro-card__btn { flex: 1; }
  .oro-grid--revista .oro-card__btn img { height: 100%; }
}

/* Card em retrato — a foto vertical da fachada com o letreiro dourado. Recortada
   em 3/2 como as outras, ela perderia justamente o topo da torre.
   Ela ocupa DUAS linhas da grade, e a seção tem 1 retrato + 4 paisagens = 6
   células, que fecham exatamente 2 linhas de 3 colunas. Mudar a quantidade de
   fotos da seção da obra sem refazer essa conta deixa um buraco na grade. */
@media (min-width: 640px) {
  .oro-card--retrato { grid-row: span 2; }
  .oro-card--retrato .oro-card__btn { flex: 1; }
  .oro-card--retrato .oro-card__btn img { aspect-ratio: auto; height: 100%; object-fit: cover; }
}
/* Numa coluna só (celular) não há linha para expandir: volta a ser um card
   normal, com a proporção original da foto. */
@media (max-width: 639px) {
  .oro-card--retrato .oro-card__btn img { aspect-ratio: 3 / 4; }
}

/* Plantas são desenhos técnicos: fundo branco e a imagem inteira à vista. */
.oro-grid--plantas { margin-top: clamp(2rem, 5vw, 3rem); }
.oro-card--planta .oro-card__btn { background: var(--oro-paper); border: 1px solid var(--oro-line); }
/* A proporção fica fixa mesmo antes da imagem carregar. Com `aspect-ratio:auto`
   o botão colapsa para uns 26px e a grade inteira pula quando a planta (lazy)
   chega. */
.oro-card--planta .oro-card__btn img {
  aspect-ratio: 31 / 20;
  object-fit: contain;
  padding: 0.75rem;
}

/* --- Panorâmicas do decorado de 178 m² (Collar) ----------------------------
   As três imagens do Collar são panoramas de 8000 px de largura — a sala chega
   a 5,6:1. Recortá-las em 3/2 como os outros cards jogaria fora justamente o
   que elas têm de melhor: a varanda vai da Pedra da Gávea à Praia da Barra num
   quadro só.

   Em tela larga (>= 980px) elas aparecem INTEIRAS, de ponta a ponta da janela.
   Não há lightbox aqui de propósito: o `.oro-lb figure` trava em 1100px, o que
   deixaria a sala com 196px de altura — MENOR do que já está na página. Sangrar
   na largura toda já é a maior versão possível.

   No celular esse formato não existe: a 5,6:1, uma faixa de 375px teria 67px de
   altura. Lá cada panorâmica vira uma faixa ALTA que se arrasta para o lado
   dentro do próprio quadro — a página nunca rola na horizontal.

   ⚠️ Os seletores de imagem são DUPLOS (`.oro .oro-pano__vis img`) porque o
   reset `.oro img { max-width:100%; height:auto }` tem a mesma especificidade e
   venceria por ordem se alguém movesse este bloco para cima no arquivo. */

/* `minmax(0, 1fr)` e o `min-width:0` não são enfeite. A figura é item de grade
   e item de grade tem `min-width:auto`, ou seja, se recusa a encolher abaixo do
   conteúdo. Como a imagem do celular tem 4038px de largura real, uma trilha
   `auto` pode resolver para a largura MÁXIMA do conteúdo em vez da largura da
   janela — e aí quem rola para o lado é a página inteira, não a faixa. Com a
   trilha travada em 0 o estouro fica impossível, independentemente do
   navegador. */
.oro-panos { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(2.75rem, 6vw, 4.5rem); }
.oro-pano { min-width: 0; }

.oro-pano__vis { background: #3F2711; overflow: hidden; max-width: 100%; }
.oro .oro-pano__vis img { width: 100%; height: auto; }

.oro-pano figcaption {
  max-width: 1180px;
  margin-inline: auto;
  padding: 1.1rem var(--oro-pad) 0;
}
.oro-pano figcaption strong {
  display: block;
  font-size: 1.02rem;
  font-weight: 500;
  color: #FFFFFF;
}
.oro-pano figcaption span {
  display: block;
  margin-top: 0.2rem;
  font-size: 0.88rem;
  color: #DCC6AF;
  line-height: 1.5;
}
/* Some em tela larga, onde a panorâmica já cabe inteira. O seletor precisa ser
   mais específico que `.oro-pano figcaption span`, senão o `display:block` dele
   ganha e a dica aparece no desktop. */
.oro-pano figcaption .oro-pano__dica { display: none; }

@media (max-width: 979px) {
  .oro-pano__vis {
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-x: contain;
    -webkit-overflow-scrolling: touch;
  }
  .oro .oro-pano__vis img {
    width: auto;
    max-width: none;
    height: min(58vh, 460px);
  }
  .oro-pano figcaption .oro-pano__dica {
    display: block;
    margin-top: 0.5rem;
    font-size: 0.74rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--oro-sand);
  }
}

/* --- Diferenciais --------------------------------------------------------- */

.oro-difs {
  display: grid;
  gap: 1.5rem;
  margin-top: clamp(2.5rem, 6vw, 4rem);
}
@media (min-width: 820px) { .oro-difs { grid-template-columns: 1.4fr 1fr; } }

.oro-difs__col {
  padding: clamp(1.5rem, 3.5vw, 2.25rem);
  background: var(--oro-paper);
  border: 1px solid var(--oro-line);
  border-radius: 6px;
}
.oro-difs__col--accent { background: var(--oro-deep); border-color: var(--oro-deep); }
.oro-difs__col h3 {
  font-family: var(--oro-serif);
  font-size: 1.4rem;
  color: var(--oro-deep);
  margin-bottom: 1rem;
}
.oro-difs__col--accent h3 { color: #FFFFFF; }
.oro-difs__col ul { display: grid; gap: 0.6rem; }
.oro-difs__col li {
  position: relative;
  padding-left: 1.35rem;
  font-size: 0.93rem;
  color: var(--oro-mute);
}
.oro-difs__col li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.6em;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--oro-gold);
}
.oro-difs__col--accent li { color: #DCC6AF; }

/* --- Tipologias por edifício ---------------------------------------------- */

.oro-tipos { display: grid; gap: 1.5rem; }
@media (min-width: 760px) { .oro-tipos { grid-template-columns: repeat(2, 1fr); } }

.oro-tipo {
  padding: clamp(1.25rem, 3vw, 2rem);
  border: 1px solid var(--oro-line);
  border-radius: 6px;
  background: var(--oro-cream);
}
/* Os edifícios que ainda não abriram vendas entram apagados de propósito: a
   página precisa dizer que eles existem (senão a conta de 6 torres não fecha)
   sem convidar ninguém a pedir uma unidade que não está à venda. */
.oro-tipo--fechado { background: transparent; border-style: dashed; }
.oro-tipo h3 {
  font-family: var(--oro-serif);
  font-size: 1.5rem;
  color: var(--oro-deep);
  margin-bottom: 0.35rem;
}
.oro-tipo__selo {
  display: inline-block;
  margin-bottom: 0.75rem;
  padding: 0.2rem 0.6rem;
  border-radius: 999px;
  background: var(--oro-bronze);
  font-size: 0.68rem;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #FFFFFF;
}
.oro-tipo__selo--fechado { background: transparent; border: 1px solid var(--oro-mute); color: var(--oro-mute); }
.oro-tipo tr { border-top: 1px solid var(--oro-line); }
.oro-tipo tr:first-child { border-top: 0; }
.oro-tipo th {
  text-align: left;
  padding: 0.7rem 0;
  font-weight: 500;
  font-size: 0.95rem;
  color: var(--oro-ink);
}
.oro-tipo th span {
  display: block;
  font-weight: 400;
  font-size: 0.78rem;
  color: var(--oro-mute);
}
.oro-tipo td {
  text-align: right;
  padding: 0.7rem 0;
  font-size: 0.95rem;
  color: var(--oro-bronze);
  white-space: nowrap;
}

.oro-nota {
  margin-top: 1.5rem !important;
  font-size: 0.78rem;
  color: var(--oro-mute);
  max-width: 44rem;
}
.oro-sec--dark .oro-nota { color: #B99C81; }

/* --- Aviso sobre a vista -------------------------------------------------- */
/* A vista para a lagoa é o que move o comprador do Oro, e ela NÃO é igual em
   todas as torres. Prometer vista de lagoa para o prédio inteiro traz visita
   que desiste ao abrir a janela: anúncio e tempo de corretora jogados fora.
   Este bloco existe para transformar a diferença em conversa em vez de
   frustração. */
.oro-vista {
  margin-top: clamp(2rem, 5vw, 3rem);
  padding: clamp(1.25rem, 3vw, 1.75rem);
  border-left: 3px solid var(--oro-gold);
  background: var(--oro-paper);
  border-radius: 0 5px 5px 0;
}
.oro-sec--dark .oro-vista { background: rgba(255,255,255,.06); }
.oro-vista strong { display: block; font-weight: 500; color: var(--oro-deep); }
.oro-sec--dark .oro-vista strong { color: #FFFFFF; }
.oro .oro-vista p { margin-top: 0.4rem; font-size: 0.93rem; color: var(--oro-mute); }
.oro-sec--dark .oro-vista p { color: #DCC6AF; }

/* A aérea que ancora a tabela de vistas. Proporção fixa para a grade não pular
   enquanto a imagem (lazy) não chega. */
/* ⚠️ O prefixo `.oro` aqui e na implantação abaixo é OBRIGATÓRIO, não estilo.
   As duas são <figure>, e o reset `.oro figure { margin: 0 }` tem
   especificidade (0,1,1) contra (0,1,0) de `.oro-aerea` — ele vence e zera
   tudo. Sem o prefixo estas margens simplesmente não acontecem. Foi isso que
   deixou a implantação grudada na esquerda, com 640px de vazio ao lado, de
   12/08 a 14/08/2026: o `margin-inline: auto` estava escrito e morto. */
.oro .oro-aerea { margin-top: clamp(1.5rem, 4vw, 2.25rem); }
.oro-aerea .oro-card__btn { background: var(--oro-cream); }
.oro-aerea .oro-card__btn img { aspect-ratio: 156 / 70; object-fit: cover; }
.oro .oro-aerea figcaption {
  margin-top: 0.75rem;
  font-size: 0.85rem;
  line-height: 1.5;
  color: var(--oro-mute);
}
.oro-aerea figcaption strong { color: var(--oro-bronze); font-weight: 600; }

/* A implantação. É um desenho técnico: fundo branco, imagem inteira à vista e
   largura contida — em 1180px ela esticaria a ponto de parecer um erro. */
.oro .oro-implantacao {
  margin-top: clamp(1.5rem, 4vw, 2.25rem);
  /* 626px é a largura NATIVA do arquivo. Não aumente: é desenho de linha com
     rótulos pequenos (BL. 1 TIARA, 01 a 04) e acima disso borra. Centralizada,
     a diferença para a aérea logo acima (1100px) lê como respiro; encostada na
     esquerda, lia como defeito. */
  max-width: 626px;
  margin-inline: auto;
}
.oro-implantacao .oro-card__btn { background: var(--oro-paper); border: 1px solid var(--oro-line); }
.oro-implantacao .oro-card__btn img {
  aspect-ratio: 313 / 350;
  object-fit: contain;
  padding: 0.5rem;
}
.oro .oro-implantacao figcaption {
  margin-top: 0.75rem;
  font-size: 0.83rem;
  line-height: 1.5;
  color: var(--oro-mute);
  text-align: center;
}
.oro-implantacao figcaption strong { color: var(--oro-bronze); font-weight: 600; }

/* A tabela de vista por coluna. Um card por edifício à venda; a linha da lagoa
   vem destacada, porque é ela que o comprador está procurando. */
.oro-vistas {
  display: grid;
  gap: 1.25rem;
  margin-top: clamp(1.25rem, 3vw, 1.75rem);
}
/* Quatro edifícios à venda: 2×2 em vez de uma fileira de 4. Com 4 colunas os
   cards ficariam com ~270px e o texto da vista quebraria em toda linha. */
@media (min-width: 720px) { .oro-vistas { grid-template-columns: repeat(2, 1fr); } }

.oro-vista-card {
  padding: clamp(1.25rem, 3vw, 1.75rem);
  border: 1px solid var(--oro-line);
  border-radius: 6px;
  background: var(--oro-cream);
}
.oro-vista-card h3 {
  font-family: var(--oro-serif);
  font-size: 1.4rem;
  color: var(--oro-deep);
  margin-bottom: 0.35rem;
}
.oro .oro-vista-card dl { margin-top: 0.9rem; }
.oro-vista-card__row {
  padding: 0.7rem 0;
  border-top: 1px solid var(--oro-line);
}
.oro-vista-card__row:first-child { border-top: 0; }
.oro .oro-vista-card__row dt {
  font-size: 0.8rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--oro-mute);
}
.oro .oro-vista-card__row dd {
  margin: 0.2rem 0 0;
  font-size: 0.95rem;
  line-height: 1.45;
  color: var(--oro-ink);
}
/* A vista da lagoa é a que vende: filete dourado e texto em bronze. */
.oro-vista-card__row--lagoa {
  margin-inline: calc(clamp(1.25rem, 3vw, 1.75rem) * -1);
  padding-inline: clamp(1.25rem, 3vw, 1.75rem);
  border-left: 3px solid var(--oro-gold);
  background: var(--oro-paper);
}
.oro .oro-vista-card__row--lagoa dd { font-weight: 600; color: var(--oro-bronze); }

/* A segunda leitura do mesmo prédio: as faces que dão para outras torres. Vem
   em corpo menor, para não competir com a linha principal. */
.oro .oro-vista-card__nota {
  margin-top: 0.9rem;
  padding-top: 0.9rem;
  border-top: 1px solid var(--oro-line);
  font-size: 0.83rem;
  line-height: 1.5;
  color: var(--oro-mute);
}

/* --- Momentos de lazer ---------------------------------------------------- */

.oro-momento { margin-top: clamp(2.5rem, 6vw, 4rem); }
.oro-momento:first-of-type { margin-top: 0; }
.oro-momento__head { margin-bottom: 1.5rem; max-width: 40rem; }
.oro-momento__head h3 {
  font-family: var(--oro-serif);
  font-size: clamp(1.4rem, 3vw, 1.9rem);
  color: #FFFFFF;
}
.oro-momento__head p {
  margin-top: 0.5rem !important;
  font-size: 0.95rem;
  color: #C2A78E;
}

.oro-facilities {
  margin-top: clamp(2.5rem, 6vw, 4rem);
  padding-top: clamp(1.75rem, 4vw, 2.5rem);
  border-top: 1px solid rgba(255,255,255,.16);
}
.oro-facilities h3 {
  font-family: var(--oro-serif);
  font-size: 1.3rem;
  color: #FFFFFF;
  margin-bottom: 1rem;
}
.oro-facilities ul { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.oro-facilities li {
  padding: 0.45rem 0.95rem;
  border: 1px solid rgba(255,255,255,.25);
  border-radius: 999px;
  font-size: 0.85rem;
  color: #DCC6AF;
}

/* A mesma lista de pastilhas, na seção clara (serviços pay-per-use). */
.oro-facilities--light {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
  margin-bottom: clamp(2.5rem, 6vw, 3.5rem);
}
.oro-facilities--light h3 { color: var(--oro-deep); }
.oro-facilities--light li {
  border-color: var(--oro-gold);
  background: var(--oro-paper);
  color: var(--oro-ink);
}

/* --- Segurança ------------------------------------------------------------ */

.oro-seg { display: grid; gap: 1.25rem; }
@media (min-width: 720px) { .oro-seg { grid-template-columns: repeat(2, 1fr); } }
.oro-seg__item {
  padding: clamp(1.25rem, 3vw, 1.75rem);
  background: var(--oro-paper);
  border-left: 3px solid var(--oro-gold);
  border-radius: 0 5px 5px 0;
}
.oro-seg__item h3 {
  font-size: 1.02rem;
  font-weight: 500;
  color: var(--oro-deep);
}
.oro-seg__item p {
  margin-top: 0.35rem !important;
  font-size: 0.9rem;
  color: var(--oro-mute);
}

/* --- Ficha técnica -------------------------------------------------------- */

.oro-ficha { border-top: 1px solid var(--oro-line); }
.oro-ficha__row {
  display: grid;
  gap: 0.15rem;
  padding: 0.9rem 0;
  border-bottom: 1px solid var(--oro-line);
}
.oro-ficha dt {
  font-size: 0.78rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--oro-mute);
}
.oro-ficha dd { font-size: 0.98rem; color: var(--oro-ink); }
@media (min-width: 640px) {
  .oro-ficha__row { grid-template-columns: 15rem 1fr; gap: 1.5rem; align-items: baseline; }
}

/* --- Por que falar com a Ana ---------------------------------------------- */

.oro-ana { display: grid; gap: clamp(1.75rem, 5vw, 3.5rem); align-items: center; }
@media (min-width: 880px) { .oro-ana { grid-template-columns: 0.8fr 1fr; } }

.oro-ana__fig img {
  width: 100%;
  max-width: 420px;
  border-radius: 8px;
  aspect-ratio: 1 / 1;
  object-fit: cover;
}
.oro-ana__texto h2 {
  font-family: var(--oro-serif);
  font-size: clamp(1.8rem, 4.2vw, 2.7rem);
  line-height: 1.12;
  color: var(--oro-deep);
}
.oro .oro-ana__razoes { display: grid; gap: 1rem; margin-top: 1.75rem; }
.oro-ana__razoes li { display: flex; gap: 0.75rem; align-items: flex-start; }
.oro-ana__dot {
  flex: 0 0 auto;
  width: 8px;
  height: 8px;
  margin-top: 0.5rem;
  border-radius: 50%;
  background: var(--oro-gold);
}
.oro-ana__razoes p { font-size: 0.95rem; color: var(--oro-mute); }
.oro-ana__assina {
  margin-top: 1.75rem !important;
  margin-bottom: 1.25rem !important;
  font-size: 0.88rem;
  font-weight: 500;
  color: var(--oro-deep);
}

/* --- CTA e formulário ----------------------------------------------------- */

.oro-cta__grid { display: grid; gap: clamp(2rem, 5vw, 3.5rem); }
@media (min-width: 900px) { .oro-cta__grid { grid-template-columns: 1fr 26rem; align-items: start; } }

.oro-cta__texto h2 {
  font-family: var(--oro-serif);
  font-size: clamp(1.9rem, 4.5vw, 2.9rem);
  line-height: 1.12;
  color: #FFFFFF;
}
.oro-cta__texto .oro-lead { color: #DCC6AF; }
.oro-cta__assina { margin-top: 1.75rem !important; }
.oro-cta__assina strong { display: block; font-size: 1.05rem; color: #FFFFFF; font-weight: 500; }
.oro-cta__assina span { font-size: 0.88rem; color: #C2A78E; }

.oro-form {
  padding: clamp(1.5rem, 4vw, 2.25rem);
  background: var(--oro-paper);
  border-radius: 8px;
  color: var(--oro-ink);
}
.oro-form h3 {
  font-family: var(--oro-serif);
  font-size: 1.5rem;
  color: var(--oro-deep);
  margin-bottom: 1.25rem;
}
.oro-form label {
  display: block;
  margin-bottom: 0.9rem;
  font-size: 0.82rem;
  font-weight: 500;
  color: var(--oro-deep);
}
.oro-form__opt { font-weight: 400; color: var(--oro-mute); }
.oro-form input,
.oro-form select,
.oro-form textarea {
  display: block;
  width: 100%;
  min-height: 46px;
  margin-top: 0.35rem;
  padding: 0.7rem 0.85rem;
  border: 1px solid var(--oro-line);
  border-radius: 4px;
  font-family: var(--oro-sans);
  font-size: 0.95rem;
  font-weight: 400;
  color: var(--oro-ink);
  background: var(--oro-paper);
}
.oro-form textarea { min-height: auto; resize: vertical; }
.oro-form input:focus,
.oro-form select:focus,
.oro-form textarea:focus {
  outline: 2px solid var(--oro-bronze);
  outline-offset: 1px;
  border-color: transparent;
}
.oro-form__submit { width: 100%; margin-top: 0.5rem; }
.oro-form__fine {
  margin-top: 0.9rem !important;
  font-size: 0.75rem;
  color: var(--oro-mute);
  line-height: 1.5;
}

/* --- Vitrine dos condomínios vizinhos ------------------------------------- */
/* O componente é compartilhado e traz as próprias cores padrão; aqui só
   amarramos ele à paleta desta LP. Ver ilhapura_condominios.css. */
.oro .ipc {
  --ipc-fundo:  var(--oro-cream);
  --ipc-acento: var(--oro-bronze);
  --ipc-escuro: var(--oro-deep);
  --ipc-tinta:  var(--oro-ink);
  --ipc-suave:  var(--oro-mute);
  --ipc-linha:  var(--oro-line);
}
.oro .ipc h2, .oro .ipc h3 { font-family: var(--oro-serif); }

/* --- Rodapé compartilhado ------------------------------------------------- */
/* Escopado em `.oro`: um `.rlp` solto aqui pintaria o rodapé de todas as
   outras LPs com a paleta do Oro, já que o CSS é um bundle global. */
.oro .rlp {
  --rlp-fundo: #3A2310;
  --rlp-texto: #C2A78E;
  --rlp-linha: rgba(255,255,255,.14);
  --rlp-fraco: #9A7F67;
}

/* --- Lightbox ------------------------------------------------------------- */

.oro-lb {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: grid;
  place-items: center;
  padding: clamp(1rem, 4vw, 3rem);
  background: rgba(20, 12, 5, .94);
}
.oro-lb[hidden] { display: none; }
.oro-lb figure { max-width: min(1100px, 100%); max-height: 100%; }
.oro-lb img {
  max-height: 78vh;
  width: auto;
  margin-inline: auto;
  border-radius: 4px;
  object-fit: contain;
}
.oro-lb figcaption {
  margin-top: 0.9rem;
  text-align: center;
  font-size: 0.9rem;
  color: #DCC6AF;
}
.oro-lb__close {
  position: absolute;
  top: 0.75rem;
  right: 0.75rem;
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 50%;
  background: rgba(255,255,255,.12);
  color: #FFFFFF;
  font-size: 1.6rem;
  line-height: 1;
  cursor: pointer;
}
.oro-lb__close:hover { background: rgba(255,255,255,.24); }

/* --- Revelação no scroll -------------------------------------------------- */

.oro-reveal {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity .6s ease, transform .6s ease;
}
.oro-reveal.is-visible { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  .oro-reveal { opacity: 1; transform: none; transition: none; }
  .oro-card__btn img { transition: none; }
  .oro-faq__item summary,
  .oro-faq__sinal { transition: none; }
}

/* ============================================================================
   Localização + o bairro, e Ir e vir sem barreiras
   Conteúdo compartilhado com Elos e Pura: é o mesmo bairro para todo
   condomínio do Ilha Pura. Aqui só a roupagem muda.
   ========================================================================== */

.oro-ancora { display: block; height: 0; scroll-margin-top: 2rem; }

.oro-loc {
  display: grid;
  gap: clamp(2rem, 5vw, 3.5rem);
  margin-bottom: clamp(2.5rem, 6vw, 4rem);
}
@media (min-width: 900px) { .oro-loc { grid-template-columns: 1fr 1.15fr; align-items: start; } }

.oro .oro-loc__texto h3 {
  margin: 0 0 1rem;
  font-size: clamp(1.4rem, 3vw, 2.1rem);
  line-height: 1.15;
  color: var(--oro-deep);
}
.oro .oro-loc__texto p {
  margin: 0 0 1.6rem;
  font-size: clamp(1rem, 1.9vw, 1.08rem);
  line-height: 1.7;
  color: var(--oro-mute);
  max-width: 40ch;
}

/* Grade de duas colunas com filete de 1px: o próprio `gap` sobre um fundo
   colorido desenha as linhas, sem border em cada célula. */
.oro-loc__lista {
  margin: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: var(--oro-line);
  border: 1px solid var(--oro-line);
}
/* Em 360px (largura comum no Android) as duas colunas não cabiam e a PÁGINA
   INTEIRA passava a rolar para o lado — medido em 14/08/2026. Causa: o `dd` tem
   `white-space:nowrap` e item de grade tem `min-width:auto`, ou seja, se recusa
   a encolher abaixo do conteúdo, então a lista estourava a `.oro-wrap` em 30px.
   Em 375px passava raspando, e era por isso que não tinha aparecido antes.
   Numa coluna só cada item fica com a largura toda e o nowrap deixa de doer. */
@media (max-width: 400px) {
  .oro-loc__lista { grid-template-columns: 1fr; }
}
.oro-loc__item {
  background: var(--oro-paper);
  padding: 0.95rem 1.1rem;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
}
.oro .oro-loc__item dt {
  font-size: 0.92rem;
  font-weight: 500;
  color: var(--oro-ink);
}
/* `dd` tem margin-left de 40px por padrão no navegador e desmontaria a grade. */
.oro .oro-loc__item dd {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--oro-bronze);
  white-space: nowrap;
}

/* --- Ir e vir sem barreiras (seção escura) -------------------------------- */

.oro-acess { display: grid; gap: clamp(2rem, 5vw, 3.5rem); }
@media (min-width: 900px) { .oro-acess { grid-template-columns: 1fr 1.1fr; align-items: center; } }

.oro-acess__fig { margin: 0; }
.oro-acess__fig img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 8px;
}

.oro-sec--dark .oro-acess__texto h2 { color: #FFFFFF; }
.oro-acess__texto h2 em { font-style: italic; color: var(--oro-sand); }
.oro-sec--dark .oro-acess__texto .oro-lead { color: #DCC6AF; }

/* Prefixado: é um <dl>, e `.oro dl { margin: 0 }` vencia. */
.oro .oro-acess__lista {
  margin: clamp(1.75rem, 4vw, 2.5rem) 0 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: rgba(255, 255, 255, 0.18);
  border: 1px solid rgba(255, 255, 255, 0.18);
}
.oro-acess__item { background: var(--oro-deep); padding: 1.1rem 1.2rem; }
.oro .oro-acess__item dt {
  margin-bottom: 0.3rem;
  font-size: 1.05rem;
  font-weight: 600;
  color: #FFFFFF;
}
.oro .oro-acess__item dd {
  margin: 0;
  font-size: 0.86rem;
  line-height: 1.5;
  color: #C9B49F;
}

/* ============================================================================
   Perguntas frequentes — <details>/<summary> nativo, sem JS
   ========================================================================== */
.oro-faq { border-top: 1px solid var(--oro-line); }

.oro-faq__item { border-bottom: 1px solid var(--oro-line); }

.oro-faq__item summary {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1.5rem;
  padding-block: 1.15rem;
  cursor: pointer;
  font-size: clamp(1rem, 1.9vw, 1.1rem);
  font-weight: 500;
  color: var(--oro-deep);
  line-height: 1.45;
  transition: color 0.2s ease;
}
/* O triângulo padrão não é estilizável e aparece diferente em cada navegador.
   Tirado nos dois dialetos: `list-style` cobre Chrome/Firefox, o
   pseudo-elemento `::-webkit-details-marker` cobre o Safari. */
.oro-faq__item summary { list-style: none; }
.oro-faq__item summary::-webkit-details-marker { display: none; }
.oro-faq__item summary:hover { color: var(--oro-gold); }
.oro-faq__item summary:focus-visible {
  outline: 2px solid var(--oro-bronze);
  outline-offset: 3px;
  border-radius: 2px;
}

/* Sinal de + que vira − quando abre. Dois traços em vez de texto: não depende
   de fonte e fica alinhado em qualquer tamanho de tela. */
.oro-faq__sinal {
  position: relative;
  flex: 0 0 auto;
  width: 0.85rem;
  height: 0.85rem;
  margin-top: 0.35rem;
  transition: transform 0.25s ease;
}
.oro-faq__sinal::before,
.oro-faq__sinal::after {
  content: "";
  position: absolute;
  inset: 50% 0 auto 0;
  height: 1.5px;
  background: var(--oro-gold);
}
.oro-faq__sinal::after { transform: rotate(90deg); }
.oro-faq__item[open] .oro-faq__sinal { transform: rotate(45deg); }
.oro-faq__item[open] summary { color: var(--oro-bronze); }

/* `.oro p { margin: 0 }` tem a mesma especificidade que `.oro-faq__resposta p`
   e venceria por ordem se este arquivo mudasse de posição no bundle. O `.oro`
   na frente garante a margem independente disso. */
.oro-faq__resposta { padding: 0 0 1.4rem; max-width: 46rem; }
.oro .oro-faq__resposta p {
  margin: 0;
  font-size: clamp(0.95rem, 1.7vw, 1.03rem);
  line-height: 1.7;
  color: var(--oro-mute);
}

.oro .oro-faq__rodape {
  margin-top: 2rem;
  font-size: 0.95rem;
  color: var(--oro-mute);
}
.oro-faq__rodape a {
  color: var(--oro-bronze);
  font-weight: 500;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.oro-faq__rodape a:hover { color: var(--oro-gold); }
/* ===========================================================================
   PURA — Ilha Pura · /pura
   TODAS as classes começam com .pura. O application.css faz require_tree, ou
   seja, este arquivo entra num bundle global junto com onlife.css, astra.css e
   symphony.css — sem o prefixo, uma regra daqui quebraria as outras LPs.
   =========================================================================== */

/* Paleta e tipografia MEDIDAS na página oficial do Pura
   (ilhapura.com.br/empreendimentos/pura-por-artefacto), em 11/08/2026 — não
   inventadas.

   🚨 A primeira versão desta LP foi feita ANTES de eu ter a página oficial: usei
   um verde tirado do wordmark, creme e dourado do flyer da promoção, e a fonte
   Jost "de ouvido". Estava tudo errado — a Ana pegou. Fica o registro para
   ninguém repetir: LP nova só ganha paleta depois de medir a página oficial do
   empreendimento. Palpite a partir de logo e flyer não vale.

   Como funciona o sistema do Ilha Pura: TODOS os empreendimentos usam a mesma
   base (Albert Sans, títulos peso 200 em preto, neutros #F0F0F0/#323232) e cada
   um tem UMA cor própria. A do Elos é #1B4A61; a do Pura é #3C8AA4. */
.pura {
  --pura-deep:   #004964;   /* azul escuro do portal — seções escuras */
  /* Botões e textos de acento ficam num azul escuro, não no #3C8AA4: texto
     branco sobre o azul claro dá 3,9:1 de contraste, abaixo do mínimo de
     leitura. O site da construtora usa assim mesmo; aqui a legibilidade ganha,
     e a cor do Pura aparece nos detalhes (--pura-teal-3), que é onde ela pode
     ser clara sem prejudicar ninguém. */
  --pura-teal:   #1B4A61;
  --pura-teal-2: #7FC4DB;   /* claro — acentos sobre fundo escuro */
  --pura-teal-3: #3C8AA4;   /* A COR DO PURA — filetes, detalhes, destaques */
  --pura-cream:  #F0F0F0;   /* neutro claro do portal — seções alternadas */
  --pura-paper:  #FFFFFF;
  --pura-ink:    #323232;   /* texto e TÍTULOS (no site eles são pretos) */
  --pura-mute:   #6B6B6B;   /* texto secundário */
  --pura-line:   #E0E0E0;

  /* Albert Sans em tudo, como no site inteiro do Ilha Pura. O peso 200 é o dos
     títulos deles — bem mais fino do que o que eu tinha usado. */
  --pura-serif: "Albert Sans", system-ui, -apple-system, sans-serif;
  --pura-sans:  "Albert Sans", system-ui, -apple-system, sans-serif;

  --pura-pad: clamp(1.25rem, 5vw, 2.5rem);

  font-family: var(--pura-sans);
  color: var(--pura-ink);
  background: var(--pura-paper);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

/* Reset local. O seletor precisa ser prefixado nos DOIS níveis: um
   `.pura ul{margin:0}` solto venceria por especificidade qualquer margem que
   as regras de filho tentassem aplicar depois. */
.pura figure { margin: 0; }
.pura img { max-width: 100%; height: auto; display: block; }
.pura h1, .pura h2, .pura h3 { margin: 0; font-weight: 400; letter-spacing: -0.01em; }
.pura p { margin: 0; }
.pura ul { margin: 0; padding: 0; list-style: none; }
.pura table { border-collapse: collapse; width: 100%; }
.pura dl, .pura dd, .pura dt { margin: 0; }
.pura *, .pura *::before, .pura *::after { box-sizing: border-box; }

.pura-wrap {
  width: 100%;
  max-width: 1180px;
  margin-inline: auto;
  padding-inline: var(--pura-pad);
}
.pura-wrap--narrow { max-width: 820px; }

/* --- Blocos de seção ------------------------------------------------------ */

.pura-sec { padding-block: clamp(3.5rem, 9vw, 7rem); }
.pura-sec--light { background: var(--pura-cream); }
.pura-sec--dark  { background: var(--pura-deep); color: #EAF1F3; }

.pura-head { max-width: 46rem; margin-bottom: clamp(2rem, 5vw, 3.5rem); }
/* Peso 200 e cor preta: é assim que a página oficial do Pura escreve os
   títulos de seção (48px, weight 200, #000). */
.pura-head h2 {
  font-family: var(--pura-serif);
  font-size: clamp(1.9rem, 4.6vw, 3.1rem);
  font-weight: 200;
  line-height: 1.12;
  color: var(--pura-ink);
}
.pura-head--invert h2 { color: #FFFFFF; }
.pura-head--invert .pura-lead { color: #C2D4DA; }

.pura-eyebrow {
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--pura-teal);
  margin-bottom: 0.9rem !important;
}
.pura-sec--dark .pura-eyebrow { color: var(--pura-teal-2); }

.pura-lead {
  margin-top: 1.1rem !important;
  font-size: clamp(1rem, 1.9vw, 1.15rem);
  color: var(--pura-mute);
  max-width: 42rem;
}

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

.pura-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;               /* alvo de toque confortável */
  padding: 0.85rem 1.6rem;
  border: 1px solid transparent;
  border-radius: 4px;
  font-family: var(--pura-sans);
  font-size: 0.95rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  text-decoration: none;
  cursor: pointer;
  transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}
.pura-btn--primary { background: var(--pura-teal); color: #FFFFFF; }
.pura-btn--primary:hover { background: var(--pura-deep); }
.pura-btn--ghost {
  background: transparent;
  color: var(--pura-deep);
  border-color: var(--pura-deep);
}
.pura-btn--ghost:hover { background: var(--pura-deep); color: #FFFFFF; }
.pura-sec--dark .pura-btn--ghost { color: #FFFFFF; border-color: rgba(255,255,255,.55); }
.pura-sec--dark .pura-btn--ghost:hover { background: #FFFFFF; color: var(--pura-deep); }

/* --- Hero ----------------------------------------------------------------- */

/* Tela cheia com vídeo de fundo. `svh` em vez de `vh`: no celular, `100vh`
   conta a barra do navegador que some ao rolar, e o hero fica alto demais. */
.pura-hero {
  position: relative;
  min-height: 100svh;
  width: 100%;
  overflow: hidden;
  background: var(--pura-deep);
}
/* 🚨 O prefixo `.pura` salva o topo inteiro. Sem ele, `.pura img { height: auto }`
   (0,1,1) vence `.pura-hero__bg` (0,1,0) e a foto de fundo perde a altura: vira
   uma FAIXA de 211px no celular, com o resto do topo em cor lisa. Mesmo defeito
   que o Oro tinha; encontrado na varredura de 14/08/2026. */
.pura .pura-hero__bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* Escurecimento mais forte embaixo, onde fica o texto, e no topo, para o
   conteúdo não competir com o céu claro do vídeo. */
.pura-hero__scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom,
    rgba(6, 28, 34, .72) 0%,
    rgba(6, 28, 34, .40) 42%,
    rgba(6, 28, 34, .88) 100%);
}
.pura-hero__inner {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 100svh;
  max-width: 1180px;
  margin-inline: auto;
  padding: 7rem var(--pura-pad) 3.5rem;
}
@media (min-width: 768px) { .pura-hero__inner { padding-bottom: 5rem; } }

.pura-hero__anim { animation: pura-fade-up 900ms ease-out both; }
@keyframes pura-fade-up {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: none; }
}

.pura-hero__logo {
  width: clamp(130px, 18vw, 180px);
  height: auto;
  margin-bottom: 1.5rem;
  filter: drop-shadow(0 2px 12px rgba(0,0,0,.45));
}
.pura-hero__place {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 1.25rem !important;
  padding-left: 0.75rem;
  border-left: 2px solid var(--pura-teal-2);
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: #CFE4EA;
}
.pura-hero__place span { color: rgba(255,255,255,.4); }

.pura-hero__title {
  max-width: 20ch;
  font-family: var(--pura-serif);
  font-size: clamp(2.4rem, 8vw, 4.4rem);
  font-weight: 200;
  line-height: 1.06;
  color: #FFFFFF;
  text-shadow: 0 2px 24px rgba(0,0,0,.35);
}
/* Mesma armadilha do reset: `.pura h1{font-weight:400}` tem especificidade
   maior que `.pura-hero__title`, então o peso fino do título do hero nunca
   valia. Com o `.pura` na frente, vale. */
.pura .pura-hero__title { font-weight: 200; }
.pura-hero__title em { font-style: normal; font-weight: 500; color: var(--pura-teal-2); }

.pura-hero__lead {
  margin-top: 1.25rem !important;
  max-width: 40rem;
  font-size: clamp(0.98rem, 1.9vw, 1.12rem);
  color: #D6E4E8;
  text-shadow: 0 1px 12px rgba(0,0,0,.4);
}
.pura-hero__lead strong { color: #FFFFFF; font-weight: 600; }

.pura-hero__facts {
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem 2.5rem;
  max-width: 48rem;
  margin-top: 2.25rem !important;
}
.pura-hero__fact { border-left: 2px solid var(--pura-teal-3); padding-left: 0.875rem; }
.pura-hero__fact-k {
  display: block;
  font-family: var(--pura-serif);
  font-size: clamp(1.05rem, 2.2vw, 1.25rem);
  font-weight: 500;
  line-height: 1.2;
  color: #FFFFFF;
}
.pura-hero__fact-v {
  display: block;
  margin-top: 0.2rem;
  font-size: 0.78rem;
  color: #A9C4CB;
}

.pura-hero__actions { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 2.25rem; }

/* Botão secundário sobre o vídeo: contorno claro, sem fundo. */
.pura-btn--onvideo {
  background: rgba(255,255,255,.08);
  color: #FFFFFF;
  border-color: rgba(255,255,255,.55);
  backdrop-filter: blur(2px);
}
.pura-btn--onvideo:hover { background: #FFFFFF; color: var(--pura-deep); border-color: #FFFFFF; }

@media (prefers-reduced-motion: reduce) {
  .pura-hero__anim { animation: none; }
}

/* O bloco .pura-tour do Elos (vídeo do decorado) foi removido: o material do
   Pura não tem vídeo aproveitável, e regra sem uso pesa no bundle global. */

/* --- Por que falar com a Ana ---------------------------------------------- */

.pura-ana { display: grid; gap: clamp(1.75rem, 5vw, 3.5rem); align-items: center; }
@media (min-width: 880px) { .pura-ana { grid-template-columns: 0.8fr 1fr; } }

.pura-ana__fig img {
  width: 100%;
  max-width: 420px;
  border-radius: 8px;
  aspect-ratio: 1 / 1;
  object-fit: cover;
}
.pura-ana__texto h2 {
  font-family: var(--pura-serif);
  font-size: clamp(1.8rem, 4.2vw, 2.7rem);
  line-height: 1.12;
  color: var(--pura-deep);
}
.pura-ana__razoes { display: grid; gap: 1rem; margin-top: 1.75rem !important; }
.pura-ana__razoes li { display: flex; gap: 0.75rem; align-items: flex-start; }
.pura-ana__dot {
  flex: 0 0 auto;
  width: 8px;
  height: 8px;
  margin-top: 0.5rem;
  border-radius: 50%;
  background: var(--pura-teal-3);
}
.pura-ana__razoes p { font-size: 0.95rem; color: var(--pura-mute); }
.pura-ana__assina {
  margin-top: 1.75rem !important;
  margin-bottom: 1.25rem !important;
  font-size: 0.88rem;
  font-weight: 500;
  color: var(--pura-deep);
}

/* --- Oferta: kit da cobertura (deck, piscina e churrasqueira) --------------
   Bloco escuro entre o hero e os números, como no Elos. A versão anterior era
   creme com dourado, copiada do flyer da promoção — bonita, mas fora do
   sistema do Ilha Pura. Quem sinaliza a oferta aqui é o contraste com as
   seções claras em volta, não uma cor de fora da paleta. */

.pura-oferta {
  background: var(--pura-deep);
  padding: clamp(2.5rem, 6vw, 4.25rem) var(--pura-pad);
}
.pura-oferta__box {
  max-width: 700px;
  margin-inline: auto;
  text-align: center;
  color: #EAF1F3;
}
.pura-oferta__tag {
  font-size: 0.72rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--pura-teal-3);
  margin-bottom: 1rem !important;
}
.pura-oferta h2 {
  font-family: var(--pura-serif);
  font-size: clamp(1.9rem, 5.5vw, 3rem);
  font-weight: 200;
  /* 1.1 apertava demais: o título tem duas linhas e a de baixo encostava nas
     caixas do kit. Com fonte fina e corpo grande, respiro faz diferença. */
  line-height: 1.16;
  color: #FFFFFF;
}
.pura-oferta h2 strong { font-weight: 500; color: var(--pura-teal-2); }

/* Os três itens do kit, do jeito que a arte lista: deck, piscina e
   churrasqueira. Grade e não lista corrida — no celular viram três linhas. */
.pura-oferta__kit {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.75rem;
}
/* 🚨 O seletor precisa do `.pura` na frente. Sem ele, o reset `.pura ul{margin:0}`
   vence por especificidade e a margem simplesmente não acontece — foi por isso
   que o título ficou colado nas caixas do kit, e por isso aumentar o valor
   sozinho não resolvia nada. Mesmo gotcha que está no CLAUDE.md. */
.pura .pura-oferta__kit { margin-top: clamp(2rem, 4vw, 2.75rem); }
@media (max-width: 560px) { .pura-oferta__kit { grid-template-columns: 1fr; } }
.pura-oferta__kit li {
  padding: 0.9rem 0.5rem;
  border: 1px solid rgba(255,255,255,.28);
  border-radius: 4px;
  background: rgba(255,255,255,.06);
  font-size: 0.95rem;
  font-weight: 500;
  color: #FFFFFF;
}
.pura-oferta__texto {
  margin-top: 1.75rem !important;
  color: #C2D4DA;
  font-size: 1.02rem;
}
.pura-oferta__prazo {
  margin-top: 1.25rem !important;
  font-size: 0.92rem;
  color: #EAF1F3;
}
.pura-oferta__prazo strong { color: var(--pura-teal-3); }
/* Dentro do bloco escuro, o botão azul sumiria no fundo. Branco com texto
   escuro é o que mais salta — e é o contraste mais alto da página. */
.pura-oferta .pura-btn { margin-top: 1.75rem; }
.pura-oferta .pura-btn--primary { background: #FFFFFF; color: var(--pura-deep); }
.pura-oferta .pura-btn--primary:hover { background: var(--pura-teal-3); color: #FFFFFF; }
.pura-oferta__fine {
  margin-top: 1rem !important;
  font-size: 0.78rem;
  color: #8FA9B1;
}

/* --- Números -------------------------------------------------------------- */

.pura-numeros {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  background: var(--pura-line);
  border-block: 1px solid var(--pura-line);
}
.pura-numero {
  background: var(--pura-paper);
  padding: clamp(1.5rem, 4vw, 2.5rem) 1.25rem;
  text-align: center;
}
.pura-numero__n {
  display: block;
  font-family: var(--pura-serif);
  font-size: clamp(2rem, 5vw, 3rem);
  line-height: 1;
  color: var(--pura-teal);
}
.pura-numero__l {
  display: block;
  margin-top: 0.4rem;
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--pura-deep);
}
.pura-numero__d {
  display: block;
  margin-top: 0.35rem;
  font-size: 0.78rem;
  color: var(--pura-mute);
}
@media (min-width: 720px) { .pura-numeros { grid-template-columns: repeat(4, 1fr); } }

/* --- Grades de cards ------------------------------------------------------ */

.pura-grid { display: grid; gap: clamp(1rem, 2.5vw, 1.5rem); grid-template-columns: 1fr; }
@media (min-width: 640px) {
  .pura-grid--2, .pura-grid--3, .pura-grid--4 { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 980px) {
  .pura-grid--3 { grid-template-columns: repeat(3, 1fr); }
  .pura-grid--4 { grid-template-columns: repeat(4, 1fr); }
}

.pura-card { display: flex; flex-direction: column; }
.pura-card__btn {
  display: block;
  width: 100%;
  padding: 0;
  border: 0;
  background: var(--pura-line);
  border-radius: 5px;
  overflow: hidden;
  cursor: zoom-in;
}
.pura-card__btn img {
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  transition: transform .5s ease;
}
.pura-card__btn:hover img { transform: scale(1.03); }
.pura-card figcaption { padding-top: 0.75rem; }
.pura-card figcaption strong {
  display: block;
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--pura-deep);
}
.pura-card figcaption span {
  display: block;
  margin-top: 0.15rem;
  font-size: 0.83rem;
  color: var(--pura-mute);
  line-height: 1.45;
}
.pura-card--dark figcaption strong { color: #FFFFFF; }
.pura-card--dark figcaption span { color: #9FB8BF; }
.pura-card--dark .pura-card__btn { background: #10454F; }

/* Plantas são desenhos técnicos: fundo branco e a imagem inteira à vista. */
.pura-grid--plantas { margin-top: clamp(2rem, 5vw, 3rem); }
.pura-card--planta .pura-card__btn { background: var(--pura-paper); border: 1px solid var(--pura-line); }
/* A proporção fica fixa mesmo antes da imagem carregar. Com `aspect-ratio:auto`
   o botão colapsava para ~26px e a grade inteira pulava quando a planta
   (lazy) chegava. */
.pura-card--planta .pura-card__btn img {
  aspect-ratio: 7 / 6;
  object-fit: contain;
  padding: 0.75rem;
}

/* --- Diferenciais --------------------------------------------------------- */

.pura-difs {
  display: grid;
  gap: 1.5rem;
  margin-top: clamp(2.5rem, 6vw, 4rem);
}
@media (min-width: 820px) { .pura-difs { grid-template-columns: 1.4fr 1fr; } }

.pura-difs__col {
  padding: clamp(1.5rem, 3.5vw, 2.25rem);
  background: var(--pura-paper);
  border: 1px solid var(--pura-line);
  border-radius: 6px;
}
.pura-difs__col--accent { background: var(--pura-deep); border-color: var(--pura-deep); }
.pura-difs__col h3 {
  font-family: var(--pura-serif);
  font-size: 1.4rem;
  color: var(--pura-deep);
  margin-bottom: 1rem;
}
.pura-difs__col--accent h3 { color: #FFFFFF; }
.pura-difs__col ul { display: grid; gap: 0.6rem; }
.pura-difs__col li {
  position: relative;
  padding-left: 1.35rem;
  font-size: 0.93rem;
  color: var(--pura-mute);
}
.pura-difs__col li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.6em;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--pura-teal-3);
}
.pura-difs__col--accent li { color: #C2D4DA; }

/* --- Tipologias ----------------------------------------------------------- */

/* No Elos eram dois conjuntos de edifícios, lado a lado. No Pura só os
   edifícios Essência e Cor estão lançados, e um card sozinho numa grade de
   duas colunas ficaria com metade da largura e um buraco do lado. */
.pura-tipos { display: grid; gap: 1.5rem; }
@media (min-width: 760px) { .pura-tipos { grid-template-columns: repeat(2, 1fr); } }
.pura-tipos--unica { grid-template-columns: 1fr !important; max-width: 720px; }

.pura-tipo {
  padding: clamp(1.25rem, 3vw, 2rem);
  border: 1px solid var(--pura-line);
  border-radius: 6px;
  background: var(--pura-cream);
}
.pura-tipo h3 {
  font-family: var(--pura-serif);
  font-size: 1.5rem;
  color: var(--pura-deep);
  margin-bottom: 0.75rem;
}
.pura-tipo tr { border-top: 1px solid var(--pura-line); }
.pura-tipo tr:first-child { border-top: 0; }
.pura-tipo th {
  text-align: left;
  padding: 0.7rem 0;
  font-weight: 500;
  font-size: 0.95rem;
  color: var(--pura-ink);
}
.pura-tipo th span {
  display: block;
  font-weight: 400;
  font-size: 0.78rem;
  color: var(--pura-mute);
}
.pura-tipo td {
  text-align: right;
  padding: 0.7rem 0;
  font-size: 0.95rem;
  color: var(--pura-teal);
  white-space: nowrap;
}

.pura-nota {
  margin-top: 1.5rem !important;
  font-size: 0.78rem;
  color: var(--pura-mute);
  max-width: 44rem;
}

/* --- Momentos de lazer ---------------------------------------------------- */

.pura-momento { margin-top: clamp(2.5rem, 6vw, 4rem); }
.pura-momento:first-of-type { margin-top: 0; }
.pura-momento__head { margin-bottom: 1.5rem; max-width: 40rem; }
.pura-momento__head h3 {
  font-family: var(--pura-serif);
  font-size: clamp(1.4rem, 3vw, 1.9rem);
  color: #FFFFFF;
}
.pura-momento__head p {
  margin-top: 0.5rem !important;
  font-size: 0.95rem;
  color: #9FB8BF;
}

.pura-facilities {
  margin-top: clamp(2.5rem, 6vw, 4rem);
  padding-top: clamp(1.75rem, 4vw, 2.5rem);
  border-top: 1px solid rgba(255,255,255,.16);
}
.pura-facilities h3 {
  font-family: var(--pura-serif);
  font-size: 1.3rem;
  color: #FFFFFF;
  margin-bottom: 1rem;
}
.pura-facilities ul { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.pura-facilities li {
  padding: 0.45rem 0.95rem;
  border: 1px solid rgba(255,255,255,.25);
  border-radius: 999px;
  font-size: 0.85rem;
  color: #C2D4DA;
}

/* A mesma lista de pastilhas, mas na seção clara (serviços pay-per-use). As
   cores de fundo escuro acima ficariam ilegíveis sobre o creme. */
.pura-facilities--light {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
  margin-bottom: clamp(2.5rem, 6vw, 3.5rem);
}
.pura-facilities--light h3 { color: var(--pura-deep); }
.pura-facilities--light li {
  border-color: var(--pura-teal-3);
  background: var(--pura-paper);
  color: var(--pura-ink);
}

/* --- Design e segurança --------------------------------------------------- */

.pura-seg { display: grid; gap: 1.25rem; }
@media (min-width: 720px) { .pura-seg { grid-template-columns: repeat(2, 1fr); } }
.pura-seg__item {
  padding: clamp(1.25rem, 3vw, 1.75rem);
  background: var(--pura-paper);
  border-left: 3px solid var(--pura-teal-3);
  border-radius: 0 5px 5px 0;
}
.pura-seg__item h3 {
  font-size: 1.02rem;
  font-weight: 500;
  color: var(--pura-deep);
}
.pura-seg__item p {
  margin-top: 0.35rem !important;
  font-size: 0.9rem;
  color: var(--pura-mute);
}

/* --- Ficha técnica -------------------------------------------------------- */

.pura-ficha { border-top: 1px solid var(--pura-line); }
.pura-ficha__row {
  display: grid;
  gap: 0.15rem;
  padding: 0.9rem 0;
  border-bottom: 1px solid var(--pura-line);
}
.pura-ficha dt {
  font-size: 0.78rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--pura-mute);
}
.pura-ficha dd { font-size: 0.98rem; color: var(--pura-ink); }
@media (min-width: 640px) {
  .pura-ficha__row { grid-template-columns: 15rem 1fr; gap: 1.5rem; align-items: baseline; }
}

/* --- CTA e formulário ----------------------------------------------------- */

.pura-cta__grid { display: grid; gap: clamp(2rem, 5vw, 3.5rem); }
@media (min-width: 900px) { .pura-cta__grid { grid-template-columns: 1fr 26rem; align-items: start; } }

.pura-cta__texto h2 {
  font-family: var(--pura-serif);
  font-size: clamp(1.9rem, 4.5vw, 2.9rem);
  line-height: 1.12;
  color: #FFFFFF;
}
.pura-cta__texto .pura-lead { color: #C2D4DA; }
.pura-cta__flag {
  margin-top: 1.5rem !important;
  padding: 0.7rem 1rem;
  border-left: 3px solid var(--pura-teal-3);
  background: rgba(255,255,255,.06);
  border-radius: 0 4px 4px 0;
  font-size: 0.92rem;
  color: #EAF1F3;
}
.pura-cta__assina { margin-top: 1.75rem !important; }
.pura-cta__assina strong { display: block; font-size: 1.05rem; color: #FFFFFF; font-weight: 500; }
.pura-cta__assina span { font-size: 0.88rem; color: #9FB8BF; }

.pura-form {
  padding: clamp(1.5rem, 4vw, 2.25rem);
  background: var(--pura-paper);
  border-radius: 8px;
  color: var(--pura-ink);
}
.pura-form h3 {
  font-family: var(--pura-serif);
  font-size: 1.5rem;
  color: var(--pura-deep);
  margin-bottom: 1.25rem;
}
.pura-form label {
  display: block;
  margin-bottom: 0.9rem;
  font-size: 0.82rem;
  font-weight: 500;
  color: var(--pura-deep);
}
.pura-form__opt { font-weight: 400; color: var(--pura-mute); }
.pura-form input,
.pura-form select,
.pura-form textarea {
  display: block;
  width: 100%;
  min-height: 46px;
  margin-top: 0.35rem;
  padding: 0.7rem 0.85rem;
  border: 1px solid var(--pura-line);
  border-radius: 4px;
  font-family: var(--pura-sans);
  font-size: 0.95rem;
  font-weight: 400;
  color: var(--pura-ink);
  background: var(--pura-paper);
}
.pura-form textarea { min-height: auto; resize: vertical; }
.pura-form input:focus,
.pura-form select:focus,
.pura-form textarea:focus {
  outline: 2px solid var(--pura-teal);
  outline-offset: 1px;
  border-color: transparent;
}
.pura-form__submit { width: 100%; margin-top: 0.5rem; }
.pura-form__fine {
  margin-top: 0.9rem !important;
  font-size: 0.75rem;
  color: var(--pura-mute);
  line-height: 1.5;
}

/* --- Vitrine dos condomínios vizinhos ------------------------------------- */
/* O componente é compartilhado e traz as próprias cores padrão; aqui só
   amarramos ele à paleta desta LP. Ver ilhapura_condominios.css. */
.pura .ipc {
  --ipc-fundo:  var(--pura-cream);
  --ipc-acento: var(--pura-teal);
  --ipc-escuro: var(--pura-deep);
  --ipc-tinta:  var(--pura-ink);
  --ipc-suave:  var(--pura-mute);
  --ipc-linha:  var(--pura-line);
}
.pura .ipc h2, .pura .ipc h3 { font-family: var(--pura-serif); }

/* --- Rodapé compartilhado ------------------------------------------------- */
/* O rodapé e o botão flutuante vêm de shared/_rodape_lp, com CSS próprio.
   Aqui só amarramos as cores dele à paleta desta LP. */
/* Escopado em `.pura`: um `.rlp` solto aqui pintaria o rodapé de todas as
   outras LPs com a paleta do Pura, já que o CSS é um bundle global. */
.pura .rlp {
  --rlp-fundo: #05323F;
  --rlp-texto: #A9C4CB;
  --rlp-linha: rgba(255,255,255,.14);
  --rlp-fraco: #7F9BA3;
}

/* --- Lightbox ------------------------------------------------------------- */

.pura-lb {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: grid;
  place-items: center;
  padding: clamp(1rem, 4vw, 3rem);
  background: rgba(8, 20, 24, .93);
}
.pura-lb[hidden] { display: none; }
.pura-lb figure { max-width: min(1100px, 100%); max-height: 100%; }
.pura-lb img {
  max-height: 78vh;
  width: auto;
  margin-inline: auto;
  border-radius: 4px;
  object-fit: contain;
}
.pura-lb figcaption {
  margin-top: 0.9rem;
  text-align: center;
  font-size: 0.9rem;
  color: #C2D4DA;
}
.pura-lb__close {
  position: absolute;
  top: 0.75rem;
  right: 0.75rem;
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 50%;
  background: rgba(255,255,255,.12);
  color: #FFFFFF;
  font-size: 1.6rem;
  line-height: 1;
  cursor: pointer;
}
.pura-lb__close:hover { background: rgba(255,255,255,.24); }

/* --- Revelação no scroll -------------------------------------------------- */

.pura-reveal {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity .6s ease, transform .6s ease;
}
.pura-reveal.is-visible { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  .pura-reveal { opacity: 1; transform: none; transition: none; }
  .pura-card__btn img { transition: none; }
  .pura-faq__item summary,
  .pura-faq__sinal { transition: none; }
}

/* ============================================================================
   Localização + o bairro (seções fundidas) e Ir e vir sem barreiras
   Conteúdo clonado do Astra: é o mesmo bairro para todo condomínio do Ilha
   Pura. Aqui só a roupagem muda, para o design system do Pura.
   ========================================================================== */

/* Âncora invisível: `#bairro` era o id da seção antiga e pode estar em link
   já compartilhado. Fica com scroll-margin para o título não colar no topo. */
.pura-ancora { display: block; height: 0; scroll-margin-top: 2rem; }

.pura-loc {
  display: grid;
  gap: clamp(2rem, 5vw, 3.5rem);
  margin-bottom: clamp(2.5rem, 6vw, 4rem);
}
@media (min-width: 900px) { .pura-loc { grid-template-columns: 1fr 1.15fr; align-items: start; } }

.pura .pura-loc__texto h3 {
  margin: 0 0 1rem;
  font-size: clamp(1.4rem, 3vw, 2.1rem);
  line-height: 1.15;
  color: var(--pura-deep);
}
.pura .pura-loc__texto p {
  margin: 0 0 1.6rem;
  font-size: clamp(1rem, 1.9vw, 1.08rem);
  line-height: 1.7;
  color: var(--pura-mute);
  max-width: 40ch;
}

/* Grade de duas colunas com filete de 1px: o próprio `gap` sobre um fundo
   colorido desenha as linhas, sem precisar de border em cada célula. */
.pura-loc__lista {
  margin: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: var(--pura-line);
  border: 1px solid var(--pura-line);
}
.pura-loc__item {
  background: var(--pura-paper);
  padding: 0.95rem 1.1rem;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
}
.pura .pura-loc__item dt {
  font-size: 0.92rem;
  font-weight: 500;
  color: var(--pura-ink);
}
/* `dd` tem margin-left de 40px por padrão no navegador e desmontaria a grade. */
.pura .pura-loc__item dd {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--pura-teal-3);
  white-space: nowrap;
}
.pura-sec--light .pura-loc__item { background: var(--pura-paper); }

/* --- Ir e vir sem barreiras (seção escura) -------------------------------- */

.pura-acess { display: grid; gap: clamp(2rem, 5vw, 3.5rem); }
@media (min-width: 900px) { .pura-acess { grid-template-columns: 1fr 1.1fr; align-items: center; } }

.pura-acess__fig { margin: 0; }
.pura-acess__fig img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 8px;
}

.pura-sec--dark .pura-acess__texto h2 { color: #FFFFFF; }
.pura-acess__texto h2 em { font-style: italic; color: var(--pura-teal-2); }
.pura-sec--dark .pura-acess__texto .pura-lead { color: #C2D4DA; }

/* Prefixado: é um <dl>, e `.pura dl { margin: 0 }` vencia. */
.pura .pura-acess__lista {
  margin: clamp(1.75rem, 4vw, 2.5rem) 0 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: rgba(255, 255, 255, 0.18);
  border: 1px solid rgba(255, 255, 255, 0.18);
}
.pura-acess__item { background: var(--pura-deep); padding: 1.1rem 1.2rem; }
.pura .pura-acess__item dt {
  margin-bottom: 0.3rem;
  font-size: 1.05rem;
  font-weight: 600;
  color: #FFFFFF;
}
.pura .pura-acess__item dd {
  margin: 0;
  font-size: 0.86rem;
  line-height: 1.5;
  color: #A8C2CA;
}

/* ============================================================================
   Perguntas frequentes — <details>/<summary> nativo, sem JS
   ========================================================================== */
.pura-faq { border-top: 1px solid var(--pura-line); }

.pura-faq__item { border-bottom: 1px solid var(--pura-line); }

.pura-faq__item summary {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1.5rem;
  padding-block: 1.15rem;
  cursor: pointer;
  font-size: clamp(1rem, 1.9vw, 1.1rem);
  font-weight: 500;
  color: var(--pura-deep);
  line-height: 1.45;
  transition: color 0.2s ease;
}
/* O triângulo padrão do navegador não é estilizável e aparece diferente em cada
   um. Tirado nos dois dialetos: `list-style` cobre Chrome/Firefox, o
   pseudo-elemento `::-webkit-details-marker` cobre o Safari. */
.pura-faq__item summary { list-style: none; }
.pura-faq__item summary::-webkit-details-marker { display: none; }
.pura-faq__item summary:hover { color: var(--pura-teal-3); }
.pura-faq__item summary:focus-visible {
  outline: 2px solid var(--pura-teal-2);
  outline-offset: 3px;
  border-radius: 2px;
}

/* Sinal de + que vira − quando abre. Feito com dois traços em vez de texto: não
   depende de fonte e fica alinhado em qualquer tamanho de tela. */
.pura-faq__sinal {
  position: relative;
  flex: 0 0 auto;
  width: 0.85rem;
  height: 0.85rem;
  margin-top: 0.35rem;
  transition: transform 0.25s ease;
}
.pura-faq__sinal::before,
.pura-faq__sinal::after {
  content: "";
  position: absolute;
  inset: 50% 0 auto 0;
  height: 1.5px;
  background: var(--pura-teal-3);
}
.pura-faq__sinal::after { transform: rotate(90deg); }
.pura-faq__item[open] .pura-faq__sinal { transform: rotate(45deg); }
.pura-faq__item[open] summary { color: var(--pura-teal-3); }

/* `.pura p { margin: 0 }` tem a mesma especificidade que `.pura-faq__resposta p`
   e venceria por ordem se este arquivo mudasse de posição. O `.pura` na frente
   garante a margem independente disso. */
.pura-faq__resposta { padding: 0 0 1.4rem; max-width: 46rem; }
.pura .pura-faq__resposta p {
  margin: 0;
  font-size: clamp(0.95rem, 1.7vw, 1.03rem);
  line-height: 1.7;
  color: var(--pura-mute);
}

.pura .pura-faq__rodape {
  margin-top: 2rem;
  font-size: 0.95rem;
  color: var(--pura-mute);
}
.pura-faq__rodape a {
  color: var(--pura-teal);
  font-weight: 500;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.pura-faq__rodape a:hover { color: var(--pura-teal-3); }
/* ===========================================================================
   SAINT MICHEL — Ilha Pura
   Landing page /saint-michel · view: pages/ilha_pura/saint_michel.html.erb

   TODA classe é prefixada com `.sm`. O application.css faz `require_tree .`,
   então este arquivo entra no mesmo bundle global das outras LPs — sem prefixo,
   uma página quebraria o layout da outra.

   Paleta: VINHO. Medida no logo oficial do empreendimento (o fundo do wordmark
   no book é #853035 e o wordmark em si, #8B3D36). As irmãs já ocupam o teal
   (Elos e Pura), o bronze (Oro) e o grafite (Astra) — o vinho deixa o Saint
   Michel reconhecível na vitrine, onde os cinco aparecem lado a lado.

   Tipografia: Albert Sans (design system do Ilha Pura). Títulos em peso 200.
   =========================================================================== */

.sm {
  --sm-deep:  #4A1B20;   /* vinho escuro — seções escuras */
  --sm-wine:  #853035;   /* a cor do logo — botões e destaques */
  --sm-rose:  #E8C6C4;   /* claro — texto de apoio sobre fundo escuro */
  --sm-cream: #F0F0F0;   /* neutro claro do portal — seções alternadas */
  --sm-paper: #FFFFFF;
  --sm-ink:   #323232;   /* texto e títulos */
  --sm-mute:  #6B6B6B;   /* texto secundário */
  --sm-linha: #E2E2E2;

  /* Rodapé compartilhado (shared/_rodape_lp) — cada LP pinta o seu. */
  --rlp-fundo: #3A1418;
  --rlp-texto: #E8C6C4;
  --rlp-linha: rgba(255,255,255,.14);
  --rlp-fraco: #B98F8C;

  font-family: "Albert Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  color: var(--sm-ink);
  background: var(--sm-paper);
  line-height: 1.6;
}

/* Resets escopados, todos dentro de :where().
   ⚠️ Isto NÃO é firula. Escrito como `.sm p { margin: 0 0 1rem }`, o reset tem
   uma classe + um elemento e VENCE qualquer regra de componente de uma classe
   só (`.sm-ana__assina { margin-top: 2rem }`) — a margem simplesmente não
   acontece, sem erro nenhum aparecer. Foi o que quebrou três coisas de uma vez
   nesta página: a foto do hero vazando para fora (`height: auto` vencendo
   `height: 100%`), o botão da oferta branco sobre branco (`color: inherit`
   vencendo a cor do botão) e a assinatura colada no último item da lista.
   `:where()` tem especificidade ZERO: o reset passa a valer (0,1,0) e qualquer
   regra de componente escrita depois ganha dele naturalmente. */
.sm :where(h1, h2, h3) { margin: 0 0 .5em; font-weight: 200; letter-spacing: -.02em; line-height: 1.15; }
.sm :where(h1) { font-size: clamp(2rem, 5.2vw, 3.6rem); }
.sm :where(h2) { font-size: clamp(1.7rem, 3.6vw, 2.9rem); }
.sm :where(h3) { font-size: 1.15rem; font-weight: 500; letter-spacing: 0; }
.sm :where(p)  { margin: 0 0 1rem; }
.sm :where(ul) { margin: 0; padding: 0; list-style: none; }
.sm :where(img) { max-width: 100%; height: auto; display: block; }
/* Sem isto o card de foto fica estreito e desalinhado — gotcha já pago caro. */
.sm :where(figure) { margin: 0; }
.sm :where(a) { color: inherit; }

/* --- Estrutura ---------------------------------------------------------- */
.sm-wrap { width: min(1160px, 92vw); margin-inline: auto; }
.sm-wrap--narrow { width: min(760px, 92vw); }

.sm-sec { padding: clamp(3.5rem, 8vw, 6.5rem) 0; }
.sm-sec--cream { background: var(--sm-cream); }
.sm-sec--dark  { background: var(--sm-deep); color: var(--sm-rose); }
.sm-sec--dark h2, .sm-sec--dark h3 { color: #fff; }

.sm-head { max-width: 62ch; margin-bottom: clamp(2rem, 4vw, 3rem); }
.sm-head--light p { color: var(--sm-rose); }
.sm-eyebrow {
  margin: 0 0 .75rem; font-size: .78rem; font-weight: 600;
  letter-spacing: .16em; text-transform: uppercase; color: var(--sm-wine);
}
.sm-sec--dark .sm-eyebrow { color: var(--sm-rose); }
.sm-lead { font-size: clamp(1rem, 1.6vw, 1.15rem); color: var(--sm-mute); }
.sm-sec--dark .sm-lead { color: var(--sm-rose); }

/* --- Botões ------------------------------------------------------------- */
.sm-btn {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 48px; padding: .85rem 1.6rem;
  border: 1px solid transparent; border-radius: 999px;
  font-size: .98rem; font-weight: 600; text-decoration: none;
  transition: transform .15s ease, background-color .15s ease, color .15s ease;
}
.sm-btn:hover { transform: translateY(-1px); }
.sm-btn:focus-visible { outline: 3px solid var(--sm-rose); outline-offset: 3px; }
.sm-btn--primary { background: var(--sm-wine); color: #fff; }
.sm-btn--primary:hover { background: var(--sm-deep); }
.sm-btn--claro { background: #fff; color: var(--sm-deep); }
.sm-btn--claro:hover { background: var(--sm-rose); }
.sm-btn--ghost {
  background: rgba(255,255,255,.1); color: #fff;
  border-color: rgba(255,255,255,.6); backdrop-filter: blur(2px);
}
.sm-btn--ghost:hover { background: rgba(255,255,255,.2); }

/* --- 1 · Hero ----------------------------------------------------------- */
.sm-hero {
  position: relative; isolation: isolate;
  min-height: min(92vh, 780px);
  display: flex; align-items: flex-end;
  padding: clamp(2rem, 6vw, 5rem) 0 clamp(2.5rem, 6vw, 4.5rem);
  color: #fff;
}
/* O `height: 100%` aqui é o que segura a foto dentro do hero. Se ela voltar a
   assumir a altura natural, reaparece a faixa de imagem sem escurecimento entre
   o topo e a seção seguinte — foi assim que o defeito apareceu no ar. */
.sm-hero__bg {
  position: absolute; inset: 0; z-index: -2;
  width: 100%; height: 100%; object-fit: cover;
}
/* O escurecimento existe para o texto branco ter contraste em cima da foto.
   Antes era UM gradiente vertical terminando em .90: o pé do hero virava uma
   faixa quase preta — sumia a piscina e ficava pesado colado na barra vinho da
   seção seguinte.

   Agora são DOIS gradientes sobrepostos. O horizontal escurece só o lado
   esquerdo, que é onde o texto mora; o vertical faz o resto. Assim o pé da
   foto clareia bastante do meio para a direita (a água aparece) SEM perder
   contraste embaixo das letras.

   Medido no render, sobre a parte mais clara da foto: onde fica o texto, a
   opacidade efetiva é ~.72 — a mesma de antes. Na direita, cai para ~.60.
   Se for mexer, meça de novo: clarear o lado esquerdo apaga o texto. */
.sm-hero__scrim {
  position: absolute; inset: 0; z-index: -1;
  background:
    linear-gradient(90deg,
      rgba(40,12,15,.55) 0%,
      rgba(40,12,15,.45) 45%,
      rgba(40,12,15,.12) 80%,
      rgba(40,12,15,0)   100%),
    linear-gradient(180deg,
      rgba(40,12,15,.22) 0%,
      rgba(40,12,15,.38) 45%,
      rgba(40,12,15,.55) 80%,
      rgba(40,12,15,.60) 100%);
}
/* No celular o texto ocupa a largura toda — o gradiente lateral deixaria a
   ponta direita das frases sem fundo. Aqui volta a ser só vertical. */
@media (max-width: 860px) {
  .sm-hero__scrim {
    background: linear-gradient(180deg,
      rgba(40,12,15,.32) 0%,
      rgba(40,12,15,.50) 45%,
      rgba(40,12,15,.68) 80%,
      rgba(40,12,15,.74) 100%);
  }
}
.sm-hero__inner { width: min(1160px, 92vw); margin-inline: auto; }
.sm-hero__anim { max-width: 62ch; }
.sm-hero__logo { width: clamp(200px, 22vw, 260px); height: auto; margin-bottom: 1.4rem; }

/* --sm-rose foi medido para fundo chapado escuro. Sobre foto, no texto miúdo,
   ele fica abaixo de 4,5:1 mesmo com o scrim. Este tom é o mesmo rosa, só que
   mais claro, e vale apenas dentro do hero. */
.sm-hero { --sm-rose-foto: #F3DAD8; }
.sm-hero__place {
  margin: 0 0 1rem; font-size: .8rem; font-weight: 600;
  letter-spacing: .18em; text-transform: uppercase; color: var(--sm-rose-foto);
}
.sm-hero__place span { margin: 0 .4rem; opacity: .6; }
.sm-hero__title { color: #fff; margin-bottom: 1rem; }
.sm-hero__title em { font-style: normal; color: var(--sm-rose); }
.sm-hero__lead { font-size: clamp(1rem, 1.7vw, 1.2rem); color: #F6EAE9; max-width: 54ch; }
.sm-hero__lead strong { color: #fff; font-weight: 600; }

.sm-hero__facts {
  display: grid; gap: .9rem 2rem; margin: 1.8rem 0 2rem;
  grid-template-columns: repeat(auto-fit, minmax(min(210px, 100%), 1fr));
}
.sm-hero__fact { display: flex; flex-direction: column; gap: .15rem; }
.sm-hero__fact-k { font-size: 1.05rem; font-weight: 600; color: #fff; }
.sm-hero__fact-v { font-size: .85rem; color: var(--sm-rose-foto); }

.sm-hero__actions { display: flex; flex-wrap: wrap; gap: .8rem; }

/* --- 2 · Oferta --------------------------------------------------------- */
.sm-oferta { background: var(--sm-wine); color: #fff; padding: clamp(3rem, 7vw, 5rem) 0; }
.sm-oferta__box { width: min(760px, 92vw); margin-inline: auto; text-align: center; }
.sm-oferta__tag {
  margin: 0 0 .8rem; font-size: .78rem; font-weight: 600;
  letter-spacing: .16em; text-transform: uppercase; color: var(--sm-rose);
}
.sm-oferta h2 { color: #fff; }
.sm-oferta h2 strong { font-weight: 600; }
.sm-oferta__texto { color: #F6EAE9; max-width: 56ch; margin-inline: auto; }
.sm-oferta__prazo { font-size: .85rem; color: var(--sm-rose); margin-bottom: 1.6rem; }

/* --- 3 · Números -------------------------------------------------------- */
.sm-numeros {
  display: grid; gap: 1.2rem;
  grid-template-columns: repeat(auto-fit, minmax(min(230px, 100%), 1fr));
}
.sm-numero {
  display: flex; flex-direction: column; gap: .2rem;
  padding: 1.6rem; border: 1px solid var(--sm-linha); border-radius: 14px;
}
.sm-numero__n { font-size: clamp(2rem, 4vw, 2.8rem); font-weight: 200; color: var(--sm-wine); line-height: 1; }
.sm-numero__l { font-size: 1rem; font-weight: 600; }
.sm-numero__d { font-size: .88rem; color: var(--sm-mute); }

/* --- 4 · O prédio ------------------------------------------------------- */
/* A aérea dos cinco edifícios é uma panorâmica 2,5:1 (959x383). Numa coluna
   lateral ela saía com uns 250 px de altura ao lado de um bloco de texto quase
   três vezes mais alto — parecia miniatura e desequilibrava a seção. Agora o
   texto se divide em duas colunas e a foto ocupa a largura inteira embaixo,
   que é o formato que a panorâmica pede. Não volte para `auto-fit` aqui: com
   três filhos, a 1160 px cabem TRÊS colunas e sobra uma vazia. */
.sm-split {
  display: grid; gap: clamp(1.8rem, 4vw, 2.8rem) clamp(2rem, 5vw, 3.5rem);
  align-items: start;
}
@media (min-width: 860px) {
  .sm-split { grid-template-columns: 1.05fr .95fr; }
}
.sm-split__foto { grid-column: 1 / -1; }
.sm-split__foto img { width: 100%; }
.sm-predio { display: grid; gap: .9rem; align-content: start; }
.sm-predio li { display: flex; flex-direction: column; gap: .1rem; padding-left: 1.6rem; position: relative; }
.sm-predio li::before {
  content: ""; position: absolute; left: 0; top: .6em;
  width: .6rem; height: .6rem; border-radius: 50%; background: var(--sm-wine);
}
.sm-predio strong { font-weight: 600; }
.sm-predio span { font-size: .92rem; color: var(--sm-mute); }
.sm-split__foto figcaption { margin-top: .8rem; font-size: .88rem; color: var(--sm-mute); }

/* --- 5 · Lazer ---------------------------------------------------------- */
.sm-momento { margin-bottom: clamp(2.5rem, 5vw, 4rem); }
.sm-momento:last-child { margin-bottom: 0; }
.sm-momento__texto { max-width: 62ch; margin-bottom: 1.5rem; }
.sm-momento__texto h3 { font-size: clamp(1.3rem, 2.2vw, 1.7rem); font-weight: 200; color: var(--sm-wine); }
.sm-momento__texto p { margin: 0; color: var(--sm-mute); }

/* --- Galerias ----------------------------------------------------------- */
.sm-galeria {
  display: grid; gap: 1.2rem;
  grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr));
}
.sm-galeria--4 { grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); }
.sm-card { border-radius: 14px; overflow: hidden; background: var(--sm-cream); }
.sm-sec--cream .sm-card { background: var(--sm-paper); }
.sm-card__zoom {
  display: block; width: 100%; padding: 0; border: 0; cursor: zoom-in;
  background: none; line-height: 0;
}
.sm-card__zoom:focus-visible { outline: 3px solid var(--sm-wine); outline-offset: -3px; }
.sm-card img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
/* Planta é desenho técnico: cortar em 3/2 esconde cômodo. Cabe inteira, com
   folga branca em volta. */
.sm-card--planta img { aspect-ratio: auto; object-fit: contain; background: #fff; padding: .6rem; }
.sm-card figcaption { padding: 1rem 1.1rem 1.2rem; display: flex; flex-direction: column; gap: .2rem; }
.sm-card figcaption strong { font-weight: 600; font-size: 1rem; }
.sm-card figcaption span { font-size: .88rem; color: var(--sm-mute); }

/* --- 6 · Diferenciais do apartamento ------------------------------------ */
.sm-difs { margin-top: clamp(2rem, 4vw, 3rem); }
.sm-difs h3 { margin-bottom: 1rem; }
.sm-difs ul {
  display: grid; gap: .7rem 2rem;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
}
.sm-difs li { position: relative; padding-left: 1.6rem; color: var(--sm-mute); font-size: .95rem; }
.sm-difs li::before {
  content: ""; position: absolute; left: 0; top: .55em;
  width: .55rem; height: .55rem; border-radius: 50%; background: var(--sm-wine);
}

/* --- 7 · Unidades ------------------------------------------------------- */
.sm-tipos {
  display: grid; gap: 1.2rem;
  grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr));
}
.sm-tipo {
  padding: 1.8rem; border-radius: 14px; background: var(--sm-paper);
  border: 1px solid var(--sm-linha);
  display: flex; flex-direction: column; gap: .3rem;
}
.sm-tipo__nome { margin: 0; font-size: 1.3rem; font-weight: 500; color: var(--sm-ink); }
.sm-tipo__area { margin: 0; font-size: 1.55rem; font-weight: 200; color: var(--sm-wine); }
.sm-tipo__ed   { margin: 0; font-size: .88rem; font-weight: 600; color: var(--sm-ink); }
.sm-tipo__nota { margin: 0; font-size: .88rem; color: var(--sm-mute); }
.sm-plantas__titulo { margin: clamp(2.5rem, 5vw, 3.5rem) 0 1.2rem; font-size: 1.3rem; }
.sm-tipos__nota { margin-top: 1.6rem; color: var(--sm-mute); font-size: .95rem; }
.sm-tipos__nota a { color: var(--sm-wine); font-weight: 600; }

/* --- 9 · Localização ---------------------------------------------------- */
/* Duas colunas fixas, não auto-fit: são 10 lugares, e em duas colunas dá 5 e 5,
   sem sobra. Com auto-fit a tela larga abre uma terceira coluna e a última fica
   pela metade. */
.sm-locais { display: grid; gap: .1rem 2.5rem; grid-template-columns: 1fr; }
@media (min-width: 700px) {
  .sm-locais { grid-template-columns: 1fr 1fr; }
}
.sm-local {
  display: flex; align-items: baseline; justify-content: space-between; gap: 1rem;
  padding: .9rem 0; border-bottom: 1px solid var(--sm-linha);
}
.sm-local__nome { font-weight: 500; }
.sm-local__tempo { color: var(--sm-wine); font-weight: 600; white-space: nowrap; }
.sm-locais__nota { margin-top: 1.4rem; font-size: .85rem; color: var(--sm-mute); }

/* --- 10 · Acessibilidade ------------------------------------------------ */
.sm-acesso {
  display: grid; gap: 1.2rem;
  grid-template-columns: repeat(auto-fit, minmax(min(230px, 100%), 1fr));
}
.sm-acesso__item {
  padding: 1.5rem; border-radius: 14px;
  background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12);
}
.sm-acesso__item h3 { color: #fff; margin-bottom: .3rem; }
.sm-acesso__item p { margin: 0; font-size: .92rem; color: var(--sm-rose); }

/* --- 11 · Ficha, sustentabilidade e segurança --------------------------- */
/* A seção era duas colunas lado a lado: ficha à esquerda, sustentabilidade e
   segurança à direita. Com 12 linhas de um lado e dois blocos curtos do outro,
   a direita acabava ~300 px antes e sobrava um buraco no canto — a Ana
   apontou em 19/08/2026.

   Agora são três faixas de largura inteira, empilhadas: título, ficha em duas
   colunas, e os três blocos embaixo. Nenhuma coluna precisa "dar conta" de
   igualar a altura da outra, então acrescentar item não desequilibra nada. */
.sm-ficha__grid {
  display: grid; grid-template-columns: 1fr;
  gap: clamp(2rem, 4vw, 3rem);
  align-items: start;
}
/* O gap do grid já separa o título da tabela; a margem do .sm-head somaria em
   cima disso e abriria um vão grande demais. */
.sm-ficha__grid .sm-head { margin-bottom: 0; }

.sm-ficha { margin: 0; display: grid; gap: 0 clamp(2rem, 4vw, 3.5rem); }
/* `grid-auto-flow: column` preenche a primeira coluna inteira antes de passar
   para a segunda (1–6, depois 7–12), em vez de zigue-zaguear. Com as linhas do
   grid declaradas, as duas colunas compartilham a mesma altura de linha e as
   bordas ficam alinhadas horizontalmente.
   ⚠️ `--sm-ficha-linhas` vem do ERB, calculado a partir do tamanho da lista.
   Sem ele o padrão é 6; se a ficha mudar de tamanho e a variável não vier
   junto, nasce uma terceira coluna do nada. */
@media (min-width: 900px) {
  .sm-ficha {
    grid-template-columns: 1fr 1fr;
    grid-auto-flow: column;
    grid-template-rows: repeat(var(--sm-ficha-linhas, 6), auto);
  }
}

.sm-ficha__blocos { display: grid; gap: clamp(1.8rem, 4vw, 2.5rem); align-items: start; }
@media (min-width: 900px) { .sm-ficha__blocos { grid-template-columns: repeat(3, 1fr); } }
.sm-ficha__blocos .sm-bloco { margin-bottom: 0; }
.sm-bloco li strong { font-weight: 600; color: var(--sm-ink); }
.sm-ficha__linha {
  display: flex; flex-wrap: wrap; gap: .3rem 1rem;
  padding: .8rem 0; border-bottom: 1px solid var(--sm-linha);
}
.sm-ficha dt { flex: 0 0 190px; font-weight: 600; font-size: .92rem; }
.sm-ficha dd { flex: 1 1 220px; margin: 0; color: var(--sm-mute); font-size: .92rem; }
.sm-bloco { margin-bottom: 2rem; }
.sm-bloco:last-child { margin-bottom: 0; }
.sm-bloco h3 { color: var(--sm-wine); }
.sm-bloco ul { display: grid; gap: .55rem; }
.sm-bloco li { position: relative; padding-left: 1.6rem; color: var(--sm-mute); font-size: .95rem; }
.sm-bloco li::before {
  content: ""; position: absolute; left: 0; top: .55em;
  width: .55rem; height: .55rem; border-radius: 50%; background: var(--sm-wine);
}

/* --- 12 · Por que falar com a Ana ---------------------------------------
   Mesma anatomia da seção nas outras LPs: foto quadrada de um lado, razões e
   assinatura do outro. */
.sm-ana { display: grid; gap: clamp(1.75rem, 5vw, 3.5rem); align-items: center; }
@media (min-width: 880px) { .sm-ana { grid-template-columns: 0.8fr 1fr; } }

.sm-ana__fig img {
  width: 100%; max-width: 420px;
  border-radius: 8px; aspect-ratio: 1 / 1; object-fit: cover;
}
.sm-ana__razoes { display: grid; gap: 1rem; margin-top: 1.75rem; }
.sm-ana__razoes li { display: flex; gap: .75rem; align-items: flex-start; }
.sm-ana__razoes p { margin: 0; font-size: .95rem; color: var(--sm-mute); }
.sm-ana__dot {
  flex: 0 0 auto; width: 8px; height: 8px; margin-top: .5rem;
  border-radius: 50%; background: var(--sm-wine);
}
.sm-ana__assina {
  margin-top: 1.75rem; margin-bottom: 1.25rem;
  font-size: .88rem; font-weight: 500; color: var(--sm-deep);
}

/* --- 13 · FAQ ----------------------------------------------------------- */
.sm-faq { display: grid; gap: .6rem; }
.sm-faq__item { background: var(--sm-paper); border: 1px solid var(--sm-linha); border-radius: 12px; }
.sm-faq__item summary {
  cursor: pointer; list-style: none; padding: 1.1rem 1.3rem;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  font-weight: 500; min-height: 48px;
}
.sm-faq__item summary::-webkit-details-marker { display: none; }
.sm-faq__item summary:focus-visible { outline: 3px solid var(--sm-wine); outline-offset: -3px; }
.sm-faq__sinal { flex: none; width: 14px; height: 14px; position: relative; }
.sm-faq__sinal::before,
.sm-faq__sinal::after {
  content: ""; position: absolute; inset: 50% 0 auto 0;
  height: 2px; background: var(--sm-wine); transition: transform .18s ease;
}
.sm-faq__sinal::after { transform: rotate(90deg); }
.sm-faq__item[open] .sm-faq__sinal::after { transform: rotate(0deg); }
.sm-faq__resposta { padding: 0 1.3rem 1.2rem; }
.sm-faq__resposta p { margin: 0; color: var(--sm-mute); }
.sm-faq__rodape { margin-top: 1.6rem; color: var(--sm-mute); font-size: .95rem; }
.sm-faq__rodape a { color: var(--sm-wine); font-weight: 600; }

/* --- 14 · CTA + formulário ---------------------------------------------- */
.sm-cta__grid {
  display: grid; gap: clamp(2rem, 5vw, 3.5rem);
  grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr));
  align-items: start;
}
.sm-cta__texto h2 { color: #fff; }
.sm-cta__flag {
  display: inline-block; padding: .5rem .9rem; border-radius: 999px;
  background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.2);
  font-size: .88rem; color: #fff;
}
.sm-cta__assina { margin-top: 1.6rem; display: flex; flex-direction: column; gap: .15rem; }
.sm-cta__assina strong { color: #fff; font-size: 1.05rem; font-weight: 600; }
.sm-cta__assina span { font-size: .88rem; color: var(--sm-rose); }

.sm-form {
  background: var(--sm-paper); color: var(--sm-ink);
  padding: clamp(1.5rem, 3vw, 2.2rem); border-radius: 16px;
  display: grid; gap: .9rem;
}
.sm-form h3 { margin: 0 0 .3rem; font-size: 1.25rem; font-weight: 500; }
.sm-form label { display: grid; gap: .35rem; font-size: .9rem; font-weight: 500; }
.sm-form__opt { color: var(--sm-mute); font-weight: 400; }
.sm-form input,
.sm-form select,
.sm-form textarea {
  width: 100%; min-height: 48px; padding: .7rem .9rem;
  border: 1px solid var(--sm-linha); border-radius: 10px;
  font: inherit; font-size: 1rem; color: var(--sm-ink); background: #fff;
}
.sm-form textarea { min-height: 96px; resize: vertical; }
.sm-form input:focus-visible,
.sm-form select:focus-visible,
.sm-form textarea:focus-visible {
  outline: 3px solid var(--sm-wine); outline-offset: 1px; border-color: var(--sm-wine);
}
.sm-form__submit { width: 100%; margin-top: .3rem; }
.sm-form__fine { margin: 0; font-size: .8rem; color: var(--sm-mute); }

/* --- Lightbox ----------------------------------------------------------- */
.sm-lb {
  position: fixed; inset: 0; z-index: 60;
  display: grid; place-items: center; padding: 4vmin;
  background: rgba(26,8,10,.93);
}
.sm-lb[hidden] { display: none; }
.sm-lb figure { max-width: min(1100px, 92vw); }
.sm-lb img { max-height: 78vh; width: auto; margin-inline: auto; border-radius: 8px; background: #fff; }
.sm-lb figcaption { margin-top: .9rem; text-align: center; color: #F6EAE9; font-size: .92rem; }
.sm-lb__close {
  position: absolute; top: 2vmin; right: 2vmin;
  width: 48px; height: 48px; border-radius: 50%;
  border: 1px solid rgba(255,255,255,.3); background: rgba(255,255,255,.1);
  color: #fff; font-size: 1.8rem; line-height: 1; cursor: pointer;
}
.sm-lb__close:focus-visible { outline: 3px solid #fff; outline-offset: 2px; }

/* --- Revelação no scroll ------------------------------------------------ */
.sm-reveal { opacity: 0; transform: translateY(14px); transition: opacity .5s ease, transform .5s ease; }
.sm-reveal.is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .sm-reveal { opacity: 1; transform: none; transition: none; }
  .sm-btn { transition: none; }
}

/* --- Telas estreitas ---------------------------------------------------- */
@media (max-width: 520px) {
  .sm-hero { min-height: 86vh; }
  .sm-hero__logo { width: 170px; }
  .sm-hero__actions .sm-btn { width: 100%; }
  .sm-local { padding: .8rem 0; }
  .sm-ficha dt { flex: 1 1 100%; }
}
/* ===========================================================================
   Vitrine dos condomínios do Ilha Pura — componente compartilhado entre as LPs.
   Prefixo próprio `.ipc-` (não o da LP), porque a peça é a mesma em todas.
   Cada LP ajusta as cores sobrescrevendo as variáveis --ipc-* dentro do seu
   próprio seletor. Ver `app/views/shared/_ilhapura_condominios.html.erb`.
   =========================================================================== */

.ipc {
  --ipc-fundo:   #F0F0F0;
  --ipc-cartao:  #FFFFFF;
  --ipc-acento:  #1B4A61;
  --ipc-escuro:  #004964;
  --ipc-tinta:   #323232;
  --ipc-suave:   #6B6B6B;
  --ipc-linha:   #E0E0E0;

  padding-block: clamp(3.5rem, 9vw, 7rem);
  background: var(--ipc-fundo);
  color: var(--ipc-tinta);
}

.ipc *, .ipc *::before, .ipc *::after { box-sizing: border-box; }
.ipc h2, .ipc h3 { margin: 0; font-weight: 400; }
.ipc p { margin: 0; }
.ipc ul { margin: 0; padding: 0; list-style: none; }
.ipc img { max-width: 100%; height: auto; display: block; }

.ipc__wrap {
  width: 100%;
  max-width: 1180px;
  margin-inline: auto;
  padding-inline: clamp(1.25rem, 5vw, 2.5rem);
}

.ipc__head { max-width: 46rem; margin-bottom: clamp(2rem, 5vw, 3rem); }
/* 🚨 TODO `<p>` DESTE COMPONENTE PRECISA DO PREFIXO `.ipc`.
   O reset `.ipc p { margin: 0 }` tem especificidade (0,1,1) e vence qualquer
   regra de uma classe só (0,1,0). Descoberto em 14/08/2026 numa varredura: as
   SEIS margens abaixo estavam escritas e mortas desde que a vitrine nasceu, nas
   três LPs ao mesmo tempo — os cards vinham com texto todo grudado.
   O componente é compartilhado, então não dá para prefixar com `.oro`/`.elos`/
   `.pura`: o `.ipc` é a raiz da própria seção e funciona sob qualquer LP. */
.ipc .ipc__eyebrow {
  margin-bottom: 0.9rem;
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ipc-acento);
}
.ipc__head h2 {
  font-size: clamp(1.8rem, 4.4vw, 2.9rem);
  line-height: 1.12;
  letter-spacing: -0.01em;
  color: var(--ipc-escuro);
}
.ipc .ipc__lead {
  margin-top: 1rem;
  font-size: clamp(0.98rem, 1.9vw, 1.1rem);
  color: var(--ipc-suave);
  max-width: 42rem;
}

.ipc__grid {
  display: grid;
  gap: clamp(1rem, 2.5vw, 1.5rem);
  grid-template-columns: 1fr;
}
@media (min-width: 620px) { .ipc__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1000px) { .ipc__grid { grid-template-columns: repeat(3, 1fr); } }

.ipc-card {
  display: flex;
  flex-direction: column;
  background: var(--ipc-cartao);
  border: 1px solid var(--ipc-linha);
  border-radius: 6px;
  overflow: hidden;
}

.ipc-card__foto { position: relative; background: var(--ipc-linha); }
.ipc-card__foto img {
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}
/* O condomínio vendido entra em escala de cinza: continua na vitrine como
   histórico do bairro, mas não disputa atenção com quem ainda tem unidade. */
.ipc-card--vendido .ipc-card__foto img { filter: grayscale(1); opacity: .85; }

.ipc-card__tag {
  position: absolute;
  top: 0.75rem;
  left: 0.75rem;
  padding: 0.3rem 0.7rem;
  border-radius: 3px;
  background: var(--ipc-acento);
  color: #FFFFFF;
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.ipc-card__tag--vendido { background: #6B6B6B; }

.ipc-card__corpo {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: 1.1rem 1.25rem 1.25rem;
}
.ipc-card__corpo h3 {
  font-size: 1.25rem;
  letter-spacing: -0.01em;
  color: var(--ipc-escuro);
}
.ipc .ipc-card__specs {
  margin-top: 0.3rem;
  font-size: 0.85rem;
  color: var(--ipc-suave);
}
.ipc .ipc-card__preco { margin-top: 0.9rem; }
.ipc-card__preco span {
  display: block;
  font-size: 0.85rem;
  color: var(--ipc-suave);
}
.ipc-card__preco--vazio span { font-style: italic; }

.ipc .ipc-card__oferta {
  margin-top: 0.75rem;
  padding: 0.45rem 0.7rem;
  border-left: 3px solid var(--ipc-acento);
  background: var(--ipc-fundo);
  border-radius: 0 3px 3px 0;
  font-size: 0.78rem;
  color: var(--ipc-escuro);
}

/* `margin-top:auto` alinha os botões na base mesmo quando um card tem a faixa
   da oferta e o vizinho não — sem isso a fileira fica com os botões em alturas
   diferentes. */
.ipc-card__btn {
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: auto;
  padding-top: 1.1rem;
  min-height: 44px;
  font-size: 0.88rem;
  font-weight: 500;
  color: var(--ipc-acento);
  text-decoration: none;
}
.ipc-card__btn::after {
  content: "→";
  margin-left: 0.4rem;
  transition: transform .2s ease;
}
.ipc-card__btn:hover { color: var(--ipc-escuro); text-decoration: underline; }
.ipc-card__btn:hover::after { transform: translateX(3px); }
.ipc-card__btn--ghost { color: var(--ipc-suave); }
.ipc-card__btn--ghost::after { content: "♡"; }

.ipc .ipc__nota {
  margin-top: clamp(1.5rem, 4vw, 2.25rem);
  font-size: 0.76rem;
  line-height: 1.6;
  color: var(--ipc-suave);
  max-width: 44rem;
}

@media (prefers-reduced-motion: reduce) {
  .ipc-card__btn::after { transition: none; }
}
/* Aviso de cookies (banner) + Política de privacidade — Grupo Ana Cintra */

/* ---- Aviso de cookies ---- */
.ck{
  position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 9999;
  max-width: 960px; margin: 0 auto;
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
  background: #17322C; color: #F3EFE7;
  padding: 16px 20px; border-radius: 10px;
  box-shadow: 0 8px 30px rgba(0,0,0,.25);
  font-family: 'Inter', system-ui, sans-serif; font-size: 14px; line-height: 1.5;
}
.ck[hidden]{ display: none; }
.ck__txt{ margin: 0; flex: 1 1 260px; }
.ck__txt a{ color: #A9D8CB; text-decoration: underline; }
.ck__btn{
  flex: 0 0 auto; cursor: pointer; border: 0;
  background: #F3EFE7; color: #17322C;
  font-weight: 600; font-size: 14px; font-family: inherit;
  padding: 10px 22px; border-radius: 100px;
}
.ck__btn:hover{ background: #fff; }

/* ---- Página de política de privacidade ---- */
.priv{
  font-family: 'Inter', system-ui, sans-serif;
  color: #080808; background: #fff;
  min-height: 100vh; padding: 48px 20px 80px;
}
.priv__wrap{ max-width: 760px; margin: 0 auto; }
.priv__back{
  display: inline-block; margin-bottom: 24px;
  color: #2F6A5C; font-size: 14px; font-weight: 500; text-decoration: none;
}
.priv__back:hover{ text-decoration: underline; }
.priv__title{ font-size: clamp(28px,5vw,40px); font-weight: 600; margin: 0 0 8px; letter-spacing: -.01em; }
.priv__upd{ color: #6b7770; font-size: 14px; margin: 0 0 32px; }
.priv p{ font-size: 16px; line-height: 1.7; color: #2b3b36; margin: 0 0 16px; }
.priv__h2{ font-size: 20px; font-weight: 600; margin: 36px 0 12px; color: #17322C; }
.priv__ul{ margin: 0 0 16px; padding-left: 22px; }
.priv__ul li{ font-size: 16px; line-height: 1.7; color: #2b3b36; margin-bottom: 8px; }
.priv a{ color: #2F6A5C; }
.priv strong{ color: #17322C; }
.priv__wrap > .priv__back:last-child{ margin-top: 32px; margin-bottom: 0; }
/* ===========================================================================
   Rodapé padrão das landing pages + botão flutuante do WhatsApp.
   Compartilhado entre as duas marcas — ver views/shared/_rodape_lp.html.erb.
   Prefixo próprio `.rlp-`; cada LP ajusta as cores pelas variáveis --rlp-*.
   =========================================================================== */

.rlp {
  --rlp-fundo:  #0A2C35;
  --rlp-texto:  #9FB8BF;
  --rlp-claro:  #FFFFFF;
  --rlp-linha:  rgba(255, 255, 255, .12);
  --rlp-fraco:  #7A959D;

  padding-block: clamp(2.5rem, 6vw, 4rem) 2rem;
  background: var(--rlp-fundo);
  color: var(--rlp-texto);
}

.rlp *, .rlp *::before, .rlp *::after { box-sizing: border-box; }
.rlp h3 { margin: 0; }
.rlp p { margin: 0; }
.rlp img { max-width: 100%; height: auto; display: block; }

.rlp__wrap {
  width: 100%;
  max-width: 1180px;
  margin-inline: auto;
  padding-inline: clamp(1.25rem, 5vw, 2.5rem);
}

.rlp__grid { display: grid; gap: 2rem; }
@media (min-width: 780px) { .rlp__grid { grid-template-columns: 1.5fr 1fr 1fr; } }

.rlp__wordmark { width: clamp(140px, 20vw, 190px); margin-bottom: 1.1rem; }
.rlp__nome {
  margin-bottom: 1.1rem;
  font-size: 1.4rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--rlp-claro);
}
.rlp__desc { font-size: 0.85rem; line-height: 1.65; max-width: 26rem; }

.rlp__col h3 {
  margin-bottom: 0.9rem;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--rlp-claro);
}

.rlp__links { display: grid; gap: 0.35rem; }
.rlp__links a {
  display: flex;
  align-items: center;
  min-height: 40px;          /* alvo de toque; o dedo não erra o link */
  font-size: 0.88rem;
  color: var(--rlp-texto);
  text-decoration: none;
}
.rlp__links a:hover { color: var(--rlp-claro); text-decoration: underline; }

.rlp__gac { width: clamp(150px, 22vw, 200px); margin-bottom: 0.9rem; }
.rlp__creci { font-size: 0.82rem; line-height: 1.6; }
.rlp__creci strong { color: var(--rlp-claro); font-weight: 600; }

/* 🚨 Prefixo `.rlp` obrigatório: é um <p>, e o reset `.rlp p { margin: 0 }`
   (0,1,1) vence a classe sozinha (0,1,0). Este afastamento do texto legal
   estava escrito e morto nas três LPs desde que o rodapé nasceu — o aviso legal
   ficava colado no bloco de cima. Achado na varredura de 14/08/2026. */
.rlp .rlp__legal {
  margin-top: 2.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--rlp-linha);
  font-size: 0.75rem;
  line-height: 1.6;
  color: var(--rlp-fraco);
}
.rlp__legal a { color: var(--rlp-texto); text-decoration: underline; }
.rlp__legal a:hover { color: var(--rlp-claro); }

/* --- Botão flutuante ------------------------------------------------------ */

.rlp-wa {
  position: fixed;
  right: 1rem;
  bottom: 1rem;
  z-index: 60;
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  min-height: 52px;
  padding: 0.7rem 1.15rem 0.7rem 0.95rem;
  border-radius: 999px;
  background: #25D366;
  color: #FFFFFF;
  font-size: 0.95rem;
  font-weight: 500;
  text-decoration: none;
  box-shadow: 0 6px 20px rgba(0, 0, 0, .25);
  transition: background-color .2s ease;
}
.rlp-wa svg { width: 26px; height: 26px; fill: #FFFFFF; flex: 0 0 auto; }
.rlp-wa:hover { background: #1FBB58; }

/* Em telas estreitas o rótulo sai e sobra o ícone: a pílula inteira cobriria
   parte do conteúdo justamente onde o polegar rola a página. */
@media (max-width: 420px) {
  .rlp-wa { gap: 0; padding: 0; width: 56px; height: 56px; justify-content: center; }
  .rlp-wa span { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .rlp-wa { transition: none; }
}
/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS (and SCSS, if configured) file within this directory, lib/assets/stylesheets, or any plugin's
 * vendor/assets/stylesheets directory can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the bottom of the
 * compiled file so the styles you add here take precedence over styles defined in any other CSS
 * files in this directory. Styles in this file should be added after the last require_* statement.
 * It is generally better to create a new file per style scope.
 *


 */
