/* ============================================================
   TM LAB · Design System — Páginas de imóvel
   Compartilhado pelas 3 casas. Alterar aqui muda todas.
   Ver _docs/DESIGN-SYSTEM.md antes de mexer.
   ============================================================ */

/* ---------- 1. Tokens ---------- */
:root{
  /* Superfícies */
  --ink:      #14161a;   /* hero / rodapé — grafite profundo */
  --ink-2:    #1e2229;
  --ink-3:    #2b3038;
  --paper:    #fbf9f6;   /* corpo — off-white quente */
  --paper-2:  #f3efe8;
  --paper-3:  #ebe5db;
  --line:     #e0d9cd;
  --line-ink: rgba(255,255,255,.14);

  /* Texto */
  --tx:       #21242a;
  --tx-2:     #5b606a;
  --tx-3:     #8a8f99;
  --tx-inv:   #f6f3ee;
  --tx-inv-2: #a8adb6;

  /* Acento */
  --gold:      #a97833;
  --gold-2:    #c99a52;
  --gold-soft: #f0e4d0;
  --green:     #2c5c4d;
  --green-soft:#e4efe9;
  --clay:      #9a4f38;
  --clay-soft: #f7e7e1;

  /* Tipografia */
  --ff-display: "Fraunces", "Iowan Old Style", Georgia, serif;
  --ff-text: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

  /* Ritmo */
  --r-sm: 8px;
  --r:    14px;
  --r-lg: 22px;
  --r-xl: 30px;
  --pad:  clamp(20px, 5vw, 40px);
  --gap:  clamp(28px, 5vw, 56px);
  --sec:  clamp(64px, 10vw, 128px);
  --maxw: 1180px;

  --shadow-sm: 0 1px 2px rgba(20,22,26,.05), 0 4px 14px rgba(20,22,26,.05);
  --shadow:    0 2px 6px rgba(20,22,26,.06), 0 18px 44px rgba(20,22,26,.10);
  --shadow-lg: 0 30px 80px rgba(20,22,26,.20);

  /* Correção fotográfica. Leve e uniforme — recupera luz sem falsear o imóvel.
     --photo-night é mais forte, só para as fotos externas feitas à noite.
     --photo-dark recupera interiores fotografados sem luz preparada (Araci). */
  --photo-fix:   brightness(1.03) contrast(1.05) saturate(1.04);
  --photo-night: brightness(1.13) contrast(1.07) saturate(1.06);
  --photo-dark:  brightness(1.16) contrast(1.04) saturate(1.05);
}

/* ---------- 2. Reset ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; overflow-x:hidden; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }
body{
  margin:0; background:var(--paper); color:var(--tx);
  font-family:var(--ff-text); font-size:17px; line-height:1.65;
  font-feature-settings:"kern","liga","cv11";
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img,svg,iframe{ display:block; max-width:100%; }
img{ height:auto; }
a{ color:inherit; }
button{ font:inherit; color:inherit; }
h1,h2,h3,h4{ margin:0; font-family:var(--ff-display); font-weight:600; line-height:1.1; letter-spacing:-.015em; }
p{ margin:0; }
ul,ol{ margin:0; padding:0; list-style:none; }
:focus-visible{ outline:2.5px solid var(--gold-2); outline-offset:3px; border-radius:4px; }

/* ---------- 3. Escala tipográfica ---------- */
.t-hero  { font-size:clamp(2.35rem, 6.2vw, 4.3rem); line-height:1.03; letter-spacing:-.028em; }
.t-h2    { font-size:clamp(1.85rem, 4.2vw, 3rem);   line-height:1.08; letter-spacing:-.022em; }
.t-h3    { font-size:clamp(1.2rem, 2.3vw, 1.55rem); line-height:1.2;  letter-spacing:-.012em; }
.t-lead  { font-size:clamp(1.06rem, 1.9vw, 1.3rem); line-height:1.55; color:var(--tx-2); }
.t-sm    { font-size:.935rem; line-height:1.6; }
.t-xs    { font-size:.82rem;  line-height:1.55; }
.t-num   { font-family:var(--ff-display); font-weight:600; font-variant-numeric:tabular-nums;
           letter-spacing:-.03em; line-height:1; }

.eyebrow{
  display:inline-flex; align-items:center; gap:9px;
  font-size:.735rem; font-weight:600; letter-spacing:.15em; text-transform:uppercase;
  color:var(--gold); font-family:var(--ff-text);
}
.eyebrow::before{ content:""; width:26px; height:1.5px; background:currentColor; opacity:.55; flex:none; }
.eyebrow--inv{ color:var(--gold-2); }
.eyebrow--plain::before{ display:none; }

/* ---------- 4. Layout ---------- */
.wrap{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--pad); }
.wrap--narrow{ max-width:820px; }
.section{ padding-block:var(--sec); }
.section--tight{ padding-block:clamp(48px,7vw,84px); }
.section--dark{ background:var(--ink); color:var(--tx-inv); }
.section--dark .t-lead{ color:var(--tx-inv-2); }
.section--alt{ background:var(--paper-2); }
.stack{ display:flex; flex-direction:column; }
.stack > * + *{ margin-top:var(--flow, 20px); }
.grid{ display:grid; gap:clamp(16px,2.6vw,26px); }
.hr{ height:1px; background:var(--line); border:0; margin:0; }

.sec-head{ max-width:660px; margin-bottom:clamp(34px,5vw,56px); }
.sec-head .t-h2{ margin-top:16px; }
.sec-head .t-lead{ margin-top:18px; }

/* ---------- 5. Botões ---------- */
.btn{
  --btn-bg:var(--ink); --btn-tx:var(--tx-inv); --btn-bd:var(--ink);
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  padding:15px 26px; border-radius:999px; border:1.5px solid var(--btn-bd);
  background:var(--btn-bg); color:var(--btn-tx);
  font-size:.96rem; font-weight:600; letter-spacing:-.005em;
  text-decoration:none; cursor:pointer; white-space:nowrap;
  transition:transform .18s cubic-bezier(.3,.7,.4,1), box-shadow .18s, background .18s, color .18s, border-color .18s;
}
.btn:hover{ transform:translateY(-2px); box-shadow:var(--shadow); }
.btn:active{ transform:translateY(0); }
.btn svg{ width:19px; height:19px; flex:none; }
.btn--wa   { --btn-bg:#128c4b; --btn-bd:#128c4b; --btn-tx:#fff; }
.btn--wa:hover{ --btn-bg:#0f7a41; --btn-bd:#0f7a41; }
.btn--ghost{ --btn-bg:transparent; --btn-tx:var(--tx); --btn-bd:var(--line); }
.btn--ghost:hover{ --btn-bd:var(--tx-3); }
.btn--ghost-inv{ --btn-bg:transparent; --btn-tx:var(--tx-inv); --btn-bd:var(--line-ink); }
.btn--ghost-inv:hover{ --btn-bd:rgba(255,255,255,.42); }
.btn--sm{ padding:11px 19px; font-size:.875rem; }
.btn-row{ display:flex; flex-wrap:wrap; gap:12px; }

/* ---------- 6. Barra fixa ---------- */
.topbar{
  position:fixed; inset:0 0 auto 0; z-index:60;
  background:rgba(20,22,26,.86); backdrop-filter:blur(14px) saturate(1.4);
  -webkit-backdrop-filter:blur(14px) saturate(1.4);
  border-bottom:1px solid var(--line-ink);
  transform:translateY(-100%); transition:transform .34s cubic-bezier(.4,0,.2,1);
}
.topbar.is-on{ transform:translateY(0); }
.topbar__in{ display:flex; align-items:center; justify-content:space-between; gap:16px;
  min-height:62px; padding-block:9px; }
.topbar__id{ color:var(--tx-inv); min-width:0; }
.topbar__id b{ display:block; font-family:var(--ff-display); font-weight:600; font-size:1rem; letter-spacing:-.01em; }
.topbar__id span{ display:block; font-size:.76rem; color:var(--tx-inv-2); letter-spacing:.01em;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
@media (max-width:520px){ .topbar__id span{ display:none; } }

/* ---------- 6b. Faixa de rascunho ----------
   Página que ainda espera dados dos proprietários. Fica no topo, acima do hero,
   e sai em UMA linha de HTML quando a página for publicada de verdade. */
.draft{ background:var(--gold-soft); border-bottom:1px solid #e6d3b4; color:#5f4a2a; }
.draft__in{ display:flex; gap:14px; align-items:flex-start; padding-block:14px; }
.draft svg{ width:20px; height:20px; flex:none; margin-top:2px; color:var(--gold); }
.draft p{ font-size:.9rem; line-height:1.55; }
.draft b{ color:#4a3818; font-weight:600; }

/* ---------- 7. HERO ---------- */
.hero{ position:relative; background:var(--ink); color:var(--tx-inv); overflow:hidden;
  padding-block:clamp(46px,9vw,92px) clamp(56px,9vw,104px); }
.hero::before{ /* halo quente atrás da foto */
  content:""; position:absolute; z-index:0; width:min(760px,90vw); aspect-ratio:1;
  right:-16%; top:-24%; border-radius:50%; pointer-events:none;
  background:radial-gradient(circle, rgba(201,154,82,.20), transparent 66%);
}
.hero__in{ position:relative; z-index:1; display:grid; gap:clamp(38px,6vw,64px);
  grid-template-columns:1fr; align-items:center; }
@media (min-width:940px){
  .hero__in{ grid-template-columns:1.06fr .94fr; gap:clamp(44px,5vw,72px); }
}
.hero__copy{ min-width:0; }
.hero__copy .t-hero{ margin-top:20px; color:#fff; text-wrap:balance; }
.hero__copy .t-hero em{ font-style:normal; color:var(--gold-2); }
.hero__sub{ margin-top:22px; font-size:clamp(1.04rem,1.75vw,1.24rem); line-height:1.55;
  color:var(--tx-inv-2); max-width:32em; text-wrap:pretty; }
.hero .btn-row{ margin-top:32px; }

/* Selo "direto com o proprietário" */
.hero__seal{ margin-top:28px; display:flex; align-items:flex-start; gap:13px;
  padding:15px 18px; border-radius:var(--r); max-width:430px;
  background:rgba(255,255,255,.045); border:1px solid var(--line-ink); }
.hero__seal svg{ width:21px; height:21px; flex:none; margin-top:1px; color:var(--gold-2); }
.hero__seal p{ font-size:.885rem; line-height:1.5; color:var(--tx-inv-2); }
.hero__seal b{ color:var(--tx-inv); font-weight:600; }

/* Foto do hero — vertical, em card (resolve o aspect ratio das fotos originais) */
.hero__fig{ position:relative; margin:0; }
.hero__fig img{
  width:100%; aspect-ratio:4/5; object-fit:cover; object-position:center 46%;
  border-radius:var(--r-xl); filter:var(--photo-night); box-shadow:var(--shadow-lg);
}
@media (min-width:940px){ .hero__fig img{ aspect-ratio:5/6; } }
/* Fotos originais quadradas (Bragança): recortar para 4/5 jogaria fora
   metade do enquadramento. Precisa vir DEPOIS do media query acima. */
.hero__fig--sq img{ aspect-ratio:1/1; }
@media (min-width:940px){ .hero__fig--sq img{ aspect-ratio:1/1; } }
.hero__badge{
  position:absolute; left:16px; bottom:26px;
  background:var(--paper); color:var(--tx); border-radius:var(--r-lg);
  padding:16px 22px; box-shadow:var(--shadow-lg); max-width:min(280px,72%);
}
.hero__badge .t-num{ font-size:2rem; color:var(--ink); }
.hero__badge span{ display:block; font-size:.775rem; color:var(--tx-2); margin-top:5px;
  letter-spacing:.02em; }

/* Faixa de números sob o hero */
.hero__stats{ position:relative; z-index:1; margin-top:clamp(40px,6vw,66px);
  padding-top:clamp(28px,4vw,38px); border-top:1px solid var(--line-ink);
  display:grid; grid-template-columns:repeat(2,1fr); gap:24px 18px; }
@media (min-width:720px){ .hero__stats{ grid-template-columns:repeat(4,1fr); } }
.hero__stats div .t-num{ font-size:clamp(1.75rem,3.6vw,2.5rem); color:#fff; }
.hero__stats div p{ margin-top:7px; font-size:.8rem; color:var(--tx-inv-2);
  letter-spacing:.04em; text-transform:uppercase; }

/* ---------- 8. Cards ---------- */
.card{ background:#fff; border:1px solid var(--line); border-radius:var(--r-lg);
  padding:clamp(22px,3vw,30px); box-shadow:var(--shadow-sm); }
.card__ico{ width:44px; height:44px; border-radius:12px; display:grid; place-items:center;
  background:var(--gold-soft); color:var(--gold); margin-bottom:18px; }
.card__ico svg{ width:22px; height:22px; }
.card h3{ margin-bottom:11px; }
.card p{ color:var(--tx-2); font-size:.95rem; }
.card--dark{ background:var(--ink-2); border-color:var(--line-ink); color:var(--tx-inv); }
.card--dark p{ color:var(--tx-inv-2); }

.grid-2{ grid-template-columns:1fr; }
.grid-3{ grid-template-columns:1fr; }
@media (min-width:700px){ .grid-2{ grid-template-columns:repeat(2,1fr); }
                          .grid-3{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:1000px){ .grid-3{ grid-template-columns:repeat(3,1fr); } }

/* ---------- 9. Ficha técnica ---------- */
.specs{ display:grid; grid-template-columns:repeat(2,1fr); gap:1px;
  background:var(--line); border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; }
@media (min-width:760px){ .specs{ grid-template-columns:repeat(4,1fr); } }
.spec{ background:#fff; padding:clamp(20px,2.6vw,28px); }
.spec dt{ font-size:.745rem; letter-spacing:.11em; text-transform:uppercase; color:var(--tx-3);
  font-weight:600; }
.spec dd{ margin:9px 0 0; }
.spec dd .t-num{ font-size:clamp(1.5rem,3vw,1.95rem); color:var(--ink); }
.spec dd small{ font-family:var(--ff-text); font-size:.83rem; font-weight:500;
  letter-spacing:0; color:var(--tx-2); margin-left:3px; }
.spec p{ margin-top:6px; font-size:.8rem; color:var(--tx-3); line-height:1.45; }
/* Número que ainda depende dos proprietários — não inventar, sinalizar. */
.spec--todo dd .t-num{ color:var(--tx-3); }
.spec--todo p{ color:var(--gold); font-weight:600; }

/* Lista de itens do imóvel */
.checks{ display:grid; gap:13px 26px; grid-template-columns:1fr; }
@media (min-width:640px){ .checks{ grid-template-columns:repeat(2,1fr); } }
/* display:block + marcador absoluto — com flex, um <b> no meio do item
   viraria uma coluna própria e quebraria o texto corrido. */
.checks li{ position:relative; padding-left:32px; font-size:.955rem; }
.checks li::before{
  content:""; position:absolute; left:0; top:2px; width:20px; height:20px; border-radius:50%;
  background:var(--green-soft) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232c5c4d' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center/12px no-repeat;
}

/* ---------- 10. Vocações (para quem serve) ---------- */
.use{ position:relative; background:#fff; border:1px solid var(--line);
  border-radius:var(--r-lg); padding:clamp(24px,3vw,32px); overflow:hidden;
  transition:transform .22s cubic-bezier(.3,.7,.4,1), box-shadow .22s, border-color .22s; }
.use::after{ content:""; position:absolute; inset:0 auto 0 0; width:3px; background:var(--gold);
  opacity:0; transition:opacity .22s; }
.use:hover{ transform:translateY(-3px); box-shadow:var(--shadow); border-color:var(--paper-3); }
.use:hover::after{ opacity:1; }
.use__tag{ display:inline-block; font-size:.7rem; font-weight:700; letter-spacing:.13em;
  text-transform:uppercase; color:var(--gold); margin-bottom:13px; }
.use h3{ margin-bottom:12px; }
.use p{ color:var(--tx-2); font-size:.95rem; }
.use__why{ margin-top:17px; padding-top:15px; border-top:1px dashed var(--line);
  font-size:.87rem; color:var(--tx-2); }
.use__why b{ color:var(--tx); font-weight:600; }

/* ---------- 11. Galeria ---------- */
.gal-group + .gal-group{ margin-top:clamp(38px,5vw,56px); }
.gal-group__head{ display:flex; align-items:baseline; gap:14px; flex-wrap:wrap;
  margin-bottom:20px; padding-bottom:14px; border-bottom:1px solid var(--line); }
.gal-group__head h3{ font-size:1.22rem; }
.gal-group__head p{ font-size:.87rem; color:var(--tx-2); }

.gal{ display:grid; gap:clamp(12px,1.8vw,18px); grid-template-columns:repeat(2,1fr); }
@media (min-width:820px){ .gal{ grid-template-columns:repeat(3,1fr); } }
.shot{ position:relative; margin:0; border-radius:var(--r); overflow:hidden;
  background:var(--paper-3); cursor:zoom-in; border:0; padding:0; width:100%;
  display:block; text-align:left; }
.shot img{ width:100%; aspect-ratio:3/4; object-fit:cover; filter:var(--photo-fix);
  transition:transform .5s cubic-bezier(.3,.7,.4,1); }
.shot:hover img{ transform:scale(1.045); }
.shot figcaption{
  position:absolute; inset:auto 0 0 0; padding:32px 14px 13px;
  background:linear-gradient(to top, rgba(15,17,20,.90), rgba(15,17,20,.55) 45%, transparent);
  color:#fff; font-size:.82rem; line-height:1.4; letter-spacing:-.005em;
}
.shot figcaption b{ display:block; font-weight:600; font-size:.9rem; margin-bottom:2px; }
.shot--wide{ grid-column:span 2; }
.shot--wide img{ aspect-ratio:16/11; }
/* Fotos externas feitas a noite: correcao de luz mais forte. */
.gal-group--night .shot img, .lb.is-night img{ filter:var(--photo-night); }
/* Interiores fotografados sem luz preparada. */
.gal-group--dark .shot img{ filter:var(--photo-dark); }
/* Originais quadrados: manter o enquadramento em vez de recortar para 3/4. */
.gal-group--sq .shot img{ aspect-ratio:1/1; }
.gal-group--sq .shot--wide img{ aspect-ratio:16/11; }
@media (max-width:819px){ .shot--wide{ grid-column:span 2; } }

/* Lightbox */
.lb{ position:fixed; inset:0; z-index:100; display:none; place-items:center;
  background:rgba(12,13,16,.955); backdrop-filter:blur(6px); padding:clamp(12px,3vw,40px); }
.lb.is-on{ display:grid; }
.lb img{ max-width:100%; max-height:82vh; object-fit:contain; border-radius:var(--r);
  filter:var(--photo-fix); }
.lb__cap{ margin-top:16px; text-align:center; color:#e8e5e0; font-size:.9rem; max-width:44em; }
.lb__cap b{ display:block; font-family:var(--ff-display); font-size:1.06rem; margin-bottom:4px; color:#fff; }
.lb__x, .lb__nav{ position:absolute; background:rgba(255,255,255,.09); border:1px solid rgba(255,255,255,.16);
  color:#fff; width:46px; height:46px; border-radius:50%; display:grid; place-items:center;
  cursor:pointer; transition:background .18s; }
.lb__x:hover, .lb__nav:hover{ background:rgba(255,255,255,.2); }
.lb__x{ top:clamp(12px,2.5vw,26px); right:clamp(12px,2.5vw,26px); font-size:1.5rem; line-height:1; }
.lb__nav{ top:50%; transform:translateY(-50%); font-size:1.4rem; line-height:1; }
.lb__nav--prev{ left:clamp(8px,2vw,26px); }
.lb__nav--next{ right:clamp(8px,2vw,26px); }
.lb__count{ position:absolute; bottom:clamp(12px,2.5vw,26px); left:50%; transform:translateX(-50%);
  color:#9a9ea6; font-size:.8rem; letter-spacing:.08em; }

/* ---------- 12. Transparência (forte / atenção) ---------- */
.balance{ display:grid; gap:clamp(16px,2.4vw,24px); grid-template-columns:1fr; }
@media (min-width:840px){ .balance{ grid-template-columns:repeat(2,1fr); } }
.bal{ border-radius:var(--r-lg); padding:clamp(24px,3vw,32px); border:1px solid; }
.bal--pro{ background:var(--green-soft); border-color:#c9dfd6; }
.bal--con{ background:var(--clay-soft); border-color:#eed3ca; }
.bal h3{ display:flex; align-items:center; gap:11px; margin-bottom:18px; font-size:1.16rem; }
.bal h3 svg{ width:24px; height:24px; flex:none; }
.bal--pro h3{ color:#1f4a3d; } .bal--con h3{ color:#7d3f2c; }
.bal li{ position:relative; padding-left:19px; font-size:.94rem; line-height:1.55; }
.bal li + li{ margin-top:12px; }
.bal li::before{ content:""; position:absolute; left:0; top:9px; width:6px; height:6px;
  border-radius:50%; background:currentColor; opacity:.42; }
.bal--pro li{ color:#264f43; } .bal--con li{ color:#6f3b2a; }
.bal__foot{ margin-top:20px; padding-top:16px; border-top:1px solid rgba(0,0,0,.09);
  font-size:.87rem; line-height:1.55; }
.bal--pro .bal__foot{ color:#1f4a3d; } .bal--con .bal__foot{ color:#7d3f2c; }

/* ---------- 13. Localização ---------- */
.loc{ display:grid; gap:clamp(24px,3.4vw,40px); grid-template-columns:1fr; align-items:start; }
@media (min-width:900px){ .loc{ grid-template-columns:1fr 1.15fr; } }
.map{ border-radius:var(--r-lg); overflow:hidden; border:1px solid var(--line);
  box-shadow:var(--shadow-sm); background:var(--paper-3); }
.map iframe{ width:100%; height:clamp(320px,48vw,470px); border:0; }
.near li{ display:flex; justify-content:space-between; gap:18px; align-items:baseline;
  padding:13px 0; border-bottom:1px solid var(--line); font-size:.95rem; }
.near li:first-child{ padding-top:0; }
.near li b{ font-weight:500; }
.near li span{ font-size:.85rem; color:var(--tx-3); white-space:nowrap; }

/* ---------- 14. Passos / negociação ---------- */
.steps{ counter-reset:s; display:grid; gap:clamp(18px,2.6vw,26px); grid-template-columns:1fr; }
@media (min-width:820px){ .steps{ grid-template-columns:repeat(3,1fr); } }
.steps--2{ grid-template-columns:1fr; }
@media (min-width:760px){ .steps--2{ grid-template-columns:repeat(2,1fr); } }
.step{ position:relative; padding-top:26px; border-top:2px solid var(--line); counter-increment:s; }
.section--dark .step{ border-color:var(--line-ink); }
.step::before{ content:"0" counter(s); position:absolute; top:-2px; left:0;
  font-family:var(--ff-display); font-size:.9rem; font-weight:600; color:var(--gold);
  transform:translateY(-140%); letter-spacing:.06em; }
.section--dark .step::before{ color:var(--gold-2); }
.step h3{ font-size:1.1rem; margin-bottom:10px; }
.step p{ font-size:.93rem; color:var(--tx-2); }
.section--dark .step p{ color:var(--tx-inv-2); }

/* ---------- 14b. Tabela de dados ---------- */
.tbl-wrap{ overflow-x:auto; -webkit-overflow-scrolling:touch;
  border:1px solid var(--line); border-radius:var(--r-lg); background:#fff; }
.tbl{ width:100%; min-width:560px; border-collapse:collapse; font-size:.93rem; }
.tbl th{ text-align:left; font-size:.7rem; letter-spacing:.11em; text-transform:uppercase;
  color:var(--tx-3); font-weight:700; padding:18px 16px; border-bottom:1px solid var(--line);
  white-space:nowrap; background:var(--paper); }
.tbl td{ padding:15px 16px; border-bottom:1px solid var(--line); }
.tbl tr:last-child td{ border-bottom:0; }
.tbl .r{ text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.tbl tr.is-us td{ background:var(--gold-soft); font-weight:600; color:var(--ink); }
.tbl__note{ margin-top:14px; font-size:.83rem; color:var(--tx-3); }

/* ---------- 14c. Card de imóvel (página do plano) ---------- */
.imob{ border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden;
  background:#fff; box-shadow:var(--shadow-sm); }
.imob + .imob{ margin-top:clamp(20px,3vw,30px); }
.imob__top{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:flex-start;
  gap:16px; padding:clamp(20px,2.6vw,26px) clamp(22px,3vw,30px); background:var(--ink); color:#fff; }
.imob__top h3{ color:#fff; font-size:clamp(1.15rem,2.2vw,1.4rem); }
.imob__tag{ display:block; font-size:.7rem; font-weight:700; letter-spacing:.13em;
  text-transform:uppercase; color:var(--gold-2); margin-bottom:8px; }
.imob__val{ text-align:right; }
@media (max-width:560px){ .imob__val{ text-align:left; } }
.imob__val .t-num{ font-size:clamp(1.3rem,2.6vw,1.6rem); color:#fff; }
.imob__val p{ font-size:.72rem; color:var(--tx-inv-2); margin-top:5px; letter-spacing:.06em;
  text-transform:uppercase; }
.imob__body{ padding:clamp(22px,3vw,30px); }
.imob__persona{ background:var(--paper-2); border-radius:var(--r); padding:16px 18px;
  font-size:.92rem; margin-bottom:24px; }
.imob__cols{ display:grid; gap:22px clamp(24px,3vw,36px); grid-template-columns:1fr; }
@media (min-width:720px){ .imob__cols{ grid-template-columns:repeat(2,1fr); } }
.imob__cols h4{ font-family:var(--ff-text); font-size:.74rem; font-weight:700;
  letter-spacing:.11em; text-transform:uppercase; margin:0 0 14px; }
.imob__cols .pro h4{ color:var(--green); } .imob__cols .con h4{ color:var(--clay); }
.list-pro li, .list-con li{ position:relative; padding-left:24px; font-size:.92rem;
  line-height:1.5; }
.list-pro li + li, .list-con li + li{ margin-top:11px; }
.list-pro li::before, .list-con li::before{ position:absolute; left:0; top:0; font-weight:700; }
.list-pro li::before{ content:"✓"; color:var(--green); }
.list-con li::before{ content:"!"; color:var(--clay); left:5px; }

/* ---------- 14d. Índice e blocos de destaque ---------- */
.toc{ display:grid; gap:2px; grid-template-columns:1fr; margin-top:34px;
  border-top:1px solid var(--line-ink); padding-top:26px; }
@media (min-width:720px){ .toc{ grid-template-columns:repeat(2,1fr); gap:2px 34px; } }
.toc a{ display:flex; align-items:baseline; gap:12px; padding:11px 0; text-decoration:none;
  border-bottom:1px solid var(--line-ink); color:var(--tx-inv); font-size:.95rem;
  transition:color .18s; }
.toc a:hover{ color:var(--gold-2); }
.toc a b{ font-family:var(--ff-display); color:var(--gold-2); font-size:.85rem; flex:none;
  font-weight:600; }

.note{ border-radius:var(--r-lg); padding:clamp(24px,3vw,32px); border:1px solid; }
.note--gold{ background:var(--gold-soft); border-color:#e6d3b4; }
.note--green{ background:var(--green-soft); border-color:#c9dfd6; }
.note--clay{ background:var(--clay-soft); border-color:#eed4ca; }
.note h3{ margin-bottom:14px; }
.note--gold h3{ color:#7a5720; } .note--green h3{ color:#1f4a3d; } .note--clay h3{ color:#7d3f2c; }
.note p + p{ margin-top:14px; }
.note--green p{ color:#264f43; } .note--clay p{ color:#6f3b2a; }
.note--gold p{ color:#5f4a2a; }
.note p{ font-size:1rem; line-height:1.62; }

.kicker{ font-family:var(--ff-display); font-size:clamp(1.25rem,2.6vw,1.7rem); line-height:1.35;
  letter-spacing:-.015em; text-wrap:pretty; }

/* ---------- 15. FAQ ---------- */
.faq{ border-top:1px solid var(--line); }
.faq details{ border-bottom:1px solid var(--line); }
.faq summary{ display:flex; align-items:center; justify-content:space-between; gap:20px;
  padding:22px 0; cursor:pointer; list-style:none; font-family:var(--ff-display);
  font-size:clamp(1.02rem,1.7vw,1.16rem); font-weight:600; letter-spacing:-.01em; }
.faq summary::-webkit-details-marker{ display:none; }
.faq summary::after{ content:""; flex:none; width:22px; height:22px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235b606a' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center/contain no-repeat;
  transition:transform .25s; }
.faq details[open] summary::after{ transform:rotate(45deg); }
.faq details > div{ padding-bottom:24px; max-width:66ch; color:var(--tx-2); font-size:.96rem; }
.faq details > div p + p{ margin-top:12px; }

/* ---------- 16. CTA final ---------- */
.cta{ position:relative; background:var(--ink); color:var(--tx-inv); overflow:hidden;
  border-radius:var(--r-xl); padding:clamp(38px,6vw,72px) var(--pad); text-align:center; }
.cta::before{ content:""; position:absolute; inset:auto 50% -60% auto; width:min(720px,110%);
  aspect-ratio:1; transform:translateX(50%); border-radius:50%; pointer-events:none;
  background:radial-gradient(circle, rgba(201,154,82,.20), transparent 64%); }
.cta > *{ position:relative; }
.cta .t-h2{ color:#fff; margin-top:16px; text-wrap:balance; }
.cta p{ margin:18px auto 0; max-width:46ch; color:var(--tx-inv-2);
  font-size:clamp(1rem,1.6vw,1.14rem); }
.cta .btn-row{ margin-top:32px; justify-content:center; }
.cta__note{ margin-top:22px; font-size:.83rem; color:var(--tx-3); }

/* ---------- 17. Rodapé ---------- */
.foot{ background:var(--ink); color:var(--tx-inv-2); padding-block:clamp(40px,6vw,60px) 34px;
  border-top:1px solid var(--line-ink); }
.foot__in{ display:grid; gap:26px; grid-template-columns:1fr; }
@media (min-width:760px){ .foot__in{ grid-template-columns:1.4fr 1fr; align-items:end; } }
.foot b{ color:var(--tx-inv); font-family:var(--ff-display); font-size:1.16rem; font-weight:600;
  display:block; margin-bottom:8px; }
.foot p{ font-size:.885rem; }
.foot__legal{ margin-top:30px; padding-top:20px; border-top:1px solid var(--line-ink);
  font-size:.775rem; color:var(--tx-3); line-height:1.6; }

/* ---------- 18. CTA fixo mobile ---------- */
.dock{ position:fixed; inset:auto 0 0 0; z-index:55; padding:11px var(--pad)
  calc(11px + env(safe-area-inset-bottom));
  background:rgba(251,249,246,.94); backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px); border-top:1px solid var(--line);
  display:flex; align-items:center; gap:14px; justify-content:space-between;
  transform:translateY(110%); transition:transform .34s cubic-bezier(.4,0,.2,1); }
.dock.is-on{ transform:translateY(0); }
.dock__price .t-num{ font-size:1.24rem; color:var(--ink); }
.dock__price span{ display:block; font-size:.7rem; color:var(--tx-2); letter-spacing:.03em; }
.dock .btn{ flex:1; max-width:220px; }
@media (min-width:940px){ .dock{ display:none; } }
@media (max-width:939px){ body{ padding-bottom:74px; } }

/* ---------- 19. Reveal on scroll ---------- */
.rv{ opacity:0; transform:translateY(20px); transition:opacity .7s cubic-bezier(.2,.6,.3,1),
     transform .7s cubic-bezier(.2,.6,.3,1); }
.rv.is-in{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){
  .rv{ opacity:1; transform:none; transition:none; }
  .shot img, .use, .btn{ transition:none; }
}

/* ---------- 20. Utilitários ---------- */
.sr{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden;
  clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.mt-s{ margin-top:14px; } .mt-m{ margin-top:26px; } .mt-l{ margin-top:44px; }
.tx-2{ color:var(--tx-2); } .center{ text-align:center; }
.pill{ display:inline-flex; align-items:center; gap:7px; padding:6px 13px; border-radius:999px;
  font-size:.775rem; font-weight:600; letter-spacing:.02em;
  background:var(--gold-soft); color:var(--gold); }
.pill--live{ background:var(--green-soft); color:var(--green); }
.pill--live::before{ content:""; width:7px; height:7px; border-radius:50%; background:currentColor;
  animation:pulse 2.2s ease-in-out infinite; }
@keyframes pulse{ 0%,100%{ opacity:1 } 50%{ opacity:.32 } }

/* ---------- 21. Print ---------- */
@media print{
  .topbar,.dock,.lb,.btn{ display:none !important; }
  body{ background:#fff; font-size:11pt; }
  .hero,.section--dark,.cta,.foot{ background:#fff !important; color:#000 !important; }
  .hero__copy .t-hero,.cta .t-h2{ color:#000 !important; }
  .section{ padding-block:22px; break-inside:avoid; }
}
