/* ElyonAlign · sistema visual do site · deriva do brand book v1.1 */
:root{
  --paper:#FFFFFF; --mist:#F5F9FD; --mist2:#EAF2FA; --line:#DDE8F3; --line2:#C6D8EA;
  --navy:#061F61; --deep:#082D75; --ocean:#064CA2; --bright:#0090E9; --blue:#0C99F5;
  --ice:#3FB9EB; --ice2:#73D0FC;
  /* o azul claro da marca da 3,05:1 sobre branco, abaixo do minimo legivel.
     Este e o mesmo azul um tom abaixo, para texto pequeno e para botao. */
  --blue-txt:#0A72BE;
  --ink:#12233F; --muted:#5B7290; --muted2:#8EA2BA; --graphite:#4F4F4F;
  --ok:#0E8C6A; --warn:#B4741A;
  --maxw:1180px; --nav-h:72px;
  --grad:linear-gradient(120deg,var(--deep),var(--ocean) 45%,var(--bright));
  --shadow:0 18px 44px rgba(6,31,97,.10);
  --shadow-sm:0 6px 18px rgba(6,31,97,.07);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{background:var(--paper);color:var(--ink);font-family:'Inter',-apple-system,system-ui,sans-serif;
  font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;display:block;height:auto}
a{color:var(--ocean);text-decoration:none}
::selection{background:rgba(12,153,245,.18);color:var(--navy)}
h1,h2,h3,h4,.disp{font-family:'Jost',sans-serif;font-weight:500;color:var(--navy);
  letter-spacing:-.022em;line-height:1.08;text-wrap:balance}
:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:4px}

.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
.eyebrow{font-weight:600;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--blue-txt)}
.lead{color:var(--muted);font-size:18px;line-height:1.68;max-width:62ch}
.small{font-size:13.5px;line-height:1.6}
.mut{color:var(--muted)}
.mono{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.center{text-align:center}
.center .lead{margin-left:auto;margin-right:auto}

section{position:relative}
.sec{padding:96px 0}
.sec.tint{background:var(--mist)}
.sec.tight{padding:72px 0}
h2.t{font-size:clamp(28px,4vw,44px)}
h3.t{font-size:clamp(21px,2.4vw,27px)}
.shead{max-width:66ch;margin-bottom:48px}
.shead.mid{margin-left:auto;margin-right:auto;text-align:center}
.shead .eyebrow{margin-bottom:14px}
.shead .lead{margin-top:18px}
@media(max-width:760px){.sec{padding:66px 0}.shead{margin-bottom:34px}}

/* botões */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;font-family:'Inter';
  font-weight:600;font-size:15px;line-height:1;padding:15px 26px;border-radius:999px;border:1px solid transparent;
  cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,background .2s ease,color .2s ease;white-space:nowrap}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn-1{background:var(--blue-txt);color:#fff;box-shadow:0 8px 22px rgba(10,114,190,.30)}
.btn-1:hover{background:var(--ocean);box-shadow:0 12px 26px rgba(10,114,190,.36);color:#fff}
.btn-2{background:transparent;color:var(--navy);border-color:var(--line2)}
.btn-2:hover{border-color:var(--blue-txt);color:var(--ocean)}
.btn-3{background:var(--navy);color:#fff}
.btn-3:hover{background:var(--deep);color:#fff}
.btn-sm{padding:11px 19px;font-size:13.5px}
.btn-lg{padding:18px 34px;font-size:16px}
.btn[disabled]{opacity:.45;pointer-events:none}
.btns{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.strip{display:grid;grid-template-columns:1fr auto;gap:26px;align-items:center;padding:34px}
.strip h3{font-size:23px;margin-bottom:7px}
.strip p{color:var(--muted);max-width:62ch}
@media(max-width:820px){.strip{grid-template-columns:1fr;gap:20px;padding:28px}.strip .btn{width:100%}}
@media(max-width:560px){.btns{flex-direction:column;align-items:stretch;width:100%}.btns .btn{width:100%}}
.microcta{font-size:12.5px;color:var(--muted2);margin-top:14px;max-width:46ch}

/* nav */
.nav{position:sticky;top:0;z-index:80;background:rgba(255,255,255,.92);backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line)}
.nav .row{display:flex;align-items:center;gap:24px;height:var(--nav-h)}
.brand{display:flex;align-items:center;gap:10px;flex:none}
.brand img{width:30px}
.brand b{font-family:'Jost';font-weight:500;font-size:17px;letter-spacing:.11em;color:var(--navy)}
.brand b i{font-style:normal;color:var(--blue)}
.nlinks{display:flex;gap:clamp(12px,2vw,26px);margin-left:auto}
.nlinks a{font-size:14.5px;font-weight:500;color:var(--muted);white-space:nowrap}
.nlinks a:hover,.nlinks a[aria-current]{color:var(--navy)}
.nav .btn{flex:none}
.burger{display:none;margin-left:auto;width:42px;height:42px;border:1px solid var(--line);border-radius:11px;
  background:var(--paper);cursor:pointer;position:relative}
.burger i{position:absolute;left:11px;right:11px;height:1.6px;background:var(--navy);border-radius:2px;transition:.28s}
.burger i:nth-child(1){top:15px}.burger i:nth-child(2){top:20px}.burger i:nth-child(3){top:25px}
.burger[aria-expanded="true"] i:nth-child(1){transform:translateY(5px) rotate(45deg)}
.burger[aria-expanded="true"] i:nth-child(2){opacity:0}
.burger[aria-expanded="true"] i:nth-child(3){transform:translateY(-5px) rotate(-45deg)}
.mob{display:none;border-top:1px solid var(--line);background:var(--paper);padding:14px 0 22px}
.mob.on{display:block}
.mob a{display:block;padding:13px 0;font-size:16px;font-weight:500;color:var(--navy);border-bottom:1px solid var(--line)}
.mob a.btn{display:flex;justify-content:center;align-items:center;padding:15px 26px;margin-top:18px;width:100%;border-bottom:0;color:#fff}
/* porta do sistema no cabecalho: discreta, porque quem entra e equipe e
   dentista credenciado, nao o paciente */
.entrar{flex:none;font-size:14.5px;font-weight:500;color:var(--muted);white-space:nowrap;
  padding:8px 0;border-bottom:1px solid transparent;transition:.18s}
.entrar:hover{color:var(--navy);border-bottom-color:var(--line2)}
.mob a.entrar{color:var(--muted);font-weight:500;border-bottom:0;padding-top:16px}
@media(max-width:940px){.nlinks{display:none}.nav>.wrap>.row>.btn{display:none}
  .nav>.wrap>.row>.entrar{display:none}.burger{display:block}}

/* hero */
.hero{position:relative;overflow:hidden;padding:58px 0 84px}
.hero .grid{display:grid;grid-template-columns:1.04fr .96fr;gap:56px;align-items:center}
/* o arco decorativo e 150% mais largo que a coluna da foto e invade a do
   texto. Sem isto ele passa por cima da ultima letra do titulo, e a letra
   parece cortada. O texto passa a ser desenhado na frente do arco. */
.hero .grid > div:first-child{position:relative;z-index:4}
.hero h1{font-size:clamp(36px,5.3vw,62px);font-weight:500;letter-spacing:-.03em;line-height:1.04;margin:16px 0 20px;text-wrap:pretty}
.hero h1 em{font-style:normal;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
/* Com a palavra dentro de uma janela de overflow:hidden, o degrade pintado no
   <em> nao alcanca mais a letra. E nem adianta pintar na janela: o recorte por
   texto so pega o texto do proprio elemento, e ali o texto esta um nivel
   abaixo. Entao o degrade vai na palavra, que e quem tem a letra. */
.hero h1 em:has(.wl){background:none}
.hero h1 em .wl > i{background:var(--grad);-webkit-background-clip:text;
  background-clip:text;color:transparent}
/* o ponto final mora dentro da ultima palavra para nao sobrar sozinho numa
   linha, mas continua azul-escuro como no desenho original */
.hero h1 em .pt{-webkit-text-fill-color:var(--navy);color:var(--navy)}
.hero .lead{font-size:17.5px;max-width:50ch}
.hero .btns{margin-top:32px}
.heroart{position:relative}
.heroart .ph{border-radius:22px;overflow:hidden;box-shadow:var(--shadow);position:relative;z-index:2}
.heroart .ph img,.heroart .ph video{width:100%;height:auto;aspect-ratio:4/4.35;object-fit:cover;max-height:600px;display:block;background:var(--mist2)}
.heroarc{position:absolute;z-index:1;width:150%;left:-25%;top:-18%;aspect-ratio:1;pointer-events:none;opacity:.75}
.heroarc circle{fill:none;stroke:var(--ice);stroke-width:1;opacity:.45}
.heroarc circle.a{stroke:var(--blue);opacity:.7}
.hbadge{position:absolute;z-index:3;right:-14px;bottom:26px;background:var(--paper);border:1px solid var(--line);
  border-radius:14px;padding:14px 18px;box-shadow:var(--shadow);display:flex;align-items:center;gap:12px;max-width:250px}
.hbadge img{width:34px}
.hbadge span{font-size:12.5px;line-height:1.45;color:var(--muted)}
.hbadge b{display:block;font-family:'Jost';font-weight:500;font-size:14.5px;color:var(--navy)}
@media(max-width:900px){.hero .grid{grid-template-columns:1fr;gap:38px}.hero{padding:48px 0 66px}
  .heroart{max-width:460px;margin:0 auto;width:100%}.hbadge{right:0}}

/* cards */
.g{display:grid;gap:18px}
.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
@media(max-width:900px){.g3,.g4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.g2,.g3,.g4{grid-template-columns:1fr}}
.card{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:28px}
.sec.tint .card{background:var(--paper)}
.card h3{font-size:19px;margin-bottom:9px}
.card p{color:var(--muted);font-size:14.8px;line-height:1.62}
.card .ic{width:44px;height:44px;border-radius:12px;background:var(--mist2);display:grid;place-items:center;margin-bottom:18px}
.card .ic svg{width:22px;height:22px;stroke:var(--ocean);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

/* passos */
.steps{counter-reset:s;display:grid;gap:0}
.step{counter-increment:s;display:grid;grid-template-columns:76px 1fr;gap:24px;padding:26px 0;border-top:1px solid var(--line)}
.step:first-child{border-top:0;padding-top:0}
.step::before{content:counter(s,decimal-leading-zero);font-family:'Jost';font-weight:300;font-size:32px;
  color:var(--ice);line-height:1;letter-spacing:-.03em}
.step h3{font-size:19px;margin-bottom:6px}
.step p{color:var(--muted);font-size:15px}
@media(max-width:640px){.step{grid-template-columns:52px 1fr;gap:16px}.step::before{font-size:24px}}

/* faixa navy */
.navy{background:linear-gradient(168deg,#071F5E 0%,#0A2E79 52%,#04143F 100%);position:relative;overflow:hidden}
.navy::after{content:"";position:absolute;left:50%;top:-42%;width:1000px;height:1000px;transform:translateX(-50%);
  border-radius:50%;pointer-events:none;background:radial-gradient(circle,rgba(12,153,245,.20),transparent 62%)}
.navy>.wrap{position:relative;z-index:2}
.navy h1,.navy h2,.navy h3,.navy h4{color:#fff}
.navy .eyebrow{color:var(--ice2)}
.navy .lead,.navy p{color:#A9C1E2}
.navy .card{background:rgba(255,255,255,.055);border-color:rgba(255,255,255,.15)}
.navy .card h3{color:#fff}.navy .card p{color:#B6CBE7}
.navy .card .ic{background:rgba(255,255,255,.08)}.navy .card .ic svg{stroke:var(--ice2)}

/* formulários */
.field{display:flex;flex-direction:column;gap:7px;margin-bottom:16px}
.field[hidden],.btn[hidden]{display:none}
.field label{font-size:13px;font-weight:600;color:var(--navy)}
.field .hint{font-size:12px;color:var(--muted2)}
.inp{width:100%;font-family:'Inter';font-size:15.5px;color:var(--ink);background:var(--paper);
  border:1px solid var(--line2);border-radius:12px;padding:14px 16px;transition:border-color .2s,box-shadow .2s}
.inp::placeholder{color:var(--muted2)}
.inp:focus{outline:0;border-color:var(--blue);box-shadow:0 0 0 3px rgba(12,153,245,.14)}
.inp:disabled{background:var(--mist);color:var(--muted)}
textarea.inp{min-height:120px;resize:vertical;line-height:1.6}
select.inp{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%235B7290' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 16px center;padding-right:42px}
.chk{display:grid;grid-template-columns:20px 1fr;gap:11px;align-items:start;font-size:13px;color:var(--muted);line-height:1.55}
.chk input{width:18px;height:18px;margin-top:1px;accent-color:var(--blue)}
.err{font-size:12.5px;color:#C0392B;display:none}
.field.bad .inp{border-color:#C0392B}
.field.bad .err{display:block}
.formcard{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:32px;box-shadow:var(--shadow-sm)}
@media(max-width:560px){.formcard{padding:22px}}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:640px){.frow{grid-template-columns:1fr}}

/* faq */
.faq{border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;padding:22px 44px 22px 0;position:relative;
  font-family:'Jost';font-weight:500;font-size:18px;color:var(--navy)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";position:absolute;right:8px;top:29px;width:11px;height:11px;
  border-right:1.6px solid var(--blue);border-bottom:1.6px solid var(--blue);transform:rotate(45deg);transition:transform .25s}
.faq details[open] summary::after{transform:rotate(-135deg);top:32px}
.faq .a{padding:0 44px 24px 0;color:var(--muted);font-size:15px;max-width:80ch}

/* rodapé */
.foot{background:var(--navy);color:#B6CBE7;padding:64px 0 30px}
.foot a{color:#B6CBE7}
.foot a:hover{color:#fff}
.foot .top{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:36px;padding-bottom:44px;border-bottom:1px solid rgba(255,255,255,.12)}
@media(max-width:900px){.foot .top{grid-template-columns:1fr 1fr;gap:32px}}
@media(max-width:560px){.foot .top{grid-template-columns:1fr}}
.foot .wm{width:170px;margin-bottom:18px;filter:brightness(0) invert(1)}
.foot h4,.foot .fh{font-family:'Inter';font-weight:600;font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ice2);margin-bottom:16px}
.foot ul{list-style:none;display:flex;flex-direction:column;gap:11px;font-size:14.5px}
.foot .bot{padding-top:26px;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;
  font-size:12.5px;color:#7F98BC;line-height:1.7}
.foot .legal{max-width:64ch}
.tag{display:inline-block;font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ice2);border:1px solid rgba(115,208,252,.35);border-radius:5px;padding:2px 7px}

/* ============================================================
   MOVIMENTO
   O conteudo entra conforme a pessoa rola. Quem liga tudo e a classe .mo,
   posta no <html> por um script de uma linha no <head> de cada pagina.
   Por que la em cima e nao aqui no site.js: assim o bloco ja nasce invisivel
   e nao pisca na tela antes de sumir. Esse mesmo script tem um despertador:
   se o site.js nao carregar, ele tira o .mo sozinho e tudo aparece.
   Os seletores vao dentro de :where() de proposito, para valerem zero na
   conta de especificidade. Sem isso, .mo .hero h1 ganharia de .mo .in e o
   titulo nunca reapareceria.
   ============================================================ */
:root{--mola:cubic-bezier(.16,1,.3,1); --pulo:cubic-bezier(.34,1.56,.64,1)}

/* --- 1. blocos simples: sobem e aparecem --------------------- */
.mo :where(.rv,.g > *,.steps > .step,.faq > details,.strip,.formcard,.finder,.foot .top > *){
  opacity:0;transform:translateY(26px);
  transition:opacity .8s var(--mola) var(--d,0s),transform .9s var(--mola) var(--d,0s)}
/* Blocos lado a lado chegam de fora para dentro, cada um do seu lado. So da
   largura de tablet para cima: no celular eles ja estao empilhados, o deslize
   lateral nao diria nada e ainda empurrava a pagina para fora da tela. */
@media(min-width:760px){
  .mo :where(.g2 > *:first-child){transform:translate(-24px,14px)}
  .mo :where(.g2 > *:last-child) {transform:translate(24px,14px)}
}
/* trava de seguranca: nenhuma animacao de entrada pode abrir rolagem lateral.
   O clip corta sem virar area rolavel, ao contrario do hidden. */
.sec{overflow-x:clip}
/* o mapa cresce um fio em vez de subir */
.mo :where(.mapwrap){opacity:0;transform:scale(.965);
  transition:opacity .9s var(--mola) var(--d,0s),transform 1s var(--mola) var(--d,0s)}
.mo .in{opacity:1;transform:none}

/* --- 2. titulo de secao: uma pequena coreografia -------------
   O risquinho cresce, as palavras do titulo sobem uma atras da outra por
   tras de uma mascara, e o texto de apoio chega por ultimo. */
.mo :where(.shead .eyebrow){opacity:0;transform:translateY(14px);
  transition:opacity .6s ease .02s,transform .7s var(--mola) .02s}
.mo :where(.shead .lead,.shead > p:last-child){opacity:0;transform:translateY(18px);
  transition:opacity .75s ease .34s,transform .85s var(--mola) .34s}
.mo .shead.in :where(.eyebrow,.lead,p){opacity:1;transform:none}
.shead .eyebrow::before{content:"";display:inline-block;width:0;height:1px;background:currentColor;
  vertical-align:middle;margin-right:0;transition:width .7s var(--mola) .12s,margin-right .7s var(--mola) .12s}
.shead.in .eyebrow::before{width:24px;margin-right:11px}
.shead.mid .eyebrow::before{display:none}

/* --- 3. palavras que sobem por tras de uma mascara -----------
   O .wl e a janela, o <i> e a palavra que desliza dentro dela. A folga em
   baixo existe porque sem ela o rabo do "p" e do "g" fica cortado. */
.wl{display:inline-block;overflow:hidden;vertical-align:bottom;
    padding-bottom:.14em;margin-bottom:-.14em}
/* .ln forca uma frase por linha no titulo, onde a quebra automatica deixava
   uma palavra orfa no fim da linha de cima */
.ln{display:block}
.wl > i{display:inline-block;font-style:normal}
.mo :where(.shead h2 .wl > i){transform:translateY(112%);
  transition:transform .95s var(--mola) calc(var(--i,0) * .042s + .08s)}
.mo .shead.in h2 .wl > i{transform:none}

/* --- 4. o hero ----------------------------------------------
   Esta parte nao espera o site.js: ela monta por animacao de CSS, porque a
   primeira dobra nao pode ficar em branco enquanto um script carrega. */
@keyframes elySobe   {from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@keyframes elyPalavra{from{transform:translateY(112%)}  to{transform:none}}
@keyframes elyCortina{from{opacity:0;clip-path:inset(0 0 100% 0)}to{opacity:1;clip-path:inset(0 0 0 0)}}
@keyframes elyZoom   {from{transform:scale(1.2)}        to{transform:scale(1.06)}}
@keyframes elySelo   {from{opacity:0;transform:translateY(14px) scale(.92)}to{opacity:1;transform:none}}
@keyframes elyRisca  {from{stroke-dashoffset:var(--c)}  to{stroke-dashoffset:0}}
@keyframes elyGira   {from{transform:rotate(0)}         to{transform:rotate(360deg)}}

.mo :where(.hero .eyebrow) {animation:elySobe .8s var(--mola) .04s both}
.mo :where(.hero h1 .wl > i){animation:elyPalavra .95s var(--mola) both;
  animation-delay:calc(.14s + var(--i,0) * .055s)}
.mo :where(.hero h1:not(:has(.wl))){animation:elySobe .8s var(--mola) .14s both}
.mo :where(.hero .lead)    {animation:elySobe .85s var(--mola) .42s both}
.mo :where(.hero .btns)    {animation:elySobe .85s var(--mola) .52s both}
.mo :where(.hero .microcta){animation:elySobe .85s var(--mola) .60s both}
/* a foto abre como uma cortina, de baixo para cima, e a imagem dentro dela
   vai perdendo o zoom devagar, como camera que assenta */
.mo :where(.heroart .ph){animation:elyCortina 1.1s var(--mola) .18s both}
.heroart .ph img,.heroart .ph video{transform:scale(1.06);will-change:transform}
.mo :where(.heroart .ph img,.heroart .ph video){animation:elyZoom 2.2s cubic-bezier(.22,1,.36,1)}
.mo :where(.hbadge){animation:elySelo .6s var(--pulo) .95s both}
/* os arcos sao desenhados em vez de simplesmente aparecerem. O --c e o
   comprimento de cada circulo (2*pi*r), que o traco precisa percorrer. */
.heroarc circle{stroke-dasharray:var(--c);stroke-dashoffset:0}
.heroarc circle:nth-child(1){--c:1232}
.heroarc circle:nth-child(2){--c:993}
.heroarc circle:nth-child(3){--c:754}
.heroarc circle:nth-child(4){--c:516}
.mo .heroarc circle{animation:elyRisca 1.9s var(--mola) .1s both}
.mo .heroarc circle:nth-child(2){animation-delay:.22s}
.mo .heroarc circle:nth-child(3){animation-delay:.34s}
.mo .heroarc circle:nth-child(4){animation-delay:.46s}
/* o circulo azul e tracejado e gira para sempre, bem devagar */
.heroarc circle.a{stroke-dasharray:4 13;transform-box:fill-box;transform-origin:50% 50%;
  animation:elyGira 90s linear infinite}
.mo .heroarc circle.a{animation:elyGira 90s linear infinite}

/* --- 5. os cartoes --------------------------------------------
   O icone entra depois do cartao, com um pulinho. */
.mo :where(.card .ic){opacity:0;transform:scale(.55) rotate(-14deg);
  transition:opacity .4s ease calc(var(--d,0s) + .2s),transform .65s var(--pulo) calc(var(--d,0s) + .2s)}
.mo .in .ic{opacity:1;transform:none}
.card{transition:transform .32s var(--mola),box-shadow .32s ease,border-color .32s ease}
@media(hover:hover){
  .card:hover{transform:translateY(-6px);box-shadow:var(--shadow);border-color:var(--line2)}
  .card:hover .ic{transform:scale(1.08) rotate(-4deg)}
  .card .ic{transition:transform .4s var(--pulo)}
  .navy .card:hover{box-shadow:0 18px 44px rgba(0,0,0,.26);border-color:rgba(255,255,255,.3)}
}

/* --- 6. as etapas ---------------------------------------------
   A etapa que esta no meio da tela acende: o numero fica azul e um fio
   corre por cima dela. Da a sensacao de a pagina acompanhar a leitura. */
.step{position:relative;transition:background .35s ease}
.step::after{content:"";position:absolute;left:0;top:-1px;height:1.5px;width:0;
  background:var(--grad);transition:width .7s var(--mola)}
.step.on::after{width:100%}
.step::before{transition:color .45s ease,transform .5s var(--pulo);transform-origin:left center}
.step.on::before{color:var(--blue-txt);transform:scale(1.14)}
.step h3{transition:color .3s ease}
.step.on h3{color:var(--ocean)}

/* --- 7. a faixa escura ---------------------------------------
   O brilho de dentro passeia com a rolagem, entao o fundo nunca fica parado. */
.navy::after{transform:translateX(-50%) translateY(var(--gy,0px));transition:transform .1s linear}

/* --- 8. botoes e links ---------------------------------------- */
.btn-1,.btn-3{position:relative;overflow:hidden;isolation:isolate}
.btn-1::after,.btn-3::after{content:"";position:absolute;z-index:-1;top:0;bottom:0;left:-75%;width:45%;
  transform:skewX(-20deg);pointer-events:none;transition:left .7s ease;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.3),transparent)}
.btn-1:hover::after,.btn-3:hover::after{left:135%}
.nlinks a{position:relative}
.nlinks a::after{content:"";position:absolute;left:0;right:0;bottom:-7px;height:1.5px;background:var(--blue);
  transform:scaleX(0);transform-origin:0 50%;transition:transform .34s var(--mola)}
.nlinks a:hover::after,.nlinks a[aria-current]::after{transform:scaleX(1)}

/* --- 9. perguntas que abrem com calma ------------------------- */
.faq details{overflow:hidden}
.faq .a{overflow:hidden}

/* --- 10. cabecalho e barra de leitura ------------------------- */
.nav{transition:box-shadow .3s ease,background .3s ease}
.nav.sc{box-shadow:0 6px 22px rgba(6,31,97,.07)}
.prog{position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--grad);
  transform:scaleX(0);transform-origin:0 50%;will-change:transform;pointer-events:none}

/* o quiz troca o conteudo por conta propria: o que nasce depois do load nao
   passaria pelo observador e ficaria invisivel para sempre. Fora daqui. */
.mo .quiz :where(.g > *,.card,.card .ic,.shead,.rv){opacity:1;transform:none;transition:none}

/* quem pediu menos movimento no sistema recebe a pagina parada */
@media(prefers-reduced-motion:reduce){
  .rv,.mo :where(*){opacity:1!important;transform:none!important;clip-path:none!important}
  .prog,.step::after{display:none}
  .shead .eyebrow::before{display:none}
  .wl > i{transform:none!important}
  *{animation:none!important;transition-duration:.01ms!important}}
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:absolute;left:-9999px;top:0;background:var(--navy);color:#fff;padding:12px 18px;z-index:200;border-radius:0 0 10px 0}
.skip:focus{left:0;color:#fff}
