/* ==========================================================================
   Biovoxis — site institucional
   Uma folha so. Ordem: fontes · tokens · reset · layout · chrome ·
   componentes · utilitarios · print/movimento/alto-contraste.

   O sistema visual vem da proposta "Biovoxis, sistema de design": Sora nos
   titulos, Manrope no corpo e nos numeros, navy e turquesa da marca mantidos,
   indigo/lilas/ambar como diversificacao, raio de 12/16/18/999, e sombra
   difusa e baixa no lugar da linha dura.

   Regras de cor que NAO podem ser quebradas (contraste WCAG recalculado):
     --teal #1FC5C9 sobre branco = 2,12:1  -> NUNCA texto em fundo claro.
                                              So preenchimento, gradiente e o
                                              <b> da logomarca SOBRE NAVY (5,92:1).
     --link #0E7A80 sobre branco = 5,10:1  -> e este o teal de texto e o anel
                                              de foco em fundo claro.
     --fraco #8494AC sobre a pagina = 2,87:1 -> reprova. Nao existe como cor de
                                              texto nesta folha; onde a proposta
                                              usava cinza claro, aqui entra --soft
                                              (5,10:1) ou --link.
   O botao primario da proposta e teal com texto quase preto. No ponto escuro
   do gradiente original (#0E7A80) nem o preto puro chega a 4,5:1 — por isso o
   gradiente comeca em #12A2A8, onde o texto #041F21 da 5,53:1 na pior ponta.
   ========================================================================== */

/* ───────────────────────────────────────────────────────────── fontes */
/* Hospedadas aqui. A promessa de nao rastrear nao sobrevive a uma requisicao
   para o servidor de fontes de terceiro a cada visita. Sao arquivos variaveis:
   um por subconjunto cobre a faixa de peso inteira. O nome carrega hash, que o
   build substitui em {{fonte.*}} antes de publicar. */
@font-face{
  font-family:'Sora'; font-style:normal; font-weight:200 800; font-display:swap;
  src:url(sora-latin.93f32213.woff2) format('woff2');
  /* Sem U+2191/U+2193: o arquivo subsetado do Sora nao tem esses dois glifos, e
     prometer a faixa faria o navegador baixa-lo e nao achar nada. O Manrope tem. */
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,
    U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Sora'; font-style:normal; font-weight:200 800; font-display:swap;
  src:url(sora-latin-ext.ce831c10.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,
    U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,
    U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'Manrope'; font-style:normal; font-weight:200 800; font-display:swap;
  src:url(manrope-latin.b4295101.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,
    U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Manrope'; font-style:normal; font-weight:200 800; font-display:swap;
  src:url(manrope-latin-ext.1f62546f.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,
    U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,
    U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ───────────────────────────────────────────────────────────── tokens */
:root{
  /* Marca — navy e turquesa vem da logo. A diversificacao da proposta entra onde
     carrega significado, e nao como token solto: o ambar #E8933A e o coral #C4452F
     na regua de nove, o indigo #6C7BF7 no halo do hero, e a familia violeta na
     --camada-noturna, que e o fundo do bloco de destaque. */
  --tinta:#071229; --navy:#10306E;
  --teal:#1FC5C9; --teal-claro:#5EE9ED; --coral:#C4452F;
  --halo-teal:radial-gradient(circle,rgba(31,197,201,.40) 0%,rgba(31,197,201,0) 68%);
  --halo-indigo:radial-gradient(circle,rgba(108,123,247,.38) 0%,rgba(108,123,247,0) 70%);

  /* Superficies — tres degraus de claro, e o branco so nos cartoes. */
  --page:#F4F7FB;
  --branco:#fff;
  --page-alt:#FFFFFF;
  --page-fundo:#EDF1F7;
  --nivel2:#EDF1F7;
  --grayBg:#F7F9FC;
  --border:#E3EAF3;
  --linha-forte:#CBD8E8;

  /* Texto em fundo claro */
  --text:#0F1B2E;
  --soft:#5A6A85;
  --link:#0E7A80;
  --link-forte:#0B5F63;

  /* Texto sobre escuro */
  --sobre:#E4EDFA;
  --sobre-fraco:#9FC0E8;
  --sobre-marca:#7CE7EA;
  /* --sobre-marca serve ao rodape (gradiente mais escuro). Na secao escura o
     gradiente clareia ate #1B57B0 e o mesmo turquesa cai a 4,06:1; --sobre-elo
     e a versao que aguenta o ponto mais claro (4,72:1). */
  --sobre-elo:#A9F3F5;
  --navy-linha:rgba(255,255,255,.18);

  /* Estado */
  --green:#0A5E48; --greenBg:#E4F7F0; --greenLinha:#A9E5C6;
  --redBg:#FBEDEA;  --redLinha:#EFC3BA;
  --yellow:#6B5520; --yellowBg:#FBF6EC; --yellowLinha:#EBD9BA; --yellowForte:#8A5311;

  /* Camadas escuras */
  --camada-profunda:linear-gradient(135deg,#071229 0%,#10306E 70%,#1B57B0 100%);
  --camada-noturna:linear-gradient(135deg,#10306E 0%,#4A4FC4 55%,#7C4FD6 100%);
  --camada-viva:linear-gradient(120deg,#0B7D82 0%,#1FC5C9 60%,#5EE9ED 100%);
  --camada-cartao:linear-gradient(110deg,#0A1B3D 0%,#10306E 80%,#24379B 100%);
  --grad-marca:linear-gradient(110deg,#071229 0%,#10306E 62%,#1A46A0 100%);
  --grad-acao:linear-gradient(120deg,#12A2A8 0%,#1FC5C9 100%);

  --fonte:'Manrope',system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;
  --fonte-titulo:'Sora','Manrope',system-ui,-apple-system,BlinkMacSystemFont,sans-serif;
  --max:1120px;
  --max-prosa:70ch;

  --r-sm:10px; --r-md:12px; --r-lg:16px; --r-xl:18px; --r-pill:999px;
  --sombra-cartao:0 2px 18px rgba(16,48,110,.05);
  --sombra-media:0 10px 30px -14px rgba(16,48,110,.30);
  --sombra-alta:0 30px 80px -28px rgba(3,10,26,.55);
  --brilho-acao:0 10px 26px -6px rgba(31,197,201,.50);
  color-scheme: light;
}

/* ────────────────────────────────────────────────────────────── reset */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--page); color:var(--text);
  font-family:var(--fonte); font-size:17px; line-height:1.65;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
img,svg,video{max-width:100%; height:auto}
h1,h2,h3,h4{
  margin:0 0 .5em; line-height:1.14; letter-spacing:-.022em;
  color:var(--navy); font-family:var(--fonte-titulo); font-weight:600;
}
h1{font-size:clamp(2.05rem,1.35rem + 2.8vw,3.4rem); letter-spacing:-.03em}
h2{font-size:clamp(1.55rem,1.2rem + 1.4vw,2.2rem); letter-spacing:-.026em}
h3{font-size:clamp(1.125rem,1.05rem + .4vw,1.35rem)}
h4{font-size:1rem}
p,ul,ol,dl,table,figure,blockquote{margin:0 0 1.15em}
:where(p,li):last-child{margin-bottom:0}
a{color:var(--link); text-underline-offset:.18em; text-decoration-thickness:.07em}
a:hover{color:var(--link-forte)}
strong,b{font-weight:700}
small{font-size:.8125rem}
hr{border:0; border-top:1px solid var(--border); margin:2.5rem 0}
code,kbd{font-family:ui-monospace,SFMono-Regular,Consolas,monospace; font-size:.875em;
  background:var(--grayBg); border:1px solid var(--border); border-radius:6px; padding:.08em .34em}
table{border-collapse:collapse; width:100%}
button{font:inherit}

/* Foco: o app usa outline:none em todo input. Aqui, nunca. Em fundo claro o anel
   e o teal de texto (5,10:1); sobre navy, a turquesa da marca (5,92:1). */
:focus-visible{outline:2px solid var(--link); outline-offset:2px; border-radius:4px}
/* O topo ficou claro; so o rodape e as secoes escuras continuam com o anel turquesa. */
.rodape :focus-visible,.sec-escura :focus-visible{outline-color:var(--teal)}
/* O hero e escuro nas 26 paginas e claro na home: o anel segue o fundo. */
body:not(.pag-home) .hero :focus-visible,body:not(.pag-home) .destaque :focus-visible{outline-color:var(--teal)}
:focus:not(:focus-visible){outline:none}

::selection{background:#BFEFF1; color:var(--tinta)}

/* ────────────────────────────────────────────────────────── layout */
.wrap{width:100%; max-width:calc(var(--max) + 48px); margin-inline:auto; padding-inline:24px}
.wrap-estreito{max-width:780px}

.sec{padding-block:clamp(3rem,2rem + 4vw,5.5rem)}
.sec-compacta{padding-block:clamp(2rem,1.4rem + 2.4vw,3.25rem)}
.sec-alt{background:var(--page-alt)}
.sec-fundo{background:var(--page-fundo)}
/* Cartao branco sobre secao branca sumiria: ali ele recebe o tom da pagina. */
.sec-alt .cartao,.sec-alt .faq-item,.sec-alt .plano-card{background:var(--page)}
.sec-escura{background:var(--camada-profunda); color:var(--sobre)}
.sec-escura h2,.sec-escura h3{color:#fff}
.sec-escura a:not(.btn){color:var(--sobre-elo)}
.sec-escura a:not(.btn):hover{color:#fff}
/* Bloco com fundo claro proprio dentro de secao escura volta a usar as cores de
   fundo claro — texto e anel. Sem isto, o link herda o turquesa da secao e fica
   com 1,38:1 sobre o quase-branco do aviso. */
.sec-escura :is(.aviso,.mock,.tabela-scroll,.faq-item) a{color:var(--link)}
.sec-escura :is(.aviso,.mock,.tabela-scroll,.faq-item) a:hover{color:var(--link-forte)}
.sec-escura :is(.aviso,.mock,.tabela-scroll,.faq-item) :focus-visible{outline-color:var(--link)}
.sec-topo{margin-bottom:2.5rem; max-width:44rem}

.eyebrow{
  display:block; font-family:var(--fonte); font-size:.6875rem; font-weight:800;
  letter-spacing:.14em; text-transform:uppercase; color:var(--link); margin-bottom:.8rem;
}
.hero .eyebrow,.sec-escura .eyebrow,.destaque .eyebrow{color:var(--sobre-elo)}
.lead{font-size:clamp(1.0625rem,1rem + .35vw,1.25rem); color:var(--soft); line-height:1.6}
.sec-escura .lead{color:var(--sobre)}
.miudo{font-size:.8125rem; color:var(--soft); line-height:1.6}
.sec-escura .miudo{color:var(--sobre)}

.grade{display:grid; gap:20px}
.grade-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.grade-3{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}

.grade-partida{display:grid; gap:clamp(28px,4vw,56px); grid-template-columns:1fr}
@media (min-width:900px){ .grade-partida{grid-template-columns:1.05fr .95fr; align-items:center} }

/* ────────────────────────────────────────────────────────── botoes */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.5em;
  min-height:48px; padding:.72em 1.5em; border:1.5px solid transparent;
  border-radius:var(--r-md); font-size:.9375rem; font-weight:800; letter-spacing:.01em;
  text-decoration:none; cursor:pointer;
  transition:background-color .15s, border-color .15s, color .15s, box-shadow .15s, transform .15s;
}
.btn:active{transform:translateY(1px)}
/* Turquesa com texto quase preto: e a assinatura da proposta, e a unica leitura
   do gradiente que passa AA nas duas pontas. */
.btn-primario{background:var(--grad-acao); color:#041F21; border-color:transparent;
  box-shadow:var(--brilho-acao)}
.btn-primario:hover{color:#041F21; filter:brightness(1.06); box-shadow:0 14px 32px -8px rgba(31,197,201,.58)}
.btn-secundario{background:#fff; color:#1B3A72; border-color:var(--linha-forte)}
.btn-secundario:hover{border-color:var(--link); color:var(--link-forte)}
.sec-alt .btn-secundario,.sec-fundo .btn-secundario{background:#fff}
.btn-claro{background:rgba(255,255,255,.08); color:#fff; border-color:rgba(255,255,255,.28)}
.btn-claro:hover{background:rgba(255,255,255,.16); color:#fff; border-color:rgba(255,255,255,.5)}
.btn-solido-claro{background:var(--grad-acao); color:#041F21; border-color:transparent;
  box-shadow:var(--brilho-acao)}
.btn-solido-claro:hover{color:#041F21; filter:brightness(1.06)}
.btn-grande{min-height:56px; font-size:1rem; padding:.8em 1.9em}
.btn-bloco{width:100%}
.acoes{display:flex; flex-wrap:wrap; gap:12px; align-items:center}
.acoes-centro{justify-content:center}

.link-seta{font-weight:700; text-decoration:none; display:inline-flex; align-items:center; gap:.4em}
/* A seta e desenhada, nao escrita: U+2192 nao existe em Sora nem em Manrope e
   cairia em fonte de sistema — o mesmo defeito que tirou os emojis daqui. */
.link-seta::after{
  content:''; width:.5em; height:.5em; flex:none; margin-left:.1em;
  border:solid currentColor; border-width:0 .14em .14em 0;
  transform:rotate(-45deg); transition:transform .15s;
}
.link-seta:hover::after{transform:rotate(-45deg) translate(2px,2px)}

/* ─────────────────────────────────────────── acessibilidade e marca */
.sr-apenas{
  position:absolute!important; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}
.pular-link{
  position:absolute; left:12px; top:-100px; z-index:500;
  background:#fff; color:var(--navy); font-weight:800;
  padding:.7em 1.2em; border-radius:var(--r-md); box-shadow:var(--sombra-media);
  transition:top .15s;
}
.pular-link:focus{top:12px}
.bv-sprite{position:absolute; width:0; height:0; overflow:hidden}
.bv-marca{width:1em; height:1em; flex:none; display:block}

/* Icone de traco: uma familia so, 1,6 px em 24, canto redondo. */
.ico{
  width:24px; height:24px; flex:none; display:inline-block; vertical-align:-.28em;
  fill:none; stroke:currentColor; stroke-width:1.6;
  stroke-linecap:round; stroke-linejoin:round;
}

/* Em titulo o icone acompanha o corpo do texto e usa o teal de texto. */
h2 > .ico,h3 > .ico{
  width:1.02em; height:1.02em; color:var(--link); vertical-align:-.13em; margin-right:.18em;
}
.sec-escura h2 > .ico,.sec-escura h3 > .ico,.destaque h2 > .ico,.destaque h3 > .ico{color:var(--teal-claro)}

/* Faixa de rascunho: aparece quando a pagina saiu com [PREENCHER] dentro. Junto com ela
   o build emite noindex,nofollow na pagina e Disallow: / no robots.txt, para que um deploy
   incompleto nunca possa ser confundido com um lancamento nem ser indexado. */
.faixa-rascunho{
  background:#9d174d; color:#fff; padding:.75rem 24px; font-size:.8125rem; line-height:1.5;
  display:flex; gap:.6rem; align-items:baseline; flex-wrap:wrap; justify-content:center;
  text-align:center;
}
.faixa-rascunho b{font-weight:800; letter-spacing:.02em; text-transform:uppercase; font-size:.72rem}
@media print{.faixa-rascunho{display:none}}

/* Marcador de dado institucional ainda nao preenchido. Impossivel de nao ver. */
.preencher{
  background:#ffe1f0; color:#9d174d; border:1px dashed #f472b6; border-radius:5px;
  padding:0 .35em; font-size:.82em; font-weight:700; letter-spacing:.02em;
}

/* ──────────────────────────────────────────────────────────── topo */
/* O topo e claro e translucido, como na referencia. Na home ele comeca
   transparente, porque tem a foto do hero atras; nas outras 26 paginas o fundo
   vale desde o carregamento, senao seria um cabecalho branco sobre pagina clara. */
.topo{
  position:sticky; top:0; z-index:100;
  background:rgba(255,255,255,.88); color:var(--text);
  backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--border);
  transition:background-color .2s, box-shadow .2s, border-color .2s;
}
body.pag-home .topo{background:transparent; border-bottom-color:transparent; backdrop-filter:none}
body.pag-home .topo.rolou{
  background:rgba(255,255,255,.88); border-bottom-color:var(--border);
  backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
}
.topo.rolou{box-shadow:0 6px 24px -12px rgba(16,48,110,.25)}
.topo-in{
  max-width:calc(var(--max) + 48px); margin-inline:auto; padding:0 24px;
  min-height:78px; display:flex; align-items:center; gap:8px; flex-wrap:wrap;
}

/* A marca: cinco barras de equalizador em gradiente, o nome em Sora e a assinatura
   miuda embaixo. E o lockup da referencia, redesenhado em CSS para nao virar imagem. */
.topo-marca{
  display:flex; align-items:center; gap:10px; text-decoration:none;
  padding-block:11px; margin-right:auto; color:var(--navy);
}
/* A marca e imagem porque nao existe vetor de origem: ela chegou como PNG
   chapado sobre branco, e o alfa foi recuperado desfazendo a mistura
   (tools/gerar-marca.py). O nome ao lado continua texto. */
.logo-mark{display:block; width:40px; height:40px; flex:none}
.logo-txt{display:flex; flex-direction:column; line-height:1}
.logo-txt b{
  font-family:var(--fonte-titulo); font-size:1.18rem; font-weight:600;
  letter-spacing:.03em; color:var(--navy);
}
/* O turquesa da marca (#00C4CC) da 2,1:1 sobre branco e nao serve para texto.
   --link e o mesmo gesto num tom que passa (4,92:1). */
.logo-txt b span{color:var(--link)}
.logo-claro .logo-txt b span{color:var(--teal-claro)}
.logo-txt small{
  font-size:.625rem; letter-spacing:.04em; color:var(--link); font-weight:800;
  margin-top:4px; white-space:nowrap;
}
.logo-claro .logo-txt b{color:#fff}
.logo-claro .logo-txt small{color:var(--teal-claro)}

.menu-botao{
  display:none; align-items:center; gap:.55em; min-height:44px; padding:.4em .85em;
  background:transparent; color:var(--navy); border:1.5px solid var(--linha-forte);
  border-radius:var(--r-md); font-size:.875rem; font-weight:700; cursor:pointer;
}
.menu-icone{display:grid; gap:3.5px; width:17px}
.menu-icone i{display:block; height:2px; background:currentColor; border-radius:2px}
.menu-painel{display:flex; align-items:center; gap:14px; flex-wrap:wrap; padding-bottom:6px}
.topo-nav{display:flex; gap:0; flex-wrap:wrap}
.topo-link{
  color:var(--text); text-decoration:none; font-size:.875rem; font-weight:600;
  padding:.5em .4em; border-radius:8px; white-space:nowrap;
}
.topo-link:hover{color:var(--link-forte); background:rgba(94,233,237,.14)}
.topo-link[aria-current="page"]{color:var(--link-forte); box-shadow:inset 0 -2px 0 var(--teal)}
.topo-acoes{display:flex; align-items:center; gap:10px; margin-left:auto}
.topo-entrar{
  color:var(--link); text-decoration:none; font-weight:700; font-size:.875rem;
  white-space:nowrap; display:inline-flex; align-items:center; min-height:32px;
}
.topo-entrar:hover{color:var(--link-forte)}
.idiomas{display:flex; gap:2px; background:var(--nivel2); border-radius:var(--r-pill); padding:3px}
.idioma{
  color:var(--soft); text-decoration:none; font-size:.78rem; font-weight:700;
  padding:.34em .6em; border-radius:var(--r-pill); white-space:nowrap;
  display:inline-flex; align-items:center; min-height:32px;
}
.idioma:hover{color:var(--link-forte); background:#fff}
.idioma-ativo{background:#fff; color:var(--navy); box-shadow:var(--sombra-cartao)}
.idioma-ativo:hover{background:#fff; color:var(--navy)}
.btn-pequeno{min-height:40px; padding:.5em .95em; font-size:.8125rem}

/* O cabecalho colapsa antes de 1024: com seis itens de menu mais PT/ES/EN,
   "Entrar" e o botao, a barra passava a quebrar em duas linhas por volta de
   1160px. Abaixo deste ponto quem organiza e o painel. */
@media (max-width:1199px){
  .topo-in{min-height:60px; padding-inline:16px; gap:10px}
  .topo-marca{font-size:1.1rem}
  .menu-painel{width:100%; flex-direction:column; align-items:stretch; gap:14px;
    border-top:1px solid var(--border); padding:14px 0 18px}
  .topo-nav{flex-direction:column; gap:2px}
  .topo-link{padding:.7em .6em; font-size:1rem}
  .topo-acoes{margin-left:0; flex-direction:column; align-items:stretch; gap:12px}
  /* Dentro do painel os alvos sao de toque: 44px de altura e 8px entre eles. */
  .idiomas{justify-content:center; gap:8px; padding:4px}
  .idioma{min-height:44px; display:inline-flex; align-items:center; padding:.5em 1.15em; font-size:.9375rem}
  .topo-entrar{min-height:44px; display:inline-flex; align-items:center; justify-content:center}
  /* Colapsado por padrao, sem flash de menu aberto no carregamento.
     Quem esta sem JavaScript recebe nojs.css via <noscript>, que reabre o painel
     e esconde o botao — nenhum link fica inalcancavel por falta de JS. */
  .menu-botao{display:inline-flex}
  .menu-painel{display:none}
  .topo.menu-aberto .menu-painel{display:flex}

  /* O cabecalho da home e fixo e transparente sobre a foto. Aberto, ele vira
     superficie solida — senao o painel e pintado por cima do hero — e rola por
     dentro quando a tela e mais baixa que o menu. */
  .pag-home .topo.menu-aberto{background:var(--branco); max-height:100dvh; overflow-y:auto}
  .pag-home .topo.menu-aberto::before{opacity:0}
}

/* ──────────────────────────────────────────────────────────── hero */
.hero{
  position:relative; overflow:hidden; color:var(--sobre);
  background:var(--camada-profunda);
  padding-block:clamp(3.25rem,2rem + 6vw,6rem);
}
/* Os dois halos da proposta: turquesa no alto a direita, indigo embaixo. */
.hero::before{
  content:''; position:absolute; top:-180px; right:-120px; width:620px; height:620px;
  border-radius:50%; pointer-events:none;
  background:var(--halo-teal);
}
.hero::after{
  content:''; position:absolute; bottom:-260px; left:12%; width:560px; height:560px;
  border-radius:50%; pointer-events:none;
  background:var(--halo-indigo);
}
.hero-in{position:relative; z-index:1}
.hero h1{color:#fff; max-width:17ch}
.hero-sub{
  font-size:clamp(1.0625rem,1rem + .5vw,1.3125rem); line-height:1.55;
  color:var(--sobre); max-width:52ch; margin-bottom:1.6rem;
}
.hero-sub strong{color:#fff}
.hero-acoes{margin-bottom:1.5rem}
/* O gradiente do hero clareia ate #1B57B0, e ali --sobre-fraco cai a 3,68:1 e
   --sobre-marca a 4,06:1. E a mesma dupla que ja tinha sido corrigida em
   .sec-escura; esta aqui tinha escapado. */
.hero-nota{
  font-size:.8125rem; color:var(--sobre); max-width:56ch; line-height:1.6;
  border-left:2px solid rgba(94,233,237,.45); padding-left:.9rem;
}
.hero-nota a{color:var(--sobre-elo)}

/* faixa de prova concreta */
.prova{
  display:grid; gap:1px; grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
  background:var(--border); border-block:1px solid var(--border);
}
.prova-item{background:var(--branco); padding:1.3rem 1.1rem; text-align:center}
.prova-n{
  display:block; font-size:clamp(1.5rem,1.2rem + .8vw,2rem); font-weight:800;
  color:var(--navy); line-height:1.05; font-variant-numeric:tabular-nums; letter-spacing:-.02em;
}
.prova-r{display:block; font-size:.78rem; color:var(--soft); margin-top:.35rem; line-height:1.4}

/* ────────────────────────────────────────────────── cartoes e listas */
.cartao{
  background:var(--branco); border:1px solid var(--border); border-radius:var(--r-xl);
  padding:clamp(1.25rem,1rem + 1vw,1.75rem); box-shadow:var(--sombra-cartao);
}

.cartao h3{margin-bottom:.45em}
.cartao-icone{
  display:grid; place-items:center; width:40px; height:40px; margin-bottom:1rem;
  border-radius:12px; background:rgba(94,233,237,.18); color:var(--link-forte);
  font-size:1.15rem; font-weight:800;
}
.sec-escura .cartao{
  background:rgba(255,255,255,.07); border-color:rgba(255,255,255,.16);
  box-shadow:none; color:var(--sobre);
}
.sec-escura .cartao h3{color:#fff}
.sec-escura .cartao-icone{background:rgba(94,233,237,.16); color:var(--teal-claro)}

.passo{display:grid; grid-template-columns:auto 1fr; gap:1rem 1.1rem; align-items:start}
.passo + .passo{margin-top:1.6rem; padding-top:1.6rem; border-top:1px solid var(--border)}
.passo-n{
  display:grid; place-items:center; width:38px; height:38px; border-radius:12px;
  background:var(--camada-cartao); color:#fff; font-weight:800; font-size:.9375rem;
  font-variant-numeric:tabular-nums;
}
.passo-corpo h3{margin-bottom:.3em}
.passo-corpo > :last-child{margin-bottom:0}

.lista-limpa{list-style:none; padding:0; margin:0; display:grid; gap:.7rem}
.lista-check,.lista-x{list-style:none; padding:0; display:grid; gap:.7rem}
.lista-check li,.lista-x li{position:relative; padding-left:1.85rem; line-height:1.55}
.lista-check li::before{
  content:''; position:absolute; left:0; top:.42em; width:1.05rem; height:.6rem;
  border-left:2.5px solid var(--link); border-bottom:2.5px solid var(--link);
  transform:rotate(-45deg);
}
.lista-x li::before{
  content:'×'; position:absolute; left:.18rem; top:-.06em;
  color:var(--coral); font-size:1.35rem; font-weight:700; line-height:1.3;
}
.sec-escura .lista-check li::before{border-color:var(--teal-claro)}
.lista-numerada{padding-left:1.2rem; display:grid; gap:.6rem}

.tags{display:flex; flex-wrap:wrap; gap:8px; padding:0; margin:0; list-style:none}
.tag{
  display:inline-block; background:var(--nivel2); border:1px solid var(--border);
  border-radius:var(--r-pill); padding:.34em .9em; font-size:.8125rem; color:var(--soft);
  font-weight:600;
}
.tag b{color:var(--navy); font-weight:800}
.sec-escura .tag{background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.2); color:var(--sobre)}
.sec-escura .tag b{color:#fff}

/* ───────────────────────────────────────────── avisos e destaques */
.aviso{
  border-radius:var(--r-lg); padding:1rem 1.2rem; font-size:.9375rem; line-height:1.6;
  border:1px solid var(--border); background:var(--grayBg); color:var(--soft);
}
.aviso > :last-child{margin-bottom:0}
.aviso strong{color:var(--navy)}
.aviso-atencao{background:var(--yellowBg); border-color:var(--yellowLinha); color:var(--yellow)}
.aviso-atencao strong{color:var(--yellowForte)}
.aviso-erro{background:var(--redBg); border-color:var(--redLinha); color:#8F2E1E}
.aviso-erro strong{color:#6E2315}
.aviso-ok{background:var(--greenBg); border-color:var(--greenLinha); color:var(--green)}
.aviso-ok strong{color:#07402F}
.aviso-legal{
  background:#FBF6EC; border:1px solid var(--yellowLinha); border-left:3px solid #8A5311;
  color:var(--yellow); border-radius:var(--r-md);
}
.aviso-legal strong{color:var(--yellowForte)}

.destaque{
  background:var(--camada-noturna); color:var(--sobre); border-radius:var(--r-xl);
  padding:clamp(1.5rem,1.2rem + 1.4vw,2.25rem);
}
.destaque h2,.destaque h3{color:#fff}
.destaque a{color:var(--sobre-marca)}

.citacao{
  margin:0; padding-left:1.15rem; border-left:3px solid var(--teal);
  font-size:1.0625rem; line-height:1.6; color:var(--soft);
}
.citacao p:first-child{margin-top:0}
.citacao cite{display:block; margin-top:.6rem; font-size:.8125rem; font-style:normal; color:var(--soft)}
.sec-escura .citacao{border-left-color:var(--teal-claro); color:var(--sobre)}
.sec-escura .citacao cite{color:var(--sobre)}

/* ──────────────────────────────────── escala 1-9 (a regua do produto) */
/* Azul para baixo, verde na faixa esperada, ambar e coral para cima. A regua
   antiga pintava 1, 2 e 3 de vermelho: quem nao separa vermelho de verde nao
   distinguia hipofuncao de hiperfuncao. */
.escala{display:grid; grid-template-columns:repeat(9,1fr); gap:5px; margin-bottom:.7rem}
.escala-cel{
  display:grid; place-items:center; min-height:46px; border-radius:var(--r-sm);
  font-weight:800; font-size:1rem; font-variant-numeric:tabular-nums;
}
.e1{background:#2B3FA8;color:#fff} .e2{background:#4A63D8;color:#fff} .e3{background:#8AA0EE;color:#101F44}
.e4{background:#B6DDE9;color:#10333D} .e5{background:#7FD9BE;color:#0A3A2E} .e6{background:#A9E5C6;color:#0A3A2E}
.e7{background:#F5D08A;color:#4A3208} .e8{background:#E8933A;color:#2E1B02} .e9{background:#C4452F;color:#fff}
.escala-legenda{display:flex; justify-content:space-between; gap:1rem; font-size:.75rem; color:var(--soft)}

/* ─────────────────────────── mockups da interface real (ilustracao) */
.mock{
  margin:0; background:var(--branco); border:1px solid var(--border); border-radius:var(--r-lg);
  overflow:hidden; box-shadow:var(--sombra-media); font-size:13px; line-height:1.45; color:var(--text);
}
.hero .mock,.sec-escura .mock{border-color:rgba(255,255,255,.14); box-shadow:var(--sombra-alta)}
.mock-topo{
  background:var(--camada-cartao); color:#fff; padding:11px 15px;
  display:flex; align-items:center; gap:10px; font-family:var(--fonte-titulo);
  font-size:12px; font-weight:600; letter-spacing:.04em;
}
.mock-topo .bv-marca{width:24px; height:24px; display:block}
.mock-corpo{padding:15px}
.mock-secao{border:1px solid var(--border); border-radius:var(--r-md); overflow:hidden; margin-bottom:11px}
.mock-secao:last-child{margin-bottom:0}
.mock-cab{
  background:var(--camada-cartao); color:#fff; padding:9px 13px; font-size:11.5px;
  font-weight:700; letter-spacing:.02em; display:flex; gap:9px; align-items:center;
}
.mock-cab .ico{width:16px; height:16px; stroke-width:1.8; color:var(--teal-claro)}
.mock-cab span{margin-left:auto; color:var(--sobre-fraco); font-weight:500}
.mock-linhas{padding:9px 13px 11px}
.mock-linha{display:flex; align-items:center; gap:10px; padding:6px 0; border-bottom:1px solid #F1F5FA}
.mock-linha:last-child{border-bottom:0}
.mock-rot{flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  font-size:12px; color:var(--text)}
/* O valor da direita, quando existe. A linha tem duas formas — rotulo + valor, e
   chip + rotulo —, entao o :last-child precisa excluir as outras duas classes: sem
   isso o rotulo das linhas com chip herdava a cor e o corpo do valor. */
.mock-linha > span:last-child:not(.mock-rot):not(.mock-chip){
  color:var(--soft); font-size:11.5px; white-space:nowrap;
}
.mock-linha .ico{width:15px; height:15px; color:var(--soft)}
.mock-chip{
  width:26px; height:26px; border-radius:9px; display:grid; place-items:center;
  font-weight:800; font-size:12px; flex:none; font-variant-numeric:tabular-nums;
}
.mock-barras{display:flex; align-items:flex-end; gap:3px; height:62px; padding:10px 13px}
.mock-barra{flex:1; background:var(--camada-viva); border-radius:3px 3px 0 0; min-height:3px}
/* Curva de sino, ecoando o equalizador de 8 barras da propria marca.
   Classes em vez de style inline porque o CSP usa style-src 'self'. */
 .b2{height:28%} .b3{height:48%} .b4{height:84%}
.b5{height:100%} .b6{height:70%} .b7{height:42%} .b8{height:20%}
.mock-nota{padding:10px 13px; background:#F2F8FD; border-top:1px solid #D7E6F5;
  font-size:11.5px; color:#1B3A72}
.mock-rodape{padding:9px 13px; background:var(--yellowBg); border-top:1px solid var(--yellowLinha);
  font-size:10.5px; font-weight:700; letter-spacing:.03em; color:var(--yellowForte); line-height:1.5}
figure.mock figcaption{
  padding:10px 13px; background:var(--grayBg); border-top:1px solid var(--border);
  font-size:11.5px; color:var(--soft); line-height:1.5;
}

/* ────────────────────────────────────────────────────────── planos */
.periodo{border:0; margin:0 0 1.75rem; padding:0}
.periodo legend{
  padding:0; margin-bottom:.6rem; font-size:.6875rem; font-weight:800;
  letter-spacing:.14em; text-transform:uppercase; color:var(--link);
}
.periodo-op{
  display:inline-flex; background:var(--nivel2); border:1px solid var(--border);
  border-radius:var(--r-pill); padding:4px; gap:2px; flex-wrap:wrap;
}
.periodo-op input{position:absolute; opacity:0; width:1px; height:1px}
.periodo-op label{
  padding:.5em 1.15em; border-radius:var(--r-pill); font-size:.875rem; font-weight:700;
  color:var(--soft); cursor:pointer; min-height:44px; display:inline-flex; align-items:center;
}
.periodo-op label:hover{color:var(--link-forte)}
.periodo-op input:checked + label{background:var(--navy); color:#fff}
.periodo-op input:focus-visible + label{outline:2px solid var(--link); outline-offset:2px}

.planos{display:grid; gap:20px; grid-template-columns:repeat(auto-fit,minmax(270px,1fr))}
.plano-card{
  background:var(--branco); border:1px solid var(--border); border-radius:var(--r-xl);
  padding:1.6rem 1.5rem; display:flex; flex-direction:column; gap:1rem;
  box-shadow:var(--sombra-cartao);
}
.plano-card-destaque{border:1.5px solid var(--teal); box-shadow:0 14px 40px -18px rgba(31,197,201,.5)}
.plano-rotulo{display:flex; align-items:center; gap:.6rem; flex-wrap:wrap}
.plano-nome{font-family:var(--fonte-titulo); font-size:1.0625rem; font-weight:600; color:var(--navy); margin:0}
.plano-selo{
  background:var(--greenBg); color:var(--green); border:1px solid var(--greenLinha);
  border-radius:var(--r-pill); padding:.15em .75em; font-size:.72rem; font-weight:800;
}
.plano-selo-navy{background:var(--navy); color:#fff; border-color:var(--navy)}
.plano-valor{
  font-size:clamp(1.85rem,1.5rem + 1.2vw,2.4rem); font-weight:800; color:var(--navy);
  line-height:1.02; letter-spacing:-.03em; font-variant-numeric:tabular-nums; display:block;
}
/* O "por mês" acompanha o numero sem competir com ele. */
.plano-valor small{
  font-size:.4em; font-weight:700; letter-spacing:0; color:var(--soft);
  margin-left:.35em; white-space:nowrap;
}
.plano-cobranca{font-size:.8125rem; color:var(--soft); display:block; margin-top:.3rem}
.plano-mes{font-size:.875rem; color:var(--soft); margin-top:.55rem}
.plano-mes b{color:var(--navy); font-variant-numeric:tabular-nums}
.plano-lista{list-style:none; padding:0; margin:0; display:grid; gap:.55rem; font-size:.9375rem}
.plano-card .btn{margin-top:auto}
.addon{border-style:dashed}

/* Troca de periodo sem uma linha de JavaScript: radios + :has(). Ganha navegacao
   por setas, rotulo associado e anel de foco de graca, e funciona com JS desligado.
   Em motor sem :has(), os tres precos aparecem empilhados — um fallback legivel. */
.plano-preco{display:none}
.planos:has(#per-mensal:checked)    .plano-preco[data-per="mensal"],
.planos:has(#per-semestral:checked) .plano-preco[data-per="semestral"],
.planos:has(#per-anual:checked)     .plano-preco[data-per="anual"]{display:block}
@supports not selector(:has(*)){
  .plano-preco{display:block}
  .periodo{display:none}
}

/* ─────────────────────────────────────────────── tabelas e FAQ */
.tabela-scroll{overflow-x:auto; border:1px solid var(--border); border-radius:var(--r-lg);
  background:var(--branco)}
.tabela{font-size:.9375rem; margin:0}
.tabela caption{
  text-align:left; padding:.9rem 1rem; font-size:.8125rem; color:var(--soft);
  border-bottom:1px solid var(--border); background:var(--grayBg);
}
.tabela th,.tabela td{padding:.7rem 1rem; text-align:left; border-bottom:1px solid var(--border); vertical-align:top}
.tabela thead th{
  background:var(--grayBg); color:var(--soft); font-size:.6875rem; font-weight:800;
  text-transform:uppercase; letter-spacing:.12em; white-space:nowrap; border-bottom-width:1.5px;
}
/* O cabecalho carrega o valor de onde a divisao sai, para a conta nao depender de
   o leitor ter guardado o preco de cada periodo. */
.tabela thead th small{
  display:block; margin-top:.3em; font-size:.95em; font-weight:700;
  letter-spacing:0; text-transform:none; color:var(--navy);
  font-variant-numeric:tabular-nums;
}
/* A coluna do menor custo por coleta, marcada. E sempre a mesma em toda linha, entao
   destacar a coluna inteira diz mais do que destacar celula por celula. */
.tabela .col-melhor{background:rgba(94,233,237,.12)}
.tabela thead th.col-melhor{background:rgba(94,233,237,.22); color:var(--link-forte)}
.tabela thead th.col-melhor small{color:var(--link-forte)}
.tabela tbody td.col-melhor{font-weight:800; color:var(--navy)}
.tabela tbody tr:hover td.col-melhor{background:rgba(94,233,237,.18)}
.tabela tbody th[scope="row"]{font-weight:800; color:var(--navy); white-space:nowrap}
.tabela tbody tr:last-child td{border-bottom:0}
.tabela tbody tr:hover td{background:#FAFCFE}
.tabela .num{text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap}
.tabela tfoot td{font-weight:800; color:var(--navy); background:var(--grayBg); border-top:1.5px solid var(--border)}

.faq{display:grid; gap:10px}
.faq-grupo + .faq-grupo{margin-top:2.5rem}
.faq-item{
  background:var(--branco); border:1px solid var(--border); border-radius:var(--r-lg); overflow:hidden;
}
.faq-item[open]{border-color:var(--linha-forte); box-shadow:var(--sombra-cartao)}
.faq-item summary{
  cursor:pointer; padding:1rem 3rem 1rem 1.2rem; font-family:var(--fonte-titulo);
  font-weight:600; color:var(--navy);
  font-size:1rem; list-style:none; position:relative; min-height:56px; display:flex; align-items:center;
}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{
  content:''; position:absolute; right:1.25rem; top:calc(50% - 4px);
  width:9px; height:9px; border-right:2px solid var(--link); border-bottom:2px solid var(--link);
  transform:rotate(45deg); transition:transform .18s;
}
.faq-item[open] summary::after{transform:rotate(-135deg)}
.faq-item summary:hover{background:var(--grayBg)}
.faq-r{padding:0 1.2rem 1.2rem; color:var(--soft); font-size:.9375rem}
.faq-r > :last-child{margin-bottom:0}

/* ──────────────────────────────────────────── paginas legais */
.legal{max-width:var(--max-prosa)}
.legal h2{
  font-size:1.25rem; margin-top:2.6rem; padding-top:1.5rem; border-top:1px solid var(--border);
}
.legal h2:first-of-type{margin-top:1.5rem}
.legal h3{font-size:1.0625rem; margin-top:1.8rem}
.legal ol,.legal ul{padding-left:1.3rem; display:grid; gap:.5rem}
.legal p,.legal li{font-size:.9688rem}
.legal-meta{
  font-size:.8125rem; color:var(--soft); border-bottom:1px solid var(--border);
  padding-bottom:1.2rem; margin-bottom:1.5rem;
}
.legal-meta b{color:var(--navy)}
.sumario{
  background:var(--branco); border:1px solid var(--border); border-radius:var(--r-lg);
  padding:1.1rem 1.3rem; margin-bottom:2rem; box-shadow:var(--sombra-cartao);
}
.sumario h2{font-size:.6875rem; text-transform:uppercase; letter-spacing:.14em; color:var(--link);
  margin:0 0 .7rem; border:0; padding:0}
.sumario ol{margin:0; padding-left:1.2rem; display:grid; gap:.35rem; font-size:.875rem}

/* ───────────────────────────────────────────────────────── rodape */
.rodape{background:var(--grad-marca); color:var(--sobre-fraco); padding-block:3.25rem 2rem; font-size:.875rem}
.rodape-in{max-width:calc(var(--max) + 48px); margin-inline:auto; padding-inline:24px}
.rodape a{color:var(--sobre); text-decoration:none}
.rodape a:hover{color:#fff; text-decoration:underline}
.rodape-topo{margin-bottom:2.25rem}
.rodape-marca{display:flex; align-items:center; gap:10px; margin-bottom:.5rem}
.rodape-tagline{color:var(--sobre-fraco); font-size:.875rem; margin:0; max-width:42ch}
.rodape-cols{
  display:grid; gap:24px; grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  padding-bottom:2rem; margin-bottom:1.75rem; border-bottom:1px solid var(--navy-linha);
}
.rodape-col-titulo{
  font-size:.6875rem; font-weight:800; letter-spacing:.14em; text-transform:uppercase;
  color:var(--sobre-marca); margin:0 0 .8rem;
}
.rodape-col ul{list-style:none; padding:0; margin:0; display:grid; gap:.55rem}
.rodape-pt{
  font-size:.6875rem; font-weight:800; letter-spacing:.06em; color:var(--sobre);
  border:1px solid rgba(255,255,255,.45); border-radius:4px; padding:0 .3em;
  vertical-align:middle;
}
.rodape-empresa{display:grid; gap:.35rem; font-size:.8125rem; color:var(--sobre-fraco); margin-bottom:1.6rem}
.rodape-empresa p{margin:0}
.rodape-razao{color:#fff; font-weight:700}
.rodape-aviso{
  font-size:.8125rem; line-height:1.6; color:var(--sobre);
  background:rgba(255,255,255,.06); border:1px solid var(--navy-linha);
  border-radius:var(--r-md); padding:.9rem 1.1rem; margin-bottom:1.5rem;
}
.rodape-aviso strong{color:#fff}
.rodape-fim{
  display:flex; flex-wrap:wrap; gap:.4rem 1.2rem; justify-content:space-between;
  font-size:.75rem; color:var(--sobre-fraco); margin:0;
  padding-top:1.25rem; border-top:1px solid var(--navy-linha);
}
.rodape-nota{max-width:60ch}

/* ────────────────────────────────────────────────────── utilitarios */
.u-centro{text-align:center}
.u-mt{margin-top:1.9rem}
.u-mt-p{margin-top:1.1rem}

.u-topo-0{margin-top:0}
.sem-quebra{white-space:nowrap}
.num-tab{font-variant-numeric:tabular-nums}
.empilha{display:grid; gap:1.2rem}

/* ─────────────────────────────────────── alvos de toque e tabelas largas
   Link isolado e alvo de verdade: seta de "leia mais", pilula de atalho, item
   de indice, e-mail do rodape. Link dentro de paragrafo corrido fica de fora —
   ali o alvo e a linha, nao o link.

   Os 44px valem em toda largura para o que ja tem folga (setas, pilulas, abas)
   e, nas listas densas, so onde o ponteiro e grosso: no rato os 18px ja sao
   confortaveis e esticar a lista inteira so afastaria o conteudo. */
.link-seta{min-height:44px; padding-block:.35rem}
.pag-home .link-seta{display:inline-flex; align-items:center; min-height:44px; padding-block:.35rem}

/* A pilula era o <li> e o link era inline dentro dela: 45% da area visivel
   respondia ao toque. O padding e o fundo passam para o proprio <a>. */
.tag:has(> a){padding:0; background:none; border:0}
.tag > a{
  display:flex; align-items:center; min-height:44px; padding:.34em .9em;
  background:var(--branco); border:1px solid var(--border); border-radius:var(--r-pill);
  color:var(--link-forte); text-decoration:none; font-weight:700;
}
.tag > a:hover{border-color:var(--teal); color:var(--link-forte)}
.sec-escura .tag > a{background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.2); color:var(--sobre)}

@media (pointer:coarse){
  .rodape-col ul a,.rodape-contato a,.sumario ol a{display:inline-flex; align-items:center; min-height:44px}
  .rodape-col ul{gap:0}
  .sumario ol{gap:0}
}

/* A tabela larga rola de lado. Sem tabindex nao da para rola-la pelo teclado
   (axe: scrollable-region-focusable, WCAG 2.1.1) — o gerador poe tabindex,
   role e o rotulo vindo do <caption>.

   A parte visual e uma barra de rolagem de verdade, sempre a vista. A barra
   sobreposta do sistema tem 2px e some sozinha: no celular nada indicava que
   ate 61% da tabela estava fora da tela. A primeira tentativa foi uma sombra
   de rolagem pintada no fundo do contenedor, e ela custava contraste — o texto
   das celulas caia para 3,6:1 em cima dela. A barra nao encosta no texto. */
.tabela-scroll{
  scrollbar-width:thin;
  scrollbar-color:var(--sobre-fraco) var(--grayBg);
}
.tabela-scroll::-webkit-scrollbar{height:10px}
.tabela-scroll::-webkit-scrollbar-track{background:var(--grayBg)}
.tabela-scroll::-webkit-scrollbar-thumb{background:var(--sobre-fraco); border-radius:10px}
.tabela-scroll::-webkit-scrollbar-thumb:hover{background:var(--soft)}

@media (max-width:640px){
  body{font-size:16px}
  /* A assinatura da marca sai a 7,5px no celular — abaixo do legivel. A home ja
     a escondia; agora as outras 26 fazem o mesmo. */
  .logo-txt small{display:none}
  .wrap{padding-inline:16px}
  .rodape-in{padding-inline:16px}
  .escala{grid-template-columns:repeat(5,1fr)}
  .acoes .btn{width:100%}
  .rodape-fim{flex-direction:column}
}

/* ─────────────────────────────────────────── preferencias e midia */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important; animation-iteration-count:1!important;
    transition-duration:.01ms!important; scroll-behavior:auto!important}
}
@media (prefers-reduced-motion:no-preference){
  html{scroll-behavior:smooth}
}
:target{scroll-margin-top:88px}

@media (forced-colors:active){
  .cartao,.mock,.plano-card,.faq-item,.aviso{border:1px solid CanvasText}
  /* Os componentes proprios da home so se separavam do fundo por cor, e em
     alto contraste o fundo e substituido. Sem contorno eles somem. */
  .card,.plano,.comp-card,.box-navy,.perguntas li,.abas-op,.secao-card,.tabela-scroll{border:1px solid CanvasText}
  /* Aqui a cor da faixa E a informacao (a nota de 1 a 9), entao ela se mantem. */
  .chip,.nt,.stat-ico,.regua-trilho .c,.tl-ico{border:1px solid CanvasText; forced-color-adjust:none}
  .btn{border:1px solid ButtonText}
  .escala-cel,.mock-chip{border:1px solid CanvasText}
  .ico{stroke:CanvasText}
}

@media print{
  .topo,.rodape-cols,.pular-link,.menu-botao,.idiomas,.acoes,.btn{display:none!important}
  body{font-size:11pt; background:#fff}
  .hero,.sec-escura,.rodape,.destaque{background:#fff!important; color:#000}
  .hero h1,.sec-escura h2,.sec-escura h3,.destaque h2,.destaque h3{color:#000}
  .hero::before,.hero::after{display:none}
  .cartao,.faq-item,.mock,.plano-card{break-inside:avoid; box-shadow:none}
  .faq-item > .faq-r{display:block!important}
  a[href^="/"]::after{content:" (biovoxis.com" attr(href) ")"; font-size:9pt; color:#555}
}

/* ══════════════════════════════════════════════════════════════════════
   HOME — a pagina de entrada, portada da referencia "biovoxis.netlify.app".

   Tudo aqui esta escopado em .pag-home, que o build ja emite no <body>. Sem
   isso, as regras de elemento da referencia (body, h1-h4, p, ul, a) e as
   classes que colidem com as do site (.sec, .btn, .eyebrow, .ico, .num,
   .destaque, .grade, .faq, .hero) reescreveriam as outras 26 paginas.

   O :root da referencia virou .pag-home, e depois encolheu: cor, fonte, raio e
   sombra vem do :root do site, porque header, rodape e botao sao componentes
   compartilhados e nao podem mudar de forma de uma pagina para outra. Sobram
   em .pag-home a regua de nove, a agua de fundo, o halo, o gradiente do rodape
   e o respiro de secao — o que so existe aqui.
   ══════════════════════════════════════════════════════════════════════ */
/* =========================================================
   BIOVOXIS · Página de referência da Home
   Tokens e regras conforme KV-HOME-BIOVOXIS.md (Parte 1)
   ========================================================= */

/* So o que e da home. Cor, fonte, raio e sombra vem do :root — foram 14
   redefinicoes identicas, dois apelidos (--borda era --border, --teal-escuro
   era --link) e sete divergencias que faziam o mesmo botao do cabecalho mudar
   de forma entre /planos e a home. */
.pag-home{
  /* a regua de nove */
  --baixo:#8FA8F5;
  --equilibrio:#7FD9C4;
  --alto:#F6C766;
  /* superficie e brilho proprios */
  --agua:#EAF8F9;
  --grad-rodape:linear-gradient(135deg,#071229 0%,#10306E 100%);
  --halo:radial-gradient(circle,rgba(31,197,201,.35) 0%,rgba(31,197,201,0) 68%);
  /* respiro entre secoes, que o responsivo aperta */
  --sec-pad:112px;
}

body.pag-home{margin:0;font-family:var(--fonte);font-size:18px;line-height:1.65;color:var(--text);background:var(--branco);overflow-x:hidden}
/* As regras de elemento da referencia ficam com especificidade ZERO por
   :where(). Escopadas cru, elas eram (0,1,1) e venciam .btn-primario,
   .rodape-col-titulo e .destaque, que sao (0,1,0) — foi assim que o botao
   do topo ficou teal sobre teal e os titulos do rodape, navy sobre navy. */
:where(.pag-home) :where(img){max-width:100%;display:block}
:where(.pag-home) :where(a){color:var(--link)}
:where(.pag-home) :where(h1,h2,h3,h4){font-family:var(--fonte-titulo);color:var(--navy);margin:0;line-height:1.18;letter-spacing:-.01em}
:where(.pag-home) :where(p){margin:0}
:where(.pag-home) :where(ul,ol){margin:0;padding:0;list-style:none}
.pag-home .ico{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}

.pag-home .container{width:100%;max-width:calc(var(--max) + 48px);margin:0 auto;padding:0 24px}
.pag-home .sec{padding:var(--sec-pad) 0;position:relative}
.pag-home .sec-agua{background:var(--agua)}
.pag-home .sec-page{background:var(--page)}

 /* ---------- Tipografia base ---------- */
.pag-home .eyebrow{font-weight:700;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--link);margin-bottom:14px}
.pag-home h1{font-size:clamp(36px,5vw,56px);font-weight:700;line-height:1.12}
.pag-home h2{font-size:clamp(28px,3.4vw,40px);font-weight:700;max-width:22ch}
.pag-home h3{font-size:19px;font-weight:600;margin-bottom:8px}
.pag-home .hl{color:var(--link);display:block}
.pag-home .corpo{max-width:62ch;margin-top:18px;color:var(--text)}
.pag-home .lead{font-size:20px;margin-top:22px;max-width:52ch}
.pag-home .apoio{font-weight:600;margin-top:14px;max-width:52ch;font-size:17px}
.pag-home .micro{font-size:15px;color:var(--soft);margin-top:18px}
.pag-home .nota{font-size:14px;color:var(--soft);margin-top:18px}
.pag-home .fecho{font-family:var(--fonte-titulo);font-weight:600;font-size:20px;color:var(--link);margin-top:28px}
/* Colisao de nome: no site .destaque e uma CAIXA escura; na home e uma LINHA de
   texto de fecho. Aqui a caixa e desfeita, senao o texto navy da home cai sobre o
   fundo navy/violeta da caixa do site — foi o que acontecia, em 1,6:1. */
/* ── colisao de nomes: superficie escura na folha base, clara na home ──
   Toda regra da base que pinta texto claro por assumir fundo escuro precisa ser
   desfeita aqui, senao o texto some. Cada seletor abaixo existe porque um
   elemento real da home estava abaixo do minimo de contraste. */
.pag-home .hero h1,
.pag-home .destaque h2,
.pag-home .destaque h3{color:var(--navy)}
.pag-home .hero .eyebrow,
.pag-home .destaque .eyebrow{color:var(--link)}
.pag-home .hero .hl,
.pag-home .destaque .hl,
.pag-home .banner .hl,
.pag-home .cta-final .hl{color:var(--link-forte)}
.pag-home .destaque a{color:var(--link-forte)}

.pag-home .destaque{
  font-family:var(--fonte-titulo);font-weight:600;font-size:22px;color:var(--navy);
  margin-top:20px;line-height:1.35;
  background:none;padding:0;border-radius:0;
}
.pag-home .destaque .hl{display:inline}
.pag-home .centro{text-align:center;margin-left:auto;margin-right:auto}
.pag-home .sec-head{margin-bottom:48px}
.pag-home .sec-head.centro h2,.pag-home .sec-head.centro .corpo{margin-left:auto;margin-right:auto}
.pag-home .sec-foot{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-top:40px}
.pag-home .sec-foot .fecho{margin-top:0}

 /* ---------- Botões ---------- */
.pag-home .btns{display:flex;gap:14px;flex-wrap:wrap;margin-top:32px}
.pag-home .btns.centro{justify-content:center}
.pag-home main .btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:15px 26px;border-radius:var(--r-pill);font-weight:700;font-size:16px;text-decoration:none;transition:transform .2s ease,box-shadow .2s ease,background .2s ease;border:1.5px solid transparent;line-height:1}
.pag-home main .btn .ico{width:18px;height:18px}
/* Branco sobre --grad-acao da 2,3:1. A tinta escura, a mesma do .btn-primario
   do site, da 5,53:1 na pior ponta do gradiente. */
.pag-home main .btn-prim{background:var(--grad-acao);color:#041F21;box-shadow:var(--brilho-acao)}
.pag-home main .btn-prim:hover{transform:translateY(-2px);box-shadow:0 16px 30px -8px rgba(31,197,201,.6)}
.pag-home main .btn-sec{background:#fff;color:var(--link);border-color:var(--teal)}
.pag-home main .btn-sec:hover{background:var(--agua)}

.pag-home main .btn-bloco{width:100%;color:var(--tinta);padding:18px}
/* Turquesa da 1,87:1 sobre os fundos claros da home. O teal de texto da 5,10:1;
   sobre o rodape escuro a regra de baixo devolve a turquesa. */
.pag-home .btn:focus-visible,.pag-home a:focus-visible,.pag-home button:focus-visible,.pag-home summary:focus-visible{outline:3px solid var(--link);outline-offset:3px}
.pag-home .rodape :focus-visible,.pag-home .cta-final :focus-visible{outline-color:var(--teal)}

 /* ---------- Listas ---------- */
.pag-home .checks{margin-top:22px;display:grid;gap:12px}
.pag-home .checks li{display:flex;gap:12px;align-items:flex-start}
.pag-home .checks .ico{width:22px;height:22px;padding:4px;border-radius:50%;background:var(--agua);color:var(--link);stroke-width:2.4;margin-top:3px}
.pag-home .sec-agua .checks .ico{background:#fff}
.pag-home .checks-2{grid-template-columns:1fr 1fr;gap:10px 18px;font-size:16px}
.pag-home .lista-forte{margin-top:26px;display:grid;gap:18px}
.pag-home .lista-forte li{display:flex;gap:14px;font-size:17px}
.pag-home .lista-forte .ico{width:26px;height:26px;padding:5px;border-radius:50%;background:var(--agua);color:var(--link);stroke-width:2.4;margin-top:2px}
.pag-home .lista-forte b{color:var(--navy)}

 /* ---------- Cards ---------- */
.pag-home .card{background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);padding:28px;box-shadow:var(--sombra-cartao);transition:transform .25s ease,box-shadow .25s ease;position:relative}
.pag-home .card:hover{transform:translateY(-4px);box-shadow:var(--sombra-media)}
.pag-home .card p{font-size:16px;line-height:1.6;color:var(--text)}
.pag-home .card-ico{display:inline-grid;place-items:center;width:48px;height:48px;border-radius:50%;background:var(--agua);color:var(--link);margin-bottom:16px}
.pag-home .sec-agua .card-ico{background:var(--agua)}
.pag-home .grid-2,.pag-home .grid-3,.pag-home .grid-4{display:grid;gap:24px}
.pag-home .grid-3{grid-template-columns:repeat(3,1fr)}
.pag-home .grid-2{grid-template-columns:repeat(2,1fr);margin-top:24px}
.pag-home .grid-4{grid-template-columns:repeat(4,1fr)}
.pag-home .card-h{display:flex;gap:18px;align-items:flex-start}
.pag-home .card-h .card-ico{margin-bottom:0}
.pag-home .opc{font-family:var(--fonte);font-size:12px;font-weight:700;color:var(--link);background:var(--agua);padding:3px 8px;border-radius:var(--r-pill);vertical-align:middle;margin-left:6px}

.pag-home .duo{display:grid;grid-template-columns:1.05fr .95fr;gap:64px;align-items:center}

.pag-home .halo{position:absolute;inset:-10%;background:var(--halo);z-index:0;pointer-events:none}
/* O halo e 10% maior que o pai de proposito, e no celular isso passa da viewport.
   `overflow-x:hidden` no <body> nao segura: quem vira container de rolagem e o
   <html>. `clip` corta sem criar container de rolagem, entao o halo fica decorativo
   e a pagina para de rolar de lado. */
.pag-home .sec,.pag-home .cta-final{overflow-x:clip}

 /* ---------- Selo protótipo ---------- */

 /* =========================================================
   00 · HEADER
   ========================================================= */
.pag-home .topo{position:fixed;inset:0 0 auto 0;z-index:50;transition:background .3s ease,box-shadow .3s ease,backdrop-filter .3s ease}
/* Antes de rolar o cabecalho e transparente por desenho, e os itens do topo
   caiam sobre a parte clara da foto a 2,8:1. Um veu proprio, que some assim que
   .rolou entra, devolve o contraste sem tapar a foto. */
.pag-home .topo::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,.92),rgba(255,255,255,.66));transition:opacity .3s ease}
.pag-home .topo.rolou::before{opacity:0}
.pag-home .topo.rolou{background:rgba(255,255,255,.86);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 6px 24px -12px rgba(16,48,110,.25)}
.pag-home .topo-in{display:flex;align-items:center;justify-content:space-between;min-height:78px}
.pag-home .logo{display:flex;align-items:center;gap:10px;text-decoration:none}
.pag-home .logo-txt{display:flex;flex-direction:column;line-height:1}
.pag-home .logo-txt b{font-family:var(--fonte-titulo);font-size:22px;letter-spacing:.04em;color:var(--navy);font-weight:600}
.pag-home .logo-txt small{font-size:10px;letter-spacing:.08em;color:var(--link);font-weight:700;margin-top:4px}


 /* =========================================================
   01 · HERO
   ========================================================= */
.pag-home .hero{position:relative;min-height:min(88vh,820px);display:flex;align-items:center;overflow:hidden;background:#F7FBFD;color:var(--text)}
/* O .hero do site e escuro e pinta os dois halos. Na home ele e claro e tem foto. */
.pag-home .hero::before,.pag-home .hero::after{display:none}
.pag-home .hero-media{position:absolute;inset:0;z-index:0}
.pag-home .hero-img{width:100%;height:112%;object-fit:cover;object-position:70% center}
/* will-change promove a camada em toda visita. So vale a pena onde o parallax
   roda de fato: acima de 640px e com movimento permitido. */
@media (min-width:641px) and (prefers-reduced-motion:no-preference){
  .pag-home .hero-img{will-change:transform}
}
/* A coluna de texto tem 580px e termina perto de 52% da largura; o veu precisa
   continuar opaco ate depois disso, senao o fim de cada linha cai sobre a foto. */
.pag-home .hero-media::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.96) 0%,rgba(255,255,255,.92) 54%,rgba(255,255,255,0) 82%)}
.pag-home .hero-in{position:relative;z-index:1;padding-top:110px;padding-bottom:70px}
.pag-home .hero-txt{max-width:580px}

 /* =========================================================
   02 · STATS
   ========================================================= */
.pag-home .stats{background:#fff;border-bottom:1px solid var(--border);position:relative;z-index:2}
.pag-home .stats-in{display:grid;grid-template-columns:repeat(6,1fr);gap:20px;padding-top:30px;padding-bottom:30px}
.pag-home .stat{display:flex;gap:12px;align-items:center}
.pag-home .stat-ico{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--agua);color:var(--link);flex-shrink:0}
.pag-home .stat b{display:block;font-family:var(--fonte-titulo);color:var(--navy);font-size:19px;line-height:1.1;white-space:nowrap}
.pag-home .stat small{display:block;font-size:13px;color:var(--soft);line-height:1.35;margin-top:3px}

 /* =========================================================
   03 · DESAFIO
   ========================================================= */
.pag-home .desafio-vis{position:relative;display:flex;justify-content:flex-end;padding:20px 0}

 /* Arte do sistema (recriação do card do site atual) */
.pag-home .mock{position:relative;z-index:1;margin:0;width:100%;max-width:410px;background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;box-shadow:0 30px 60px -28px rgba(16,48,110,.45);font-size:13px;line-height:1.45;color:var(--text)}
.pag-home .mock .ico{width:16px;height:16px}
.pag-home .mock-topo{display:flex;align-items:center;gap:10px;padding:16px 20px;background:linear-gradient(110deg,#0A1B3D 0%,#10306E 80%,#24379B 100%);color:#fff;font-family:var(--fonte-titulo);font-weight:600;font-size:14px}
.pag-home .mock-topo .ico{color:var(--teal-claro)}
.pag-home .mock-corpo{padding:12px;display:grid;gap:12px;background:#F7F9FC}
.pag-home .mock-bloco{background:#fff;border:1px solid var(--border);border-radius:12px;overflow:hidden}
.pag-home .mock-cab{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 14px;background:linear-gradient(110deg,#0A1B3D 0%,#10306E 80%,#24379B 100%);color:#fff;font-weight:700;font-size:12.5px}
.pag-home .mock-cab span{display:flex;align-items:center;gap:8px}
.pag-home .mock-cab .ico{color:var(--teal-claro);width:14px;height:14px}
.pag-home .mock-cab em{font-style:normal;font-weight:600;color:#9FC0E8;font-size:12px}
.pag-home .mock-lista li{display:flex;align-items:center;gap:12px;padding:8px 14px;border-top:1px solid #EDF1F7}
.pag-home .mock-lista li:first-child{border-top:0}
.pag-home .nt{display:grid;place-items:center;width:24px;height:24px;border-radius:6px;font-family:var(--fonte-titulo);font-size:12px;font-weight:700;color:var(--tinta);flex-shrink:0}
.pag-home .n5,.pag-home .n6{background:#7FD9C4}.pag-home .n7{background:#F6C766}.pag-home .n3{background:#8FA8F5}
.pag-home .n8{background:#E8923A;color:#2E1B02}.pag-home .n2{background:#4E63D9;color:#fff}
.pag-home .mock-txt{padding:12px 14px;background:#F4F8FD;color:var(--soft);font-size:12.5px}
.pag-home .mock figcaption{padding:10px 16px;font-size:11.5px;color:var(--soft);border-top:1px solid #EDF1F7;background:#fff}

 /* Perguntas flutuantes — menores,
.pag-home na frente do mock */
.pag-home .perguntas{position:absolute;z-index:3;left:0;top:50%;transform:translateY(-50%);display:grid;gap:10px}
.pag-home .perguntas li{display:flex;align-items:center;gap:9px;background:rgba(255,255,255,.95);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:12px;padding:9px 14px 9px 10px;font-family:var(--fonte-titulo);font-weight:600;font-size:14px;color:var(--navy);box-shadow:0 14px 30px -12px rgba(16,48,110,.35);width:max-content}
.pag-home .perguntas li:nth-child(2){margin-left:40px}
.pag-home .perguntas li:nth-child(3){margin-left:12px}
/* Branco sobre --grad-acao da 2,12:1. A mesma tinta escura dos botoes resolve. */
.pag-home .perguntas span{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--grad-acao);color:#041F21;font-size:12px;font-weight:700;flex-shrink:0}@keyframes flutua{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
.pag-home .perguntas.vivas li{animation:flutua 5s ease-in-out infinite}
.pag-home .perguntas.vivas li:nth-child(2){animation-delay:-1.6s}
.pag-home .perguntas.vivas li:nth-child(3){animation-delay:-3.2s}

 /* =========================================================
   04 · NOVA CAMADA
   ========================================================= */
.pag-home .camada-vis{position:relative;display:flex;flex-direction:column;align-items:center}
.pag-home .icone{position:relative;z-index:1;width:100%;max-width:420px}
.pag-home .mini-nums{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px;width:100%;max-width:440px}
.pag-home .mini-nums li{background:#fff;border:1px solid var(--border);border-radius:var(--r-md);padding:12px 14px;font-size:14px;color:var(--soft);line-height:1.35}
.pag-home .mini-nums b{display:block;font-family:var(--fonte-titulo);color:var(--navy);font-size:18px}@keyframes pulso{0%,100%{transform:scale(1)}50%{transform:scale(1.03)}}
.pag-home .pulse{animation:pulso 5s ease-in-out infinite}

 /* =========================================================
   05 · COMO FUNCIONA
   ========================================================= */
.pag-home .passos{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;counter-reset:p}
.pag-home .passos em{position:absolute;top:24px;right:26px;font-style:normal;font-family:var(--fonte-titulo);font-size:40px;font-weight:700;color:#4F969B;line-height:1;-webkit-text-stroke:0}
.pag-home .card-seu{border:1.5px solid var(--teal);background:linear-gradient(180deg,#fff 0%,#F4FCFC 100%)}
.pag-home .selo-seu{position:absolute;top:-12px;left:24px;background:var(--navy);color:#fff;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:5px 10px;border-radius:var(--r-pill)}

 /* =========================================================
   06 · DIFERENCIAL (A2 + A3)
   ========================================================= */
.pag-home .comp-card{background:#fff;border:1px solid var(--border);border-radius:22px;padding:28px;box-shadow:var(--sombra-media);position:relative}
.pag-home .comp-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:22px}
.pag-home .comp-head span{font-family:var(--fonte-titulo);font-weight:600;color:var(--navy);font-size:17px}
.pag-home .comp-head small{font-size:13px;color:var(--soft);font-weight:700;background:var(--page);padding:4px 10px;border-radius:var(--r-pill)}
.pag-home .comp-row{margin-bottom:22px;position:relative}
.pag-home .comp-lbl{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-weight:600;font-size:15px}
.pag-home .trilho{position:relative;height:14px;border-radius:var(--r-pill);background:var(--page);overflow:hidden}
.pag-home .trilho i{position:absolute;inset:0;border-radius:var(--r-pill);transform-origin:left center;transform:scaleX(calc(var(--v) / 9))}
.pag-home .bar-ant{background:repeating-linear-gradient(45deg,#D5DEEA 0 6px,#E3EAF3 6px 12px)}
.pag-home .bar-atu{background:var(--grad-acao);top:3px !important;bottom:3px !important}
.pag-home .comp-leg{display:flex;justify-content:space-between;font-size:13px;color:var(--soft);margin-top:8px}
.pag-home .comp-leg b{color:var(--navy)}
.pag-home .chip{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:8px;font-family:var(--fonte-titulo);font-weight:700;font-size:15px;color:var(--tinta);transition:background .3s ease}
.pag-home .chip-low{background:var(--baixo)}
.pag-home .chip-mid{background:var(--equilibrio)}
.pag-home .chip-high{background:var(--alto)}
.pag-home .tag-margem{display:inline-block;margin-top:8px;font-size:12px;font-weight:700;color:#6B5520;background:#FFF5DC;border:1px solid #F3DFA6;padding:4px 10px;border-radius:var(--r-pill)}
.pag-home .linha-graf{margin-top:12px;border-top:1px dashed var(--border);padding-top:16px}
/* A geometria interna do grafico passa ate 486px da borda da viewport. Sem
   este overflow ela so nao gera rolagem lateral porque o body recorta — e uma
   dependencia invisivel entre dois arquivos distantes. Aqui ele se resolve. */
.pag-home .linha-graf svg{width:100%;height:170px;overflow:hidden}
.pag-home .grade path{stroke:#EDF1F7;stroke-width:1}
.pag-home .linha{fill:none;stroke:var(--teal);stroke-width:4;stroke-linecap:round}
.pag-home .pt{fill:#fff;stroke:var(--link);stroke-width:3;transform-box:fill-box;transform-origin:center}
.pag-home .rotulos{display:flex;justify-content:space-between;font-size:13px;font-weight:700;color:var(--soft);padding:6px 0 0}
.pag-home .legenda{font-size:13px;color:var(--soft);margin-top:14px}

 /* =========================================================
   07 · RELATÓRIO (A5)
   ========================================================= */
.pag-home .laptop-wrap{max-width:900px;margin:0 auto 56px;position:relative}
.pag-home .laptop-wrap::before{content:"";position:absolute;inset:10% 5% -5%;background:var(--halo);z-index:0}
.pag-home .laptop{position:relative;z-index:1;width:100%;filter:drop-shadow(0 30px 40px rgba(16,48,110,.2))}
.pag-home .secoes{display:grid;grid-template-columns:repeat(5,1fr);gap:18px}
.pag-home .secao-card{background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);padding:22px 20px 26px;position:relative;overflow:hidden;box-shadow:var(--sombra-cartao)}
.pag-home .secao-card .num{display:block;font-family:var(--fonte-titulo);font-size:32px;color:var(--link);line-height:1;margin-bottom:12px}
.pag-home .secao-card h3{font-size:16px}
.pag-home .secao-card p{font-size:14px;line-height:1.5;color:var(--soft)}
.pag-home .mini-bar{position:absolute;left:0;right:0;bottom:0;height:5px;background:var(--grad-acao);transform-origin:left;transform:scaleX(var(--p))}

 /* =========================================================
   08 · RÉGUA (A4)
   ========================================================= */
.pag-home .regua{max-width:860px;margin:0 auto 40px}
.pag-home .regua-trilho{position:relative;display:grid;grid-template-columns:repeat(9,1fr);gap:8px;padding:34px 0 0}
.pag-home .regua-trilho .c{position:relative;z-index:1;display:grid;place-items:center;height:64px;border-radius:12px;font-family:var(--fonte-titulo);font-weight:700;font-size:22px;color:var(--tinta)}
.pag-home .c.low{background:#DCE5FD}.pag-home .c.mid{background:#D3F3EA}.pag-home .c.high{background:#FDEFC8}
.pag-home .c.c5{background:var(--equilibrio)}
.pag-home .faixa-fisio{position:absolute;z-index:0;top:26px;bottom:-8px;left:calc(33.333% - 2px);width:calc(33.333% + 4px);border-radius:16px;background:rgba(31,197,201,.14);box-shadow:0 0 0 2px rgba(31,197,201,.45),0 0 30px rgba(31,197,201,.35)}
.pag-home .marcador{position:absolute;z-index:2;top:0;left:calc(50% - 22px);width:44px;height:26px;display:grid;place-items:center}
.pag-home .marcador em{font-style:normal;display:grid;place-items:center;width:44px;height:26px;border-radius:var(--r-pill);background:var(--navy);color:#fff;font-weight:800;font-size:13px;box-shadow:0 0 0 6px rgba(31,197,201,.25)}
.pag-home .marcador::after{content:"";position:absolute;bottom:-7px;left:50%;margin-left:-6px;border:6px solid transparent;border-top-color:var(--navy);border-bottom:0}
.pag-home .regua-rot{display:grid;grid-template-columns:repeat(3,1fr);text-align:center;margin-top:16px;font-weight:700;font-size:15px;color:var(--soft);transition:color .3s}
.pag-home .regua-rot span{transition:color .3s ease}
.pag-home .regua-rot span.on[data-faixa="low"]{color:#3E63D6}
.pag-home .regua-rot span.on[data-faixa="mid"]{color:var(--link)}
.pag-home .regua-rot span.on[data-faixa="high"]{color:#A77A08}
.pag-home .regua-eq{text-align:center;margin-top:16px;font-family:var(--fonte-titulo);font-weight:600;color:var(--link)}
.pag-home .box-nota{background:var(--agua);border-left:4px solid var(--teal);border-radius:var(--r-md);padding:24px 28px;max-width:760px}
.pag-home .box-nota p{font-size:17px}

 /* =========================================================
   10 · TIMELINE (A6)
   ========================================================= */
.pag-home .timeline{position:relative;display:grid;grid-template-columns:repeat(5,1fr);gap:24px}
.pag-home .tl-trilho{position:absolute;top:31px;left:10%;right:10%;height:3px;background:var(--border);border-radius:3px;z-index:0}
.pag-home .tl-fill{position:absolute;inset:0;background:var(--grad-acao);border-radius:3px;transform-origin:left center}
.pag-home .tl-step{position:relative;z-index:1;text-align:center}
.pag-home .tl-ico{display:grid;place-items:center;width:64px;height:64px;margin:0 auto 18px;border-radius:50%;background:var(--grad-acao);color:#fff;box-shadow:var(--brilho-acao);border:3px solid #fff;transition:background .3s,color .3s,box-shadow .3s}
.pag-home .tl-step.off .tl-ico{background:#fff;color:var(--link);box-shadow:0 0 0 2px var(--border)}
.pag-home .tl-step h3{font-size:18px}
.pag-home .tl-step p{font-size:15px;color:var(--soft);line-height:1.55}
.pag-home .tl-mini{display:inline-flex;align-items:flex-end;gap:5px;height:34px;margin-top:12px}
.pag-home .tl-mini i{display:block;width:12px;height:34px;border-radius:4px;transform-origin:bottom;transform:scaleY(var(--h))}
.pag-home .tl-mini i:first-child{background:#D5DEEA}.pag-home .tl-mini i:last-child{background:var(--grad-acao)}

 /* =========================================================
   10b · BANNER / 19 · CTA FINAL (back01)
   ========================================================= */
.pag-home .banner,.pag-home .cta-final{background:#F4FBFC url("/img/back01.webp") center bottom/cover no-repeat;position:relative}
.pag-home .banner::before{content:"";position:absolute;inset:0;pointer-events:none;background:rgba(255,255,255,.7)}
.pag-home .banner > *{position:relative;z-index:1}
.pag-home .banner{padding:120px 0}
.pag-home .banner-in{text-align:center;max-width:820px}
.pag-home .banner h2{margin:0 auto;max-width:none}
.pag-home .banner p{margin:18px auto 0;max-width:56ch}
.pag-home .banner .btn{margin-top:30px}
/* A foto de fundo leva a faixa a tons de agua onde o texto de apoio caia a
   3,3:1. Um veu branco por cima da imagem, e o texto um passo mais escuro. */
.pag-home .cta-final::before{content:"";position:absolute;inset:0;pointer-events:none;background:rgba(255,255,255,.7)}
.pag-home .cta-final > *{position:relative;z-index:1}
.pag-home .cta-final .micro{color:var(--text)}
.pag-home .cta-final a:not(.btn){color:var(--link-forte)}
.pag-home .cta-final{padding:110px 0}
.pag-home .cta-vis{position:relative;display:flex;justify-content:center}
.pag-home .cta-vis .icone{max-width:360px}

 /* =========================================================
   12 · IA
   ========================================================= */
.pag-home .duo-ia{align-items:start}
.pag-home .rotulo-chips{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--soft);margin-top:8px}
.pag-home .duo-ia .chips{margin-top:14px}
.pag-home .chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}
.pag-home .chips li{font-size:13px;font-weight:600;color:var(--navy);background:var(--page);border:1px solid var(--border);padding:6px 12px;border-radius:var(--r-pill)}
.pag-home .chips li:nth-last-child(-n+2){background:var(--agua);border-color:#BFE9EA;color:var(--link)}
.pag-home .box-ia{margin-top:26px;background:var(--agua);border-radius:var(--r-lg);padding:22px 24px}
.pag-home .box-ia>p{font-size:17px}
.pag-home .box-ia b{color:var(--navy)}

 /* =========================================================
   13 · TRANSPARÊNCIA (A7)
   ========================================================= */
.pag-home .tilt-wrap{position:relative;perspective:1400px}
.pag-home .tilt{transform-origin:center;will-change:transform}
.pag-home .tilt-sombra{display:block;height:24px;margin:-6px auto 0;width:78%;background:radial-gradient(ellipse at center,rgba(16,48,110,.28) 0%,rgba(16,48,110,0) 70%)}

 /* =========================================================
   14 · POSICIONAMENTO
   ========================================================= */
.pag-home #posicionamento{overflow:hidden;background:linear-gradient(180deg,#fff 0%,#F2FAFB 100%)}
.pag-home #posicionamento .container{position:relative;z-index:1}
.pag-home .pos-bg{position:absolute;inset:0;pointer-events:none;z-index:0}
.pag-home .pos-bg img{position:absolute;right:1%;bottom:-8%;height:125%;width:auto;max-width:none;opacity:.7;filter:saturate(1.1)}
.pag-home #posicionamento .box-navy{max-width:400px;justify-self:end}
.pag-home .pos-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#fff 0%,rgba(255,255,255,.96) 36%,rgba(255,255,255,.15) 50%,rgba(255,255,255,0) 62%)}
.pag-home #posicionamento .box-navy{background:linear-gradient(135deg,rgba(7,18,41,.9) 0%,rgba(16,48,110,.86) 100%);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(94,233,237,.25)}
.pag-home .box-navy{background:var(--grad-rodape);color:#E4EDFA;border-radius:22px;padding:40px 36px;box-shadow:var(--sombra-media)}
.pag-home .box-navy-ico{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:rgba(94,233,237,.14);color:var(--teal-claro);margin-bottom:20px}
.pag-home .box-navy-ico .ico{width:28px;height:28px}
.pag-home .box-navy p{font-family:var(--fonte-titulo);font-size:22px;line-height:1.4;margin-top:6px}
.pag-home .box-navy b{color:#fff}

 /* =========================================================
   15 · SEGURANÇA
   ========================================================= */
.pag-home .lgpd{margin-top:32px}

 /* =========================================================
   16 · PLANOS
   ========================================================= */
.pag-home .duo-planos{align-items:start}
.pag-home .atalhos{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.pag-home .atalhos a{display:inline-block;font-size:14px;font-weight:600;color:var(--link-forte);background:#E9EEF5;padding:8px 14px;border-radius:var(--r-pill);text-underline-offset:3px}
.pag-home .atalhos a:hover{background:var(--agua)}
.pag-home .plano-wrap{max-width:620px;width:100%;justify-self:end}
.pag-home .plano{background:#fff;border:1px solid var(--teal);border-radius:var(--r-lg);padding:28px 30px;box-shadow:0 20px 50px -24px rgba(31,197,201,.55)}
.pag-home .plano>.eyebrow{margin-bottom:10px}
/* Troca de periodo sem uma linha de JavaScript, igual ao que /planos ja fazia:
   radios + :has(). Antes eram abas ARIA movidas por script, e sem JS o unico
   preco visivel era o anual — o mensal existia so num data-preco. Em motor sem
   :has() os tres precos aparecem empilhados, que e um fallback legivel. */
.pag-home .abas{border:0;margin:0 0 26px;padding:0;min-inline-size:0}
.pag-home .abas legend{padding:0;margin-bottom:10px;float:left;width:100%}
.pag-home .abas-op{display:inline-flex;background:#EDF1F7;border-radius:var(--r-pill);padding:5px;gap:2px;clear:both}
.pag-home .abas-op input{position:absolute;opacity:0;width:1px;height:1px}
.pag-home .abas-op label{font-size:15px;font-weight:600;color:var(--soft);border-radius:var(--r-pill);
  padding:10px 18px;min-height:44px;display:inline-flex;align-items:center;cursor:pointer;
  transition:background .2s,color .2s}
.pag-home .abas-op input:checked + label{background:var(--navy);color:#fff;font-weight:700}
.pag-home .abas-op input:focus-visible + label{outline:3px solid var(--link);outline-offset:3px}
.pag-home .preco-bloco{display:none}
.pag-home .plano:has(#hper-mensal:checked)    .preco-bloco[data-per="mensal"],
.pag-home .plano:has(#hper-semestral:checked) .preco-bloco[data-per="semestral"],
.pag-home .plano:has(#hper-anual:checked)     .preco-bloco[data-per="anual"]{display:block}
@supports not selector(:has(*)){
  .pag-home .preco-bloco{display:block}
  .pag-home .abas{display:none}
}
.pag-home .plano-nome{font-family:var(--fonte-titulo);font-weight:600;color:var(--navy);font-size:18px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pag-home .selo-navy{font-family:var(--fonte);font-size:12px;font-weight:800;background:var(--navy);color:#fff;padding:4px 10px;border-radius:var(--r-pill)}
.pag-home .preco{margin-top:12px;display:flex;align-items:baseline;gap:8px}
.pag-home .preco b{font-family:var(--fonte-titulo);font-size:44px;color:var(--navy);line-height:1;transition:opacity .15s ease}
.pag-home .preco span{color:var(--soft);font-weight:700}
.pag-home .preco-apoio{font-size:14px;color:var(--soft);margin-top:6px}
.pag-home .preco-cob{font-size:15px;color:var(--soft);margin-top:12px}
.pag-home .preco-cob b{color:var(--navy)}
.pag-home .selo-verde{display:inline-block;margin-top:12px;font-size:13px;font-weight:700;color:var(--green);background:#E3F6EF;border:1px solid #BFE8D8;padding:4px 12px;border-radius:var(--r-pill)}
.pag-home .selo-verde[hidden]{display:none}
.pag-home .plano .checks{margin:20px 0 22px;font-size:16px}
.pag-home .plano .checks .ico{background:transparent;padding:0;width:20px;height:20px}
.pag-home .letra-miuda{font-size:12.5px;line-height:1.55;color:var(--soft);margin-top:16px}
.pag-home .letra-miuda b{color:var(--text)}
.pag-home .link-seta{display:inline-block;margin-top:16px;font-weight:700;font-size:15px}

 /* =========================================================
   17 · CINCO
   ========================================================= */
.pag-home .cinco{display:grid;grid-template-columns:repeat(5,1fr);gap:18px}
.pag-home .cinco li{background:#fff;border-radius:var(--r-lg);padding:24px 20px;text-align:center;border:1px solid var(--border)}
.pag-home .cinco .card-ico{margin:0 auto 14px}
.pag-home .cinco h3{font-size:16px}
.pag-home .cinco p{font-size:14px;color:var(--soft);line-height:1.5}

 /* =========================================================
   18 · FAQ
   ========================================================= */
.pag-home .faq-in{max-width:880px}
.pag-home .faq{display:grid;gap:12px}
.pag-home .faq details{background:#fff;border:1px solid var(--border);border-radius:var(--r-md);padding:0 22px;transition:box-shadow .2s}
.pag-home .faq details[open]{box-shadow:var(--sombra-media);border-color:#CDEDEF}
.pag-home .faq summary{cursor:pointer;list-style:none;padding:20px 30px 20px 0;font-family:var(--fonte-titulo);font-weight:600;color:var(--navy);position:relative;font-size:17px}
.pag-home .faq summary::-webkit-details-marker{display:none}
.pag-home .faq summary::after{content:"+";position:absolute;right:0;top:50%;transform:translateY(-50%);font-size:24px;color:var(--link);font-weight:400}
.pag-home .faq details[open] summary::after{content:"–"}
.pag-home .faq details p{padding:0 0 20px;font-size:16px;color:var(--text)}

 /* =========================================================
   20 · RODAPÉ
   ========================================================= */
.pag-home .rodape{background:var(--grad-rodape);color:#C9D6EA;padding:72px 0 36px;font-size:15px}
.pag-home .rodape a{color:#E4EDFA;text-decoration:none}
.pag-home .rodape a:hover{color:var(--teal-claro)}
.pag-home .rodape-in{display:grid;grid-template-columns:1.1fr 1.4fr;gap:48px;padding-bottom:40px;border-bottom:1px solid rgba(255,255,255,.14)}
.pag-home .logo-claro .logo-txt b{color:#fff}
.pag-home .logo-claro .logo-txt small{color:var(--teal-claro)}
.pag-home .rodape-marca p{margin-top:16px;max-width:34ch}

.pag-home .rodape-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.pag-home .rodape-cols .rodape-col-titulo{color:#fff;font-size:14px;letter-spacing:.08em;text-transform:uppercase;margin-bottom:14px}
.pag-home .rodape-cols a{display:block;padding:5px 0}


 /* =========================================================
   Revelar ao rolar
   ========================================================= */
html.js body.pag-home .reveal{opacity:0;transform:translateY(16px);transition:opacity .7s ease,transform .7s ease}
html.js body.pag-home .reveal.visto{opacity:1;transform:none}

 /* =========================================================
   RESPONSIVO
   ========================================================= */
@media (max-width:1023px){
  .pag-home{--sec-pad:88px}
  
  .pag-home .stats-in{grid-template-columns:repeat(3,1fr)}
  .pag-home .duo{grid-template-columns:1fr;gap:48px}
  .pag-home .grid-4{grid-template-columns:repeat(2,1fr)}
  .pag-home .secoes{grid-template-columns:repeat(3,1fr)}
  .pag-home .cinco{grid-template-columns:repeat(3,1fr)}
  .pag-home .hero-media::after{background:linear-gradient(90deg,rgba(255,255,255,.95) 0%,rgba(255,255,255,.82) 50%,rgba(255,255,255,0) 78%)}
  .pag-home .plano-wrap{justify-self:start}
  .pag-home .desafio-vis{justify-content:flex-end;max-width:560px;width:100%;margin:0 auto}
}@media (max-width:760px){

  
  
  
  
  
  
  .pag-home .topo{background:rgba(255,255,255,.92);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
  /* A figura decorativa de fundo custa 134 KB e, nesta largura, o proprio veu
     branco do .pos-bg::after ja cobria quase toda ela. Aqui ela nao carrega. */
  .pag-home .pos-bg{display:none}

}@media (max-width:640px){

  .pag-home{--sec-pad:56px}
  body.pag-home{font-size:17px}
  .pag-home .topo-in{min-height:68px}
  
  .pag-home .logo-txt small{display:none}
  /* Hero: foto em cima, texto embaixo */
  /* O padding do .hero da folha base somava com o margin-top que libera o
     cabecalho fixo: sobravam 55px de faixa morta entre o topo e a foto, 7% da
     primeira tela. Aqui quem da o respiro e so o .hero-in. */
  .pag-home .hero{display:block;min-height:0;background:#fff;padding-block:0}
  .pag-home .hero-media{position:relative;height:62vw;margin-top:68px}
  .pag-home .hero-img{height:100%;object-position:78% center}
  .pag-home .hero-media::after{background:linear-gradient(0deg,#fff 0%,rgba(255,255,255,0) 30%)}
  .pag-home .hero-in{padding-top:8px;padding-bottom:48px}
  .pag-home .lead{font-size:18px}
  .pag-home .stats-in{grid-template-columns:repeat(2,1fr);gap:18px 12px}
  .pag-home .stat{flex-direction:column;align-items:flex-start;gap:8px}
  .pag-home .grid-3,.pag-home .grid-2,.pag-home .grid-4,.pag-home .passos{grid-template-columns:1fr}
  .pag-home .secoes{grid-template-columns:1fr 1fr}
  .pag-home .cinco{grid-template-columns:1fr}
  .pag-home .cinco li{display:grid;grid-template-columns:48px 1fr;gap:4px 14px;text-align:left}
  .pag-home .cinco .card-ico{margin:0;grid-row:span 2}
  .pag-home .checks-2{grid-template-columns:1fr}
  .pag-home .desafio-vis{flex-direction:column;align-items:center;padding:0}
  .pag-home .mock{max-width:100%}
  .pag-home .perguntas{position:relative;top:auto;transform:none;margin-top:-34px;justify-items:start;width:100%;padding-left:8px}
  .pag-home .perguntas li{font-size:13px}
  .pag-home .perguntas li:nth-child(2){margin-left:24px}
  .pag-home .perguntas li:nth-child(3){margin-left:6px}
  .pag-home .regua-trilho{gap:4px}
  .pag-home .regua-trilho .c{height:48px;font-size:17px;border-radius:9px}
   /* Timeline vertical */
  .pag-home .timeline{grid-template-columns:1fr;gap:28px;padding-left:0}
  .pag-home .tl-trilho{top:0;bottom:0;left:31px;right:auto;width:3px;height:auto}
  .pag-home .tl-fill{transform-origin:top center}
  .pag-home .tl-step{display:grid;grid-template-columns:64px 1fr;gap:0 18px;text-align:left}
  .pag-home .tl-ico{margin:0;grid-row:span 3}
  .pag-home .tl-mini{justify-self:start}
  
  .pag-home .box-navy{padding:30px 24px}
  .pag-home .pos-bg img{height:62%;right:-30%;bottom:-4%;top:auto;opacity:.8}
  .pag-home #posicionamento .box-navy{max-width:none;justify-self:stretch;background:linear-gradient(135deg,rgba(7,18,41,.82) 0%,rgba(16,48,110,.74) 100%)}
  .pag-home .pos-bg::after{background:linear-gradient(180deg,#fff 0%,rgba(255,255,255,.95) 42%,rgba(255,255,255,0) 64%)}
  .pag-home .box-navy p{font-size:19px}
  .pag-home .plano{padding:22px 20px}
  .pag-home .abas-op label{padding:9px 14px;font-size:14px}
  .pag-home .preco b{font-size:38px}
  .pag-home .rodape-in{grid-template-columns:1fr}
  .pag-home .rodape-cols{grid-template-columns:1fr 1fr}
  .pag-home .banner{padding:80px 0}
  .pag-home .cta-final{padding:80px 0}
  

}@media (prefers-reduced-motion:reduce){

  /* scroll-behavior mora no <html>; a folha base ja trata isso mais acima. */
  

  html.js body.pag-home .reveal{opacity:1;transform:none}

}

/* Os tres valores que a referencia passava por style= inline. Como classe de
   atributo o CSP fica satisfeito e o valor continua declarado ao lado do
   elemento, que era a vantagem do inline. */
.pag-home [data-v="3"]{--v:3}
.pag-home [data-v="5"]{--v:5}
.pag-home [data-v="6"]{--v:6}
.pag-home [data-v="7"]{--v:7}
.pag-home [data-p="100"]{--p:1}
.pag-home [data-p="085"]{--p:0.85}
.pag-home [data-p="074"]{--p:0.74}
.pag-home [data-p="060"]{--p:0.6}
.pag-home [data-p="039"]{--p:0.39}
.pag-home [data-p="015"]{--p:0.15}
.pag-home [data-p="007"]{--p:0.07}
.pag-home [data-h="80"]{--h:0.8}
.pag-home [data-h="45"]{--h:0.45}
