/* =====================================================
   Clínica Scopel — Landing Page
   Seção 01: Menu (pill de vidro) + Hero
   Referências: referencias/secao-01-menu-hero/
   ===================================================== */

/* ---------- Tokens ---------- */
:root {
  /* Paleta Scopel — verde único definido pelo Alan, sem variações */
  --verde: rgb(31, 69, 46);   /* #1f452e */
  --verde-800: var(--verde);
  --verde-900: var(--verde);
  --verde-marca: #2d4544;     /* cor original do site, só referência */
  --bege-500: #cba785;    /* acento da marca */
  --creme-100: #ffffff;   /* por decisão do Alan, branco no lugar do creme #f6f5e0 (por enquanto) */
  --creme-titulo: #ffffff; /* idem: branco no lugar do creme do título */
  --cinza-50: #f7f7f7;    /* fundo da página (mesmo do site atual) */
  --cinza-900: #232323;
  --cinza-700: #4a4a4a;
  --branco: #ffffff;

  /* Tipografia */
  --font-sans: "DM Sans", "Avenir Next", "Helvetica Neue", system-ui, sans-serif;   /* títulos, menu, botões */
  --font-body: "Figtree", "DM Sans", "Avenir Next", "Helvetica Neue", system-ui, sans-serif; /* descrições / texto corrido */

  /* Layout */
  --container-max: 1360px;
  --gutter: 28px;         /* margem lateral do hero medida: 28px */
  --radius-hero: 26px;    /* medido: 24–26px */
  --radius-card: 24px;    /* medido: 20–24px */
  --radius-img: 16px;     /* medido: 14–16px */
  --radius-pill: 999px;
  --nav-h: 60px;
}

/* só para leitores de tela */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* ---------- Reset ---------- */
*,
*::before,
*::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  /* Alan prefere a página como no zoom de 90% do navegador: fixamos isso no CSS.
     Todas as medidas em px continuam as da referência; só a escala final muda. */
  zoom: 0.9;
}

body {
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.6;
  color: var(--cinza-900);
  background: var(--cinza-50);
  -webkit-font-smoothing: antialiased;
}

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

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

ul {
  list-style: none;
}

/* Títulos em DM Sans; descrições herdam Figtree do body */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-sans);
}

/* Todo texto corrido balanceado: nunca sobra palavra sozinha */
h1, h2, h3, h4, p, li, blockquote, figcaption {
  text-wrap: balance;
}

/* ---------- Utilitários ---------- */
.container {
  width: 100%;
  max-width: calc(var(--container-max) + var(--gutter) * 2);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

/* =====================================================
   HERO (card)
   ===================================================== */
.hero {
  /* Alan pediu o hero mais largo: margem lateral menor e sem teto de largura */
  max-width: none;
  padding-inline: 16px;
  padding-top: 16px;
  padding-bottom: 28px;  /* medido: 28px */
}

/* HERO — opção 2 do Codex escolhida pelo Alan (09/09/2026): a foto inteira em cima e uma faixa verde
   chapada embaixo, dentro do mesmo card (título + botão à esquerda, card destaque à direita). */
.hero__card {
  position: relative;
  height: auto;
  border-radius: 16px;              /* cantos menos arredondados (Alan, 08/09/2026); antes var(--radius-hero) = 26px */
  overflow: hidden;
  background: var(--verde);
  isolation: isolate;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-rows: auto auto;
  column-gap: 40px;
}

.hero__bg {
  /* Foto "Capa Scopel LP verde" (Alan, 08/09/2026) inteira, largura total, sem zoom nem véu. */
  grid-column: 1 / -1;
  position: relative;
  aspect-ratio: 6000 / 2438;
  background: var(--verde) url("img/hero/capa-equipe-verde-1920.jpg") center top / 100% auto no-repeat;
}

/* =====================================================
   MENU — fixo no topo; logo solta à esquerda; pill de vidro só com links
   ===================================================== */
.site-header {
  /* Alan: menu parado no topo da página; não acompanha a rolagem */
  position: static;
  padding: 14px 0 12px;
  background: var(--cinza-50);
}

.header__inner {
  max-width: none;                  /* acompanha o hero em qualquer largura de tela */
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding-inline: 16px;             /* mesma margem lateral do hero */
}

.brand {
  display: inline-flex;
  align-items: center;
  color: var(--verde-800);
  margin-left: 12px;
}

.brand__symbol {
  width: 44px;
  height: 44px;
}

.nav {
  height: var(--nav-h);
  display: flex;
  align-items: center;
  padding:  0 4px 0 12px;
  border-radius: var(--radius-pill);
  /* pill em verde bem fraco sobre a faixa de vidro */
  background: rgba(31, 69, 46, 0.06);
  border: 1px solid rgba(31, 69, 46, 0.08);
}

.nav__list {
  display: flex;
  align-items: center;
  gap: clamp(4px, 0.8vw, 12px);
}

.nav__link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  font-family: var(--font-sans);
  font-size: 16px;
  font-weight: 500;
  letter-spacing: 0.005em;
  color: var(--verde-900);
  padding: 9px 16px;
  border-radius: var(--radius-pill);
  white-space: nowrap;
  transition: background-color .2s ease, color .2s ease;
}

/* hover/foco: fundo verde bem fraco atrás do link */
.nav__link:hover { background: var(--verde); color: var(--branco); }
.nav__link:focus-visible { outline: 2px solid var(--verde); outline-offset: 2px; }

/* =====================================================
   HERO — conteúdo
   ===================================================== */
.hero__content {
  position: relative;
  z-index: 2;
  grid-column: 1;
  padding: 28px 0 30px 48px;   /* faixa de 236px com H1 de duas linhas + botão (medidas do Codex, 09/09/2026) */
  color: var(--creme-100);
}

.hero__desc { display: none; }        /* só no celular (o card de destaque cumpre o papel no desktop) */

.hero__title {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: 50px;                        /* medido pelo Codex: duas linhas cabem em 820px (662 e 493px) */
  line-height: 53px;
  letter-spacing: -0.02em;
  max-width: 820px;
  margin: 0;
  color: var(--creme-titulo);
}

.hero__title-text { display: inline; }   /* sem tira: o fundo agora é a faixa verde */
.nobr { white-space: nowrap; }            /* evita quebrar "pós-operatório" no hífen no celular */

.hero__actions {
  margin-top: 16px;
  display: flex;
  align-items: center;
  gap: 24px;          /* medido: ~24px */
  flex-wrap: wrap;
}

/* ---------- Botões: padrão único (consenso Claude + Codex, 08/09/2026) ----------
   Tamanhos: G 56px (só o hero), M 52px (todos os CTAs, o menu suspenso e o cabeçalho),
   controles só de ícone 48px. Pill, DM Sans 600, seta reta → num círculo; cores por
   variáveis (--btn-bg cápsula, --btn-fg texto; o círculo usa as duas invertidas).
   Hover: cápsula e círculo invertem as cores e só a seta anda 2px. Sem sombra, gradiente,
   escala ou deslocamento da cápsula. */
.btn {
  --btn-bg: var(--verde);
  --btn-fg: var(--branco);
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 52px;
  padding: 5px 5px 5px 24px;      /* círculo a 6px da borda externa (5 + 1 de borda) */
  border: 1px solid var(--btn-bg);
  border-radius: var(--radius-pill);
  background: var(--btn-bg);
  color: var(--btn-fg);
  font-family: var(--font-sans);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  transition: background-color .16s ease, color .16s ease, border-color .16s ease;
}

.btn > span:not(.btn__icon) { text-wrap: balance; }

.btn__icon {
  width: 40px;
  height: 40px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: var(--btn-fg);
  color: var(--btn-bg);
  display: inline-grid;
  place-items: center;
  transition: background-color .16s ease, color .16s ease;
}

.btn__icon svg {
  width: 18px;
  height: 18px;
  stroke-width: 1.7;
  transition: transform .18s cubic-bezier(.22, 1, .36, 1);
}

/* ícone funcional à esquerda (ex.: telefone), sem círculo */
.btn__lead { width: 20px; height: 20px; flex: 0 0 auto; stroke-width: 1.7; }

/* variantes de cor */
.btn--inverse { --btn-bg: var(--branco); --btn-fg: var(--verde); }   /* sobre superfície verde */
.btn--outline { background: transparent; color: var(--btn-bg); }
.btn--outline .btn__icon { background: var(--btn-bg); color: var(--btn-fg); }

/* tamanhos */
.btn--lg { min-height: 56px; font-size: 16px; }
.btn--lg .btn__icon { width: 44px; height: 44px; }
.btn--plain { padding-inline: 24px; justify-content: center; gap: 10px; }

/* estados */
.btn:focus-visible { outline: 2px solid var(--btn-bg); outline-offset: 3px; }
.btn:active .btn__icon svg { transform: none; }

@media (hover: hover) and (pointer: fine) {
  .btn:hover { background: var(--btn-fg); color: var(--btn-bg); border-color: var(--btn-bg); }
  .btn:hover .btn__icon { background: var(--btn-bg); color: var(--btn-fg); }
  .btn--outline:hover { background: var(--btn-bg); color: var(--btn-fg); }
  .btn--outline:hover .btn__icon { background: var(--btn-fg); color: var(--btn-bg); }
  .btn:hover .btn__icon svg { transform: translateX(2px); }
}

/* variante link: texto + seta solta, sublinhado no hover/foco; alvo de toque 48px no celular */
.btn-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-sans);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.3;
  color: inherit;
  text-decoration: none;
}

.btn-link > span {
  text-decoration: underline;
  text-decoration-color: transparent;
  text-underline-offset: 4px;
  transition: text-decoration-color .16s ease;
}

.btn-link svg {
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  stroke-width: 1.7;
  transition: transform .18s cubic-bezier(.22, 1, .36, 1);
}

.btn-link:hover > span,
.btn-link:focus-visible > span { text-decoration-color: currentColor; }
.btn-link:hover svg { transform: translateX(2px); }
.btn-link:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }

@media (prefers-reduced-motion: reduce) {
  .btn, .btn__icon, .btn__icon svg, .btn-link svg, .btn-link > span { transition: none; }
  .btn:hover .btn__icon svg, .btn-link:hover svg { transform: none; }
}

/* =====================================================
   CARD DESTAQUE — paralelogramo com cantos arredondados (ref-09)
   Técnica: skew no container (mantém border-radius suave),
   e "des-skew" só no texto. O bloco de imagem segue inclinado,
   como na referência.
   ===================================================== */
.hero__highlight {
  position: relative;
  z-index: 2;
  grid-column: 2;
  align-self: start;
  width: 520px;
  margin: 39px 40px 0 0;     /* medidas do Codex (09/09/2026): topo 39px na faixa, 40px da borda direita */
}

.hero__highlight-shape {
  --skew: 13deg;  /* medido na ref-09 (zoom): ~13° */
  transform: skewX(calc(var(--skew) * -1));
  background: var(--creme-100);
  border-radius: 20px;
  padding: 20px 24px;
}

.hero__highlight-inner {
  display: flex;
  align-items: center;
  gap: 16px;  /* medido: 14–16px */
}

.hero__highlight-img {
  /* Recorte inclinado como no ref-09; a foto (gerada pelo Codex, 08/09/2026) fica reta por dentro via contrainclinação. */
  position: relative;
  overflow: hidden;
  width: 144px;
  height: 96px;
  border-radius: var(--radius-img);
  flex: 0 0 auto;
  background: var(--verde);
}

.hero__highlight-img img {
  position: absolute;
  inset: 0 -18px;   /* sobra lateral para cobrir os cantos do paralelogramo depois de endireitar */
  width: calc(100% + 36px);
  height: 100%;
  display: block;
  object-fit: cover;
  object-position: 50% 32%;
  transform: skewX(var(--skew, 13deg)); /* anula o skew do container: rostos sem deformação */
}

.hero__highlight-text {
  transform: skewX(var(--skew, 13deg));
  font-size: 15px;
  line-height: 21px;
  color: var(--verde);
}

/* =====================================================
   RESPONSIVO
   ===================================================== */
@media (max-width: 1180px) {
  .nav__list {
    gap: 16px;
  }
  .nav__link {
    font-size: 15px;
  }
}

/* abaixo de 1360 a faixa vira uma coluna: título e botão primeiro, card destaque abaixo (Codex, 09/09/2026) */
@media (max-width: 1360px) {
  .hero__card { grid-template-columns: 1fr; }
  .hero__content { padding-bottom: 24px; }
  .hero__highlight { grid-column: 1; width: min(520px, 100% - 96px); margin: 0 48px 32px; }
}

@media (max-width: 960px) {
  :root {
    --gutter: 16px;
    --radius-hero: 28px;
    --nav-h: 56px;
  }

  .nav {
    display: none; /* links entram num menu mobile na próxima etapa */
  }

  .hero__card {
    height: auto;
    min-height: 0;
    max-height: none;
    display: flex;
    flex-direction: column;
  }

  .hero__content {
    padding: 28px 24px 24px;
  }
  .hero__title { font-size: 42px; line-height: 45px; }
  .hero__actions { margin-top: 16px; }

  .hero__highlight {
    width: auto;
    margin: 0 28px 32px;
  }

  .hero__highlight-shape {
    --skew: 5deg;
    padding: 18px 26px 18px 22px;
  }

  .hero__highlight-img {
    width: 120px;
    height: 90px;
  }
}

@media (max-width: 600px) {
  .hero__title {
    font-size: 38px;
  }

  .hero__actions {
    gap: 18px;
  }


  .btn__icon {
    width: 40px;
    height: 40px;
  }

  .hero__highlight-shape {
    --skew: 0deg;
  }

  .hero__highlight-inner {
    flex-direction: column;
    align-items: flex-start;
  }

  .hero__highlight-img {
    width: 100%;
    height: 150px;
  }
}

/* =====================================================
   FAIXA CONTÍNUA — MARQUEE (abaixo do hero)
   Referência: referencias/secao-01b-faixa-marquee/
   Medidas do Codex: altura 68px, fundo branco, bordas 1px #e3e7e4,
   células com padding 44px, ícone 24px stroke 1.7, texto 16px/600, gap 16px, ~40px/s
   ===================================================== */
.marquee {
  --marquee-speed: 40px;              /* px por segundo */
  --marquee-duration: 38s;            /* ≈ largura de um conjunto / 40 */
  height: 68px;
  background: var(--branco);
  border-top: 1px solid #e3e7e4;
  border-bottom: 1px solid #e3e7e4;
  overflow: hidden;
  margin-top: 4px;                    /* cola no rodapé do card do hero (que tem 28px de padding-bottom) */
}

.marquee__track {
  display: flex;
  width: max-content;
  height: 100%;
  animation: marquee-scroll var(--marquee-duration) linear infinite;
}

.marquee:hover .marquee__track {
  animation-play-state: paused;
}

.marquee__list {
  display: flex;
  align-items: center;
  height: 100%;
  margin: 0;
  padding: 0;
  list-style: none;
}

.marquee__item {
  display: inline-flex;
  align-items: center;
  gap: 16px;
  height: 100%;
  padding-inline: 44px;
  border-right: 1px solid #e3e7e4;
  font-family: var(--font-sans);
  font-size: 16px;
  font-weight: 600;
  letter-spacing: -0.005em;
  color: var(--verde);
  white-space: nowrap;
}

.marquee__icon {
  width: 24px;
  height: 24px;
  flex: 0 0 auto;
}

@keyframes marquee-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }   /* exatamente uma cópia da lista */
}

@media (prefers-reduced-motion: reduce) {
  .marquee__track {
    animation: none;
  }
  .marquee {
    overflow-x: auto;
  }
}

@media (max-width: 760px) {
  .marquee {
    height: 60px;
  }
  .marquee__item {
    padding-inline: 28px;
    font-size: 15px;
    gap: 12px;
  }
}

/* =====================================================
   QUEM SOMOS (seção 02)
   Referências: referencias/secao-02-quem-somos/
   Medidas: analise-codex-medidas-2026-09-07.txt (fator 0,72; zooms 2x)
   ===================================================== */
.about {
  padding: 88px 40px 72px;          /* medido: foto a 89px do topo; ~70px abaixo do botão */
  max-width: 1428px;                /* 1348 úteis + 2×40 */
}

.about__grid {
  display: grid;
  /* medido: esquerda 389px | centro (linha + 43px + texto 500px + respiro 77px) | direita 338px */
  grid-template-columns: 389px minmax(0, 1fr) 338px;
  grid-template-rows: auto auto;
  column-gap: 0;
  row-gap: 80px;                    /* medido: 78–84px entre título e símbolo */
  align-items: start;
}

/* Eyebrow (mantido para reuso em outras seções; removido desta a pedido do Alan) */
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  font-size: 14px;
  line-height: 20px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--verde);
  margin: 0;
}

.eyebrow__icon {
  width: 13px;
  height: 13px;
}

.about__head {
  grid-column: 1;
  grid-row: 1;
  margin-top: 8px;                  /* medido: texto começa ~8px abaixo do topo da foto */
}

.about__title {
  margin: 0;
  white-space: nowrap;              /* 3 linhas fixas via <br>; a 3ª avança sobre a coluna vazia ao lado (Alan, 08/09/2026) */
  font-size: clamp(36px, 3.6vw, 52px);   /* recomendado: 52px */
  line-height: 1.02;
  font-weight: 700;
  letter-spacing: -0.035em;
  color: var(--verde);
  max-width: 420px;
}

.about__logo {
  grid-column: 1;
  grid-row: 2;
  display: flex;
  justify-content: center;
  margin: 0;
  perspective: 900px;               /* dá profundidade à inclinação que segue o mouse */
}

.about__logo-img {
  width: 320px;                     /* medido: ~292px de matéria visível; o render tem respiro interno */
  height: 320px;
  object-fit: contain;
  will-change: transform;
  transform-style: preserve-3d;
}

.about__body {
  grid-column: 2;
  grid-row: 2;
  position: relative;
  padding-left: 43px;               /* medido: 43px da linha ao texto */
  padding-top: 8px;                 /* linha começa 8px acima do texto */
  margin-top: -8px;
}

/* Linha vertical: 1px #c8cdcd que aparece suave no topo e some aos poucos até o fim (pedido do Alan) */
.about__body::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 1px;
  background: #c8cdcd;
  -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 12%, #000 45%, transparent 100%);
  mask-image: linear-gradient(180deg, transparent 0%, #000 12%, #000 45%, transparent 100%);
}

.about__text {
  font-size: 18px;
  line-height: 29px;
  color: #495456;                   /* medido */
  max-width: 500px;                 /* medido */
  text-wrap: pretty;
}

/* Indicador de carrossel */
.dots {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 68px;                 /* medido: 68–70px */
}

.dot {
  width: 7px;
  height: 7px;
  border-radius: var(--radius-pill);
  border: 0;
  padding: 0;
  background: #c8cdcd;
  cursor: pointer;
  transition: width .25s ease, background-color .25s ease;
}

.dot.is-active {
  width: 22px;
  background: var(--verde);
}




.about .btn { margin-top: 50px; }   /* espaçamento sai da variante e fica no layout */

.about__media {
  grid-column: 3;
  grid-row: 1 / span 2;
  align-self: start;
  width: 338px;                     /* medido */
  height: 451px;                    /* medido */
  border-radius: 24px;              /* medido: 21–24px */
  background: var(--verde);
  display: grid;                    /* símbolo branco centralizado no card verde */
  place-items: center;
  overflow: hidden;
}

.about__media img {
  width: 62%;
  max-width: 212px;
  height: auto;
  max-height: 70%;
  object-fit: contain;
  display: block;
}

@media (max-width: 1240px) {
  .about__grid {
    grid-template-columns: 340px minmax(0, 1fr) 300px;
  }
  .about__logo-img {
    width: 260px;
    height: 260px;
  }
  .about__media {
    width: 300px;
    height: 400px;
  }
}

@media (max-width: 1000px) {
  .about {
    padding-inline: 28px;
  }
  .about__grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr);
    row-gap: 56px;
  }
  .about__media {
    grid-column: 1 / -1;
    grid-row: 3;
    width: 100%;
    height: 320px;
  }
}

@media (max-width: 760px) {
  .about {
    padding: 64px 20px;
  }
  .about__grid {
    grid-template-columns: 1fr;
    row-gap: 40px;
  }
  .about__head,
  .about__logo,
  .about__body,
  .about__media {
    grid-column: 1;
    grid-row: auto;
  }
  .about__head {
    margin-top: 0;
  }
  .about__logo {
    justify-content: flex-start;
  }
  .about__logo-img {
    width: 200px;
    height: 200px;
  }
  .about__body {
    padding-left: 0;
    padding-top: 0;
    margin-top: 0;
  }
  .about__body::before {
    display: none;
  }
  .about__media {
    height: 260px;
  }
}

/* =====================================================
   PROCEDIMENTOS (seção 03) — opção A: grid 2×2, card vertical com foto no topo
   Referência: referencias/secao-03-procedimentos/
   Medidas do Codex: container 1364/44px; título 42/1.16; subtítulo 16/21 #58615d;
   botões 51–52px pill; grid gap 24; card branco radius 28; foto 232px; corpo 30px;
   ícone 44 + título 27/600; tags 30px pill; texto 16.5/27; cabeçalho→grid 48px
   ===================================================== */
.procedures {
  max-width: 1452px;                /* 1364 úteis + 2×44 */
  margin-inline: auto;
  padding: 96px 44px 92px;
}

.procedures__head {
  /* título à esquerda; texto + botão à direita, na mesma linha (pedido do Alan) */
  display: grid;
  grid-template-columns: 52fr 48fr;   /* Codex/Alan: 52% / 48%, alinhado pelo topo */
  align-items: start;
  column-gap: 72px;
}

.procedures__title {
  font-size: 42px;
  line-height: 1.16;
  font-weight: 600;
  letter-spacing: -0.03em;
  color: var(--verde);
  max-width: 560px;
  text-wrap: normal;                /* quebras fixas via <br>: 3 linhas em qualquer navegador */
}

.procedures__aside {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 24px;
}

.procedures__lead {
  display: flex;
  align-items: flex-start;
  gap: 14px;
}

.procedures__subtitle {
  font-size: 17px;
  line-height: 26px;
  color: #58615d;
  max-width: 520px;
  text-wrap: balance;
}

/* ---------- Ajuda sobre indicação (acionador "?" + popover) ---------- */
.help {
  position: relative;
  flex: 0 0 auto;
  margin-top: -1px;
}

.help__trigger {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: 1px solid var(--verde);
  background: transparent;
  color: var(--verde);
  font-family: var(--font-sans);
  font-size: 16px;
  font-weight: 600;
  line-height: 1;
  cursor: pointer;
  display: grid;
  place-items: center;
  transition: background-color .2s ease, color .2s ease;
}

/* regras separadas: se um motor não reconhecer um seletor, os outros continuam valendo */
.help__trigger:hover { background: var(--verde); color: var(--branco); }
.help__trigger:focus-visible { background: var(--verde); color: var(--branco); outline: 2px solid var(--verde); outline-offset: 3px; }
.help.is-open .help__trigger { background: var(--verde); color: var(--branco); }

.help__popover {
  position: absolute;
  top: calc(100% + 18px);
  right: 0;                          /* abre para a esquerda: o "?" fica na borda direita */
  z-index: 5;
  width: 320px;
  padding: 16px 18px;
  border-radius: 14px;
  background: var(--branco);
  border: 1px solid var(--verde);
  font-family: var(--font-body);
  font-size: 14.5px;
  line-height: 21px;
  color: var(--cinza-900);
  text-wrap: pretty;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-4px);
  transition: opacity .18s ease, transform .18s ease, visibility .18s;
}

.help:hover .help__popover { opacity: 1; visibility: visible; transform: translateY(0); }
.help:focus-within .help__popover { opacity: 1; visibility: visible; transform: translateY(0); }
.help.is-open .help__popover { opacity: 1; visibility: visible; transform: translateY(0); }




.procedures__track {
  margin-top: 48px;
  display: flex;
  gap: 24px;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  scroll-padding-inline: 0;
  cursor: grab;
  user-select: none;
  /* o trilho vaza até a borda direita da tela para sugerir que há mais cards */
  margin-right: -44px;
  padding-right: 44px;
  scrollbar-width: none;
}

.procedures__track::-webkit-scrollbar {
  display: none;
}

.procedures__track.is-dragging {
  cursor: grabbing;
  scroll-snap-type: none;
}

.proc-card {
  flex: 0 0 420px;                  /* 3 cards inteiros + o começo do 4º na tela */
  scroll-snap-align: start;
  display: flex;
  flex-direction: column;
  min-height: 0;
  background: var(--branco);
  border-radius: 28px;
  overflow: hidden;
}

.proc-card__media {
  /* área da ilustração (Alan, 08/09/2026: 220 → 280 → 320px) */
  height: 320px;
  background: var(--verde);
}

/* ilustrações dos procedimentos (enviadas pelo Alan, 08/09/2026): cobrem a área da mídia */
.proc-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

.proc-card__body {
  padding: 26px;
}

.proc-card__head {
  display: flex;
  align-items: center;
  gap: 14px;
}

.proc-card__icon {
  width: 40px;
  height: 40px;
  flex: 0 0 auto;
  color: var(--verde);
}

.proc-card__title {
  font-size: 24px;
  line-height: 1.15;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--verde);
}

.proc-card__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 16px;
  list-style: none;
  padding: 0;
}

.proc-card__tags li {
  height: 30px;
  padding: 0 14px;
  display: inline-flex;
  align-items: center;
  border-radius: var(--radius-pill);
  background: var(--cinza-50);
  color: var(--verde);
  font-family: var(--font-sans);
  font-size: 13.5px;
  font-weight: 500;
  text-wrap: nowrap;
}

.proc-card__text {
  margin-top: 16px;
  font-size: 16px;
  line-height: 25px;
  color: #58615d;
  max-width: 60ch;
  text-wrap: pretty;
}

/* botão próprio de cada procedimento (Alan, 28/09/2026): abre o WhatsApp já com a mensagem
   daquele procedimento, em vez de mandar todo mundo para a mesma conversa genérica. */
.proc-card__link {
  margin-top: 18px;
  color: var(--verde);
  min-height: 44px;          /* alvo de toque no celular */
}

/* =====================================================
   DIFERENCIAIS (seção 04) — faixa verde, cabeçalho centralizado, foto à esquerda + grid 2×2
   Referência: referencias/secao-04-diferenciais/
   Medidas do Codex (ref-05 ≈ 1:1): título 52/1.2; subtítulo 16/24 max 560; cabeçalho→grid 70;
   foto 363×590 r20; cards 363×288 r20, padding 24, círculo 60, título 22, texto 16/24; gaps 16.
   Ajustes do Alan: fundo verde na seção, sem eyebrow, sem marca d'água, hover "balde de tinta".
   ===================================================== */
.why-pin {
  padding-bottom: 0;                /* sem trava: a dissolução em pixels agora toca sozinha ao entrar na tela (08/09/2026) */
}

.why {
  --paint-x: 50%;
  position: relative;               /* a fixação é feita por JS (translateY) para funcionar com o zoom da página */
  will-change: transform;
  isolation: isolate;
  margin: 0 16px;                   /* mesma margem lateral do hero */
  padding: 64px 40px 72px;          /* compacta para caber na altura da tela enquanto está presa */
  background: var(--verde);
  border-radius: var(--radius-hero);
  overflow: hidden;
}

/* camada de quadrados na cor do fundo que cobre a seção; cada quadrado some quando o pixel acende */
.why__cover {
  position: absolute;
  inset: 0;
  z-index: 2;                       /* acima do conteúdo: revela fundo e conteúdo juntos */
  pointer-events: none;
}

.why__cover i {
  position: absolute;
  display: block;
  background: var(--cinza-50);
}

@media (prefers-reduced-motion: reduce) {
  .why__cover { display: none; }
}

.why__inner {
  position: relative;
  z-index: 1;
}

@media (prefers-reduced-motion: reduce) {
  .why::before { transition: none; clip-path: none; }
}

.why__inner {
  max-width: 1200px;
  margin-inline: auto;
}

.why__head {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.why__title {
  font-size: 52px;
  line-height: 1.2;
  font-weight: 600;
  letter-spacing: -0.03em;
  color: var(--branco);
  max-width: 700px;
  text-wrap: normal;                /* quebra fixa via <br> */
}

.why__subtitle {
  margin-top: 22px;
  font-size: 16px;
  line-height: 24px;
  color: rgba(255, 255, 255, 0.82);
  max-width: 560px;
  text-wrap: balance;
}

.why__grid {
  margin-top: 48px;
  display: grid;
  grid-template-columns: 390px repeat(2, minmax(0, 1fr));
  grid-template-rows: repeat(2, 290px);
  gap: 16px;
}

.why__media {
  grid-row: 1 / span 2;
  border-radius: 20px;
  overflow: hidden;
  background: rgba(255, 255, 255, 0.14);   /* fundo enquanto a foto carrega */
}

.why__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 35%;         /* mantém o rosto no terço superior em qualquer recorte */
  display: block;
}

/* ---------- Card com hover "balde de tinta" ---------- */
.diff-card {
  --x: 50%;
  --y: 50%;
  --tinta: #16352a;                 /* verde mais fechado que o da seção, só no hover: o card não some no fundo */
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 24px;
  background: var(--branco);
  border-radius: 20px;
  overflow: hidden;
  isolation: isolate;
  color: var(--verde);
  transition: color .35s ease;
}

/* a "tinta": círculo verde que nasce onde o mouse entrou e cobre o card */
.diff-card::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background: var(--tinta);
  clip-path: circle(0% at var(--x) var(--y));
  transition: clip-path .6s cubic-bezier(.4, 0, .2, 1);
}

.diff-card:hover::before,
.diff-card.is-painted::before,
.diff-card:focus-within::before {
  clip-path: circle(150% at var(--x) var(--y));
}

.diff-card:hover,
.diff-card.is-painted {
  color: var(--branco);
  transition-delay: .2s;            /* o texto clareia enquanto a tinta cobre o card */
}

.diff-card > * {
  position: relative;
  z-index: 1;
}

.diff-card__icon-wrap {
  width: 60px;
  height: 60px;
  border-radius: 50%;
  background: #f0f2f0;
  display: grid;
  place-items: center;
  color: var(--verde);
  flex: 0 0 auto;
  transition: background-color .35s ease, color .35s ease;
}

.diff-card:hover .diff-card__icon-wrap,
.diff-card.is-painted .diff-card__icon-wrap {
  background: var(--branco);
  color: var(--tinta);
  transition-delay: .2s;
}

.diff-card__icon {
  width: 28px;
  height: 28px;
}

.diff-card__body {
  /* título começa na mesma altura em todos os cards (medido: ~176px do topo; 166 aqui para caber 3 linhas) */
  position: absolute;
  left: 24px;
  right: 24px;
  top: 166px;
}

.diff-card__title {
  font-size: 22px;
  line-height: 28px;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: inherit;
}

.diff-card__text {
  margin-top: 14px;
  font-size: 16px;
  line-height: 24px;
  color: #58615d;
  text-wrap: pretty;
  transition: color .35s ease;
}

.diff-card:hover .diff-card__text,
.diff-card.is-painted .diff-card__text {
  color: rgba(255, 255, 255, 0.85);
  transition-delay: .2s;
}

/* =====================================================
   MENU SUSPENSO — barra flutuante inferior + painel que cresce para cima
   Referências: referencias/componente-menu-suspenso/
   Medidas do Codex (refs 2×, fator 0,5): barra 640×80 r16 p12; avatar 48; nome 16.5/500;
   status mono 9/.4em; CTA 207×54 r6 mono 14.5; Menu 19; botão + 48; painel 640, itens 81,
   divisórias 1px inset 26, rótulos a 38px; sociais 22; chips 44 r6 15.5/500 gap 12.
   Tema: verde sobre seções claras / branco sobre seções verdes. Sem bege (regra do Alan).
   ===================================================== */
:root {
  --font-mono: "DM Mono", ui-monospace, "SF Mono", Menlo, monospace;
}

.fab {
  position: fixed;
  left: 50%;
  bottom: max(16px, env(safe-area-inset-bottom));
  transform: translateX(-50%);
  width: min(640px, calc(100vw - 32px));
  z-index: 80;
  /* tema padrão: verde */
  --fab-bg: var(--verde);
  --fab-fg: #ffffff;
  --fab-muted: rgba(255, 255, 255, 0.58);
  --fab-line: rgba(255, 255, 255, 0.16);
  --fab-cta-bg: #ffffff;
  --fab-cta-fg: var(--verde);
  --fab-toggle-bg: rgba(255, 255, 255, 0.10);
  --fab-toggle-fg: #ffffff;
  --fab-chip: rgba(255, 255, 255, 0.10);
  --fab-chip-hover: rgba(255, 255, 255, 0.18);
  --fab-avatar: #ffffff;
  --fab-hover: rgba(255, 255, 255, 0.04);
}

/* o menu só aparece depois que a pessoa começa a rolar (Alan, 08/09/2026); sobe suave de baixo para cima */
.fab {
  transition: transform .45s cubic-bezier(.22, 1, .36, 1), opacity .35s ease;
}

.fab.is-offscreen {
  transform: translate(-50%, 140%);
  opacity: 0;
  pointer-events: none;
}

.fab[data-theme="light"] {
  --fab-bg: #ffffff;
  --fab-fg: var(--verde);
  --fab-muted: rgba(31, 69, 46, 0.60);
  --fab-line: rgba(31, 69, 46, 0.14);
  --fab-cta-bg: var(--verde);
  --fab-cta-fg: #ffffff;
  --fab-toggle-bg: var(--verde);
  --fab-toggle-fg: #ffffff;
  --fab-chip: #f0f2f0;
  --fab-chip-hover: #e6ebe8;
  --fab-avatar: #f0f2f0;
  --fab-hover: rgba(31, 69, 46, 0.04);
}

/* ---------- Barra ---------- */
.fab__bar {
  position: relative;
  z-index: 2;
  height: 80px;
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 12px;
  border-radius: 16px;
  background: var(--fab-bg);
  color: var(--fab-fg);
  transition: background-color .22s ease, color .22s ease;
}

.fab__brand {
  display: flex;
  align-items: center;
  gap: 11px;
  min-width: 0;
  flex: 1 1 auto;
}

.fab__avatar {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--fab-avatar);
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  transition: background-color .22s ease;
}

.fab__avatar img {
  width: 28px;
  height: 28px;
}

.fab__id {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.fab__name {
  font-family: var(--font-sans);
  font-size: 16.5px;
  line-height: 20px;
  font-weight: 500;
  white-space: nowrap;
}

.fab__status {
  font-family: var(--font-mono);
  font-size: 9px;
  line-height: 12px;
  letter-spacing: 0.4em;
  text-transform: uppercase;
  color: var(--fab-muted);
  transition: color .22s ease;
}

.fab__cta {
  --btn-bg: var(--fab-cta-bg);
  --btn-fg: var(--fab-cta-fg);
  flex: 0 0 auto;
  white-space: nowrap;
}

.fab__menu-label {
  font-family: var(--font-sans);
  font-size: 19px;
  font-weight: 500;
  margin-left: auto;
}

.fab__toggle {
  width: 48px;
  height: 48px;
  margin-left: 8px;
  border: 0;
  border-radius: 50%;
  background: var(--fab-toggle-bg);
  color: var(--fab-toggle-fg);
  display: grid;
  place-items: center;
  cursor: pointer;
  flex: 0 0 auto;
  transition: background-color .26s ease, color .26s ease;
}

.fab__plus {
  width: 20px;
  height: 20px;
  transition: transform .26s cubic-bezier(.22, 1, .36, 1);
}

.fab.is-open .fab__toggle {
  background: var(--fab-fg);
  color: var(--fab-bg);
}

.fab.is-open .fab__plus {
  transform: rotate(45deg);          /* + vira × */
}

/* ---------- Painel ---------- */
.fab__panel {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1;
  padding-bottom: 80px;             /* espaço da barra, que fica por cima */
  border-radius: 16px;
  background: var(--fab-bg);
  color: var(--fab-fg);
  clip-path: inset(calc(100% - 80px) 0 0 0 round 16px);
  opacity: .98;
  transform: translateY(0);          /* sem deslocamento fechado: antes o painel aparecia 8px abaixo da barra */
  transition: clip-path .32s ease-in, opacity .32s ease-in, background-color .22s ease, color .22s ease;
  pointer-events: none;
}

.fab.is-open .fab__panel {
  clip-path: inset(0 0 0 0 round 16px);
  opacity: 1;
  transition: clip-path .42s cubic-bezier(.22, 1, .36, 1), opacity .42s ease, background-color .22s ease, color .22s ease;
  pointer-events: auto;
}

.fab__panel-inner {
  max-height: min(585px, calc(100dvh - 24px - 80px));
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 22px 26px 8px;
}

.fab__social {
  display: flex;
  justify-content: center;
  gap: 52px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--fab-line);
}

.fab__social a {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  margin: -11px 0;
  border-radius: 50%;
  color: var(--fab-fg);
  transition: background-color .2s ease;
}

.fab__social a:hover {
  background: var(--fab-hover);
}

.fab__social-icon {
  width: 22px;
  height: 22px;
}

.fab__list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.fab__item {
  border-bottom: 1px solid var(--fab-line);
}

.fab__item:last-child {
  border-bottom: 0;
}

.fab__link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  width: 100%;
  min-height: 81px;
  padding: 0 12px;
  border: 0;
  background: transparent;
  color: inherit;
  font-family: var(--font-sans);
  font-size: 17.5px;
  font-weight: 400;
  text-align: left;
  cursor: pointer;
  border-radius: 10px;
  transition: background-color .2s ease;
}

.fab__link:hover,
.fab__link:focus-visible { background: var(--fab-hover); }
.fab__link:focus-visible { outline: 2px solid currentColor; outline-offset: -2px; }

.fab__arrow,
.fab__chevron {
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
  opacity: .4;
  transition: opacity .18s ease, transform .26s cubic-bezier(.22, 1, .36, 1);
}

.fab__link:hover .fab__arrow {
  opacity: 1;
  transform: translateX(2px);
}

.fab__acc-btn[aria-expanded="true"] .fab__chevron {
  transform: rotate(90deg);
  opacity: 1;
}

/* acordeão: grid 0fr → 1fr */
.fab__acc-body {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows .3s cubic-bezier(.22, 1, .36, 1);
}

.fab__acc-body.is-open {
  grid-template-rows: 1fr;
}

.fab__chips {
  overflow: hidden;
  list-style: none;
  margin: 0;
  padding: 0 12px;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.fab__acc-body.is-open .fab__chips {
  padding-top: 2px;
  padding-bottom: 24px;
}

.fab__chip {
  height: 44px;
  padding: 0 16px;
  display: inline-flex;
  align-items: center;
  gap: 11px;
  border-radius: 6px;
  background: var(--fab-chip);
  color: var(--fab-fg);
  font-family: var(--font-sans);
  font-size: 15.5px;
  font-weight: 500;
  white-space: nowrap;
  transition: background-color .2s ease, color .2s ease;
}

.fab__chip:hover {
  background: var(--fab-chip-hover);
}

.fab__chip-icon {
  width: 20px;
  height: 20px;
  flex: 0 0 auto;
}

@media (prefers-reduced-motion: reduce) {
  .fab__panel,
  .fab__plus,
  .fab__acc-body,
  .fab__arrow,
  .fab__chevron,
  .fab__bar,
  .fab__toggle {
    transition-duration: 1ms;
  }
}

/* =====================================================
   PRELOADER v2 — malha de construção (35% mais lento e logo menor, a pedido do Alan)
   Asset: img/logo/logo-scopel-construcao.svg · Espec.: referencias/componente-preloader/analise-codex-preloader-v2-2026-09-07.txt
   Linha do tempo (~4,6s): grade 0–675 · círculos 270–918 · diagonais 513–1053 · símbolo 918–2322 ·
   guias somem 2322–2673 · símbolo encolhe/desliza 2565–3375 · lettering 3105–3618 · pausa · voo até o símbolo do menu 3940–4900
   ===================================================== */
.preloader {
  position: fixed;
  inset: 0;
  z-index: 1000;
  background: #ffffff;
  display: grid;
  place-items: center;
  visibility: hidden;
  pointer-events: none;
}

.preloader.is-active {
  visibility: visible;
  pointer-events: auto;
  animation: preloader-failsafe 0s linear 6.2s both;   /* nunca deixar a tela branca presa */
}

/* Saída: a logo "voa" até o símbolo do menu (JS calcula destino e escala); a tela branca some no caminho */
.preloader.is-flying {
  pointer-events: none;
  background-color: transparent;
  transition: background-color .45s ease .3s;
}

.preloader.is-flying .preloader__logo {
  transition: transform .95s cubic-bezier(.22, 1, .36, 1);
  will-change: transform;
}

.preloader.is-active.is-flying #lettering {
  animation: preloader-lettering-out .3s ease forwards;
}

/* o SVG de construção traz um retângulo branco de fundo; o overlay já é branco, então ele fica oculto */
.preloader #fundo-preloader {
  display: none;
}

/* Fallback (símbolo do menu fora da tela): cortina sobe */
.preloader.is-leaving {
  animation: preloader-exit .68s cubic-bezier(.76, 0, .24, 1) both, preloader-failsafe 0s linear 6.2s both;
}

.preloader__logo {
  width: min(64vw, 680px);          /* logo menor na tela */
  height: auto;
  max-height: 60vh;
}

/* --- guias: desenham sólidas (dasharray 1 enquanto o grupo está em .is-drawing), depois voltam ao tracejado do SVG --- */
.preloader.is-active .guia {
  stroke-dashoffset: 1;
  animation-name: preloader-traco;
  animation-timing-function: cubic-bezier(.45, 0, .25, 1);
  animation-fill-mode: forwards;
}

.preloader.is-active .guias-grupo.is-drawing .guia {
  stroke-dasharray: 1;
}

/* guias somem depois da construção */
.preloader.is-active #guias {
  animation: preloader-guias-fade .35s ease-out 2.32s forwards;
}

/* --- símbolo: traços --- */
.preloader.is-active .simbolo-traco {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  animation: preloader-traco .57s cubic-bezier(.65, 0, .35, 1) forwards;
}

.preloader.is-active #traco-01-tronco-esquerdo        { animation-delay: 918ms;  animation-duration: 567ms; }
.preloader.is-active #traco-02-tronco-direito         { animation-delay: 1134ms; animation-duration: 567ms; }
.preloader.is-active #traco-03-folha-lateral-esquerda { animation-delay: 1593ms; animation-duration: 405ms; }
.preloader.is-active #traco-04-folha-lateral-direita  { animation-delay: 1782ms; animation-duration: 405ms; }
.preloader.is-active #traco-05-folha-topo             { animation-delay: 1917ms; animation-duration: 405ms; }

/* --- símbolo: grande e centralizado → encolhe e aterrissa à esquerda da logo --- */
.preloader.is-active #simbolo-wrap {
  transform-box: view-box;
  transform-origin: 419.52px 420.02px;
  transform: translate(540.48px, -4.02px) scale(1.45);
  animation: preloader-aterrissar .81s cubic-bezier(.22, 1, .36, 1) 2.57s forwards;
}

/* --- lettering entra da esquerda --- */
.preloader.is-active #lettering {
  opacity: 0;
  transform: translateX(-20px);
  animation: preloader-lettering .51s cubic-bezier(.22, 1, .36, 1) 3.1s forwards;
}

@keyframes preloader-traco      { to { stroke-dashoffset: 0; } }
@keyframes preloader-guias-fade { from { opacity: .32; } to { opacity: 0; } }
@keyframes preloader-aterrissar { to { transform: translate(0, 0) scale(1); } }
@keyframes preloader-lettering  { to { opacity: 1; transform: translateX(0); } }
@keyframes preloader-lettering-out { from { opacity: 1; } to { opacity: 0; } }
@keyframes preloader-exit       { to { transform: translateY(-100%); } }
@keyframes preloader-failsafe   { to { visibility: hidden; pointer-events: none; } }

@media (prefers-reduced-motion: reduce) {
  .preloader.is-active { animation: preloader-exit .12s ease .18s both, preloader-failsafe 0s linear 1s both; }
  .preloader.is-flying .preloader__logo { transition-duration: 1ms; }
  .preloader.is-active .guia,
  .preloader.is-active .simbolo-traco,
  .preloader.is-active #simbolo-wrap,
  .preloader.is-active #lettering { animation: none; }
  .preloader.is-active #guias { animation: none; opacity: 0; }
  .preloader.is-active .simbolo-traco { stroke-dashoffset: 0; }
  .preloader.is-active #simbolo-wrap { transform: none; }
  .preloader.is-active #lettering { opacity: 1; transform: none; }
}

/* =====================================================
   COMO FUNCIONA (seção 05) — jornada em 5 passos com linha conectora
   Referências: referencias/secao-05-como-funciona/
   Medidas do Codex (fator 0,72): título 56–58/1.02; foto 430 r20; conteúdo até 520; gap ~100;
   ícone 30 + título 25/1.35; divisor 1px; parágrafo 20/31; row-gap 160; conector 1px, curvas r32, trilho a 32px
   ===================================================== */
.journey-pin {
  padding-bottom: 600px;            /* distância de rolagem em que a jornada fica presa enquanto a linha termina */
}

.journey {
  position: relative;
  isolation: isolate;
  padding: 96px 48px 120px;
  will-change: transform;
}

.journey-lines {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
  pointer-events: none;
  z-index: 0;
}

.journey-path {
  fill: none;
  vector-effect: non-scaling-stroke;
  stroke-width: 1;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.journey-path--base {
  stroke: var(--verde);
  opacity: .12;                     /* rota inteira quase invisível: só um guia */
}

.journey-path--active {
  stroke: var(--verde);
  stroke-width: 1.5;
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  transition: stroke-dashoffset .32s cubic-bezier(.2, .6, .3, 1);   /* trechos horizontais varrem em vez de saltar */
  will-change: stroke-dashoffset;
}

.journey-path--tip {
  stroke-linecap: butt;             /* camadas da ponta: sem ponta redonda para o degradê não "pontilhar" */
}

.journey-header,
.journey-steps {
  position: relative;
  z-index: 1;
}

/* ---------- Cabeçalho: headline | descrição + botão ---------- */
.journey-header {
  max-width: 1364px;
  margin-inline: auto;
  display: grid;
  grid-template-columns: 52fr 48fr;
  column-gap: 96px;
  align-items: start;
}

.journey-header__left {
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr);
  column-gap: 32px;
  align-items: start;
}

.journey-eyebrow {
  font-family: var(--font-mono);
  font-size: 12px;
  line-height: 20px;
  letter-spacing: 0.36em;
  text-transform: uppercase;
  color: #58615d;
  margin: 10px 0 0;
}

.journey-title {
  font-size: 56px;
  line-height: 1.02;
  font-weight: 500;
  letter-spacing: -0.03em;
  color: var(--verde);
  text-wrap: normal;                /* quebra fixa via <br> */
}

.journey-title__soft {
  color: rgba(31, 69, 46, 0.45);
}

.journey-header__right {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 30px;
  max-width: 480px;
  padding-top: 8px;
}

.journey-desc {
  font-size: 18px;
  line-height: 27px;
  color: #58615d;
  text-wrap: balance;
}

/* ---------- Passos ---------- */
.journey-steps {
  max-width: 1050px;
  margin: 200px auto 0;             /* medido: ~210px do título ao primeiro passo */
  display: flex;
  flex-direction: column;
  gap: 160px;
}

.journey-step {
  position: relative;               /* offsetParent estável para o cálculo do conector */
  display: grid;
  grid-template-columns: 430px minmax(0, 520px);
  justify-content: space-between;
  align-items: center;
  column-gap: 100px;
}

.journey-step--flip {
  grid-template-columns: minmax(0, 520px) 430px;
}

.journey-step--flip .journey-step__media {
  order: 2;
}

/* fotos da jornada (geradas pelo Codex a partir da referência do Alan, 08/09/2026) */
.journey-step__media { overflow: hidden; }
.journey-step__media img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; }

.journey-step__media {
  width: 430px;
  height: 430px;
  border-radius: 20px;
  background: var(--verde);         /* foto entra depois */
}

.journey-step__head {
  display: flex;
  align-items: flex-start;
  gap: 24px;
}

.journey-step__icon {
  width: 30px;
  height: 30px;
  flex: 0 0 auto;
  color: var(--verde);
  margin-top: 2px;
}

.journey-step__title {
  font-size: 25px;
  line-height: 1.35;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--verde);
  max-width: 440px;
}

.journey-divider {
  /* só define a geometria: a linha visível é o próprio conector (trilho cinza + progresso verde) */
  height: 1px;
  background: transparent;
  margin: 46px 0;
}

.journey-step__text {
  font-size: 20px;
  line-height: 31px;
  color: #58615d;
  max-width: 460px;
  text-wrap: pretty;
}

.journey-step__text strong {
  color: var(--verde);
  font-weight: 600;
}

/* ---------- Revelação dos passos conforme a rolagem (a linha chega, o passo aparece) ---------- */
.journey-step__media,
.journey-step__content {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .6s cubic-bezier(.22, 1, .36, 1), transform .6s cubic-bezier(.22, 1, .36, 1);
}

.journey-step__content {
  transition-delay: .18s;           /* texto entra logo depois da imagem */
}

.journey-step.is-visible .journey-step__media,
.journey-step.is-visible .journey-step__content {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .journey-step__media,
  .journey-step__content {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* =====================================================
   NÚMEROS (seção 06) — cabeçalho centralizado (eyebrow, título, descrição, botão) e carrossel infinito de números
   Referência: referencias/secao-06-numeros/ (fator 0,5)
   Medidas do Codex: eyebrow 15–16 + ponto 9; título 52/1.1 peso 500 max 760; pastilhas 46–48px r999 padding 28 16.5px;
   cards 360×210 r22, legenda 17/26, número 56/500, gap 18, título→cards ~110px
   ===================================================== */
.numbers {
  padding: 72px 0 64px;             /* sem margem lateral: o carrossel atravessa a tela inteira */
}

.numbers__arena {
  position: relative;
  width: 100%;
  min-height: 780px;                /* cabeçalho (eyebrow, título, descrição, botão) + respiro + carrossel na base */
  overflow: hidden;
}

.numbers__head {
  text-align: center;
  padding-top: 100px;
}

/* Eyebrow centralizado dos cabeçalhos de seção (Números, Equipe, Avaliações): um componente só, para ficarem iguais */
.sec-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 11px;
  margin: 0;
  font-family: var(--font-sans);
  font-size: 16px;
  font-weight: 500;
  color: #58615d;
}

.sec-eyebrow__dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--verde);
}

.numbers__title {
  margin: 36px auto 0;
  font-size: 52px;
  line-height: 1.1;
  font-weight: 500;
  letter-spacing: -0.03em;
  color: var(--verde);
  max-width: 760px;
  text-wrap: normal;
}

.numbers__desc {
  margin: 38px auto 0;
  max-width: 560px;
  font-family: var(--font-body);
  font-size: 18px;
  line-height: 27px;
  color: #58615d;
  text-wrap: balance;
}



/* ---------- Carrossel de números ---------- */
.numbers-marquee {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  overflow: hidden;
  padding: 2px 0;
}

.numbers-marquee__track {
  display: flex;
  width: max-content;
  animation: numbers-scroll var(--numbers-duration, 60s) linear infinite;
}

.numbers-marquee:hover .numbers-marquee__track {
  animation-play-state: paused;
}

.numbers-marquee__list {
  display: flex;
  gap: 18px;
  padding: 0 9px;
  margin: 0;
  list-style: none;
}

.num-card {
  flex: 0 0 360px;
  height: 210px;
  padding: 28px;
  border-radius: 22px;
  background: var(--branco);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.num-card__label {
  font-size: 17px;
  line-height: 26px;
  color: #58615d;
  max-width: 280px;
  text-wrap: balance;
}

.num-card__value {
  font-family: var(--font-sans);
  font-size: 56px;
  line-height: 1;
  font-weight: 500;
  letter-spacing: -0.03em;
  color: var(--verde);
}

@keyframes numbers-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

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


/* =====================================================
   EQUIPE (seção 07) — acordeão horizontal de retratos: o card ativo expande e mostra o rótulo
   Medidas do Codex (ref 1700px → 1200px, fator 0,706): cards 220/489px (1 : 2,23), gap 17, altura 580, raio 22;
   rótulo com insets 25px, raio 12; cabeçalho no mesmo padrão da seção Números.
   ===================================================== */
/* faixa verde (pedido do Alan, 08/09/2026): mesma margem lateral e raio do hero e dos Diferenciais; conteúdo em 1200px */
.team {
  margin: 0 16px;
  padding: 80px 40px 88px;
  background: var(--verde);
  border-radius: var(--radius-hero);
  color: var(--branco);
}

.team__head,
.team__row {
  max-width: 1200px;
  margin-inline: auto;
}

.team .sec-eyebrow { color: rgba(255, 255, 255, .8); }
.team .sec-eyebrow__dot { background: var(--branco); }
.team .fill-word { --fill-bg: var(--branco); --fill-ink: var(--verde); }   /* marca-texto invertido na faixa verde */

.team__head {
  text-align: center;
}

.team__title {
  margin: 36px auto 0;
  font-size: 52px;
  line-height: 1.1;
  font-weight: 500;
  letter-spacing: -0.03em;
  color: var(--branco);
  max-width: 600px;
  text-wrap: normal;
}

.team__desc {
  margin: 38px auto 0;
  max-width: 560px;
  font-family: var(--font-body);
  font-size: 18px;
  line-height: 27px;
  color: rgba(255, 255, 255, .78);
  text-wrap: balance;
}

.team__row {
  list-style: none;
  margin: 76px auto 0;
  padding: 0;
  display: flex;
  gap: 17px;
  height: 580px;
}

.team-card {
  position: relative;
  flex: 1 1 0;
  min-width: 0;
  overflow: hidden;
  border-radius: 22px;
  background: #16352a;              /* placeholder: verde mais fechado (o mesmo da tinta dos Diferenciais) para destacar na faixa; foto entra depois */
  transition: flex-grow .52s cubic-bezier(.22, 1, .36, 1);
}

.team-card.is-active {
  flex-grow: 2.23;
}

.team-card__media {
  position: absolute;
  inset: 0;
  background: #16352a;
}

/* fotos do site atual da clínica (teste de layout, 08/09/2026): cobrem o card; ajuste de enquadramento por médico depois */
.team-card__media img,
.profile-modal__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
}

.team-card.has-photo .team-card__tag { display: none; }   /* com foto, a identificação vertical não é mais necessária */

/* identificação discreta dos cards fechados enquanto não há fotos (sai quando os retratos entrarem) */
.team-card__tag {
  position: absolute;
  left: 24px;
  bottom: 28px;
  transform-origin: left bottom;
  transform: rotate(-90deg) translateX(0);
  white-space: nowrap;
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .72);
  transition: opacity .18s ease;
}

.team-card.is-active .team-card__tag {
  opacity: 0;
}

.team-card__label {
  position: absolute;
  left: 25px;
  right: 25px;
  bottom: 25px;
  padding: 24px 24px 22px;
  border-radius: 12px;
  background: var(--branco);
  text-align: center;
  opacity: 0;
  visibility: hidden;
  transform: translateY(14px);
  transition: opacity .16s ease-out, transform .16s ease-out, visibility 0s linear .16s;
}

.team-card.is-active .team-card__label {
  opacity: 1;
  visibility: visible;
  transform: none;
  transition: opacity .26s cubic-bezier(.22, 1, .36, 1) .12s, transform .26s cubic-bezier(.22, 1, .36, 1) .12s, visibility 0s;
}

.team-card__name {
  margin: 0;
  font-family: var(--font-sans);
  font-size: 24px;
  line-height: 1.15;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--verde);
  white-space: nowrap;
}

.team-card__role {
  margin: 12px 0 0;
  font-family: var(--font-body);
  font-size: 17px;
  line-height: 1.35;
  color: #58615d;
}

/* botão invisível que cobre o card: hover, foco e clique/toque */
.team-card__hit {
  position: absolute;
  inset: 0;
  border: 0;
  padding: 0;
  background: transparent;
  cursor: pointer;
  border-radius: inherit;
  outline: none;
}

.team-card__hit:focus-visible {
  outline: 2px solid var(--branco);
  outline-offset: -4px;
}

@media (prefers-reduced-motion: reduce) {
  .team-card,
  .team-card__label,
  .team-card__tag {
    transition: none;
  }
  .team-card__label { transform: none; }
}


/* =====================================================
   Marca-texto por scroll (adaptado do snippet enviado pelo Alan em 07/09/2026):
   um bloco verde chapado preenche a palavra da esquerda para a direita enquanto o título sobe
   de 80% para 45% da altura da tela; volta ao rolar para trás. Controlado por --fill (script.js).
   ===================================================== */
.fill-word {
  --fill: 0%;
  position: relative;
  display: inline-block;
  padding: .02em .16em .05em;
  margin: -.02em -.16em -.05em;     /* o padding não desloca o texto nem a altura da linha */
  line-height: 1.1;
  color: inherit;
}

.fill-word::before {
  content: attr(data-text);
  position: absolute;
  inset: 0;
  padding: inherit;
  box-sizing: border-box;
  white-space: nowrap;
  color: var(--fill-ink, var(--branco));
  background: var(--fill-bg, var(--verde));
  border-radius: 12px;
  z-index: 1;
  clip-path: polygon(0 0, var(--fill) 0, var(--fill) 100%, 0 100%);
}

@media (prefers-reduced-motion: reduce) {
  .fill-word { --fill: 100% !important; }
}


/* =====================================================
   ÍCONES ANIMADOS (parecer do Codex, 07/09/2026): SVGs próprios, sem biblioteca.
   Vocabulário: DRAW (traço se desenha ao entrar em tela, uma vez) · NUDGE (gesto curto no hover/foco) ·
   PULSE (detalhe pulsa) · DIRECTION (setas/chevrons: já existiam em .btn__icon, .fab__arrow e .fab__chevron).
   .im = ícone com movimento · .im-s = traço desenhável · --i = ordem do traço (stagger 45ms)
   ===================================================== */
.im {
  overflow: visible;
}

.im .im-s,
.im .im-pulse,
.im .im-up,
.im .im-tilt,
.im .im-squeeze,
.im .im-float,
.im .im-in-l,
.im .im-in-r,
.im .im-page-l,
.im .im-page-r {
  transform-box: fill-box;
  transform-origin: center;
}

.im .im-c {
  transform-box: view-box;          /* gira em torno do centro do ícone, não da própria caixa */
  transform-origin: 12px 12px;
}

/* ---- DRAW: só com JS pronto (.motion-ready); sem JS, nenhum ícone nasce invisível ----
   O estado "desenhado" é o valor natural (dashoffset 0), e a animação só parte de 1: assim um hover que troque
   a animação (pulso) não faz o traço sumir. Escondido só enquanto o gatilho não chegou. */
html.motion-ready .im[data-draw] .im-s {
  stroke-dasharray: 1;
  stroke-dashoffset: 0;
}

/* escondido só até o gatilho: "view" (entrou na tela → .is-on) ou "step" (passo da jornada revelado) */
html.motion-ready .im[data-draw="view"]:not(.is-on) .im-s,
html.motion-ready .journey-step:not(.is-visible) .im[data-draw="step"] .im-s {
  stroke-dashoffset: 1;
}

html.motion-ready .im[data-draw].is-on .im-s,
html.motion-ready .journey-step.is-visible .im[data-draw] .im-s {
  animation: im-draw .58s cubic-bezier(.22, 1, .36, 1) both;
  animation-delay: calc(var(--i, 0) * 45ms + var(--d, 0ms));
}

html.motion-ready .im[data-draw].is-on .im-check,
html.motion-ready .journey-step.is-visible .im[data-draw] .im-check {
  animation-duration: .42s;
  animation-delay: calc(var(--i, 0) * 45ms + var(--d, 0ms) + 260ms);   /* o check entra depois do contorno */
}

@keyframes im-draw {
  from { stroke-dashoffset: 1; }
}

/* ---- NUDGE / PULSE no hover ou foco do card/link pai ---- */
.im .im-up,
.im .im-tilt,
.im .im-spin,
.im .im-squeeze,
.im .im-float,
.im .im-in-l,
.im .im-in-r,
.im .im-page-l,
.im .im-page-r {
  transition: transform .3s cubic-bezier(.34, 1.56, .64, 1);
}

.im .im-float {
  transition-delay: calc(var(--i, 0) * 35ms);
}

:is(.proc-card, .diff-card, .fab__chip, .fab__social a):is(:hover, :focus-visible) .im-up     { transform: translateY(-1.5px); }
:is(.proc-card, .diff-card, .fab__chip, .fab__social a):is(:hover, :focus-visible) .im-tilt   { transform: rotate(-6deg); }
:is(.proc-card, .diff-card, .fab__chip, .fab__social a):is(:hover, :focus-visible) .im-spin   { transform: rotate(14deg); }
:is(.proc-card, .diff-card, .fab__chip, .fab__social a):is(:hover, :focus-visible) .im-squeeze{ transform: scaleX(.84); }
:is(.proc-card, .diff-card, .fab__chip, .fab__social a):is(:hover, :focus-visible) .im-float  { transform: translateY(-1.2px); }
:is(.proc-card, .diff-card, .fab__chip, .fab__social a):is(:hover, :focus-visible) .im-in-l   { transform: translateX(1px); }
:is(.proc-card, .diff-card, .fab__chip, .fab__social a):is(:hover, :focus-visible) .im-in-r   { transform: translateX(-1px); }
:is(.proc-card, .diff-card, .fab__chip, .fab__social a):is(:hover, :focus-visible) .im-page-l { transform: rotate(-2.5deg) translateY(-.6px); }
:is(.proc-card, .diff-card, .fab__chip, .fab__social a):is(:hover, :focus-visible) .im-page-r { transform: rotate(2.5deg) translateY(-.6px); }
:is(.proc-card, .diff-card, .fab__chip, .fab__social a):is(:hover, :focus-visible) .im-pulse  { animation: im-pulse .56s cubic-bezier(.22, 1, .36, 1); }

@keyframes im-pulse {
  0%   { transform: scale(1); }
  35%  { transform: scale(.82); }
  70%  { transform: scale(1.14); }
  100% { transform: scale(1); }
}

/* ---- Como funciona: o detalhe faz o gesto uma vez, logo depois do traço se desenhar ---- */
html.motion-ready .journey-step.is-visible .im .im-pulse { animation: im-draw .42s cubic-bezier(.22, 1, .36, 1) both, im-pulse .56s cubic-bezier(.22, 1, .36, 1) .62s; animation-delay: calc(var(--i, 0) * 45ms + 260ms), .62s; }
html.motion-ready .journey-step.is-visible .im .im-tilt  { animation: im-draw .58s cubic-bezier(.22, 1, .36, 1) both, im-tilt-once .6s cubic-bezier(.34, 1.56, .64, 1) .6s; animation-delay: calc(var(--i, 0) * 45ms), .6s; }
html.motion-ready .journey-step.is-visible .im .im-spin  { animation: im-draw .58s cubic-bezier(.22, 1, .36, 1) both, im-spin-once .7s cubic-bezier(.34, 1.56, .64, 1) .55s; animation-delay: calc(var(--i, 0) * 45ms), .55s; }
html.motion-ready .journey-step.is-visible .im .im-up    { animation: im-draw .58s cubic-bezier(.22, 1, .36, 1) both, im-up-once .5s cubic-bezier(.34, 1.56, .64, 1) .6s; animation-delay: calc(var(--i, 0) * 45ms), .6s; }

@keyframes im-tilt-once { 0% { transform: rotate(0); } 40% { transform: rotate(-6deg); } 75% { transform: rotate(3deg); } 100% { transform: rotate(0); } }
@keyframes im-spin-once { 0% { transform: rotate(0); } 55% { transform: rotate(14deg); } 100% { transform: rotate(0); } }
@keyframes im-up-once   { 0% { transform: translateY(0); } 50% { transform: translateY(-1.5px); } 100% { transform: translateY(0); } }

/* ---- Faixa: traço se desenha na primeira aparição; depois só um detalhe pulsa por vez, num ciclo de 7,2s ---- */
.marquee__item:nth-child(1) { --ph: 0; }
.marquee__item:nth-child(2) { --ph: 1; }
.marquee__item:nth-child(3) { --ph: 2; }
.marquee__item:nth-child(4) { --ph: 3; }
.marquee__item:nth-child(5) { --ph: 4; }
.marquee__item:nth-child(6) { --ph: 5; }

html.motion-ready .marquee .im[data-draw].is-on .im-s {
  animation-delay: calc(var(--i, 0) * 45ms + var(--ph, 0) * 90ms);
}

html.motion-ready .marquee .im[data-draw].is-on .im-pulse {
  animation: im-draw .58s cubic-bezier(.22, 1, .36, 1) both, im-pulse-loop 7.2s cubic-bezier(.22, 1, .36, 1) infinite;
  animation-delay: calc(var(--i, 0) * 45ms + var(--ph, 0) * 90ms), calc(1.2s + var(--ph, 0) * 1.2s);
}

@keyframes im-pulse-loop {
  0%, 12%  { transform: scale(1); }
  4%       { transform: scale(.82); }
  8%       { transform: scale(1.14); }
  100%     { transform: scale(1); }
}

@media (prefers-reduced-motion: reduce) {
  .im .im-s,
  .im .im-pulse,
  .im .im-up,
  .im .im-tilt,
  .im .im-spin,
  .im .im-squeeze,
  .im .im-float,
  .im .im-in-l,
  .im .im-in-r,
  .im .im-page-l,
  .im .im-page-r {
    animation: none !important;
    transition: none !important;
    transform: none !important;
    stroke-dashoffset: 0 !important;
  }
}


/* =====================================================
   PERFIL DO MÉDICO (modal grande) — medidas do Codex (ref 2000px → 1440 visual, fator 0,72)
   O <dialog> neutraliza o zoom global (zoom 1/.9) e trabalha em px visuais.
   Texto 48% / retrato 52%; coluna-guia 112px + gap 36px + coluna principal flexível.
   ===================================================== */
.team-card__hit { z-index: 1; }

.team-more {
  position: absolute;
  top: 18px;
  right: 18px;
  z-index: 3;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: 0;
  padding: 0;
  display: grid;
  place-items: center;
  background: var(--branco);
  color: var(--verde);
  cursor: pointer;
  transition: transform .24s cubic-bezier(.22, 1, .36, 1);
}

.team-more:hover,
.team-more:focus-visible { outline: none; }
.team-more:focus-visible { outline: 2px solid var(--branco); outline-offset: 3px; }

.team-more__icon {
  width: 20px;
  height: 20px;
  transition: transform .22s cubic-bezier(.22, 1, .36, 1);
}

.team-more:hover .team-more__icon,
.team-more:focus-visible .team-more__icon { transform: translateX(2px); }

/* ---- dialog ---- */
.profile-modal {
  zoom: 1.1111;                     /* anula o zoom .9 da página: daqui para baixo, px = px na tela */
  position: fixed;
  inset: 0;
  margin: auto;
  width: min(1800px, calc(100vw - 32px));
  height: min(960px, calc(100dvh - 32px));
  max-width: none;
  max-height: none;
  padding: 0;
  border: 0;
  border-radius: 24px;
  overflow: hidden;
  background: var(--branco);
  color: #26332e;
}

.profile-modal::backdrop {
  background: rgba(18, 31, 24, .42);
}

.profile-modal[open] { animation: pm-in .36s cubic-bezier(.22, 1, .36, 1) both; }
.profile-modal[open]::backdrop { animation: pm-bd-in .18s ease-out both; }
.profile-modal.is-closing { animation: pm-out .2s cubic-bezier(.4, 0, 1, 1) both; }
.profile-modal.is-closing::backdrop { animation: pm-bd-out .2s ease-in both; }

@keyframes pm-in    { from { opacity: 0; transform: translateY(14px) scale(.985); } to { opacity: 1; transform: none; } }
@keyframes pm-out   { from { opacity: 1; transform: none; } to { opacity: 0; transform: translateY(8px) scale(.992); } }
@keyframes pm-bd-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes pm-bd-out{ from { opacity: 1; } to { opacity: 0; } }

.profile-modal__panel {
  position: relative;
  display: grid;
  grid-template-columns: 48fr 52fr;
  width: 100%;
  height: 100%;
}

@media (max-width: 1599px) {
  .profile-modal__panel { grid-template-columns: 52fr 48fr; }
}

.profile-modal__text {
  overflow-y: auto;
  padding: 56px clamp(56px, 6vw, 96px) 56px;
}

.profile-modal[open] .profile-modal__text { animation: pm-text .32s cubic-bezier(.22, 1, .36, 1) .09s both; }
@keyframes pm-text { from { opacity: 0; transform: translateX(-14px); } to { opacity: 1; transform: none; } }

.profile-modal__photo {
  background: var(--verde);         /* retrato entra depois (object-fit: cover, object-position por médico) */
}

.profile-modal[open] .profile-modal__photo { animation: pm-photo .44s cubic-bezier(.22, 1, .36, 1) .05s both; }
@keyframes pm-photo { from { clip-path: inset(0 0 0 100%); } to { clip-path: inset(0); } }

.profile-modal__close {
  position: absolute;
  top: 20px;
  right: 20px;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: 0;
  padding: 0;
  display: grid;
  place-items: center;
  background: var(--branco);
  color: var(--verde);
  cursor: pointer;
  transition: transform .24s cubic-bezier(.22, 1, .36, 1);
}

.profile-modal__close svg { width: 20px; height: 20px; }
.profile-modal__close:focus-visible { outline: 2px solid var(--branco); outline-offset: 3px; }

/* ---- grade interna: guia (112px) + principal ---- */
.profile-grid {
  display: grid;
  grid-template-columns: 120px minmax(0, 1fr);
  column-gap: 36px;
  max-width: 660px;
  min-height: 100%;
  align-content: start;
}

.profile-eyebrow {
  margin: 8px 0 0;
  font-family: var(--font-mono);
  font-size: 10.5px;
  line-height: 1.7;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: #8d9591;
}

.profile-head {
  grid-column: 1 / -1;              /* nome em uma linha só: usa a largura das duas colunas */
  margin-top: 26px;
}

.profile-name {
  margin: 0;
  font-family: var(--font-sans);
  font-size: var(--name-size, 46px); /* o script reduz até caber em uma linha (mín. 34px) */
  line-height: 1;
  font-weight: 500;
  letter-spacing: -.045em;
  color: var(--verde);
  white-space: nowrap;
}

.profile-meta {
  margin: 20px 0 0;
  font-family: var(--font-mono);
  font-size: 12px;
  line-height: 1.5;
  letter-spacing: .06em;
  color: #68736e;
}

.profile-side { margin-top: 52px; }

.profile-side__big {
  margin: 0;
  font-family: var(--font-sans);
  font-size: 32px;
  line-height: 1;
  font-weight: 500;
  letter-spacing: -.02em;
  color: var(--verde);
}

.profile-side__big--sm {
  font-size: 20px;
  line-height: 1.15;
}

.profile-side__label {
  position: relative;
  margin: 18px 0 0;
  padding-top: 17px;                /* espaço para a linha fina */
  font-family: var(--font-body);
  font-size: 14px;
  line-height: 1.4;
  color: #737c78;
}

.profile-side__label::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 64px;
  height: 1px;
  background: #d7dcda;
}

.profile-body {
  margin-top: 52px;
  max-width: 500px;
}

.profile-p {
  margin: 0;
  font-family: var(--font-body);
  font-size: 17px;
  line-height: 1.55;
  text-wrap: pretty;
}

.profile-p + .profile-p { margin-top: 22px; }
.profile-p--lead   { color: #26332e; font-size: 19px; line-height: 1.5; font-weight: 500; }   /* abertura: um degrau acima */
.profile-p--soft   { color: #68736e; font-size: 16.5px; }
.profile-p--strong { color: var(--verde); font-weight: 600; }

/* ---- acordeão "Formação e títulos" ---- */
.profile-acc {
  border-top: 1px solid #d9dedb;
  border-bottom: 1px solid #d9dedb;
}

.profile-acc__btn {
  width: 100%;
  min-height: 64px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 0;
  border: 0;
  background: transparent;
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--verde);
  cursor: pointer;
  text-align: left;
}

.profile-acc__btn:focus-visible { outline: 2px solid var(--verde); outline-offset: 2px; }

.profile-acc__plus {
  width: 20px;
  height: 20px;
  flex: 0 0 auto;
  transition: transform .22s cubic-bezier(.22, 1, .36, 1);
}

.profile-acc__btn[aria-expanded="true"] .profile-acc__plus { transform: rotate(45deg); }

.profile-acc__body {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows .3s cubic-bezier(.22, 1, .36, 1);
}

.profile-acc__body > * { overflow: hidden; min-height: 0; }
.profile-acc.is-open .profile-acc__body { grid-template-rows: 1fr; }

.profile-acc__list {
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: titulo;
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.5;
  color: #26332e;
}

/* cada título numerado (01, 02…) em mono cinza, com linha fina embaixo; a última linha é a borda do acordeão */
.profile-acc__list li {
  counter-increment: titulo;
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr);
  grid-template-areas: "n t" ". d";
  align-items: baseline;
  padding: 18px 0 19px;
  border-bottom: 1px solid #d9dedb;
}

.profile-acc__list li:last-child { border-bottom: 0; }

.profile-acc__list li::before {
  grid-area: n;
  content: counter(titulo, decimal-leading-zero);
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .08em;
  color: #a5aca8;
}

/* dois níveis por item: o título em destaque e o detalhe (onde/quando) menor e em cinza */
.profile-acc__t {
  grid-area: t;
  font-size: 16px;
  font-weight: 500;
  color: #26332e;
  text-wrap: pretty;
}

.profile-acc__d {
  grid-area: d;
  margin-top: 3px;
  font-size: 14px;
  line-height: 1.45;
  color: #737c78;
  text-wrap: pretty;
}

/* ---- CTA + Instagram (base) ---- */
.profile-insta {
  margin-top: 56px;
  align-self: end;
  width: 44px;
  height: 44px;
  margin-left: -10px;
  display: grid;
  place-items: center;
  color: var(--verde);
}

.profile-insta svg { width: 24px; height: 24px; }

.profile-grid > .profile-body:last-child { margin-top: 56px; }




/* fundo travado enquanto o modal está aberto */
body.modal-open { overflow: hidden; padding-right: var(--sbw, 0px); }

@media (prefers-reduced-motion: reduce) {
  .profile-modal[open], .profile-modal[open]::backdrop, .profile-modal.is-closing, .profile-modal.is-closing::backdrop { animation-duration: .1s; }
  .profile-modal[open] .profile-modal__text, .profile-modal[open] .profile-modal__photo { animation: none; }
  .profile-acc__body { transition: none; }
}


/* =====================================================
   AVALIAÇÕES (seção 08) — cabeçalho central com microcards que saem do centro no scroll + carrossel (Google)
   Medidas do Codex: cena 1200×820; 6 microcards 250–280px (radius 20, padding 20); carrossel 3×384px, gap 24,
   card min-height 300, radius 24; estrelas #FBBC04 e "G" oficial só nesta seção.
   ===================================================== */
.reviews {
  max-width: 1280px;
  margin: 0 auto;
  padding: 40px 40px 96px;
}

.reviews__scene {
  position: relative;
  height: 820px;
}

.reviews__head {
  position: absolute;
  left: 50%;
  top: 300px;
  transform: translateX(-50%);
  width: min(650px, 80%);
  text-align: center;
  z-index: 2;
}

.reviews__title {
  margin: 36px 0 0;
  font-size: 52px;
  line-height: 1.1;
  font-weight: 500;
  letter-spacing: -0.03em;
  color: var(--verde);
  text-wrap: normal;
}



/* ---- microcards espalhados (decorativos; o conteúdo completo está no carrossel) ---- */
.reviews__micros {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.micro {
  position: absolute;
  padding: 20px;
  border-radius: 20px;
  background: var(--branco);
  border: 1px solid #dce3df;
  color: var(--verde);
  transform-origin: center;
  will-change: transform, opacity;
}

.micro--dark {
  background: var(--verde);
  border-color: var(--verde);
  color: var(--branco);
}

.micro .stars { display: inline-flex; gap: 2px; }
.micro .stars svg { width: 12px; height: 12px; }

.micro__text {
  margin: 12px 0 0;
  font-family: var(--font-body);
  font-size: 14.5px;
  line-height: 1.4;
  color: inherit;
  text-wrap: pretty;
}

.micro__who {
  margin: 12px 0 0;
  font-family: var(--font-sans);
  font-size: 12.5px;
  font-weight: 600;
  color: inherit;
}

/* ---- barra: fonte (G oficial) à esquerda, setas à direita ---- */
.reviews__bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 56px;
}

.reviews__source {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  font-family: var(--font-sans);
  font-size: 15px;
  font-weight: 600;
  color: var(--verde);
}

.google-g { width: 20px; height: 20px; flex: 0 0 auto; }

.reviews__nav { display: flex; gap: 10px; }

.reviews__arrow {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: 1px solid var(--verde);
  background: var(--branco);
  color: var(--verde);
  display: grid;
  place-items: center;
  cursor: pointer;
  padding: 0;
  transition: background-color .2s ease, color .2s ease;
}

.reviews__arrow svg { width: 20px; height: 20px; }
.reviews__arrow:hover { background: var(--verde); color: var(--branco); }
.reviews__arrow:focus-visible { outline: 2px solid var(--verde); outline-offset: 3px; }
.reviews__arrow[disabled] { opacity: .35; cursor: default; }
.reviews__arrow[disabled]:hover { background: var(--branco); color: var(--verde); }

/* ---- carrossel: 3 cards, arraste + setas + snap ---- */
.reviews__track {
  list-style: none;
  margin: 28px 0 0;
  padding: 0;
  display: flex;
  gap: 24px;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  cursor: grab;
  user-select: none;
  scrollbar-width: none;
}

.reviews__track::-webkit-scrollbar { display: none; }
.reviews__track.is-dragging { cursor: grabbing; scroll-behavior: auto; scroll-snap-type: none; }

.review {
  flex: 0 0 calc((100% - 48px) / 3);
  min-height: 300px;
  display: flex;
  flex-direction: column;
  padding: 30px;
  border-radius: 24px;
  background: var(--branco);
  border: 1px solid #dce3df;
  scroll-snap-align: start;
}

.review__top { display: flex; align-items: center; gap: 10px; }
.review .stars { display: inline-flex; gap: 3px; color: #FBBC04; }
.review .stars svg { width: 18px; height: 18px; }

.review__score {
  font-family: var(--font-sans);
  font-size: 14px;
  font-weight: 600;
  color: var(--verde);
}

.review__quote {
  margin: 26px 0 0;
  font-family: var(--font-body);
  font-size: 18px;
  line-height: 1.45;
  color: #26332e;
  text-wrap: pretty;
}

.review__quote::before { content: "\201C"; }
.review__quote::after  { content: "\201D"; }

.review__author {
  margin-top: auto;
  padding-top: 28px;
  display: flex;
  align-items: center;
  gap: 14px;
}

.review__avatar {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--verde);
  color: var(--branco);
  display: grid;
  place-items: center;
  font-family: var(--font-sans);
  font-size: 15px;
  font-weight: 600;
  flex: 0 0 auto;
}

.review__name {
  margin: 0;
  font-family: var(--font-sans);
  font-size: 15px;
  font-weight: 600;
  color: var(--verde);
}

.review__source {
  margin: 2px 0 0;
  font-family: var(--font-body);
  font-size: 13px;
  color: #68736e;
}

@media (prefers-reduced-motion: reduce) {
  .micro { transform: none !important; opacity: 1 !important; }
  .reviews__track { scroll-behavior: auto; }
}


/* =====================================================
   LOCALIZAÇÃO (seção 09) — "Lages em linhas": painel verde com as ruas reais do centro em branco (SVG inline),
   pontos de referência, pin pulsante e card flutuante. Spec do Codex: mapa 1200 × clamp(620px,52vw,760px),
   raio 28, card 388px topo/direita 48px, pin 48px com anel até 68px, rótulos DM Mono 10–11px.
   ===================================================== */
.location {
  max-width: 1280px;
  margin: 0 auto;
  padding: 112px 40px 40px;
}

.location__head {
  display: grid;
  grid-template-columns: 48% 44%;
  justify-content: space-between;
  align-items: end;
}

.location__title {
  margin: 36px 0 0;
  font-size: 52px;
  line-height: 1.1;
  font-weight: 500;
  letter-spacing: -0.03em;
  color: var(--verde);
  max-width: 580px;
  text-wrap: normal;
}

.location__desc {
  margin: 0 0 10px;
  font-family: var(--font-body);
  font-size: 18px;
  line-height: 27px;
  color: #58615d;
  max-width: 440px;
  text-wrap: pretty;
}

/* mapa do Google de ponta a ponta na horizontal (sai do container), card por cima alinhado ao conteúdo */
.map {
  position: relative;
  /* full-bleed dentro de um container centralizado. Com o zoom global .9, 100vw vale 90% da janela: por isso o /.9 */
  margin: 52px calc(50% - 50vw / .9) 0;
  width: calc(100vw / .9);
  height: clamp(560px, 46vw, 680px);
  background: var(--cinza-50);
}

.map__frame {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}

/* escudo: enquanto ativo, a rolagem da página passa por cima do mapa; um clique libera o mapa */
.map__shield {
  position: absolute;
  inset: 0;
  border: 0;
  padding: 0;
  background: transparent;
  cursor: pointer;
}

.map__shield span {
  position: absolute;
  left: 50%;
  bottom: 16px;
  transform: translateX(-50%);
  padding: 10px 16px;
  border-radius: 999px;
  background: var(--verde);
  color: var(--branco);
  font-family: var(--font-sans);
  font-size: 13px;
  font-weight: 600;
  white-space: nowrap;
  display: none;                    /* só aparece no toque */
}

.map__lock {
  position: absolute;
  right: 12px;
  top: 12px;
  z-index: 3;
  padding: 10px 14px;
  border: 0;
  border-radius: 999px;
  background: var(--verde);
  color: var(--branco);
  font-family: var(--font-sans);
  font-size: 13px;
  font-weight: 600;
  display: none;
}

@media (pointer: coarse) {
  .map__shield span { display: block; }
  .map.is-live .map__lock { display: block; }
}

.map.is-live .map__shield { display: none; }

.map__card {
  position: absolute;
  left: max(40px, calc(50vw / .9 - 600px));   /* alinhado à borda esquerda do conteúdo (1200px), corrigindo o zoom .9 */
  bottom: 48px;
  width: 388px;
  padding: 30px 32px 32px;
  border-radius: 24px;
  background: var(--branco);
  color: var(--verde);
}

.map__card-eyebrow {
  margin: 0;
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .14em;
  text-transform: uppercase;
}

.map__card-name {
  margin: 14px 0 0;
  font-family: var(--font-sans);
  font-size: 30px;
  line-height: 1.05;
  font-weight: 600;
  letter-spacing: -.02em;
}

.map__card-addr {
  margin: 14px 0 0;
  font-family: var(--font-body);
  font-size: 17px;
  line-height: 1.45;
}

.map__card-rule {
  border: 0;
  height: 1px;
  margin: 20px 0;
  background: rgba(31, 69, 46, .16);
}

.map__card-hours {
  margin: 0;
  font-family: var(--font-body);
  font-size: 15px;
  line-height: 1.4;
  color: #58615d;
}

.map__card-actions {
  display: flex;
  gap: 10px;
  margin-top: 22px;
}



/* =====================================================
   CONVÊNIOS (seção 10) — "Dois caminhos": cabeçalho à esquerda (36%), duas faixas numeradas à direita (60%).
   Faixa 148–164px, raio 22, padding 28px 32px, grid interno 64px 180px 1fr (Codex). Hover: barra vertical cresce.
   ===================================================== */
.plans {
  max-width: 1280px;
  margin: 0 auto;
  padding: 96px 40px;
  display: grid;
  grid-template-columns: 42% 54%;   /* coluna do título cabe "A mesma orientação." em uma linha a 52px */
  justify-content: space-between;
  align-items: start;
}

.plans__title {
  margin: 36px 0 0;
  font-size: 52px;
  line-height: 1.1;
  font-weight: 500;
  letter-spacing: -0.03em;
  color: var(--verde);
  text-wrap: normal;
}

.plans__desc {
  margin: 28px 0 0;
  font-family: var(--font-body);
  font-size: 18px;
  line-height: 27px;
  color: #58615d;
  max-width: 400px;
  text-wrap: pretty;
}



.plans__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 12px;
}

.plan {
  position: relative;
  display: grid;
  grid-template-columns: 64px 180px minmax(0, 1fr);
  column-gap: 24px;
  align-items: start;
  min-height: 156px;
  padding: 28px 32px;
  border-radius: 22px;
  background: var(--branco);
  border: 1px solid rgba(31, 69, 46, .2);
  color: var(--verde);
  overflow: hidden;
}

.plan--dark {
  background: var(--verde);
  border-color: var(--verde);
  color: var(--branco);
}

/* barra vertical que percorre a faixa no hover/foco */
.plan::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 4px;
  height: 100%;
  background: currentColor;
  transform: scaleY(0);
  transform-origin: top;
  transition: transform .45s cubic-bezier(.22, 1, .36, 1);
}

.plan:hover::before,
.plan:focus-within::before { transform: scaleY(1); }

.plan__num {
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: .12em;
  padding-top: 6px;
  transition: transform .3s cubic-bezier(.34, 1.56, .64, 1);
}

.plan:hover .plan__num { transform: rotate(-6deg); }

.plan__logo {
  display: block;
  width: 116px;
  padding: 8px 10px;
  margin-bottom: 14px;
  border-radius: 10px;
  background: var(--branco);
}

.plan__logo img { display: block; width: 100%; height: auto; }

.plan__title {
  margin: 0;
  font-family: var(--font-sans);
  font-size: 26px;
  line-height: 1.1;
  font-weight: 600;
  letter-spacing: -.02em;
  text-wrap: balance;
}

.plan__text {
  margin: 0;
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 25px;
  text-wrap: pretty;
}

.plan--dark .plan__text { color: rgba(255, 255, 255, .85); }
.plan:not(.plan--dark) .plan__text { color: #58615d; }



/* ---- Procedimentos: setas do trilho (só no celular; no desktop o arraste e o scroll bastam) ---- */
.procedures__nav { display: none; }

.procedures__arrow {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: 1px solid var(--verde);
  background: var(--branco);
  color: var(--verde);
  display: grid;
  place-items: center;
  cursor: pointer;
  padding: 0;
  transition: background-color .2s ease, color .2s ease;
}

.procedures__arrow svg { width: 20px; height: 20px; }
.procedures__arrow:hover { background: var(--verde); color: var(--branco); }
.procedures__arrow[disabled] { opacity: .35; cursor: default; }
.procedures__arrow:focus-visible { outline: 2px solid var(--verde); outline-offset: 3px; }

/* ---- Procedimentos: faixa compacta "Outras avaliações cirúrgicas" (auditoria do Codex, 08/09/2026) ---- */
.procedures__more {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr) auto;
  column-gap: 40px;
  align-items: center;
  margin-top: 44px;
  padding-top: 28px;
  border-top: 1px solid #dce3df;
}

.procedures__more-label {
  margin: 0;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--verde);
}

.procedures__more-text {
  margin: 0;
  font-family: var(--font-body);
  font-size: 15.5px;
  line-height: 1.45;
  color: #58615d;
  max-width: 560px;
  text-wrap: pretty;
}

.procedures__more-tags { margin-top: 0; }
.procedures__more-tags li { background: var(--branco); border: 1px solid #dce3df; }

@media (prefers-reduced-motion: reduce) {
  .plan::before, .plan__num { transition: none; }
}


/* =====================================================
   FAQ (seção 11) — "biblioteca pesquisável": busca 1200×88, categorias 360px | gap 56 | acordeão 784px (Codex).
   Numeração DM Mono e linhas #d9dedb como no modal de perfil.
   ===================================================== */
/* faixa verde (pedido do Alan, 08/09/2026), como Equipe e Diferenciais; conteúdo em 1200px */
.faq {
  margin: 0 16px;
  padding: 112px 40px 120px;
  background: var(--verde);
  border-radius: var(--radius-hero);
  color: var(--branco);
}

.faq__head,
.faq-search,
.faq__grid {
  max-width: 1200px;
  margin-inline: auto;
}

.faq .sec-eyebrow { color: rgba(255, 255, 255, .8); }
.faq .sec-eyebrow__dot { background: var(--branco); }

.faq__head {
  max-width: 700px;
  margin: 0 auto;
  text-align: center;
}

.faq__title {
  margin: 36px auto 0;
  font-size: 52px;
  line-height: 1.1;
  font-weight: 500;
  letter-spacing: -0.03em;
  color: var(--branco);
  text-wrap: normal;
}

.faq__desc {
  margin: 38px auto 0;
  max-width: 560px;
  font-family: var(--font-body);
  font-size: 18px;
  line-height: 27px;
  color: rgba(255, 255, 255, .78);
  text-wrap: balance;
}

/* ---- busca ---- */
.faq-search {
  position: relative;
  display: flex;
  align-items: center;
  margin-top: 48px;
  height: 88px;
  padding: 0 28px 0 30px;
  border-radius: 18px;
  border: 1px solid var(--branco);
  background: var(--branco);
}

.faq-search:focus-within { border-color: #16352a; }

.faq-search__label {
  display: flex;
  align-items: center;
  gap: 18px;
  flex: 1 1 auto;
  min-width: 0;
  color: var(--verde);
}

.faq-search__icon { width: 24px; height: 24px; flex: 0 0 auto; }

.faq-search__input {
  flex: 1 1 auto;
  min-width: 0;
  border: 0;
  outline: none;
  background: transparent;
  font-family: var(--font-body);
  font-size: 17px;
  color: var(--verde);
}

.faq-search__input::placeholder { color: #6e7773; }
.faq-search__input::-webkit-search-cancel-button { -webkit-appearance: none; }

.faq-search__clear {
  width: 36px;
  height: 36px;
  border: 0;
  padding: 0;
  margin-right: 12px;
  border-radius: 50%;
  background: var(--cinza-50);
  color: var(--verde);
  display: grid;
  place-items: center;
  cursor: pointer;
}

.faq-search__clear[hidden] { display: none; }
.faq-search__clear svg { width: 16px; height: 16px; }

.faq-search__count {
  flex: 0 0 auto;
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: #77817c;
}

/* ---- colunas ---- */
.faq__grid {
  display: grid;
  grid-template-columns: 360px minmax(0, 784px);
  justify-content: space-between;
  column-gap: 56px;
  margin-top: 68px;
  align-items: start;
}

.faq__cats {
  position: sticky;
  top: clamp(24px, 8vh, 96px);
}

.faq__cat-list {
  list-style: none;
  margin: 0;
  padding: 10px;
  display: grid;
  gap: 4px;
  border-radius: 20px;
  background: var(--branco);        /* painel branco sobre a faixa verde (pedido do Alan); a categoria ativa fica verde */
}

.faq-cat {
  width: 100%;
  min-height: 56px;
  padding: 0 18px;
  border: 0;
  border-radius: 14px;
  background: transparent;
  color: var(--verde);
  font-family: var(--font-body);
  font-size: 16px;
  font-weight: 500;
  text-align: left;
  cursor: pointer;
  transition: background-color .2s ease;
}

.faq-cat:hover { background: var(--cinza-50); }
.faq-cat[aria-pressed="true"] { background: var(--verde); color: var(--branco); }
.faq-cat:focus-visible { outline: 2px solid var(--verde); outline-offset: 2px; }

/* ---- acordeão ---- */
.faq__list {
  list-style: none;
  margin: 0;
  padding: 0;
  border-top: 1px solid rgba(255, 255, 255, .22);
}

.faq-item {
  position: relative;
  border-bottom: 1px solid rgba(255, 255, 255, .22);
}

.faq-item[hidden] { display: none; }

/* barra vertical à esquerda do número: cresce no hover/foco e fica completa no item aberto */
.faq-item::before {
  content: "";
  position: absolute;
  left: -14px;
  top: 26px;
  bottom: 25px;
  width: 2px;
  background: var(--branco);
  transform: scaleY(0);
  transform-origin: center;
  transition: transform .24s cubic-bezier(.22, 1, .36, 1);
}

.faq-item:hover::before,
.faq-item:focus-within::before,
.faq-item.is-open::before { transform: scaleY(1); }

.faq-item__q { margin: 0; }

.faq-item__btn {
  width: 100%;
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr) 36px;
  column-gap: 18px;
  align-items: center;
  min-height: 92px;
  padding: 26px 2px 25px;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  color: var(--branco);
}

.faq-item__btn:focus-visible { outline: 2px solid var(--branco); outline-offset: 4px; border-radius: 6px; }

.faq-item__num {
  font-family: var(--font-mono);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .14em;
  color: rgba(255, 255, 255, .6);
  transition: color .2s ease;
}

.faq-item.is-open .faq-item__num { color: var(--branco); }

.faq-item__text {
  font-family: var(--font-sans);
  font-size: 21px;
  line-height: 1.2;
  font-weight: 600;
  letter-spacing: -0.01em;
  text-wrap: pretty;
}

.faq-item__toggle {
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
}

.faq-item__plus {
  width: 20px;
  height: 20px;
  transition: transform .3s cubic-bezier(.22, 1, .36, 1);
}

.faq-item.is-open .faq-item__plus { transform: rotate(45deg); }

.faq-item__body {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows .42s cubic-bezier(.22, 1, .36, 1);
}

.faq-item__body > * { overflow: hidden; min-height: 0; }
.faq-item.is-open .faq-item__body { grid-template-rows: 1fr; }

.faq-item__a {
  margin: 0 0 0 64px;                 /* alinhada ao início da pergunta (46px + 18px) */
  max-width: 620px;
  padding: 0 0 4px;
  font-family: var(--font-body);
  font-size: 17px;
  line-height: 1.52;
  color: rgba(255, 255, 255, .8);
  text-wrap: pretty;
  opacity: 0;
  transform: translateY(-5px);
  transition: opacity .22s ease, transform .22s ease;
}

.faq-item.is-open .faq-item__a {
  padding-bottom: 30px;
  opacity: 1;
  transform: none;
  transition-delay: .07s;
}

.faq__hint { display: none; }        /* só no celular, enquanto a lista está escondida */

/* ---- estado vazio e ajuda ---- */
.faq-empty {
  padding: 40px 0 8px;
  text-align: left;
}

.faq-empty[hidden] { display: none; }

.faq-empty__title {
  margin: 0;
  font-family: var(--font-sans);
  font-size: 21px;
  font-weight: 600;
  color: var(--branco);
}

.faq-empty__text {
  margin: 8px 0 0;
  font-family: var(--font-body);
  font-size: 16px;
  color: rgba(255, 255, 255, .78);
}

.faq-help {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-top: 28px;
  min-height: 112px;
  padding: 24px 28px;
  border-radius: 20px;
  border: 1px solid var(--branco);
  background: var(--branco);
}

.faq-help__title {
  margin: 0;
  font-family: var(--font-sans);
  font-size: 20px;
  font-weight: 600;
  color: var(--verde);
}

.faq-help__text {
  margin: 6px 0 0;
  font-family: var(--font-body);
  font-size: 15px;
  color: #58615d;
}



@media (prefers-reduced-motion: reduce) {
  .faq-item::before, .faq-item__plus, .faq-item__body, .faq-item__a { transition: none; }
}


/* =====================================================
   RODAPÉ — igual ao rodapé MEDstage (medidas do Codex, ref 1440): links 14px gap 32, ícones 20px, bloco regulatório
   13px/1.65 a 72% de branco, assinatura em DM Mono, letreiro gigante em #2c503b rolando a ~52px/s.
   ===================================================== */
.footer {
  position: relative;
  margin-top: 24px;
  background: var(--branco);        /* rodapé branco (pedido do Alan, 08/09/2026) */
  color: var(--verde);
  overflow: hidden;
}

.footer__inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 64px 40px 0;
}

.footer__nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
}

.footer__links {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 32px;
}

.footer__link {
  font-family: var(--font-sans);
  font-size: 14px;
  font-weight: 500;
  color: rgba(31, 69, 46, .85);
  text-decoration: none;
  transition: color .18s ease, transform .18s ease;
  display: inline-block;
}

.footer__link:hover,
.footer__link:focus-visible { color: var(--verde); transform: translateY(-2px); outline: none; }

.footer__social {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  gap: 4px;
}

.footer__social a {
  width: 44px;
  height: 44px;
  display: grid;
  place-items: center;
  color: rgba(31, 69, 46, .85);
  transition: color .18s ease;
}

.footer__social a:hover,
.footer__social a:focus-visible { color: var(--verde); outline: none; }
.footer__social svg { width: 20px; height: 20px; }

.footer__legal {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 40px;
  margin-top: 76px;
}

.footer__reg {
  margin: 0;
  max-width: 780px;
  font-family: var(--font-sans);
  font-size: 13px;
  line-height: 1.65;
  color: #58615d;
}

.footer__dev {
  margin: 4px 0 0;
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .12em;
  text-transform: uppercase;
  white-space: nowrap;
}

.footer__dev a { color: #77817c; text-decoration: none; }
.footer__dev a:hover { color: var(--verde); }

/* letreiro gigante cortado na base, rolando da direita para a esquerda */
.footer__marquee {
  --footer-duration: 28s;
  height: 165px;
  margin-top: 20px;
  overflow: hidden;
}

.footer__marquee-track {
  display: flex;
  width: max-content;
  animation: marquee-scroll var(--footer-duration) linear infinite;
  will-change: transform;
}

.footer__giant {
  display: block;
  white-space: nowrap;
  font-family: var(--font-sans);
  font-size: clamp(150px, 14vw, 220px);
  line-height: .78;
  font-weight: 500;
  letter-spacing: -.06em;
  color: #eef1ef;                   /* letreiro quase invisível sobre o branco, em cor sólida */
  padding-top: 24px;
}

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


/* =====================================================
   BOTÃO FLUTUANTE DO WHATSAPP — como na referência do Alan (08/09/2026): círculo branco, logo do WhatsApp no verde
   da marca (#25D366, exceção como o G do Google) e bolinha vermelha lisa no canto. Sem anel, sem troca de tema.
   ===================================================== */
.wa-float {
  position: fixed;
  right: max(20px, env(safe-area-inset-right));
  bottom: max(20px, env(safe-area-inset-bottom));
  z-index: 79;                      /* logo abaixo do menu suspenso (80) */
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: #25d366;              /* verde do WhatsApp, ícone branco (Alan, 08/09/2026) */
  color: #ffffff;
  display: grid;
  place-items: center;
  transition: transform .24s cubic-bezier(.22, 1, .36, 1);
}

.wa-float:hover { transform: translateY(-2px) scale(1.04); }
.wa-float:focus-visible { outline: 2px solid var(--verde); outline-offset: 3px; }
.wa-float svg { width: 34px; height: 34px; }

/* Chegada de mensagem (spec do Codex, 08/09/2026): 3,2s depois do preloader, a bolha "+1" salta do botão,
   fica 1,4s e recolhe; então o badge vermelho "1" aparece e fica pulsando (decisão do Alan: pulso contínuo).
   Uma vez por sessão (sessionStorage); ao clicar no botão o aviso some. */
.wa-float__notice {
  position: absolute;
  top: -12px;
  right: 42px;
  width: 42px;
  height: 28px;
  border-radius: 999px;
  background: #e5322d;
  color: #ffffff;
  display: grid;
  place-items: center;
  font-family: var(--font-sans);
  font-size: 13px;
  font-weight: 600;
  line-height: 1;
  opacity: 0;
  pointer-events: none;
  transform: translate(10px, 12px) scale(.45);
  transform-origin: 100% 100%;
}

.wa-float__notice::after {        /* rabinho chapado apontando para o botão */
  content: "";
  position: absolute;
  right: 7px;
  bottom: -3px;
  width: 7px;
  height: 7px;
  background: #e5322d;
  transform: rotate(45deg);
}

.wa-float.is-arriving .wa-float__notice {
  animation: wa-pop .42s cubic-bezier(.34, 1.56, .64, 1) forwards, wa-fold .32s cubic-bezier(.4, 0, 1, 1) 1.82s forwards;
}

.wa-float__badge {
  position: absolute;
  top: -1px;
  right: -1px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #e5322d;
  color: #ffffff;
  border: 2px solid #ffffff;        /* recorte branco separa o badge do verde */
  box-sizing: content-box;
  display: grid;
  place-items: center;
  font-family: var(--font-sans);
  font-size: 10px;
  font-weight: 700;
  line-height: 1;
  opacity: 0;
  transform: scale(.6);
  transition: opacity .25s ease, transform .35s cubic-bezier(.34, 1.56, .64, 1);
}

.wa-float.is-notified .wa-float__badge { opacity: 1; transform: none; }

.wa-float.is-pulsing .wa-float__badge::after {   /* anel do pulso */
  content: "";
  position: absolute;
  inset: -2px;
  border: 2px solid #e5322d;
  border-radius: 50%;
  animation: wa-ring 2.4s ease-out infinite;
}

@keyframes wa-pop  { to { opacity: 1; transform: none; } }
@keyframes wa-fold { to { opacity: 0; transform: translate(10px, 12px) scale(.38); } }
@keyframes wa-ring { 0% { opacity: .55; transform: scale(1); } 38%, 100% { opacity: 0; transform: scale(2.1); } }

@media (prefers-reduced-motion: reduce) {
  .wa-float__notice { display: none; }
  .wa-float__badge { transition: none; }
  .wa-float.is-pulsing .wa-float__badge::after { animation: none; display: none; }
}

.profile-cta { align-self: flex-start; }
/* espaçamento externo dos CTAs por seção (aparência vem de .btn) */
.numbers__btn { margin-top: 36px; }
.reviews__btn { margin-top: 40px; }
.plans__btn { margin-top: 36px; }
.faq-help__btn { margin-top: 0; flex: 0 0 auto; }

/* =====================================================
   ===== RESPONSIVO (Claude + auditoria do Codex, 08/09/2026) =====
   Breakpoints: 1180 desktop compacto · 900 tablet · 760 celular · 480 celular compacto.
   Abaixo de 900px o zoom global volta a 1 (a escala .9 é escolha de desktop) e as correções "/ .9" saem.
   ===================================================== */
@media (max-width: 1180px) {
  .procedures, .location, .plans, .faq, .team, .reviews { padding-left: 32px; padding-right: 32px; }
  .procedures__track { margin-right: -32px; padding-right: 32px; }
}

@media (max-width: 900px) {
  html { zoom: 1; scroll-padding-bottom: 100px; }
  .profile-modal { zoom: 1; }
  .map { margin: 40px calc(50% - 50vw) 0; width: 100vw; }
  .map__card { left: max(28px, calc(50vw - 600px)); }

  /* cabeçalho do topo */
  .site-header { padding: 16px 0 12px; }
  .brand__symbol { width: 42px; height: 42px; }

  /* cabeçalhos de duas colunas viram uma coluna centralizada */
  .procedures__head, .journey-header, .location__head { grid-template-columns: 1fr; row-gap: 24px; text-align: center; justify-items: center; }
  .journey-header__left { grid-template-columns: 1fr; row-gap: 12px; justify-items: center; }
  .journey-eyebrow { margin: 0; }
  .journey-header__right { justify-items: center; }
  .journey-desc, .location__desc, .plans__desc { margin-inline: auto; }
  .procedures__title, .location__title { max-width: none; }
  .procedures__more { grid-template-columns: 1fr; row-gap: 14px; text-align: center; justify-items: center; }
  .plans { grid-template-columns: 1fr; row-gap: 40px; }
  .plans__intro { text-align: center; }
  .plans__btn { margin-top: 28px; }
  .plan { grid-template-columns: 52px 150px minmax(0, 1fr); column-gap: 18px; }

  /* Quem somos: cabeçalho e símbolo centralizados */
  .about__head { text-align: center; }
  .about__title { white-space: normal; }
  .about__logo { justify-content: center; }

  /* Diferenciais: pin mais curto; grade em coluna */
  .why { margin: 0 12px; padding: 72px 28px; }
  .why__grid { grid-template-columns: minmax(240px, .8fr) 1fr; grid-template-rows: none; gap: 14px; }

  /* Como funciona: passos em coluna, linha vira espinha lateral (script.js), sem pin */
  .procedures__track { margin-right: -28px; padding-right: 28px; }
  .journey { padding: 80px 28px 88px; }
  .journey-steps { margin-top: 80px; gap: 0; }          /* o gap de 160px é do desktop; aqui o espaçamento é a margem do passo */
  .journey-step, .journey-step--flip { grid-template-columns: 1fr; column-gap: 0; row-gap: 24px; margin-bottom: 96px; }
  .journey-step--flip .journey-step__media { order: 0; }
  .journey-step__media { width: 100%; height: min(60vw, 420px); }
  .journey-step__title { font-size: 24px; }
  .journey-divider { margin: 22px 0; }
  .journey-pin { padding-bottom: 0; }

  /* Equipe: acordeão vertical (toque troca o card) */
  .team__row { flex-direction: column; height: auto; gap: 12px; margin-top: 44px; }
  .team-card { flex: none; height: 84px; transition: height .52s cubic-bezier(.22, 1, .36, 1); }
  .team-card.is-active { height: 460px; flex-grow: 0; }
  .team-card__tag { left: 22px; top: 50%; bottom: auto; transform: translateY(-50%); transform-origin: center; }
  .team-card__label { left: 14px; right: 14px; bottom: 14px; padding: 18px 16px; border-radius: 16px; }
  .team-card__name { font-size: 22px; white-space: normal; }
  .team-more { top: 14px; right: 14px; }

  /* Avaliações: cabeçalho em fluxo e microcards em grade (continuam saindo do centro do título) */
  .reviews__scene { height: auto; display: flex; flex-direction: column; }
  .reviews__head { position: static; transform: none; width: auto; max-width: 520px; margin: 0 auto; order: 0; }
  .reviews__micros { position: static; order: 1; display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; margin-top: 48px; }
  .micro { position: static !important; width: auto !important; padding: 16px; }
  .review { flex: 0 0 calc((100% - 18px) / 2); }

  /* FAQ: uma coluna; categorias em trilho */
  .faq { margin: 0 12px; padding: 80px 28px; }
  .faq__grid { grid-template-columns: 1fr; row-gap: 28px; margin-top: 40px; }
  .faq__cats { position: static; overflow-x: auto; scrollbar-width: none; }
  .faq__cats::-webkit-scrollbar { display: none; }
  .faq__cat-list { display: flex; gap: 6px; padding: 6px; width: max-content; }
  .faq-cat { min-height: 44px; padding: 0 16px; white-space: nowrap; font-size: 15px; border-radius: 999px; }

  /* Perfil: foto no topo, texto embaixo */
  .profile-modal { width: calc(100vw - 24px); height: calc(100dvh - 24px); border-radius: 20px; }
  .profile-modal__panel { grid-template-columns: 1fr; grid-template-rows: 240px minmax(0, 1fr); height: 100%; }
  .profile-modal__photo { order: -1; }
  .profile-modal__text { padding: 32px 28px 104px; }
  .profile-grid { grid-template-columns: 1fr; }
  .profile-head { margin-top: 12px; }
  .profile-name { white-space: normal; font-size: clamp(30px, 6vw, 40px); }
  .profile-side { margin-top: 32px; }
  .profile-body { margin-top: 20px; }
  .profile-modal__close { top: 12px; right: 12px; width: 44px; height: 44px; }
}

@media (max-width: 760px) {
  /* ---- menu suspenso e botão do WhatsApp ---- */
  .fab { width: calc(100vw - 24px); bottom: max(12px, env(safe-area-inset-bottom)); }
  .wa-float { right: 12px; bottom: calc(max(12px, env(safe-area-inset-bottom)) + 76px); width: 56px; height: 56px; }
  .wa-float svg { width: 30px; height: 30px; }
  .wa-float__notice { top: -10px; right: 36px; width: 40px; height: 28px; }
  /* barra como a referência MEDstage no celular: avatar + nome + ONLINE | AGENDAR | + */
  .fab__bar { height: 68px; gap: 10px; padding: 10px 10px 10px 12px; border-radius: 16px; }
  .fab__brand { gap: 10px; }
  .fab__id { display: flex; }
  .fab__name { font-size: 15px; line-height: 18px; }
  .fab__status { font-size: 8.5px; letter-spacing: .32em; }
  .fab__cta-long { display: none; }
  .fab__menu-label { display: none; }
  .fab__toggle { width: 48px; height: 48px; margin-left: 0; }
  .fab__panel { max-height: calc(100dvh - 24px); overflow-y: auto; overscroll-behavior: contain; padding-bottom: 68px; }
  .fab:not(.is-open) .fab__panel { clip-path: inset(calc(100% - 68px) 0 0 0 round 16px); }   /* fechado, o painel fica exatamente atrás da barra de 68px (antes sobrava 12px do valor de desktop) */

  /* ---- cabeçalho do topo ---- */
  .site-header { padding: 10px 0 8px; }
  .brand { margin-left: 8px; }
  .brand__symbol { width: 40px; height: 40px; }

  /* ---- hero: conteúdo à esquerda (Codex), botão largo; card de destaque escondido no celular (Alan, 08/09/2026) ---- */
  .hero { padding-inline: 6px; padding-top: 8px; }                     /* mais largo: quase de ponta a ponta */
  .hero__card { border-radius: 22px; min-height: 0; height: 720px; display: flex; flex-direction: column; justify-content: flex-end; }   /* celular (Alan, 09/09/2026): 720px de altura; conteúdo na base, arte "Hero celular" cobrindo o fundo */
  .hero__content { padding: 0 22px 44px; text-align: center; display: flex; flex-direction: column; align-items: center; }   /* centralizado no celular (Alan, 08/09/2026) */
  .hero__title { margin-inline: auto; }
  .hero__title-text { text-wrap: balance; }
  .hero__title br { display: none; }   /* a quebra em duas linhas é só do desktop; no celular o balance decide */
  .hero__desc { display: block; margin: 18px auto 0; max-width: 32ch; font-family: var(--font-body); font-size: 16px; line-height: 24px; color: rgba(255, 255, 255, .82); text-wrap: balance; }
  .hero__actions { justify-content: center; margin-top: 28px; width: 100%; }
  .hero__title { font-size: 42px; line-height: .98; letter-spacing: -0.03em; max-width: none; }   /* como antes (Alan, 09/09/2026) */
  .hero__highlight { display: none; }

  /* ---- títulos e descrições de seção ---- */
  .about__title, .procedures__title, .journey-title, .why__title, .numbers__title, .team__title,
  .reviews__title, .location__title, .plans__title, .faq__title { font-size: 40px; line-height: 1.05; }
  .about, .procedures, .team, .reviews, .location, .plans, .faq { padding-left: 20px; padding-right: 20px; }
  .journey-desc, .location__desc, .plans__desc, .team__desc, .faq__desc, .procedures__desc { font-size: 16px; line-height: 24px; }

  /* ---- Procedimentos ---- */
  .procedures { padding-top: 72px; padding-bottom: 56px; }
  .procedures__track { margin-right: -20px; padding-right: 20px; margin-top: 34px; gap: 14px; }
  .proc-card { flex: 0 0 min(84vw, 340px); border-radius: 22px; }
  .proc-card__media { height: 176px; }
  .help__popover { width: min(300px, calc(100vw - 40px)); }

  /* ---- Como funciona (ajustes finos do celular) ---- */
  .journey { padding: 72px 20px 88px; }
  .journey-step__media { height: min(86vw, 350px); }
  .journey-step__title { font-size: 22px; }
  .journey-step__text { font-size: 16px; line-height: 24px; }

  /* ---- Diferenciais: sem pin; grade em coluna ---- */
  .why { margin: 0 10px; padding: 64px 18px 20px; border-radius: 22px; }
  .why__grid { grid-template-columns: 1fr; gap: 14px; }
  .why__media { grid-row: auto; min-height: 280px; }
  .diff-card { min-height: 0; padding: 20px; border-radius: 18px; }
  .diff-card__body { position: static; margin-top: 28px; }   /* no celular o texto entra no fluxo e o card cresce com ele */
  .diff-card:focus-within::before { clip-path: circle(0% at var(--x) var(--y)); }   /* toque não deixa a tinta presa */
  .diff-card.is-painted::before { clip-path: circle(150% at var(--x) var(--y)); }
  .why-pin { padding-bottom: 0; }

  /* ---- Números: arena mais alta, pastilhas dentro da tela ---- */
  .numbers__arena { min-height: 800px; }
  .numbers__head { padding-top: 64px; }
  .numbers__title { max-width: 10ch; margin-inline: auto; }
  /* !important: as posições de desktop vêm no style inline de cada pastilha */
  .num-card { flex: 0 0 260px; height: 190px; padding: 22px; }

  /* ---- Equipe (ajustes finos do celular) ---- */
  .team { margin: 0 10px; padding: 56px 20px 64px; border-radius: 22px; }
  .team__row { margin-top: 40px; }
  .team-card.is-active { height: 440px; }
  .team-card__name { font-size: 20px; }
  .team-card__role { font-size: 13.5px; line-height: 19px; }

  /* ---- Avaliações: cabeçalho em fluxo e 4 microcards em grade (continuam saindo do centro do título) ---- */
  .reviews { padding: 40px 20px 72px; }
  .reviews__head { max-width: 340px; }
  .reviews__micros { grid-template-columns: 1fr 1fr; margin-top: 44px; }
  .micro { padding: 14px; }
  .micro:nth-child(3), .micro:nth-child(4) { display: none; }
  .micro__text { font-size: 12.5px; line-height: 17px; }
  .reviews__bar { margin-top: 32px; flex-wrap: wrap; gap: 12px; }
  .reviews__arrow { width: 44px; height: 44px; }
  .reviews__track { gap: 14px; }
  .review { flex: 0 0 min(82vw, 320px); min-height: 280px; padding: 24px; }
  .review__quote { font-size: 17px; }

  /* ---- Localização: mapa 100vw, card sobreposto 24px ---- */
  .location { padding: 72px 20px 24px; }
  .map { height: auto; margin-top: 36px; }
  .map__frame { position: relative; height: 360px; }
  .map__shield { height: 360px; inset: 0 0 auto 0; }
  .map__card { position: relative; left: auto; bottom: auto; z-index: 2; width: calc(100% - 32px); max-width: 380px; margin: -24px auto 0; padding: 24px 20px 28px; border-radius: 20px; }
  .map__card-name { font-size: 26px; }
  .map__card-actions { display: grid; grid-template-columns: 1fr 1fr; }

  /* ---- Convênios ---- */
  .plans { padding: 72px 20px; row-gap: 32px; }
  .plans__list { gap: 12px; }
  .plan { grid-template-columns: 1fr; row-gap: 12px; padding: 22px 20px; min-height: 0; border-radius: 18px; }
  .plan__num { padding-top: 0; }
  .plan__title { font-size: 23px; }
  .plan__logo { width: 104px; }

  /* ---- FAQ ---- */
  .faq { margin: 0 10px; padding: 64px 18px 96px; border-radius: 22px; }
  .faq-search { height: 60px; padding: 0 14px 0 16px; margin-top: 32px; border-radius: 14px; }
  .faq-search__count { display: none; }
  .faq__grid { margin-top: 32px; row-gap: 24px; }
  .faq__cats { margin: 0 -18px; padding: 0 18px; }
  .faq-item__btn { grid-template-columns: 24px minmax(0, 1fr) 22px; column-gap: 6px; min-height: 60px; padding: 14px 0; }
  .faq-item::before { left: -8px; }
  .faq-item__num { font-size: 11px; letter-spacing: .1em; }
  .faq-item__text { font-size: 14px; line-height: 1.3; letter-spacing: -0.01em; text-wrap: normal; }   /* menor para caber em uma linha na maioria das perguntas */
  .faq-item__toggle { width: 22px; height: 22px; }
  .faq-item__plus { width: 16px; height: 16px; }
  .faq-item__a { margin-left: 30px; font-size: 15px; line-height: 23px; }
  /* no celular as perguntas ficam escondidas até a pessoa buscar uma palavra ou escolher uma categoria (Alan, 08/09/2026) */
  .faq:not(.has-query) .faq__list, .faq:not(.has-query) .faq-empty { display: none; }
  .faq:not(.has-query) .faq__hint { display: block; margin: 0 0 24px; text-align: center; font-family: var(--font-body); font-size: 15px; line-height: 23px; color: rgba(255, 255, 255, .78); }
  .faq-help { flex-direction: column; align-items: center; text-align: center; padding: 20px; gap: 18px; }
  .faq-help__btn { width: 100%; max-width: 310px; justify-content: space-between; }

  /* ---- Rodapé ---- */
  .footer__inner { padding: 56px 20px 0; }
  .footer__nav { flex-direction: column; align-items: center; gap: 24px; }
  .footer__links { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 24px; text-align: center; }
  .footer__legal { flex-direction: column; align-items: center; gap: 24px; margin-top: 48px; }
  .footer__reg { max-width: 36ch; font-size: 12.5px; }
  .footer__dev { white-space: normal; text-align: center; }
  .footer__marquee { height: 100px; margin-top: 32px; }
  .footer__giant { font-size: 104px; line-height: .8; padding-top: 12px; }
}

@media (max-width: 480px) {
  .fab__avatar { width: 40px; height: 40px; }
  .hero__title { font-size: 38px; }
  .about__title, .procedures__title, .journey-title, .why__title, .numbers__title, .team__title,
  .reviews__title, .location__title, .plans__title, .faq__title { font-size: 36px; }
  .proc-card { flex: 0 0 calc(100vw - 56px); max-width: 334px; }
  .numbers__title { font-size: 36px; }
  .review { flex: 0 0 calc(100vw - 58px); }
  .map__frame, .map__shield { height: 320px; }
  .footer__giant { font-size: 88px; }
}


/* =====================================================
   ===== CELULAR — acabamento pedido pelo Alan (08/09/2026): centralizações, balance nos títulos, setas no trilho,
   Diferenciais sem dissolução, Equipe com todos os cards expostos =====
   ===================================================== */
@media (max-width: 760px) {
  /* títulos: as quebras fixas do desktop não valem no celular; o balance equilibra as linhas */
  .about__title br, .procedures__title br, .journey-title br, .why__title br, .numbers__title br,
  .team__title br, .reviews__title br, .location__title br, .plans__title br { display: none; }
  .about__title, .procedures__title, .journey-title, .why__title, .numbers__title,
  .team__title, .reviews__title, .location__title, .plans__title { text-wrap: balance; }
  .team__title .fill-word { display: inline; }

  /* Quem somos: texto, pontos e botão centralizados */
  .about__body { padding-left: 0; text-align: center; display: flex; flex-direction: column; align-items: center; }
  .about__body::before { display: none; }
  .about__text { text-align: center; max-width: 36ch; }
  .dots { justify-content: center; margin-top: 40px; }

  /* Procedimentos: descrição e "?" centralizados, botão centralizado; setas visíveis abaixo do trilho */
  .procedures__aside { align-items: center; }
  .procedures__lead { flex-direction: column; align-items: center; text-align: center; gap: 12px; }
  .procedures__lead .help { margin-top: 0; }
  .procedures__nav { display: flex; justify-content: center; gap: 10px; margin-top: 20px; }
  .procedures__more-tags { justify-content: center; }

  /* Como funciona: botão centralizado */
  .journey-header__right { align-items: center; max-width: none; }

  /* Convênios: cards centralizados e mais legíveis */
  .plan { justify-items: center; text-align: center; padding: 28px 22px 26px; row-gap: 14px; }
  .plan__num { padding-top: 0; }
  .plan__logo { width: 150px; margin: 0 auto 12px; padding: 10px 14px; border-radius: 12px; }
  .plan__title { font-size: 26px; }
  .plan__text { max-width: 34ch; margin-inline: auto; font-size: 16.5px; line-height: 25px; }
  .plan__link { display: inline-block; text-align: center; max-width: 30ch; margin: 12px auto 0; font-size: 15px; line-height: 1.4; }
  .plan__link svg { display: inline-block; vertical-align: -2px; margin-left: 6px; }   /* a seta acompanha a última palavra */

  /* Rodapé: sem lista de links; redes, bloco legal e assinatura centralizados */
  .footer__links { display: none; }
  .footer__nav { align-items: center; }
  .footer__legal { align-items: center; margin-top: 32px; }
  .footer__reg { text-align: center; max-width: 34ch; }
  .footer__dev { text-align: center; }

  /* Equipe: todos os cards expostos, com foto e rótulo */
  .team-card, .team-card.is-active { height: auto; aspect-ratio: 3 / 4; transition: none; }
  .team-card__label { opacity: 1; visibility: visible; transform: none; transition: none; }
  .team-card__hit { cursor: default; }
}

@media (max-width: 760px) {
  /* celular: foto inteira na parte de cima (sem véu) e faixa verde chapada embaixo para o título e o botão */
  /* celular (Alan, 09/09/2026): arte própria "Hero celular" (médicos em cima, verde chapado embaixo) cobrindo o card; título e botão na base */
  .hero__bg { position: absolute; inset: 0; aspect-ratio: auto; max-height: none; background-image: url("img/hero/hero-celular-1600.jpg"); background-size: cover; background-position: center top; }
}

/* ===== CELULAR — botões no padrão único (08/09/2026) ===== */
.reviews__arrow,
.procedures__arrow { width: 48px; height: 48px; }
.nav__cta { margin-left: 8px; }
.fab__cta-label { text-wrap: nowrap; }

@media (max-width: 760px) {
  /* CTAs das seções no celular: largura do próprio conteúdo, centralizados (Alan, 09/09/2026: sem 100%) */
  main .btn:not(.map__btn):not(.faq-help__btn) { display: flex; width: fit-content; max-width: 100%; margin-inline: auto; }
  .faq-help__btn { max-width: 310px; }
  .btn-link { min-height: 48px; }
  /* barra suspensa: CTA M52 dentro da barra de 68 */
  .fab__bar { padding: 8px; gap: 8px; }
  .fab__cta { min-height: 52px; }
  .fab__name { font-size: 14px; }
  /* guarda: o nome nunca passa por baixo do CTA (medição da revisão de 08/09/2026) */
  .fab__id { overflow: hidden; }
  .fab__name { overflow: hidden; text-overflow: ellipsis; }
  /* popover do ? centrado no acionador e dentro da tela */
  .help__popover { left: 50%; right: auto; width: min(320px, calc(100vw - 40px)); transform: translate(-50%, -4px); }
  .help:hover .help__popover,
  .help:focus-within .help__popover,
  .help.is-open .help__popover { transform: translate(-50%, 0); }
}

/* celular estreito: "Clínica Scopel" quebra em duas linhas em vez de ser cortado atrás do botão
   (medido: 360 sobra 18px, 375 sobra 33px, 390 fica em uma linha; 2 x 18 + 12 = 48px cabem na barra de 68) */
@media (max-width: 400px) {
  .fab__brand { gap: 8px; }
  .fab__name { white-space: normal; line-height: 18px; }
}

@media (max-width: 480px) {
  .map__card-actions { display: grid; grid-template-columns: 1fr; gap: 10px; }
  .map__btn { width: 100%; }
}
