/* Residencial Bosque Verde — movimento da landing.
   O tema do movimento vem da marca: o arco do Pórtico se abre, o broto cresce, as fotos descem pela curva da encosta.
   Tudo aqui só vale com a classe .bv-movimento no <html> (posta no <head> quando a pessoa não pediu menos movimento).
   Sem JavaScript, ou com "reduzir movimento" ligado, a página aparece completa e parada. */

:root { --bv-curva: cubic-bezier(.2, .7, .2, 1); --bv-mola: cubic-bezier(.34, 1.4, .5, 1); }

/* ---------- Sempre (com ou sem movimento) ---------- */

/* Broto sobre o arco do hero */
.bv-arco__broto { position: absolute; left: 50%; bottom: calc(100% + 14px); width: 46px; height: auto; transform: translateX(-50%); overflow: visible; pointer-events: none; }
.bv-arco__broto .bv-broto__haste { fill: var(--bv-serra); }
.bv-arco__broto .bv-broto__centro { fill: var(--bv-serra); }
.bv-arco__broto .bv-broto__lado { fill: var(--bv-folha); }
.bv-arco { margin-top: 64px; }
@container pagina (min-width: 900px) { .bv-arco { margin-top: 70px; } }

/* Selo ao vivo sobre a foto do hero */
.bv-arco__selo {
  position: absolute; left: 12px; bottom: 22px; z-index: 2; max-width: 230px;
  display: flex; gap: 12px; align-items: center; padding: 12px 16px; border-radius: 6px;
  background: var(--bv-mata); color: var(--bv-sobre-mata); font-size: 14px; line-height: 1.35; box-shadow: var(--bv-sombra-flutuante);
}
.bv-arco__selo strong { display: block; font: 400 30px/1 var(--bv-display); color: var(--bv-sol); }
@container pagina (min-width: 900px) { .bv-arco__selo { left: -36px; bottom: 44px; } }

/* Ponto pulsante de "ao vivo" */
.bv-pulso { position: relative; flex: none; width: 10px; height: 10px; border-radius: 50%; background: var(--bv-serra); }
.bv-pulso::after { content: ""; position: absolute; inset: 0; border-radius: 50%; background: inherit; opacity: 0; }
.bv-ao-vivo { display: inline-flex; align-items: center; gap: 8px; margin-left: auto; font-size: 13px; font-weight: 600; color: var(--bv-dourado-texto); }

/* Letreiro com os diferenciais */
.bv-letreiro { background: var(--bv-sol); color: var(--bv-mata); overflow: hidden; border-block: 1px solid rgba(36, 57, 24, 0.12); }
.bv-letreiro__trilho { display: flex; width: max-content; }
.bv-letreiro ul { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; flex: none; }
.bv-letreiro li { display: flex; align-items: center; gap: clamp(18px, 2.4cqi, 30px); padding: 16px 0 16px clamp(18px, 2.4cqi, 30px); font: 400 clamp(19px, 2.2cqi, 26px)/1.2 var(--bv-display); white-space: nowrap; }
.bv-letreiro li svg { width: 22px; height: 23px; flex: none; }
.bv-letreiro .bv-broto__haste, .bv-letreiro .bv-broto__centro { fill: var(--bv-dourado-texto); }
.bv-letreiro .bv-broto__lado { fill: var(--bv-encosta); }

/* Botão de pausa da galeria */
.bv-seta[aria-pressed="true"] { background: var(--bv-mata); color: var(--bv-sobre-mata); }

/* Barra de leitura no topo */
.bv-topo { transition: box-shadow 300ms ease; }
.bv-topo::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: var(--bv-serra); transform-origin: 0 50%; transform: scaleX(var(--bv-leitura, 0)); }
.bv-topo.is-rolado { box-shadow: 0 6px 18px rgba(20, 30, 14, 0.10); }
.bv-topo .bv-wrap, .bv-topo__logo img { transition: min-height 300ms var(--bv-curva), height 300ms var(--bv-curva); }
.bv-topo.is-rolado .bv-wrap { min-height: 58px; }
.bv-topo.is-rolado .bv-topo__logo img { height: 38px; }
.bv-topo__nav a { position: relative; }
.bv-topo__nav a::after { content: ""; position: absolute; left: 0; right: 0; bottom: -4px; height: 1.5px; background: var(--bv-serra); transform: scaleX(0); transform-origin: 0 50%; transition: transform 260ms var(--bv-curva); }
.bv-topo__nav a:hover::after, .bv-topo__nav a.is-atual::after { transform: scaleX(1); }

/* Dica do mapa acompanha o cursor */
.bv-mapa__dica { transition: opacity 120ms ease; white-space: nowrap; z-index: 2; }

/* Perguntas abrindo com altura animada (navegadores que suportam) */
.bv-faq details::details-content { block-size: 0; overflow: clip; transition: block-size 380ms var(--bv-curva), content-visibility 380ms allow-discrete; }
.bv-faq details[open]::details-content { block-size: auto; }
.bv-faq { interpolate-size: allow-keywords; }
.bv-faq summary { transition: color 160ms ease, padding-left 260ms var(--bv-curva); }
.bv-faq summary:hover { color: var(--bv-dourado-texto); }

@media (prefers-reduced-motion: reduce) {
  .bv-topo, .bv-topo .bv-wrap, .bv-topo__logo img, .bv-topo__nav a::after, .bv-faq summary, .bv-mapa__dica { transition: none; }
  .bv-faq details::details-content { transition: none; }
  .bv-letreiro__trilho { width: auto; }
  .bv-letreiro ul { flex-wrap: wrap; justify-content: center; }
  .bv-letreiro ul[aria-hidden="true"] { display: none; }
}

/* ---------- Só com movimento ---------- */

/* Botões: sobem no hover e um brilho dourado atravessa */
.bv-movimento .bv-botao { position: relative; overflow: hidden; isolation: isolate; transition: transform 220ms var(--bv-curva), box-shadow 220ms ease, background-color 160ms ease; }
.bv-movimento .bv-botao--principal::after {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: linear-gradient(110deg, transparent 30%, rgba(255, 246, 222, 0.55) 48%, transparent 66%);
  transform: translateX(-130%);
}
.bv-movimento .bv-botao--principal:hover { transform: translateY(-2px); box-shadow: 0 10px 22px rgba(36, 57, 24, 0.22); }
.bv-movimento .bv-botao--principal:hover::after { transform: translateX(130%); transition: transform 760ms var(--bv-curva); }
.bv-movimento .bv-botao--principal:active { transform: translateY(0); }
.bv-movimento .bv-botao--cheio::after, .bv-movimento .bv-topo .bv-botao--principal::after { animation: bv-brilho 5.5s var(--bv-curva) 2.4s infinite; }
@keyframes bv-brilho { 0% { transform: translateX(-130%); } 16%, 100% { transform: translateX(130%); } }

/* Pulso do ponto ao vivo */
.bv-movimento .bv-pulso::after { animation: bv-pulso 2s ease-out infinite; }
@keyframes bv-pulso { 0% { transform: scale(1); opacity: .7; } 100% { transform: scale(3.2); opacity: 0; } }

/* Letreiro andando */
.bv-movimento .bv-letreiro__trilho { animation: bv-letreiro 46s linear infinite; }
.bv-movimento .bv-letreiro:hover .bv-letreiro__trilho { animation-play-state: paused; }
@keyframes bv-letreiro { to { transform: translateX(-50%); } }

/* ---- Abertura (hero): o arco se abre, o título sobe, o broto cresce ---- */
.bv-movimento .bv-h1:not(.is-dividido) { opacity: 0; }
.bv-movimento .bv-arco__janela { animation: bv-portao 1300ms var(--bv-curva) 80ms both; }
.bv-movimento .bv-arco__janela img { animation: bv-entrada-zoom 2000ms var(--bv-curva) 80ms both, bv-respira 22s ease-in-out 2.1s infinite alternate; }
.bv-movimento .bv-arco::before { animation: bv-portao 1500ms var(--bv-curva) 380ms both; }
@keyframes bv-portao { from { clip-path: inset(100% 0 0 0); } to { clip-path: inset(0 0 0 0); } }
@keyframes bv-entrada-zoom { from { transform: scale(1.28) translateY(6%); } to { transform: scale(1) translateY(0); } }
@keyframes bv-respira { from { transform: scale(1); object-position: 58% 50%; } to { transform: scale(1.09); object-position: 48% 46%; } }

.bv-movimento .bv-arco__broto .bv-broto__haste { transform-box: fill-box; transform-origin: 50% 100%; animation: bv-cresce 700ms var(--bv-curva) 1200ms both; }
.bv-movimento .bv-arco__broto .bv-broto__centro { transform-box: fill-box; transform-origin: 50% 100%; animation: bv-folha 900ms var(--bv-mola) 1650ms both; }
.bv-movimento .bv-arco__broto .bv-broto__lado { transform-box: fill-box; transform-origin: 50% 100%; animation: bv-folha 900ms var(--bv-mola) 1850ms both; }
.bv-movimento .bv-arco__broto g + g .bv-broto__lado { animation-delay: 1980ms; }
.bv-movimento .bv-arco__broto { animation: bv-balanca 6s ease-in-out 3s infinite; transform-origin: 50% 100%; }
@keyframes bv-cresce { from { transform: scaleY(0); } to { transform: scaleY(1); } }
@keyframes bv-folha { from { transform: scale(0); opacity: 0; } to { transform: scale(1); opacity: 1; } }
@keyframes bv-balanca { 0%, 100% { transform: translateX(-50%) rotate(0deg); } 50% { transform: translateX(-50%) rotate(3deg); } }

.bv-movimento .bv-hero__texto > .bv-abertura { animation: bv-sobe 900ms var(--bv-curva) 900ms both; }
.bv-movimento .bv-hero__texto > .bv-form { animation: bv-sobe 1000ms var(--bv-curva) 1100ms both; }
.bv-movimento .bv-arco__selo { animation: bv-selo 800ms var(--bv-mola) 2000ms both, bv-flutua 5s ease-in-out 2.8s infinite; }
.bv-movimento .bv-arco__legenda { animation: bv-aparece 600ms ease 1600ms both; }
@keyframes bv-sobe { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: none; } }
@keyframes bv-aparece { from { opacity: 0; } to { opacity: 1; } }
@keyframes bv-selo { from { opacity: 0; transform: translateY(18px) scale(.86); } to { opacity: 1; transform: none; } }
@keyframes bv-flutua { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }

/* ---- Títulos: as palavras sobem de dentro da linha ---- */
.bv-movimento .bv-p { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .1em; margin-bottom: -.1em; }
.bv-movimento .bv-p > span { display: inline-block; transform: translateY(108%); transition: transform 950ms var(--bv-curva); transition-delay: calc(var(--i, 0) * 34ms + var(--atraso, 0ms)); }
.bv-movimento .is-visivel .bv-p > span, .bv-movimento .is-visivel.bv-p > span { transform: none; }
.bv-movimento .bv-h1 .bv-p > span { --atraso: 160ms; }

/* ---- Blocos que sobem ao entrar na tela ---- */
.bv-movimento [data-bv-revela] { opacity: 0; transform: translateY(34px); transition: opacity 900ms var(--bv-curva), transform 900ms var(--bv-curva); transition-delay: var(--atraso, 0ms); }
.bv-movimento [data-bv-revela="esquerda"] { transform: translateX(-40px); }
.bv-movimento [data-bv-revela="direita"] { transform: translateX(40px); }
.bv-movimento [data-bv-revela="zoom"] { transform: scale(.94); }
.bv-movimento [data-bv-revela].is-visivel { opacity: 1; transform: none; }

/* ---- Fotos: descem como uma cortina pela curva da encosta, e andam com a rolagem ---- */
.bv-movimento .bv-foto[data-bv-cortina] .bv-foto__quadro { clip-path: inset(0 0 100% 0); transition: clip-path 1400ms var(--bv-curva); }
.bv-movimento .bv-foto[data-bv-cortina="esquerda"] .bv-foto__quadro { clip-path: inset(0 100% 0 0); }
.bv-movimento .bv-foto[data-bv-cortina="direita"] .bv-foto__quadro { clip-path: inset(0 0 0 100%); }
.bv-movimento .bv-foto[data-bv-cortina].is-visivel .bv-foto__quadro { clip-path: inset(0 0 0 0); }
.bv-movimento .bv-foto[data-bv-cortina] figcaption { opacity: 0; transition: opacity 700ms ease 900ms; }
.bv-movimento .bv-foto[data-bv-cortina].is-visivel figcaption { opacity: 1; }
.bv-movimento [data-bv-parallax] { transform: translate3d(0, var(--bv-y, 0px), 0) scale(var(--bv-escala, 1.16)); will-change: transform; }

/* Faixa de lazer: imagem maior que a faixa para o parallax */
.bv-movimento .bv-faixa-foto > img { position: absolute; left: 0; top: -12%; height: 124%; --bv-escala: 1; }
.bv-movimento .bv-faixa-foto__texto .bv-h2, .bv-movimento .bv-faixa-foto__texto .bv-abertura { clip-path: inset(0 100% 0 0); transition: clip-path 1100ms var(--bv-curva); }
.bv-movimento .bv-faixa-foto__texto .bv-abertura { transition-delay: 420ms; }
.bv-movimento .bv-faixa-foto.is-visivel .bv-faixa-foto__texto .bv-h2, .bv-movimento .bv-faixa-foto.is-visivel .bv-faixa-foto__texto .bv-abertura { clip-path: inset(0 0 0 0); }

/* ---- Listas: o broto de cada item cresce em sequência ---- */
.bv-movimento [data-bv-lista] > li { opacity: 0; transform: translateY(18px); transition: opacity 700ms var(--bv-curva), transform 700ms var(--bv-curva); transition-delay: calc(var(--i, 0) * 110ms + 120ms); }
.bv-movimento [data-bv-lista] > li::before { transform: scale(0); transform-origin: 50% 100%; transition: transform 700ms var(--bv-mola); transition-delay: calc(var(--i, 0) * 110ms + 380ms); }
.bv-movimento [data-bv-lista].is-visivel > li { opacity: 1; transform: none; }
.bv-movimento [data-bv-lista].is-visivel > li::before { transform: none; }

/* Passos: o arco com o número sobe, um depois do outro */
.bv-movimento .bv-passos > li::before { clip-path: inset(100% 0 0 0); transition: clip-path 800ms var(--bv-curva); transition-delay: calc(var(--i, 0) * 220ms + 200ms); }
.bv-movimento .bv-passos.is-visivel > li::before { clip-path: inset(0 0 0 0); }

/* ---- Escassez: a barra enche, com brilho correndo ---- */
.bv-movimento .bv-escassez__cheio { position: relative; overflow: hidden; transition: width 1800ms var(--bv-curva) 250ms; }
.bv-movimento .bv-escassez__trilho:not(.is-visivel) .bv-escassez__cheio { width: 0 !important; }
.bv-movimento .bv-escassez__cheio::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, transparent, rgba(255, 240, 205, 0.7), transparent); transform: translateX(-100%); animation: bv-corre 2.6s ease-in-out 2.2s infinite; }
@keyframes bv-corre { 60%, 100% { transform: translateX(100%); } }

/* ---- Vídeo: o quadro se abre até a largura toda conforme a rolagem ---- */
.bv-movimento .bv-video__quadro { clip-path: inset(0 calc((1 - var(--bv-p, 1)) * 9%) round calc((1 - var(--bv-p, 1)) * 40px)); }
.bv-movimento .bv-video__play::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit; border: 2px solid var(--bv-sol); pointer-events: none;
  animation: bv-anel 2.4s ease-out infinite;
}
@keyframes bv-anel { 0% { transform: scale(1); opacity: .9; } 100% { transform: scale(1.18, 1.5); opacity: 0; } }

/* ---- Mapa: os lotes se pintam da esquerda para a direita; o escolhido pulsa; o que mudou pisca ---- */
.bv-movimento .bv-mapa__svg path { transform-box: fill-box; transform-origin: center; transition: fill 400ms ease; }
.bv-movimento .bv-mapa.is-entrada path { opacity: 0; transform: scale(.4); }
.bv-movimento .bv-mapa.is-entrada.is-visivel path { animation: bv-lote 650ms var(--bv-mola) var(--d, 0ms) both; }
@keyframes bv-lote { from { opacity: 0; transform: scale(.4); } to { opacity: 1; transform: none; } }
.bv-movimento .bv-mapa__svg .is-disponivel:hover { transform: scale(1.18); }
.bv-movimento .bv-mapa__svg .is-escolhido { animation: bv-escolhido 1.8s ease-in-out infinite; }
@keyframes bv-escolhido { 0%, 100% { stroke-width: 2.5; } 50% { stroke-width: 6; } }
.bv-movimento .bv-mapa__svg .is-mudou { animation: bv-mudou 1.2s ease-in-out 3; }
@keyframes bv-mudou { 50% { opacity: .25; } }
.bv-movimento .bv-mapa__fundo { transition: opacity 1200ms ease; }

/* ---- Galeria: a foto da vez em destaque ---- */
.bv-movimento .bv-galeria__trilho > li .bv-foto { transition: transform 700ms var(--bv-curva), opacity 700ms var(--bv-curva); transform: scale(.93); opacity: .55; transform-origin: 0 50%; }
.bv-movimento .bv-galeria__trilho > li.is-ativa .bv-foto { transform: none; opacity: 1; }
.bv-movimento .bv-galeria__trilho > li .bv-foto__quadro img { transition: transform 6s linear; }
.bv-movimento .bv-galeria__trilho > li.is-ativa .bv-foto__quadro img { transform: scale(1.08); }

/* ---- WhatsApp: entra depois da abertura e chama atenção de tempos em tempos ---- */
.bv-movimento .bv-zap { transition: transform 600ms var(--bv-mola), opacity 400ms ease; }
.bv-movimento .bv-zap:not(.is-visivel) { transform: translateY(140%); opacity: 0; pointer-events: none; }
.bv-movimento .bv-zap::before { content: ""; position: absolute; inset: 0; border-radius: inherit; border: 2px solid var(--bv-serra); opacity: 0; animation: bv-chamada 7s ease-out 4s infinite; pointer-events: none; }
@keyframes bv-chamada { 0% { transform: scale(1); opacity: .9; } 14%, 100% { transform: scale(1.35); opacity: 0; } }
.bv-movimento .bv-zap:hover { transform: translateY(-3px); }

/* Faixa de aviso do topo: desce na abertura */
.bv-movimento .bv-aviso .bv-wrap { animation: bv-desce 700ms var(--bv-curva) 200ms both; }
@keyframes bv-desce { from { opacity: 0; transform: translateY(-100%); } to { opacity: 1; transform: none; } }
