/* ==========================================================================
   Seções (cada bloco = um layout do Flexible Content do ACF)
   ========================================================================== */

/* ---- Hero · Home ------------------------------------------------------- */
.hero-home {
  position: relative;
  display: flex;
  align-items: flex-end;
  min-height: 728px;
  overflow: hidden;
  background: var(--navy-950);
  color: var(--white);
}
.hero-home__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero-home::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(0deg, var(--navy-950) .49%, rgba(30, 127, 224, 0) 74.25%);
}
.hero-home__shape { position: absolute; z-index: 1; top: -20.42%; right: 46.77%; bottom: -16.68%; left: -16.97%; width: auto; height: auto; }
.hero-home__shape img { width: 100%; height: 100%; }
.hero-home__grid {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: flex-end;
  gap: 24px;
  min-height: 496px;
  padding-bottom: 104px;
}
.hero-home__main { display: flex; flex-direction: column; justify-content: center; align-self: stretch; width: 646px; flex-shrink: 0; }
.hero-home__main .t-display { margin-top: 18px; }
.hero-home__main .btn-group { margin-top: 26px; }
.hero-home__aside { flex: 1; min-width: 0; margin-left: 88px; }
.hero-home__aside .t-lead-lg { font-size: clamp(17px, 1.5vw, 21px); }
.hero-home__support {
  margin-top: 22px;
  padding-left: 18px;
  border-left: 1px solid rgba(134, 216, 247, .5);
  font-size: 16px;
  line-height: 27px;
  color: rgba(255, 255, 255, .62);
}

@media (max-width: 1199px) {
  .hero-home__grid { flex-direction: column; align-items: flex-start; padding-top: 96px; padding-bottom: 72px; }
  .hero-home__main { width: min(646px, 100%); }
  .hero-home__aside { margin-left: 0; max-width: 646px; }
  .hero-home__shape { right: 20%; }
}
@media (max-width: 767px) {
  .hero-home { min-height: 0; }
  .hero-home__shape { display: none; }
  .hero-home::before { background: linear-gradient(0deg, var(--navy-950) 10%, rgba(4, 18, 58, .75) 60%, rgba(4, 18, 58, .45) 100%); }
  .hero-home__grid { padding-top: 72px; padding-bottom: 56px; }
}

/* ---- Hero · páginas internas ------------------------------------------- */
.hero-page {
  position: relative;
  overflow: hidden;
  background: var(--grad-hero);
  color: var(--white);
}
.hero-page__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: right center; }
.hero-page__inner { position: relative; z-index: 1; padding-top: 106px; padding-bottom: 104px; }
.hero-page__content { width: min(652px, 100%); }
.hero-page__content--narrow { width: min(530px, 100%); }
.hero-page__content .t-hero { margin-top: 18px; }
.hero-page__content .t-lead-lg { margin-top: 18px; }
.hero-page__content .t-lead-lg--spaced { margin-top: 48px; }
.hero-page__content .btn { margin-top: 18px; }
.hero-page .t-hero .t-script { color: var(--sky-300); }

@media (max-width: 991px) {
  .hero-page__bg { opacity: .35; }
  .hero-page__inner { padding-top: 72px; padding-bottom: 72px; }
}

/* Hero do empreendimento (single) */
.hero-emp__photo { position: absolute; top: 0; right: 0; bottom: 0; width: 55.69%; height: 100%; object-fit: cover; }
.hero-emp__shape { position: absolute; z-index: 0; left: -252.78px; top: -435.68px; width: 1347.96px; height: 1179.02px; }
.hero-emp__logo {
  position: absolute;
  z-index: 1;
  left: calc(50% - var(--container) / 2 + 562px);
  top: 120px;
  width: 203px;
  height: 108px;
  border-radius: var(--radius-card);
  object-fit: cover;
}
@media (max-width: 1439px) { .hero-emp__logo { left: auto; right: 58%; } }
@media (max-width: 991px) {
  .hero-emp__shape { display: none; }
  .hero-emp__photo { width: 100%; opacity: .3; }
  .hero-emp__logo { position: relative; left: auto; right: auto; top: auto; margin-bottom: 24px; width: 160px; height: auto; }
}

/* ---- Split · mídia + texto (Quem somos, atuações, sustentabilidade…) --- */
.split { display: flex; align-items: center; gap: 72px; }
.split--reverse { flex-direction: row-reverse; }
.split__text { flex: 1; min-width: 0; }
.split__text .t-h1 { margin-top: 18px; }
.split__text .t-lead,
.split__text .t-body { margin-top: 20px; }
.split__text .t-lead + .t-lead { margin-top: 16px; }
.split__text > .btn { margin-top: 26px; }
.split__text > .btn--tight { margin-top: 20px; }

@media (max-width: 991px) {
  .split, .split--reverse { flex-direction: column; align-items: stretch; gap: 40px; }
  .split .media-arc { width: 100%; max-width: 560px; }
}

/* ---- Números ----------------------------------------------------------- */
.numeros { position: relative; overflow: hidden; background: var(--grad-numeros); color: var(--white); }
.numeros__texture { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .02; }
.numeros__grid { position: relative; display: flex; align-items: flex-end; gap: 24px; }
.numeros__main { display: flex; flex-direction: column; gap: 32px; width: 760px; flex-shrink: 0; }
.numeros__main .t-h1 { color: var(--white); margin-top: 18px; }
.numeros__main .t-lead { color: rgba(255, 255, 255, .7); margin-top: 16px; }
.numeros__cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.num-card {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 12px;
  background: rgba(15, 92, 192, .05);
  border: 1px solid var(--blue-600);
  border-radius: var(--radius-card);
}
.num-card__value {
  font-family: var(--font-display);
  font-weight: 200;
  font-size: clamp(52px, 4.5vw, 72px);
  line-height: 76px;
  letter-spacing: -2.4px;
  white-space: nowrap;
}
.num-card__value small { margin-left: 4px; font-family: var(--font-body); font-size: 19px; letter-spacing: 0; color: var(--sky-300); }
.num-card__label { font-weight: 500; font-size: 16px; line-height: 27px; color: var(--sky-300); }
.num-card__text { margin-top: 8px; font-size: 13px; line-height: 20px; color: rgba(255, 255, 255, .6); }
.numeros__photo {
  position: relative;
  flex: 1;
  min-width: 0;
  height: 620px;
  overflow: hidden;
  border-radius: var(--radius-arco) var(--radius-card) var(--radius-card) var(--radius-card);
}
.numeros__photo img { width: 100%; height: 100%; object-fit: cover; object-position: 42% center; }
.numeros__photo::after { content: ""; position: absolute; inset: 0; background: var(--overlay-media); }

@media (max-width: 1199px) {
  .numeros__grid { flex-direction: column; align-items: stretch; }
  .numeros__main { width: 100%; }
  .numeros__photo { height: 420px; }
}
@media (max-width: 767px) {
  .numeros__cards { grid-template-columns: 1fr 1fr; }
  .num-card__value { line-height: 1.1; }
}
@media (max-width: 419px) {
  .numeros__cards { grid-template-columns: 1fr; }
}

/* ---- Tiles de empreendimentos (Home) ---------------------------------- */
.tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 396px)); gap: 26px; }
.tile {
  position: relative;
  display: flex;
  align-items: flex-end;
  height: 440px;
  overflow: hidden;
  padding: 28px;
  border-radius: var(--radius-card) var(--radius-arco) var(--radius-card) var(--radius-card);
  color: var(--white);
}
.tile { isolation: isolate; }
.tile > img { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease); }
.tile::before { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--overlay-tile-tint); }
.tile::after { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--overlay-tile); }
.tile:hover > img { transform: scale(1.05); }
.tile__content { position: relative; z-index: 1; max-width: 340px; }
.tile__content .t-h2 { color: var(--white); }
.tile__content p { margin-top: 10px; font-size: 16px; line-height: 27px; color: rgba(255, 255, 255, .72); }
.tile__content .link-arrow { margin-top: 16px; }
@media (max-width: 991px) { .tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 575px) { .tiles { grid-template-columns: 1fr; } .tile { height: 380px; } }

/* ---- Missão / Visão ---------------------------------------------------- */
.mv-card {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 32px;
  color: var(--white);
  background: var(--overlay-tile), linear-gradient(163deg, var(--navy-800) 14.18%, var(--blue-600) 53.19%, var(--blue-500) 85.1%);
  border-radius: var(--radius-card) var(--radius-arco) var(--radius-card) var(--radius-card);
}
.mv-card--alt { border-radius: var(--radius-card) var(--radius-card) var(--radius-arco) var(--radius-card); }
.mv-card .t-h1 { margin-top: 10px; color: rgba(255, 255, 255, .72); max-width: 545px; }
.valores-title { margin: 44px 0 16px; }
.grid-4 .panel { min-height: 227px; }

/* ---- CTA final --------------------------------------------------------- */
.cta {
  position: relative;
  overflow: hidden;
  padding-block: var(--section-y-lg);
  color: var(--white);
  text-align: center;
}
.cta__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cta { isolation: isolate; }
.cta::before { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--grad-cta); }
.cta__bg { z-index: -2; }
.cta__inner { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; }
.cta .t-h1 { margin-top: 20px; max-width: 620px; color: var(--white); }
.cta .t-lead { margin-top: 18px; max-width: 680px; color: rgba(255, 255, 255, .78); }
.cta .btn-group { margin-top: 32px; justify-content: center; }
.cta__line { position: absolute; z-index: 1; top: -165px; width: 628px; height: 1053px; pointer-events: none; }
.cta__line--left { left: calc(50% - 1127px); }
.cta__line--right { right: calc(50% - 1099px); transform: rotate(180deg); }
@media (max-width: 991px) { .cta__line { display: none; } }

/* ---- Versatilidade (intro Nossa Atuação) ------------------------------- */
.versatilidade { position: relative; overflow: hidden; padding-block: 48px; background: var(--white); }
.versatilidade__texture { position: absolute; top: 0; right: 0; height: 100%; width: auto; mix-blend-mode: difference; opacity: .5; }
.versatilidade::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, var(--white) 53.4%, rgba(255, 255, 255, 0) 131.37%); }
.versatilidade .container { position: relative; z-index: 1; }
.versatilidade .sec-head { margin-bottom: 0; --head-w: 645px; }

.atalhos { padding-block: 32px; }
.atalhos .panel { opacity: .88; }
.atalhos .panel:hover { opacity: 1; }
.obj-pos-37 { object-position: 37% center; }

/* ---- Empreendimento · intro / sustentável ----------------------------- */
.emp-intro__text { display: flex; flex-direction: column; gap: 32px; }
.emp-intro__text .sec-head { margin: 0; }
.emp-intro__text .sec-head .t-lead { color: var(--graphite); }
.emp-intro__desc p { font-size: 19px; line-height: 30px; letter-spacing: -.1px; color: var(--gray-600); }
.emp-intro__desc strong { font-weight: 700; }

.eco-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 24px;
  border: 1px solid var(--azul-100);
  border-radius: 8px;
}
.eco-list li { display: flex; align-items: center; gap: 16px; font-size: 13px; line-height: 20px; color: var(--azul-marca-500); text-transform: uppercase; }
.eco-list img { width: 32px; height: 32px; flex-shrink: 0; }

/* ---- Galeria ----------------------------------------------------------- */
.gallery { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 44px 16px; }
.gallery__item {
  position: relative;
  display: block;
  height: 280px;
  overflow: hidden;
  border-radius: var(--radius-card) var(--radius-arco) var(--radius-card) var(--radius-card);
  background: var(--grad-brand);
}
.gallery__item img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease); }
.gallery__item::after { content: ""; position: absolute; inset: 0; background: var(--overlay-card); }
.gallery__item:hover img { transform: scale(1.05); }
@media (max-width: 991px) { .gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } .gallery__item { height: 220px; } }

/* ---- Plantas ----------------------------------------------------------- */
.plantas { text-align: center; }
.plantas .filter-bar { margin: 32px 0; }
.plantas__name { margin-bottom: 44px; color: var(--graphite); }
.plantas__track { display: flex; justify-content: center; align-items: center; gap: 72px; }
.plantas__slide { position: relative; flex: 0 0 435px; height: 460px; transition: opacity .3s; }
.plantas__slide img { width: 100%; height: 100%; object-fit: contain; }
.plantas__slide:not(.is-current)::after { content: ""; position: absolute; inset: 0; background: rgba(255, 255, 255, .8); }
.plantas__slide[hidden] { display: none; }
.plantas .rail-nav { justify-content: center; margin-top: 48px; }
@media (max-width: 1199px) {
  .plantas__track { gap: 24px; }
  .plantas__slide:not(.is-current) { display: none; }
  .plantas__slide { flex-basis: min(435px, 100%); height: auto; aspect-ratio: 435 / 460; }
}

/* ---- Interesse (single empreendimento) -------------------------------- */
.interesse { display: flex; flex-direction: column; align-items: center; gap: 32px; }
.interesse > * { width: min(872px, 100%); }
.interesse__info { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.interesse__info .t-h2 { flex: 1; }
.interesse__info p { font-size: 16px; line-height: 27px; }
.interesse__phones { display: flex; flex-wrap: wrap; gap: 0 24px; }
@media (max-width: 767px) { .interesse__info { grid-template-columns: 1fr; } }

/* ---- Realização -------------------------------------------------------- */
.realizacao { display: flex; flex-direction: column; align-items: center; gap: 32px; max-width: 1094px; margin-inline: auto; text-align: center; }
.realizacao img { width: 267px; height: 48px; }

/* ---- Contato ----------------------------------------------------------- */
.canais .t-h2 { max-width: 1041px; margin: 18px auto 32px; }
.canais .grid-5 { text-align: left; }
.canais .panel { min-height: 239px; }
.canais .panel .t-caption { margin-top: 0; }
.canais .panel .t-h3 + .t-caption { margin-top: 0; }
.contato-grid { display: flex; align-items: flex-start; gap: 32px; }
.contato-grid .form-card { width: 648px; flex-shrink: 0; }
.stands { flex: 1; min-width: 0; padding: 32px; }
.stands__title { display: flex; align-items: center; gap: 10px; margin: 18px 0 20px; }
.stands__title img { width: 44px; height: 44px; }
.stands .info-card + .info-card { margin-top: 20px; }
@media (max-width: 1199px) {
  .contato-grid { flex-direction: column; align-items: stretch; }
  .contato-grid .form-card { width: 100%; }
  .stands { padding: 0; }
}

/* ---- Formas decorativas · posições por seção ---------------------------
   Valores medidos no frame de 1920px e ancorados ao centro (50%), para que
   a forma mantenha a mesma relação com o conteúdo em qualquer largura. */
.deco-sky-left { left: calc(50% - 1191px); top: -128px; width: 913px; height: 1067px; }
.deco-sky-left-mid { left: calc(50% - 1152px); width: 913px; height: 1067px; }
.deco-navy-right { left: calc(50% + 691px); top: -128px; width: 634px; height: 1067px; }
.deco-navy-right-mid { right: calc(50% - 1147px); width: 913px; height: 1067px; }
.deco-sky-right-video { right: calc(50% - 1147px); top: calc(50% + 38px); width: 913px; height: 1067px; }
.deco-lines { left: -8.78%; top: -29px; width: 124.2%; height: auto; }
.deco-lines-lg { left: -21%; top: -55px; width: 161.7%; height: auto; }
.deco-blue-intro { right: calc(50% - 1122px); top: -592px; width: 1147px; height: 2545px; }
.deco-navy-left-plantas { left: calc(50% - 1002px); width: 638px; height: 1067px; }
.deco-sky-right-plantas { right: calc(50% - 1339px); width: 913px; height: 1067px; }
.deco-navy-right-eco { right: calc(50% - 960px); width: 638px; height: 1067px; }
.deco-navy-left-form { left: calc(50% - 1296px); width: 1002px; height: 1171px; }
.deco-line-right-form { right: calc(50% - 1166px); top: -14px; width: 700px; height: 1173px; }
.deco-navy-left-contato { left: calc(50% - 1196px); width: 1002px; height: 1171px; }
.deco-line-right-contato { right: calc(50% - 1080px); top: -14px; width: 700px; height: 1173px; }
.emp-intro__text > .btn { align-self: flex-start; }
.gallery-title { margin-bottom: 34px; }
.hero-page__btns { margin-top: 26px; }
.hero-page__content--spaced .t-lead-lg { margin-top: 48px; }
.plantas__group[hidden] { display: none; }
.hero-page__btns .btn { margin-top: 0; }

/* ==========================================================================
   Movimento · revelação ao rolar, entrada dos heros, contadores, parallax
   Ativado só com JS (classe .js no <html>) e desligado em prefers-reduced-motion.
   ========================================================================== */
@media (prefers-reduced-motion: no-preference) {

  /* ---- Revelação ao rolar (main.js marca os elementos com [data-reveal]) */
  .js [data-reveal] {
    opacity: 0;
    transform: translate3d(0, 32px, 0);
    transition:
      opacity .8s var(--ease) var(--d, 0ms),
      transform .9s var(--ease) var(--d, 0ms),
      box-shadow .3s var(--ease),
      border-color .2s;
    will-change: opacity, transform;
  }
  .js [data-reveal="left"] { transform: translate3d(-48px, 0, 0); }
  .js [data-reveal="right"] { transform: translate3d(48px, 0, 0); }
  .js [data-reveal="zoom"] { transform: scale(.94); }
  .js [data-reveal].is-visible { opacity: 1; transform: none; }
  .js [data-reveal].is-done { will-change: auto; }

  /* Mídias: a moldura abre de baixo para cima e a foto "assenta" */
  .js [data-reveal="media"] {
    opacity: 1;
    transform: none;
    clip-path: inset(100% 0 0 0 round var(--radius-card));
    transition: clip-path 1.1s var(--ease) var(--d, 0ms);
  }
  .js [data-reveal="media"].is-visible { clip-path: inset(0 0 0 0 round 0); }
  .js [data-reveal="media"] > img,
  .js [data-reveal="media"] > video {
    transform: scale(1.15);
    transition: transform 1.6s var(--ease) var(--d, 0ms);
  }
  .js [data-reveal="media"].is-visible > img,
  .js [data-reveal="media"].is-visible > video { transform: none; }
  .js [data-reveal="media"] .stamp {
    opacity: 0;
    transform: translate3d(0, 24px, 0) scale(.9);
    transition: opacity .7s var(--ease) .7s, transform .8s var(--ease) .7s;
  }
  .js [data-reveal="media"].is-visible .stamp { opacity: 1; transform: none; }

  /* Cards já têm hover com translateY: preserva depois da entrada */
  .js .card-emp.is-done:hover,
  .js .tile.is-done:hover { transform: translateY(-4px); }

  /* ---- Nossos números ------------------------------------------------- */
  .num-card { transition: background-color .3s, border-color .3s, transform .3s var(--ease); }
  .num-card:hover { background: rgba(15, 92, 192, .18); border-color: var(--sky-300); }
  .js .num-card.is-done:hover { transform: translateY(-4px); }
  .num-card__value { font-variant-numeric: tabular-nums; }
  .numeros__texture { animation: sertenge-drift 30s linear infinite alternate; }
  .js .numeros__photo[data-reveal] img { transform: scale(1.12); transition: transform 1.8s var(--ease) var(--d, 0ms); }
  .js .numeros__photo.is-visible img { transform: none; }

  /* ---- Hero da home ------------------------------------------------------ */
  .js .hero-home__bg { animation: sertenge-kenburns 2.4s var(--ease) both; }
  .js .hero-home__shape { animation: sertenge-slide-in 1.3s var(--ease) both; }
  .js .hero-home__main > *,
  .js .hero-home__aside > * { animation: sertenge-rise 1s var(--ease) both; }
  .js .hero-home__main > :nth-child(1) { animation-delay: .35s; }
  .js .hero-home__main > :nth-child(2) { animation-delay: .5s; }
  .js .hero-home__main > :nth-child(3) { animation-delay: .7s; }
  .js .hero-home__aside > :nth-child(1) { animation-delay: .85s; }
  .js .hero-home__aside > :nth-child(2) { animation-delay: 1s; }

  /* ---- Hero das páginas internas ---------------------------------------- */
  .js .hero-page__bg { animation: sertenge-kenburns 2s var(--ease) both; }
  .js .hero-emp__photo { animation: sertenge-kenburns 2s var(--ease) both; }
  .js .hero-emp__shape { animation: sertenge-slide-in 1.2s var(--ease) both; }
  .js .hero-emp__logo { animation: sertenge-pop .9s var(--ease) .6s both; }
  .js .hero-page__content > * { animation: sertenge-rise .9s var(--ease) both; }
  .js .hero-page__content > :nth-child(1) { animation-delay: .2s; }
  .js .hero-page__content > :nth-child(2) { animation-delay: .32s; }
  .js .hero-page__content > :nth-child(3) { animation-delay: .46s; }
  .js .hero-page__content > :nth-child(4) { animation-delay: .6s; }

  /* ---- CTA --------------------------------------------------------------- */
  .cta__bg { animation: sertenge-drift 24s linear infinite alternate; }

  /* ---- Vídeo: halo pulsando ---------------------------------------------- */
  .video-frame__play::before { animation: sertenge-pulse 2.6s ease-out infinite; }
  .video-frame:hover .video-frame__play::before { animation-play-state: paused; }

  /* ---- Header: sombra ao rolar ------------------------------------------- */
  .site-header { transition: box-shadow .3s var(--ease), background-color .3s; }
  .site-header.is-scrolled { box-shadow: 0 12px 32px -20px rgba(6, 26, 69, .35); background: rgba(255, 255, 255, .96); }

  /* ---- Formas decorativas: parallax (main.js ajusta a propriedade translate) */
  .deco { transition: translate .2s linear; }
}

@keyframes sertenge-rise { from { opacity: 0; transform: translate3d(0, 28px, 0); } to { opacity: 1; transform: none; } }
@keyframes sertenge-slide-in { from { opacity: 0; transform: translate3d(-12%, 0, 0); } to { opacity: 1; transform: none; } }
@keyframes sertenge-kenburns { from { transform: scale(1.08); } to { transform: scale(1); } }
@keyframes sertenge-pop { from { opacity: 0; transform: scale(.85) translateY(12px); } to { opacity: 1; transform: none; } }
@keyframes sertenge-drift { from { transform: scale(1.05) translate3d(-1%, 0, 0); } to { transform: scale(1.1) translate3d(1%, -1%, 0); } }
@keyframes sertenge-pulse {
  0% { transform: scale(.85); opacity: 1; }
  70% { transform: scale(1.25); opacity: 0; }
  100% { transform: scale(1.25); opacity: 0; }
}

/* Falha de JS: nada fica escondido (header.php adiciona .js-failsafe após 3s) */
.js-failsafe [data-reveal] .stamp,
.js-failsafe [data-reveal] { opacity: 1 !important; transform: none !important; clip-path: none !important; }

/* Logo do empreendimento no hero: os arquivos já trazem o "cartão" de fundo */
.hero-emp__logo { object-fit: contain; box-shadow: 0 16px 36px -18px rgba(4, 18, 58, .55); }

/* ---- Galeria e plantas: indicação de zoom ------------------------------ */
.gallery__item { cursor: zoom-in; }
.gallery__item::before {
  content: "";
  position: absolute;
  right: 16px;
  bottom: 16px;
  z-index: 1;
  width: 40px;
  height: 40px;
  border-radius: var(--radius-pill);
  background: rgba(255, 255, 255, .92) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%230a2a6b' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-4-4M11 8v6M8 11h6'/%3E%3C/svg%3E") center / 18px no-repeat;
  opacity: 0;
  transform: scale(.8);
  transition: opacity .25s, transform .25s var(--ease);
}
.gallery__item:hover::before,
.gallery__item:focus-visible::before { opacity: 1; transform: none; }

.plantas__zoom { position: relative; display: block; height: 100%; cursor: pointer; }
.plantas__slide.is-current .plantas__zoom { cursor: zoom-in; }
.plantas__zoom img { width: 100%; height: 100%; object-fit: contain; }
.plantas__zoom-hint {
  position: absolute;
  right: 12px;
  bottom: 12px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  border-radius: var(--radius-pill);
  background: var(--navy-800);
  color: var(--white);
  font-weight: 600;
  font-size: 13px;
  line-height: 1;
  opacity: 0;
  transition: opacity .25s;
}
.plantas__slide.is-current .plantas__zoom-hint { opacity: 1; }
@media (hover: hover) {
  .plantas__slide.is-current .plantas__zoom-hint { opacity: .85; }
  .plantas__slide.is-current .plantas__zoom:hover .plantas__zoom-hint { opacity: 1; }
}

/* ---- Andamento da obra (single empreendimento) ------------------------- */
.obra__grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 72px; align-items: start; }
.obra__grid--solo { grid-template-columns: minmax(0, 760px); }

.obra__fotos { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.obra__foto {
  position: relative;
  display: block;
  aspect-ratio: 1;
  overflow: hidden;
  border-radius: var(--radius-painel);
  background: var(--concrete-100);
  cursor: zoom-in;
}
.obra__foto img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease); }
.obra__foto:hover img { transform: scale(1.05); }
.obra__foto--main {
  grid-column: 1 / -1;
  aspect-ratio: 4 / 3;
  border-radius: var(--radius-media) var(--radius-arco-lg) var(--radius-media) var(--radius-media);
}
.obra__mais {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  background: rgba(6, 26, 69, .62);
  color: var(--white);
  font-family: var(--font-display);
  font-weight: 300;
  font-size: 28px;
}

.obra__info .t-h1 { margin-top: 18px; }
.obra__texto { margin-top: 16px; }

.obra__total {
  margin-top: 32px;
  padding: 24px;
  border-radius: var(--radius-card);
  background: var(--grad-numeros);
  color: var(--white);
}
.obra__total-head { display: flex; align-items: center; gap: 16px; margin-bottom: 16px; }
.obra__total-value {
  font-family: var(--font-display);
  font-weight: 200;
  font-size: clamp(48px, 5vw, 64px);
  line-height: 1;
  letter-spacing: -2px;
  font-variant-numeric: tabular-nums;
}
.obra__total-label { display: flex; flex-direction: column; font-weight: 500; font-size: 16px; line-height: 22px; color: var(--sky-300); }
.obra__total-label small { font-weight: 400; font-size: 13px; color: rgba(255, 255, 255, .65); }

.obra__etapas { margin-top: 24px; display: flex; flex-direction: column; gap: 18px; }
.obra__etapa { display: grid; grid-template-columns: 1fr auto; gap: 8px 16px; align-items: baseline; }
.obra__etapa-nome { font-weight: 500; font-size: 15px; line-height: 20px; color: var(--graphite); }
.obra__etapa-valor { font-weight: 600; font-size: 13px; letter-spacing: .5px; color: var(--blue-600); font-variant-numeric: tabular-nums; }
.obra__etapa.is-done .obra__etapa-valor { color: var(--success); }

.obra__bar {
  grid-column: 1 / -1;
  position: relative;
  display: block;
  height: 6px;
  overflow: hidden;
  border-radius: var(--radius-pill);
  background: var(--concrete-100);
}
.obra__bar > span {
  position: absolute;
  inset: 0 auto 0 0;
  width: var(--p, 0%);
  border-radius: inherit;
  background: linear-gradient(90deg, var(--blue-600), var(--blue-500));
  transition: width 1.4s var(--ease);
}
.obra__etapa.is-done .obra__bar > span { background: linear-gradient(90deg, var(--blue-500), var(--sky-300)); }
.obra__bar--lg { height: 10px; background: rgba(255, 255, 255, .14); }
.obra__bar--lg > span { background: linear-gradient(90deg, var(--sky-300), #c2ecfc); }

/* Barras crescem quando a seção entra na tela (main.js adiciona .is-in) */
.js .obra:not(.is-in) .obra__bar > span { width: 0; }
.obra__etapa:nth-child(2) .obra__bar > span { transition-delay: .08s; }
.obra__etapa:nth-child(3) .obra__bar > span { transition-delay: .16s; }
.obra__etapa:nth-child(4) .obra__bar > span { transition-delay: .24s; }
.obra__etapa:nth-child(5) .obra__bar > span { transition-delay: .32s; }
.obra__etapa:nth-child(n+6) .obra__bar > span { transition-delay: .4s; }
@media (prefers-reduced-motion: reduce) { .obra__bar > span { transition: none; } }

@media (max-width: 991px) {
  .obra__grid { grid-template-columns: 1fr; gap: 40px; }
}
@media (max-width: 575px) {
  .obra__fotos { gap: 8px; }
  .obra__mais { font-size: 22px; }
  .obra__foto--main { border-top-right-radius: var(--radius-arco); }
  .obra__total { padding: 20px; }
}
/* 6+ etapas: duas colunas no desktop para a lista não ficar longa demais */
@media (min-width: 1200px) {
  .obra__etapas:has(> :nth-child(6)) { display: grid; grid-template-columns: 1fr 1fr; gap: 20px 32px; }
}

/* ---- Política de QSMS --------------------------------------------------- */
.qsms__head { max-width: 860px; margin: 0 auto; text-align: center; }
.qsms__head .t-h1 { margin-top: 18px; }
.qsms__lema {
  margin-top: 12px;
  font-family: var(--font-display);
  font-weight: 300;
  font-size: clamp(20px, 2vw, 26px);
  color: var(--blue-600);
}
.qsms__texto { margin-top: 28px; color: var(--graphite); }
.qsms__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 72px 24px;
  margin-top: 96px;
}
.qsms-card {
  position: relative;
  display: grid;
  place-items: center;
  min-height: 260px;
  padding: 72px 28px 40px;
  border-radius: var(--radius-panel-lg);
  background: var(--navy-800);
  color: var(--white);
  text-align: center;
  transition: transform .3s var(--ease), box-shadow .3s var(--ease), background-color .3s;
}
.qsms-card:hover { background: var(--blue-600); box-shadow: var(--shadow-card-hover); }
.js .qsms-card.is-done:hover { transform: translateY(-4px); }
.qsms-card__icon {
  position: absolute;
  top: -40px;
  left: 50%;
  width: 104px;
  height: 104px;
  margin-left: -52px;
  border-radius: 50%;
  background: inherit;
}
.qsms-card__glyph {
  position: absolute;
  inset: 26px;
  background: var(--white);
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}
.qsms-card__texto {
  font-family: var(--font-display);
  font-weight: 300;
  font-size: clamp(18px, 1.6vw, 22px);
  line-height: 1.35;
}
.qsms__download { margin-top: 56px; text-align: center; }

@media (max-width: 991px) {
  .qsms__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575px) {
  .qsms__grid { grid-template-columns: 1fr; gap: 64px; margin-top: 72px; }
  .qsms-card { min-height: 0; padding-top: 68px; }
}

/* ---- Documento com PDF (relatórios) ------------------------------------ */
.documento__inner { max-width: 920px; }
.documento__inner .t-h1 { margin-top: 18px; }
.documento__texto { margin-top: 24px; font-size: 18px; line-height: 1.7; color: var(--gray-600); }
.documento__texto p + p { margin-top: 1em; }
.documento__download {
  display: flex;
  align-items: center;
  gap: 20px;
  margin-top: 40px;
  padding: 20px 24px;
  border: 1px solid var(--concrete-200);
  border-radius: var(--radius-card);
  background: var(--concrete-50);
}
.documento__file {
  display: grid;
  place-items: center;
  flex-shrink: 0;
  width: 56px;
  height: 64px;
  border-radius: 10px 22px 10px 10px;
  background: var(--navy-800);
  color: var(--white);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 1.5px;
}
.documento__meta { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.documento__meta strong { font-weight: 600; font-size: 16px; color: var(--graphite); overflow-wrap: anywhere; }
.documento__meta span { font-size: 13px; color: var(--gray-500); }
.documento__viewer {
  display: block;
  width: 100%;
  height: min(85vh, 1100px);
  margin-top: 32px;
  border: 1px solid var(--concrete-200);
  border-radius: var(--radius-card);
  background: var(--concrete-50);
}
.documento__fallback { padding: 32px; text-align: center; color: var(--gray-600); }
.documento__fallback a { color: var(--blue-600); text-decoration: underline; }

@media (max-width: 767px) {
  .documento__download { flex-wrap: wrap; }
  .documento__download .btn { width: 100%; }
  .documento__viewer { display: none; } /* no celular, o botão de download basta */
}

/* Andamento da obra: vídeos na grade */
.obra__foto--video { background: var(--grad-deep); cursor: pointer; }
.obra__foto > video { width: 100%; height: 100%; object-fit: cover; pointer-events: none; }
.obra__play {
  position: absolute;
  top: 50%;
  left: 50%;
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  border-radius: var(--radius-pill);
  background: var(--sky-300);
  box-shadow: 0 0 0 8px rgba(134, 216, 247, .3);
  transform: translate(-50%, -50%);
  transition: transform .3s var(--ease), box-shadow .3s;
}
.obra__play img { width: 16px; height: 19px; margin-left: 3px; }
.obra__foto--main .obra__play { width: 88px; height: 88px; box-shadow: 0 0 0 14px rgba(134, 216, 247, .3); }
.obra__foto--main .obra__play img { width: 24px; height: 28px; }
.obra__foto--video:hover .obra__play { transform: translate(-50%, -50%) scale(1.08); box-shadow: 0 0 0 12px rgba(134, 216, 247, .35); }
.obra__foto--video:hover img,
.obra__foto--video:hover video { transform: scale(1.05); }
.obra__foto > video { transition: transform .6s var(--ease); }
.obra__mais ~ .obra__play,
.obra__foto:has(.obra__mais) .obra__play { display: none; }
