/** Shopify CDN: Minification failed

Line 990:16 Unexpected "/"
Line 990:100 Unterminated string token

**/

:root{
  --off-white:#F5F4F0; --nude-1-50:#EEDED3; --nude-1:#DCBFA7;
  --nude-2:#CCA686;    --nude-3:#BE9374;    --nude-4:#AD7F66;
  --rotulo:#8C6753; --rotulo-forte:#7D5B49;   /* caramelo da marca, brilho baixado ate 4,5:1 */
  --white:#FFF; --ink:#1C1C1C;
  --cta:#5FA830; --cta-dark:#4E8C27;
  --gold:#EDA900/*estrela*/; --gold-soft:#F5CE63;
  --pat-1:#D8B99F; --pat-2:#C79F7E; --pat-3:#B88A6B; --pat-4:#A6765E;
  --ink-70:rgb(28 28 28/.70); --ink-45:rgb(28 28 28/.45);
  --ink-16:rgb(28 28 28/.16); --ink-08:rgb(28 28 28/.08);
  --sh-1:0 4px 18px rgb(28 28 28/.06);
  --sh-2:0 8px 24px rgb(28 28 28/.10);
  --sh-3:0 16px 44px rgb(28 28 28/.14);
  --e-standard:cubic-bezier(.4,0,.2,1); --e-out:cubic-bezier(0,0,.2,1);
  --e-emph:cubic-bezier(.2,0,0,1);      --e-sweep:cubic-bezier(.5,0,.2,1);
  --e-expo:cubic-bezier(.16,1,.3,1);
  --t-fast:150ms; --t-base:300ms; --t-sweep:450ms; --t-slow:700ms; --t-chrome:340ms;
  --r-4:4px; --r-8:8px; --r-12:12px; --r-16:16px; --r-20:20px; --r-pill:999px;
  --container:1360px; --gutter:40px; --pill-h:66px;
  --f:"Montserrat","Helvetica Neue",Arial,sans-serif;
  --header-h:122px; --hdr-y:56px;
}
@media(max-width:860px){:root{--gutter:20px}}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--off-white);color:var(--ink);font-family:var(--f);font-weight:500;font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}
p,h1,h2,h3,h4,ol,ul{margin:0}ol,ul{padding:0;list-style:none}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:0;background:none;color:inherit}
:focus-visible{outline:2px solid var(--nude-4);outline-offset:3px}
.shell{max-width:calc(var(--container) + var(--gutter)*2);margin:0 auto;padding:0 var(--gutter)}

/* tipografia · papéis do MIV. Na PDP o H1 tem o MESMO corpo do título de dobra:
   o maior tipo da página é a frase de benefício, não o nome do que se vende. */
.t-benef{font-weight:300;font-size:clamp(30px,4vw,48px);line-height:1.06;letter-spacing:.04em;text-transform:uppercase}
.t-dobra{font-weight:300;font-size:30px;line-height:1.06;letter-spacing:.3px;text-transform:uppercase}
@media(max-width:860px){.t-dobra{font-size:24px;letter-spacing:.24px}}
.t-h1{font-weight:300;font-size:30px;line-height:1.1;letter-spacing:.2px;text-transform:uppercase}
.t-card{font-weight:600;font-size:16px;line-height:1.3}
.atributo{font-weight:600;font-size:11.5px;line-height:1;letter-spacing:.16em;text-transform:uppercase}
.corpo{font-weight:500;font-size:16px;line-height:1.6;color:var(--ink-70)}
.corpo b{font-weight:700;color:var(--ink)}
.corpo-sm{font-weight:500;font-size:14px;line-height:20px;color:var(--ink-70)}
.cap{font-weight:500;font-size:12px;line-height:1.45;color:var(--ink-45)}
.preco{font-weight:600;font-size:32px;line-height:1;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.preco-de{font-weight:500;font-size:15px;color:var(--ink-45);text-decoration:line-through;font-variant-numeric:tabular-nums}
.stars{color:var(--gold);font-size:14px;letter-spacing:.14em}
code{font-family:ui-monospace,Consolas,monospace;font-size:.86em;background:var(--nude-1-50);border-radius:3px;padding:1px 5px}

/* pattern do MIV */
.pat{position:absolute;inset:0;pointer-events:none;overflow:hidden;--pc:var(--pat-1);--per:52px}
.pat i{position:absolute;top:0;bottom:0;display:block;background-repeat:repeat-y}
.pat i:nth-child(1){left:0;width:20.54%;background-image:repeating-linear-gradient(to bottom,transparent 0 23.5px,var(--pc) 23.5px 28.5px,transparent 28.5px var(--per))}
.pat i:nth-child(2){left:20.54%;width:20.47%;background-image:repeating-linear-gradient(to bottom,transparent 0 21px,var(--pc) 21px 31px,transparent 31px var(--per))}
.pat i:nth-child(3){left:41.01%;width:19.65%;background-image:repeating-linear-gradient(to bottom,transparent 0 18.5px,var(--pc) 18.5px 33.5px,transparent 33.5px var(--per))}
.pat i:nth-child(4){left:60.66%;width:19.34%;background-image:repeating-linear-gradient(to bottom,transparent 0 16px,var(--pc) 16px 36px,transparent 36px var(--per))}
.pat i:nth-child(5){left:79.98%;width:20.02%;background-image:repeating-linear-gradient(to bottom,transparent 0 13.5px,var(--pc) 13.5px 38.5px,transparent 38.5px var(--per))}
@keyframes pat-drift{from{background-position:0 0}to{background-position:0 var(--per)}}
.pat--drift i{animation:pat-drift 22s linear infinite}

/* ticker + header */
.ticker{position:fixed;left:0;right:0;top:0;z-index:51;height:56px;background:var(--rotulo);color:var(--white);
  overflow:hidden;display:flex;align-items:center;transition:transform var(--t-chrome) var(--e-standard),opacity var(--t-chrome) var(--e-standard)}
html.is-scrolled .ticker{transform:translateY(-100%);opacity:0}

/* barra parada: o formato do desktop. Quatro promessas de uma vez, cada uma com seu
   ícone, separadas por um fio, sem nada andando. O fundo é --rotulo e não --nude-4
   porque branco sobre o nude dá 3,5:1, abaixo do mínimo para 11,5px em caixa alta. */
.tk-fixa{display:flex;align-items:center;justify-content:center;width:100%;height:56px;padding:0 20px}
.tk-i{display:inline-flex;align-items:center;gap:9px;padding:0 26px;position:relative;
  font-weight:500;font-size:11.5px;letter-spacing:.11em;text-transform:uppercase;white-space:nowrap}
.tk-i+.tk-i::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:1px;height:14px;background:rgb(255 255 255/.34)}
.tk-i svg{width:16px;height:16px;flex:0 0 16px;fill:none;stroke:currentColor;stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}

/* no celular quatro itens não cabem lado a lado, então a lista continua correndo:
   ninguém perde informação */
.ticker .track{display:none;width:max-content;animation:tick 46s linear infinite}
.ticker:hover .track{animation-play-state:paused}
@keyframes tick{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.ticker .track>span{font-weight:500;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap}
.ticker em{font-style:normal;padding:0 26px;color:rgb(255 255 255/.72)}
@media(max-width:900px){
  .tk-fixa{display:none}
  .ticker .track{display:flex}
}
@media(prefers-reduced-motion:reduce){.ticker .track{animation:none}}
.hdr{position:fixed;left:0;right:0;top:0;z-index:50;transform:translateY(var(--hdr-y));transition:transform var(--t-chrome) var(--e-standard)}
.hdr .pill{max-width:min(var(--container),calc(100% - var(--gutter)*2));margin:0 auto;height:var(--pill-h);
  display:flex;align-items:center;gap:34px;padding:0 24px;background:var(--white);
  border:1px solid transparent;border-radius:var(--r-pill);
  transition:max-width var(--t-chrome) var(--e-standard),border-color var(--t-chrome) var(--e-standard),box-shadow var(--t-chrome) var(--e-standard),background-color var(--t-chrome) var(--e-standard)}
html.is-scrolled .hdr .pill{max-width:1080px;border-color:var(--ink-16);box-shadow:var(--sh-2)}
.logo{display:flex;align-items:center;color:var(--ink);flex:0 0 auto}
.logo svg{height:21px;width:auto;display:block;fill:currentColor}
.hdr nav{display:flex;gap:24px;align-items:center}
@media(max-width:900px){.hdr nav{display:none}}
.hdr nav a{font-weight:600;font-size:14px;line-height:21px;letter-spacing:1.4px;text-transform:uppercase}
.hdr .right{margin-left:auto;display:flex;align-items:center;gap:10px}
.icon{position:relative;width:44px;height:44px;border-radius:var(--r-pill);display:inline-flex;align-items:center;justify-content:center;transition:background var(--t-base) var(--e-standard)}
.icon:hover{background:var(--nude-1-50)}
.icon svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;display:block}
.icon .bolha{position:absolute;top:4px;right:4px;min-width:17px;height:17px;border-radius:var(--r-pill);
  background:var(--cta);color:var(--white);font-weight:700;font-size:10px;line-height:17px;text-align:center;padding:0 4px}

/* seletor de linha (troca as 3 PDPs) */
/* padding-top, nao o shorthand: o elemento e .shell seletor, e o shorthand zerava o
   padding horizontal do .shell, jogando o bloco para x=0 em vez dos 40px do gutter. */
.seletor{padding-top:calc(var(--header-h) + 22px)}
/* max-width + scroll: com os três rótulos o controle mede 511px, e numa tela de 390
   o terceiro botão começava fora da tela, por baixo do vizinho. */
.seg{display:flex;width:max-content;max-width:100%;overflow-x:auto;scrollbar-width:none;
  background:var(--white);border:1px solid var(--ink-08);border-radius:var(--r-pill);padding:4px;gap:2px;box-shadow:var(--sh-1)}
.seg::-webkit-scrollbar{display:none}
.seg button{flex:0 0 auto;padding:0 18px;height:38px;border-radius:var(--r-pill);font-weight:600;font-size:12px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--ink-45);white-space:nowrap;transition:background var(--t-base) var(--e-standard),color var(--t-base) var(--e-standard)}
.seg button[aria-current="true"]{background:var(--ink);color:var(--white)}
.seg button:hover{color:var(--ink)}
.seg button[aria-current="true"]:hover{color:var(--white)}

/* troca de linha: só o bloco da linha ativa aparece.
   A especificidade aqui NÃO é detalhe: `.foto-bloco img{display:block}` é (0,1,1) e venceria
   um `[data-l]{display:none}` que é (0,1,0), fazendo as três linhas aparecerem juntas.
   Por isso a regra que esconde é ancorada no id (1,1,0) e a que mostra em (1,2,0). */
#pdp [data-l]{display:none}
/* barra-linha: a barra de compra vive fora do #pdp, então precisa do próprio par */
#barra [data-l]{display:none}
#barra[data-linha="ah"] [data-l="ah"],#barra[data-linha="ge"] [data-l="ge"],#barra[data-linha="ma"] [data-l="ma"]{display:block}
#pdp[data-linha="ah"] [data-l="ah"],#pdp[data-linha="ge"] [data-l="ge"],#pdp[data-linha="ma"] [data-l="ma"]{display:block}

.crumb{padding:14px 0 0;font-weight:500;font-size:12px;color:var(--ink-45)}
.crumb b{color:var(--ink);font-weight:600}

/* ---------- HERO da PDP: galeria + buy box ---------- */
.hero-pdp{display:grid;grid-template-columns:1fr .78fr;gap:56px;padding:22px 0 64px;align-items:start}
@media(max-width:1000px){.hero-pdp{grid-template-columns:1fr;gap:28px}}
.galeria{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.galeria .tile{position:relative;aspect-ratio:1;border-radius:var(--r-16);overflow:hidden;background:var(--white);border:1px solid var(--ink-08)}
/* 1:1 e nao 4/3: TODOS os criativos da galeria sao quadrados (760x760), desenhados com
   a composicao propria. Num tile 4/3 o object-fit:cover cortava 25% da altura e
   fatiava os potes. Com o tile quadrado a arte aparece inteira, sem recorte. */
.galeria .tile:first-child{grid-column:1/3;aspect-ratio:1}
/* faixa do video: o poster e retrato (1080x1130) e aqui vira banner, entao o recorte
   e proposital e o object-position sobe pra nao cortar o rosto. */
.galeria .tile--largo{grid-column:1/3;aspect-ratio:4/3}
.galeria .tile--largo img{object-position:center 22%}
.galeria .tile--largo .play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;
  width:52px;height:52px;border-radius:var(--r-pill);background:rgb(255 255 255/.92);
  display:inline-flex;align-items:center;justify-content:center;pointer-events:none}
.galeria .tile--largo .play svg{width:18px;height:18px;fill:var(--ink);margin-left:2px}
/* selo do canto, igual ao da PDP no ar */
.galeria .selo-gal{position:absolute;left:14px;top:14px;z-index:2;background:var(--ink);color:var(--off-white);
  border-radius:var(--r-pill);padding:6px 13px;font-weight:600;font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase}
.galeria img{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--t-slow) var(--e-out)}
.galeria .tile:hover img{transform:scale(1.04)}

/* coluna de compra PINADA, como na PDP deles (top 100px) */
.buy{position:sticky;top:calc(var(--header-h) + 14px);display:flex;flex-direction:column;gap:16px}
@media(max-width:1000px){.buy{position:static}}
.buy .nota-linha{display:flex;align-items:center;gap:9px}
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chips span{font-weight:600;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-70);
  border:1px solid var(--ink-16);border-radius:var(--r-pill);padding:5px 11px}

/* fluxo de compra em 2 passos numerados (modelo deles) */
.passo{border:1px solid var(--ink-08);border-radius:var(--r-16);background:var(--white);overflow:hidden}
.passo-cab{display:flex;align-items:center;gap:11px;padding:14px 18px;border-bottom:1px solid var(--ink-08)}
.passo-cab .n{width:22px;height:22px;border-radius:var(--r-pill);background:var(--ink);color:var(--white);
  font-weight:700;font-size:11px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 22px}
.passo-cab .t-card{font-size:14px}
.opcoes{display:flex;flex-direction:column;padding:8px}
.opcao{display:grid;grid-template-columns:20px 1fr auto;gap:12px;align-items:center;padding:13px 12px;
  border-radius:var(--r-8);cursor:pointer;transition:background var(--t-base) var(--e-standard)}
.opcao:hover{background:var(--nude-1-50)}
.opcao input{appearance:none;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--ink-16);margin:0;
  transition:border-color var(--t-base) var(--e-standard),box-shadow var(--t-base) var(--e-standard)}
.opcao input:checked{border-color:var(--cta);border-width:5px}
.opcao:has(input:checked){background:var(--nude-1-50)}
.opcao .nome{font-weight:600;font-size:14px}
.opcao .sub{font-weight:500;font-size:12px;color:var(--ink-45)}
.opcao .val{font-weight:600;font-size:15px;font-variant-numeric:tabular-nums;text-align:right}
.opcao .selo-op{display:inline-block;margin-left:8px;background:var(--ink);color:var(--white);border-radius:var(--r-pill);
  padding:2px 8px;font-weight:700;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;vertical-align:1px}
.inclui{display:flex;flex-direction:column;gap:9px;padding:14px 18px}
.inclui li{display:grid;grid-template-columns:16px 1fr;gap:10px;font-weight:500;font-size:13.5px;line-height:1.45;color:var(--ink-70)}
.inclui .tick{color:var(--cta);font-weight:700}

/* UM preço, não cinco */
.bloco-preco{display:flex;flex-direction:column;gap:4px;padding:2px 0}
.bloco-preco .linha1{display:flex;align-items:baseline;gap:11px}
.btn{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-pill);
  font-weight:600;font-size:13px;letter-spacing:.1em;text-transform:uppercase;padding:0 30px;height:54px;
  background:var(--cta);color:var(--white);box-shadow:var(--sh-1);
  transition:background var(--t-base) var(--e-standard),box-shadow var(--t-base) var(--e-standard),transform var(--t-base) var(--e-emph)}
.btn:hover{background:var(--cta-dark);box-shadow:var(--sh-3);transform:translateY(-1px)}
.btn--full{width:100%}
.btn--ghost{background:transparent;color:var(--ink);border:1px solid var(--ink-16);box-shadow:none}
.btn--ghost:hover{background:var(--white);border-color:var(--rotulo);box-shadow:var(--sh-1)}
.garante{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px}
.garante li{display:grid;grid-template-columns:15px 1fr;gap:9px;font-weight:500;font-size:12.5px;color:var(--ink-70)}
.garante .tick{color:var(--rotulo);font-weight:700}

/* nav de âncoras PINADA · aqui ela faz sentido: a página tem 12 mil pixels */
/* A barra de ancoras cola na BASE da pilha do header. O -46px punha ela em 34px, que
   cai dentro da faixa da pilula (8 a 74 com scroll), e ela aparecia por tras e pelos
   lados dela. --header-h ja e a altura do header + folga, e e o que .buy e .seletor usam. */
/* SEM GRUDAR. Ela era sticky e acompanhava a rolagem, aparecendo por cima de todas as
   dobras. Agora fica onde nasceu, logo abaixo do topo, e vai embora com a pagina.
   Continua sendo navegacao de PAGINA; o que saiu foi a perseguicao. */
.ancoras{position:relative;z-index:40;background:var(--white);
  border-top:1px solid var(--ink-08);border-bottom:1px solid var(--ink-08)}
.ancoras ul{display:flex;overflow-x:auto;scrollbar-width:none}
.ancoras ul::-webkit-scrollbar{display:none}
.ancoras a{display:block;padding:15px 16px;font-weight:600;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-45);white-space:nowrap;border-bottom:2px solid transparent;
  transition:color var(--t-base) var(--e-standard),border-color var(--t-base) var(--e-standard)}
.ancoras a:hover{color:var(--ink)}
.ancoras a.on{color:var(--ink);border-bottom-color:var(--rotulo)}

/* eyebrow em pílula, como nas dobras centralizadas da v5 */
.pill-eyebrow{display:inline-flex;align-items:center;background:var(--nude-1-50);color:var(--rotulo);
  border-radius:var(--r-pill);padding:7px 15px;font-weight:600;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase}
.head--centro{align-items:center;text-align:center;max-width:none;margin-left:auto;margin-right:auto}
.head--centro .corpo{max-width:62ch}
.dobra--nude{background:var(--nude-1-50)}

/* v5 · Você se reconhece: 6 linhas de sintoma em acordeão */
.sintomas{display:flex;flex-direction:column;gap:10px}
.sint{background:var(--white);border:1px solid var(--ink-08);border-radius:var(--r-8);overflow:hidden;
  transition:border-color var(--t-base) var(--e-standard)}
.sint:hover{border-color:var(--rotulo)}
.sint-cab{width:100%;display:grid;grid-template-columns:30px 1fr 20px;gap:12px;align-items:center;padding:13px 16px;text-align:left}
.sint-cab .ico{width:30px;height:30px;border-radius:var(--r-pill);background:var(--nude-1-50);
  display:inline-flex;align-items:center;justify-content:center;font-size:13px;color:var(--rotulo)}
.sint-cab .nome{font-weight:600;font-size:14px}
.sint-cab .mais{position:relative;width:16px;height:16px}
.sint-cab .mais::before,.sint-cab .mais::after{content:"";position:absolute;background:var(--ink-45);
  transition:transform var(--t-base) var(--e-emph),opacity var(--t-base) var(--e-standard)}
.sint-cab .mais::before{left:0;right:0;top:7px;height:2px}
.sint-cab .mais::after{top:0;bottom:0;left:7px;width:2px}
.sint-cab[aria-expanded="true"] .mais::after{transform:rotate(90deg);opacity:0}
.sint-corpo{height:0;overflow:hidden;transition:height 350ms var(--e-standard)}
.sint-corpo .inner{padding:0 16px 14px 58px}
.sint.open .sint-corpo{height:var(--h)}

/* v5 · O que a NHV faz: 4 cards com ilustração */
.faz{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
@media(max-width:900px){.faz{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.faz{grid-template-columns:1fr}}
/* SEM moldura: a ilustracao do v5 ja vem com o proprio fundo rosa arredondado, e o card
   branco com borda + o box nude do .ilu criavam tres molduras encaixadas. Na PDP real
   nao existe nenhuma: e a ilustracao e o texto embaixo. */
.faz-card{background:transparent;border:0;border-radius:0;box-shadow:none;
  display:flex;flex-direction:column}
/* a ilustração existe em 282x300 no Figma e o Figma não faz upscale, então ela nunca
   pode renderizar acima disso: com padding ela cabe no card de 322 no tamanho nativo. */
/* O arquivo da ilustracao e um retangulo creme com CANTOS ARREDONDADOS, e os pixels de
   fora do canto sao quase brancos (254,252,254 contra o creme 250,242,234). Sobre a dobra
   off-white isso aparecia como uma franja clara nos quatro cantos. O raio aqui clipa
   exatamente esses pixels. Sem background proprio de proposito: cada uma das quatro tem
   um creme ligeiramente diferente, e o painel tem o tamanho exato da imagem. */
/* prato nude: a ilustracao tem fundo claro e sobre o off-white da dobra ela sumia */
.faz-card .ilu{background:var(--nude-1-50);overflow:hidden;border-radius:var(--r-16);max-width:282px;margin-inline:auto;
  display:flex;align-items:center;justify-content:center}
.faz-card .ilu img{max-width:282px;width:100%;height:auto;object-fit:contain;display:block}
/* mesma largura e mesma centralizacao da .ilu: sem isso o texto comeca 19px a
   esquerda da imagem no desktop e 32px no mobile */
.faz-card .txt{max-width:282px;margin-inline:auto;padding:16px 0 0;
  display:flex;flex-direction:column;gap:6px}
/* hover: o card levanta e a ilustracao flutua. De proposito SEM escalar a imagem,
   porque ela ja renderiza no tamanho nativo (282px) e ampliar so borraria. */
.faz-card{transition:transform var(--t-base) var(--e-emph)}
.faz-card:hover{transform:translateY(-6px)}
.faz-card .ilu img{transition:transform var(--t-sweep) var(--e-emph)}
.faz-card:hover .ilu img{transform:translateY(-6px)}
@media(prefers-reduced-motion:reduce){
  .faz-card:hover{transform:none}
  .faz-card:hover .ilu img{transform:none}
}

/* v5 · Resultado e Importante: 2 painéis nude */
.dois-paineis{display:grid;grid-template-columns:1fr 1fr;gap:24px}
@media(max-width:760px){.dois-paineis{grid-template-columns:1fr}}
.painel-n{background:var(--nude-1-50);border-radius:var(--r-16);padding:26px;text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:10px}
.painel-n .ico{width:34px;height:34px;border-radius:var(--r-pill);background:var(--white);
  display:inline-flex;align-items:center;justify-content:center;color:var(--rotulo);font-size:15px}
.painel-n .corpo-sm{max-width:46ch}

/* v5 · Antes & Depois com tarja */
/* 700 e não 1048: a fonte tem 516px de largura, então em 1048 cada foto renderizava a
   514 e ficava gigante na página. A 700 cada uma sai a ~342, que é a escala da home. */
.par-ad{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:700px;margin:0 auto}
@media(max-width:700px){.par-ad{grid-template-columns:1fr}}
.ad{position:relative;border-radius:var(--r-16);overflow:hidden;background:var(--white);border:1px solid var(--ink-08)}
.ad img{width:100%;height:auto;display:block}
.ad .tarja{position:absolute;top:14px;left:14px;z-index:2;border-radius:var(--r-pill);padding:6px 13px;
  font-weight:700;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--white)}
.ad .tarja--antes{background:var(--ink)}
.ad .tarja--depois{background:#8E6350}

/* v5 · Histórias em vídeo · sistema de reels medido da home da Renova:
   full-bleed, 9:16, raio 20, card ativo em scale 1.14 com opacidade 1 e os outros em .66,
   vizinhos empurrados por --reel-shift, tudo em 420ms na curva enfática.
   No lugar do nome da pessoa eles usam esse espaço pra um chip de vidro com o produto. */
/* --sb e a largura da barra de rolagem, medida no JS. Sem descontar ela, 100vw fica
   MAIOR que a largura util e a faixa full-bleed empurra a pagina pro lado (~15px no
   Windows). No Chromium headless a barra e sobreposta e vale 0, e o bug nao aparece. */
.reels{margin-left:calc(50% - 50vw + var(--sb,0px) / 2);margin-right:calc(50% - 50vw + var(--sb,0px) / 2);
  overflow:hidden;padding:24px 24px 40px;
  --reel-scale:1.06;--reel-w:62vw;--reel-gap:12px;
  --reel-shift:calc(var(--reel-w) * (var(--reel-scale) - 1) / 2)}
@media(min-width:641px){.reels{--reel-scale:1.14;--reel-w:min(66vw,268px);--reel-gap:clamp(12px,2vw,22px);padding:40px 24px 48px}}

/* Os cards dividem a largura INTEIRA da faixa em vez de ficarem centrados com sobra
   nas pontas: --reel-n e a quantidade de cards da pista. O teto de 420px existe para
   as pistas de 1 ou 2 cards (gestantes e masculino) nao virarem um card gigante. */
@media(min-width:1000px){
  .reels{--reel-w:min(calc((100% - var(--reel-gap) * (var(--reel-n,4) - 1)) / var(--reel-n,4)),420px)}
}
.reels-pista{display:flex;justify-content:safe center;margin-left:calc(var(--reel-gap) * -1);overflow-x:auto;scroll-snap-type:x mandatory;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;cursor:grab}
.reels-pista::-webkit-scrollbar{display:none}
.reels-pista.dragging{cursor:grabbing;scroll-snap-type:none}
.reel{position:relative;flex:0 0 auto;width:calc(var(--reel-w) + var(--reel-gap));padding-left:var(--reel-gap);
  scroll-snap-align:center;cursor:pointer}
.reel[data-ativo]{z-index:3}
/* A escala vai no wrapper de FORA, nunca na .reel-caixa. Escalar a propria caixa que tem
   overflow:hidden + border-radius faz o Chromium pintar os filhos absolutos duas vezes
   (o chip aparecia fantasma, deslocado). Medido: com scale:1 na caixa o fantasma some. */
.reel-mov{position:relative;display:block;width:100%;aspect-ratio:9/16;transition:transform 420ms var(--e-emph)}
.reel[data-lado="antes"] .reel-mov{transform:translateX(calc(var(--reel-shift) * -1))}
.reel[data-lado="depois"] .reel-mov{transform:translateX(var(--reel-shift))}
.reel[data-ativo] .reel-mov{transform:scale(var(--reel-scale))}
.reel-caixa{position:absolute;inset:0;overflow:hidden;border-radius:var(--r-20);background:var(--nude-1-50);
  opacity:.66;transition:opacity 420ms var(--e-emph)}
.reel[data-ativo] .reel-caixa{opacity:1}
/* Sem rolagem nao existe carrossel: ninguem escurece, ninguem cresce, ninguem desloca.
   Sem isso, no desktop (onde os 4 cabem) sobrava um card inflado e tres apagados. */
.reels-pista:not(.tem-rolagem) .reel-caixa{opacity:1}
.reels-pista:not(.tem-rolagem){cursor:default}
/* filho direto: senao essa regra pega tambem o thumb dentro do chip e o joga pra absolute */
.reel-caixa>img,.reel-caixa>video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.reel-veu{position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(to top,rgb(28 28 28/.55),rgb(28 28 28/.05) 55%,transparent)}
.reel-play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;
  width:44px;height:44px;border-radius:var(--r-pill);background:rgb(28 28 28/.32);backdrop-filter:blur(1px);
  display:inline-flex;align-items:center;justify-content:center}
.reel-play svg{width:18px;height:18px;fill:var(--off-white);margin-left:2px}
.reel-chip{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:12px}
.reel-chip>span{display:flex;align-items:center;gap:6px;padding:6px 6px 6px 8px;border-radius:14px;
  border:1px solid rgb(255 255 255/.55);background:rgb(255 255 255/.68);backdrop-filter:blur(12px)}
.reel-chip a{display:flex;flex:1;min-width:0;align-items:center;gap:6px;text-decoration:none}
.reel-chip .thumb{width:32px;height:32px;flex:0 0 32px;border-radius:var(--r-8);background:var(--white);
  object-fit:cover;display:block}
.reel-chip .txt{flex:1;min-width:0;overflow:hidden}
.reel-chip .nome{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-weight:500;font-size:13px;line-height:1.25;color:var(--ink)}
.reel-chip .precos{display:flex;align-items:baseline;gap:6px;white-space:nowrap}
.reel-chip .precos s{font-size:12px;color:var(--ink-45)}
.reel-chip .precos strong{font-weight:700;font-size:13px;color:var(--ink)}
@media(max-width:899px){.reel-chip .precos s{display:none}}
.reel-chip button{width:36px;height:36px;flex:0 0 36px;border:0;border-radius:var(--r-pill);background:var(--white);
  color:var(--ink);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;
  transition:background var(--t-base) var(--e-standard),color var(--t-base) var(--e-standard)}
.reel-chip button:hover{background:var(--cta);color:var(--white)}
.reel-chip button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8}

/* v5 · Informação nutricional: tabela de verdade, com os valores do rótulo */
.nutri{max-width:640px;margin:0 auto;background:var(--white);border:1px solid var(--ink-08);
  border-radius:var(--r-16);box-shadow:var(--sh-1);overflow:hidden}
.nutri-topo{padding:18px 22px 14px;border-bottom:1px solid var(--ink-08);background:var(--nude-1-50)}
.nutri-topo strong{display:block;font-weight:600;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}
.nutri-topo span{display:block;margin-top:4px;font-weight:500;font-size:12.5px;color:var(--ink-70)}
.nutri-rolo{overflow-x:auto;min-width:0;contain:paint}
.nutri table{border-collapse:collapse;width:100%}
.nutri thead th{padding:11px 22px;text-align:right;font-weight:600;font-size:10.5px;letter-spacing:.07em;
  text-transform:uppercase;color:var(--ink-45);border-bottom:1px solid var(--ink-08);white-space:nowrap}
.nutri thead th:first-child{text-align:left}
.nutri tbody th{padding:10px 22px;text-align:left;font-weight:500;font-size:14px;color:var(--ink)}
.nutri tbody td{padding:10px 22px;text-align:right;font-weight:600;font-size:14px;color:var(--ink-70);
  font-variant-numeric:tabular-nums;white-space:nowrap}
.nutri tbody tr+tr th,.nutri tbody tr+tr td{border-top:1px solid var(--ink-08)}
.nutri tbody tr:nth-child(even){background:rgb(28 28 28/.015)}
.nutri tbody tr.so-ah th,.nutri tbody tr.so-ah td{font-weight:700;color:var(--ink);background:var(--nude-1-50)}
.nutri-pe{padding:12px 22px 0;font-weight:500;font-size:11px;line-height:1.45;color:var(--ink-45)}
.nutri-pe:last-child{padding-bottom:18px}
/* gestantes: a tabela dessa linha tem 17 nutrientes e não leva ácido hialurônico */
#pdp[data-linha="ge"] .nutri tr.so-ah{display:none}

/* v5 · Comparativo de 3 colunas */
.comp{background:var(--white);border:1px solid var(--ink-08);border-radius:var(--r-16);box-shadow:var(--sh-1);overflow-x:auto;min-width:0}
.comp table{border-collapse:collapse;width:100%;min-width:440px}
.comp thead th{padding:18px 12px 14px;text-align:center;font-weight:600;font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--ink-45);vertical-align:bottom}
.comp thead th:first-child{text-align:left;font-weight:500;text-transform:none;letter-spacing:0;font-size:12px}
.comp thead th.nhv span{display:inline-flex;align-items:center;justify-content:center;background:var(--cta);
  color:var(--white);border-radius:var(--r-8);padding:8px 14px;font-weight:700;font-size:12px;letter-spacing:.08em}
.comp tbody td{padding:13px 12px;border-top:1px solid var(--ink-08);text-align:center;font-weight:700;font-size:15px}
.comp tbody td:first-child{text-align:left;font-weight:500;font-size:13.5px;color:var(--ink-70)}
.comp .s{color:var(--cta)} .comp .p{color:var(--gold)} .comp .n{color:#C0392B}

/* v5 · Como tomar: 4 itens com ícone escuro */
/* Coluna de 360 em vez de metade da tela: a foto centrada numa coluna de 660 deixava
   190px de vao de cada lado. Em REGRA e nao em style inline, porque inline nao obedece
   media query e no mobile a coluna de 360 estourava a largura da tela. */
#como .g2{grid-template-columns:360px 1fr;gap:40px;align-items:center}
@media(max-width:860px){#como .g2{grid-template-columns:1fr;gap:28px}}
#como .foto-bloco{max-width:360px}
.tomar{display:grid;grid-template-columns:1fr 1fr;gap:26px 34px}
@media(max-width:560px){.tomar{grid-template-columns:1fr}}
.tomar .it{display:flex;flex-direction:column;gap:7px}
.tomar .ico{width:34px;height:34px;border-radius:var(--r-pill);background:var(--ink);color:var(--white);
  display:inline-flex;align-items:center;justify-content:center;font-size:14px;margin-bottom:4px}

/* v5 · Avaliações */
.aval{display:grid;grid-template-columns:.8fr 1.2fr;gap:40px;align-items:start}
@media(max-width:900px){.aval{grid-template-columns:1fr;gap:26px}}
.nota-grande{background:var(--white);border:1px solid var(--ink-08);border-radius:var(--r-16);padding:26px;
  display:flex;flex-direction:column;gap:3px}
.nota-grande .n{font-weight:300;font-size:64px;line-height:1}
.bars{display:flex;flex-direction:column;gap:8px;margin-top:16px}
.bar{display:grid;grid-template-columns:30px 1fr 62px;gap:10px;align-items:center;
  font-weight:500;font-size:11.5px;font-variant-numeric:tabular-nums;color:var(--ink-70)}
.bar .track{height:5px;border-radius:var(--r-pill);background:var(--ink-08);overflow:hidden}
.bar .track b{display:block;height:100%;background:var(--gold);border-radius:var(--r-pill)}
.bar .qt{text-align:right;color:var(--ink-45)}
.depo{background:var(--white);border:1px solid var(--ink-08);border-radius:var(--r-16);padding:22px;
  display:flex;flex-direction:column;gap:10px}
.depo .quote{font-weight:500;font-size:15px;line-height:1.55;color:var(--ink)}
.depo .quem{font-weight:600;font-size:13px}
.depo .meta{font-weight:500;font-size:11.5px;color:var(--ink-45)}

/* chips zero */
.zeros{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:22px}
.zeros span{display:inline-flex;align-items:center;gap:7px;background:var(--white);border:1px solid var(--ink-08);
  border-radius:var(--r-pill);padding:8px 15px;font-weight:600;font-size:12px;color:var(--ink-70)}
.zeros .tick{color:var(--cta);font-weight:700;font-style:normal}

/* dobras */
.dobra{padding:80px 0;position:relative;background:var(--off-white)}
@media(max-width:640px){.dobra{padding:56px 0}}
.dobra--white{background:var(--white)}
.dobra--ink{background:var(--ink);color:var(--off-white)}
.dobra--ink .corpo{color:rgb(245 244 240/.72)}
.dobra--ink .corpo b{color:var(--off-white)}
.head{display:flex;flex-direction:column;gap:10px;margin-bottom:34px;max-width:58ch}

/* reveal escalonado */
html.js [data-rev]:not([data-anim]){opacity:0;transform:translateY(40px)}
html.js [data-rev]:not([data-anim]).in{opacity:1;transform:none;transition:opacity var(--t-slow) var(--e-out),transform var(--t-slow) var(--e-out)}
html.js [data-rev]:not([data-anim]).now{opacity:1;transform:none}

/* grade genérica de 4 */
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
@media(max-width:900px){.g4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.g4{grid-template-columns:1fr}}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center}
@media(max-width:900px){.g2{grid-template-columns:1fr;gap:24px}}
.cartao{background:var(--white);border:1px solid var(--ink-08);border-radius:var(--r-16);padding:22px;
  display:flex;flex-direction:column;gap:8px}
.foto-bloco{border-radius:var(--r-16);overflow:hidden;background:var(--white);border:1px solid var(--ink-08)}
.foto-bloco img{width:100%;height:auto;display:block}

/* PainMatch em abas */
.abas{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:22px}
.abas button{padding:0 18px;height:44px;border:1px solid var(--ink-16);border-radius:var(--r-pill);
  font-weight:600;font-size:13px;color:var(--ink-70);background:var(--white);
  transition:border-color var(--t-base) var(--e-standard),background var(--t-base) var(--e-standard),color var(--t-base) var(--e-standard)}
.abas button:hover{border-color:var(--rotulo)}
.abas button[aria-selected="true"]{background:var(--ink);border-color:var(--ink);color:var(--white)}
.painel-caso{background:var(--nude-1-50);border-radius:var(--r-16);padding:30px}
.painel-caso[hidden]{display:none}
.painel-caso .g2{gap:34px;align-items:start}

/* linha do tempo */
.tl{--tl-fill:0;position:relative;padding-top:8px}
/* top 16 e nao 19: o centro da bolinha esta em 8 (padding do .tl) + 9 (metade de 18) = 17,
   e o trilho tem 2px de altura. Com 19 ele passava 5px abaixo das bolinhas. */
.tl .rail{position:absolute;left:0;right:0;top:16px;height:2px;background:var(--ink-08)}
.tl .rail b{position:absolute;left:0;top:0;bottom:0;width:100%;background:var(--nude-3);display:block;
  transform:scaleX(var(--tl-fill));transform-origin:left center}
.fases{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;position:relative}
@media(max-width:860px){.fases{grid-template-columns:repeat(2,1fr);gap:30px}.tl .rail{display:none}}
.fase{display:flex;flex-direction:column;gap:7px}
/* box-sizing pra borda nao vazar 2px pra fora da coluna, e 18px pra manter o tamanho */
.fase .dot{box-sizing:border-box;width:18px;height:18px;border-radius:50%;background:var(--off-white);border:2px solid var(--ink-16);
  margin-bottom:14px;transition:background var(--t-base) var(--e-emph),border-color var(--t-base) var(--e-emph),transform var(--t-base) var(--e-emph)}
.fase.on .dot{background:var(--nude-3);border-color:var(--rotulo);transform:scale(1.35)}
.fase .marca{font-weight:600;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-45);transition:color var(--t-base) var(--e-standard)}
.fase.on .marca{color:var(--rotulo)}
.fase .quando{font-weight:600;font-size:22px;line-height:1.1;transition:color var(--t-base) var(--e-standard)}
.fase.on .quando{color:var(--rotulo)}
.fase ul{display:flex;flex-direction:column;gap:5px;margin-top:4px}
.fase li{display:grid;grid-template-columns:14px 1fr;gap:8px;font-weight:500;font-size:13px;line-height:1.4;color:var(--ink-70)}
.fase .tick{color:var(--rotulo)}
.selo-fase{align-self:flex-start;background:var(--nude-4);color:var(--white);border-radius:var(--r-pill);
  padding:4px 11px;font-weight:600;font-size:10px;letter-spacing:.1em;text-transform:uppercase;margin-top:2px}
.pcts{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:40px;padding-top:32px;border-top:1px solid var(--ink-08)}
@media(max-width:760px){.pcts{grid-template-columns:1fr;gap:18px}}
.pct{display:flex;align-items:baseline;gap:14px}
.pct b{font-weight:300;font-size:52px;line-height:.9;color:var(--rotulo);font-variant-numeric:tabular-nums}
.pct span{font-weight:500;font-size:13.5px;line-height:1.4;color:var(--ink-70);max-width:18ch}

/* acordeão · altura medida, 350ms */
.acc{border-top:1px solid var(--ink-08)}
.acc-item{border-bottom:1px solid var(--ink-08)}
.acc-trigger{width:100%;display:flex;align-items:center;gap:14px;padding:20px 0;text-align:left;min-height:66px}
.acc-trigger .nome{font-weight:600;font-size:16px;flex:1}
.acc-trigger .dose{font-weight:600;font-size:12px;letter-spacing:.08em;color:var(--rotulo);
  border:1px solid var(--ink-16);border-radius:var(--r-pill);padding:4px 10px;white-space:nowrap;
  transition:border-color var(--t-base) var(--e-standard),background var(--t-base) var(--e-standard)}
.acc-trigger:hover .dose{border-color:var(--rotulo);background:var(--nude-1-50)}
.acc-trigger .mais{width:22px;height:22px;position:relative;flex:0 0 22px}
.acc-trigger .mais::before,.acc-trigger .mais::after{content:"";position:absolute;background:var(--ink);
  transition:transform var(--t-base) var(--e-emph),opacity var(--t-base) var(--e-standard)}
.acc-trigger .mais::before{left:0;right:0;top:10px;height:2px}
.acc-trigger .mais::after{top:0;bottom:0;left:10px;width:2px}
.acc-trigger[aria-expanded="true"] .mais::after{transform:rotate(90deg);opacity:0}
.acc-panel{height:0;overflow:hidden;transition:height 350ms var(--e-standard)}
.acc-panel .inner{padding:0 0 22px;max-width:66ch}
.acc-item.open .acc-panel{height:var(--panel-h)}

/* barra de compra FIXA no rodapé da tela, como na PDP deles */
.barra-compra{position:fixed;left:0;right:0;bottom:0;z-index:55;background:var(--white);
  border-top:1px solid var(--ink-08);box-shadow:0 -8px 30px rgb(28 28 28/.08);
  transform:translateY(110%);transition:transform var(--t-chrome) var(--e-emph)}
.barra-compra.on{transform:translateY(0)}
.barra-compra .in{display:flex;align-items:center;gap:20px;padding:12px 0}
.barra-compra .qual{display:flex;align-items:center;gap:12px;flex:1;min-width:0}
.barra-compra .mini{width:46px;height:46px;border-radius:var(--r-8);overflow:hidden;border:1px solid var(--ink-08);flex:0 0 46px}
.barra-compra .mini img{width:100%;height:100%;object-fit:cover;display:block}
.barra-compra .txt{min-width:0}
.barra-compra .txt .t-card{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.barra-compra .preco{font-size:22px}
@media(max-width:640px){
  .barra-compra .qual .txt{display:none}
  .barra-compra .btn{flex:1;padding:0 16px}
}

/* FAB do WhatsApp */
.fab{position:fixed;right:20px;bottom:96px;z-index:54;width:52px;height:52px;border-radius:var(--r-pill);
  background:var(--cta);color:var(--white);display:inline-flex;align-items:center;justify-content:center;
  box-shadow:var(--sh-3);transition:transform var(--t-base) var(--e-emph)}
.fab:hover{transform:scale(1.06)}
.fab svg{width:26px;height:26px;fill:currentColor}

/* aviso */
/* mesmo tratamento de card do resto da página: fio de 1px e raio 16.
   A ênfase fica no eyebrow em caramelo, não numa tarja lateral. */
.aviso{background:var(--white);border:1px solid var(--ink-08);border-radius:var(--r-16);
  padding:22px;display:flex;flex-direction:column;gap:10px;max-width:76ch}
.aviso .atributo{color:var(--rotulo)}
.rodape{background:var(--ink);color:rgb(245 244 240/.6);padding:40px 0 110px;font-weight:500;font-size:12px;line-height:1.7}
.rodape b{color:var(--off-white);font-weight:600}
@media(prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  html.js [data-rev]{opacity:1;transform:none}
}

/* ============================================================
   RODAPÉ do site · quatro colunas + barra legal
   Conteúdo, links, telefone, e-mail e CNPJ são os que estão no
   rodapé da loja no ar. Marcas de pagamento em SVG inline: vetor
   não borra em nenhuma densidade e não pesa base64.
   ============================================================ */
.pe{background:var(--ink);color:rgb(245 244 240/.62);padding:64px 0 0}
.pe a{color:rgb(245 244 240/.62);text-decoration:none;transition:color var(--t-base) var(--e-standard)}
.pe a:hover{color:var(--off-white)}
.pe-grade{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:40px}
@media(max-width:900px){.pe-grade{grid-template-columns:1fr 1fr;gap:34px}}
@media(max-width:560px){.pe-grade{grid-template-columns:1fr;gap:30px}}
.pe-marca .logo{display:inline-flex;color:var(--off-white)}
.pe-marca .logo svg{height:22px;width:auto;fill:currentColor}
.pe-marca p{margin-top:16px;font-weight:500;font-size:13px;line-height:1.65;max-width:34ch}
.pe h3{font-weight:600;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--off-white);margin-bottom:16px}
.pe ul{display:flex;flex-direction:column;gap:10px}
.pe li{font-weight:500;font-size:13.5px;line-height:1.4}
.pe-fala{display:flex;flex-direction:column;gap:10px;font-weight:500;font-size:13.5px}
.pe-fala a{display:inline-flex;align-items:center;gap:9px}
.pe-fala svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;flex:0 0 16px}
.pe-selos{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
.pe-selos span{border:1px solid rgb(245 244 240/.2);border-radius:var(--r-8);padding:7px 11px;
  font-weight:600;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:rgb(245 244 240/.72)}
.pe-barra{margin-top:52px;border-top:1px solid rgb(245 244 240/.14);padding:22px 0 26px;
  display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.pe-legal{font-weight:500;font-size:12px;line-height:1.6}
.pe-legal b{color:var(--off-white);font-weight:600}
.pe-pag{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pe-pag i{display:inline-flex;align-items:center;justify-content:center;width:40px;height:26px;
  background:var(--white);border-radius:var(--r-4);padding:3px}
.pe-pag i svg{width:100%;height:100%}
.pe-pag em{font-style:normal;font-weight:700;font-size:10.5px;letter-spacing:.08em;color:var(--ink);
  display:inline-flex;align-items:center;justify-content:center;min-width:40px;padding:0 7px;height:26px;
  background:var(--white);border-radius:var(--r-4);white-space:nowrap}
.pe-nota{border-top:1px solid rgb(245 244 240/.14);padding:20px 0 110px;font-weight:500;font-size:11.5px;
  line-height:1.65;color:rgb(245 244 240/.42)}
.pe-nota b{color:rgb(245 244 240/.62);font-weight:600}
.pe-nota code{background:rgb(245 244 240/.1);color:rgb(245 244 240/.72);border-radius:3px;padding:1px 5px}

/* ---------- Ajustes de tela pequena, todos medidos ---------- */
/* Em 320px a pilula pode ter 100%-40=280px, mas o conteudo minimo pedia ~308:
   logo 74 + gap 34 + bloco da direita 152 + padding 48. Aqui ela ganha o espaco. */
@media(max-width:900px){
  /* "Rastrear pedido" vive no menu de tela cheia e no rodape; no header ele era o que
     mais empurrava a pilula no mobile. */
  .hdr .rastrear{display:none}
}
@media(max-width:420px){
  /* Precisa repetir o seletor do estado rolado: html.is-scrolled .hdr .pill tem (0,3,0)
     e sobrescrevia o max-width daqui, deixando a pilula estourar em 320px. */
  .hdr .pill,html.is-scrolled .hdr .pill{max-width:calc(100% - 16px);padding:0 10px;gap:8px}
  .hdr .logo svg{height:16px}
  .hdr .right{gap:0}
  /* em 320 nao cabem quatro alvos de 44px: a conta e o menos essencial e sai */
  .hdr .right [aria-label="Minha conta"]{display:none}
  /* os cartoes de selo nao encolhiam abaixo do conteudo e vazavam 34px */
  .selo{padding:16px 8px}
  .selo img{width:84px}
}
/* Alvo de toque de 44px: o logo tem 18px de altura de desenho, o resto vem de padding.
   Nao muda nada visual, so a area clicavel. */
.hdr .logo{padding:13px 0}
/* O botao do chip do reel tem 36px (o mesmo da Renova). No carrossel de toque isso fica
   abaixo do minimo de 44, entao ele cresce onde a pista e arrastada com o dedo. */
@media(max-width:1000px){
  .reel-chip button{width:44px;height:44px;flex:0 0 44px}
  .reel-chip>span{min-height:56px}
}

/* ---------- Menu de tela cheia no mobile ----------
   Medido no site deles em 390px: painel branco ocupando a tela inteira, transição de
   520ms em cubic-bezier(.16,1,.3,1), e véu escuro a 50% em 420ms ease-in-out.
   Sem [hidden]: uso visibility com delay, porque classe de display contra [hidden] já
   me custou três bugs nesta página. */
.menu-abre{display:none}
@media(max-width:900px){.menu-abre{display:inline-flex}}
.menu-veu{position:fixed;inset:0;z-index:70;background:rgb(28 28 28/.5);opacity:0;
  visibility:hidden;transition:opacity 420ms ease-in-out,visibility 0s linear 420ms}
.menu-veu.on{opacity:1;visibility:visible;transition:opacity 420ms ease-in-out,visibility 0s}
.menu-mob{position:fixed;inset:0;z-index:71;background:var(--white);color:var(--ink);
  transform:translateX(100%);visibility:hidden;overflow-y:auto;
  transition:transform 520ms var(--e-expo),visibility 0s linear 520ms;
  display:flex;flex-direction:column;padding:20px 20px 40px}
.menu-mob.on{transform:none;visibility:visible;transition:transform 520ms var(--e-expo),visibility 0s}
.menu-topo{display:flex;align-items:center;justify-content:space-between;min-height:44px;margin-bottom:26px}
.menu-mob h2{font-weight:600;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-45)}
.menu-mob ul{display:flex;flex-direction:column}
.menu-mob li{border-bottom:1px solid var(--ink-08)}
.menu-mob li a{display:flex;align-items:center;min-height:56px;font-weight:300;font-size:22px;
  letter-spacing:.03em;text-transform:uppercase;color:var(--ink)}
.menu-mob .secao{margin-top:30px}
.menu-mob .secao li a{font-size:15px;font-weight:500;text-transform:none;letter-spacing:0;min-height:48px}
.menu-mob .pe-fala{margin-top:auto;padding-top:30px;color:var(--ink-70)}
.menu-mob .pe-fala a{color:var(--ink-70)}

/* ---------- Prévia mobile (ferramenta de conferência, não é parte do site) ---------- */
.previa-abre{position:fixed;left:16px;bottom:16px;z-index:150;display:inline-flex;align-items:center;gap:9px;
  min-height:44px;padding:0 16px;border:1px solid var(--ink-16);border-radius:var(--r-pill);
  background:var(--white);color:var(--ink);box-shadow:var(--sh-2);cursor:pointer;
  font-weight:600;font-size:12px;letter-spacing:.08em;text-transform:uppercase;
  transition:transform var(--t-base) var(--e-emph),box-shadow var(--t-base) var(--e-standard)}
.previa-abre:hover{transform:translateY(-2px);box-shadow:var(--sh-3)}
.previa-abre svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8}
@media(max-width:900px){.previa-abre{display:none}}
.previa{position:fixed;inset:0;z-index:200;background:rgb(28 28 28/.86);opacity:0;visibility:hidden;
  transition:opacity 320ms var(--e-standard),visibility 0s linear 320ms;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:24px}
.previa.on{opacity:1;visibility:visible;transition:opacity 320ms var(--e-standard),visibility 0s}
.previa-barra{display:flex;align-items:center;gap:8px}
.previa-barra button{min-height:38px;padding:0 15px;border:1px solid rgb(245 244 240/.28);
  border-radius:var(--r-pill);background:transparent;color:rgb(245 244 240/.7);cursor:pointer;
  font-weight:600;font-size:11.5px;letter-spacing:.08em;
  transition:background var(--t-base) var(--e-standard),color var(--t-base) var(--e-standard)}
.previa-barra button:hover{color:var(--off-white);background:rgb(245 244 240/.1)}
.previa-barra button[aria-pressed="true"]{background:var(--off-white);color:var(--ink);border-color:var(--off-white)}
.previa-barra .fecha{margin-left:10px}
/* moldura de aparelho: a altura acompanha a tela para caber em notebook */
.previa-frame{background:var(--ink);border-radius:46px;padding:11px;box-shadow:0 30px 80px rgb(0 0 0/.5);
  flex:0 0 auto;transition:width 320ms var(--e-emph)}
.previa-frame iframe{display:block;width:100%;height:min(844px,calc(100vh - 190px));
  border:0;border-radius:36px;background:var(--white)}
.previa-nota{font-weight:500;font-size:11.5px;color:rgb(245 244 240/.55);text-align:center;max-width:44ch}

/* ---------- Carrosseis: setas, como no mobile deles ----------
   Injetadas por JS so nas pistas que de fato transbordam, entao nao aparecem quando
   todos os itens ja cabem na tela. */
.rolo-setas{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.rolo-setas button{width:44px;height:44px;border-radius:var(--r-pill);
  border:1px solid var(--ink-16);background:var(--white);color:var(--ink);cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
  transition:background var(--t-base) var(--e-standard),border-color var(--t-base) var(--e-standard),
    opacity var(--t-base) var(--e-standard)}
.rolo-setas button:hover{background:var(--nude-1-50);border-color:var(--rotulo)}
.rolo-setas button[disabled]{opacity:.34;cursor:default}
.rolo-setas svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2}
/* dentro da faixa full-bleed dos reels as setas respeitam o gutter */
.reels .rolo-setas{padding:0 4px}
/* "Produtos em destaque": grade de 2 colunas no mobile em vez de carrossel.
   Como carrossel de 64% ele cortava o segundo card no meio do preco. */
@media(max-width:900px){
  .strip{display:grid;grid-template-columns:repeat(2,1fr);gap:30px 12px;overflow:visible;cursor:default}
  .strip>.card{flex:none;min-width:0}
}
@media(max-width:360px){.strip{grid-template-columns:1fr;gap:26px}}

/* ---------- Carrinho: cupom, desconto e total ---------- */
.dw-cupom{margin-bottom:14px}
.dw-cupom-linha{display:flex;gap:8px}
.dw-cupom-linha input{flex:1 1 auto;min-width:0;height:44px;padding:0 14px;
  border:1px solid var(--ink-16);border-radius:var(--r-10);background:var(--white);
  font:inherit;font-size:14px;color:var(--ink)}
.dw-cupom-linha input::placeholder{color:var(--ink-45)}
.dw-cupom-linha input:focus-visible{outline:2px solid var(--ink);outline-offset:1px}
.dw-cupom-linha button{flex:0 0 auto;height:44px;padding:0 18px;border:0;
  border-radius:var(--r-10);background:var(--ink);color:var(--off-white);
  font:inherit;font-size:13px;font-weight:600;letter-spacing:.02em;cursor:pointer}
.dw-cupom-msg{margin:8px 0 0;font-size:12.5px;line-height:1.4}
.dw-cupom-msg[data-ok]{color:var(--cta-dark)}
.dw-cupom-msg[data-erro]{color:#B4423A}
/* o botao de tirar o cupom e texto, nao caixa: ele nao disputa com o Aplicar */
.dw-tira-cupom{border:0;background:none;padding:0 0 0 6px;font:inherit;font-size:11.5px;
  color:var(--ink-45);text-decoration:underline;cursor:pointer}
.soma--desc .preco{color:var(--cta-dark)}
.soma--total{border-top:1px solid var(--ink-08);padding-top:10px;margin-top:2px}

/* ---------- CORTINA · uma folha solida desce, cobre e continua descendo ----------
   Sem fundo proprio: so as barras, em ink. O quadro do pattern ja mede 96vw e o que anima
   e o clip-path, entao as barras nunca esticam. Fundo off-white so no instante do corte. */
.cortina{position:fixed;inset:0;z-index:9000;pointer-events:none;visibility:hidden}
.cortina[data-ativa]{visibility:visible;pointer-events:auto}
/* DESCIDA: a folha do pattern desce de cima, cobre e continua descendo para sair.
   transform em vez de clip-path porque translate so compoe, nao repinta, e porque
   a folha anda inteira: nenhuma barra do pattern estica em nenhum quadro.
   Fundo off-white na propria folha, e nao no veu atras: quem cobre a pagina e ela. */
.ct-pat{position:absolute;inset:0;width:100%;
  will-change:transform;background:var(--ink);
  transform:translateY(-100%);
  transition:transform 620ms var(--e-emph)}
.cortina[data-aberta] .ct-pat{transform:translateY(0)}
/* chegada: a borda esquerda avanca e descobre a pagina nova, saindo pela direita.
   Declarada depois de [data-aberta] para vencer o empate de especificidade. */
.cortina[data-saindo] .ct-pat{transform:translateY(100%);
  transition-timing-function:cubic-bezier(.4,0,1,1)}
.cortina[data-seco] .ct-pat,.cortina[data-seco]::before{transition:none}
@media(prefers-reduced-motion:reduce){.cortina{display:none}}

/* ---------- Quebra de linha equilibrada em TODA head e subhead ----------
   Regra do Matheus: a ultima linha nunca pode ficar com duas ou tres palavras
   soltas. text-wrap:balance faz o navegador testar as quebras e escolher a que
   deixa as linhas com larguras parecidas; pretty resolve o caso do corpo longo,
   onde balance nao age (o motor limita balance a poucas linhas) mas a orfa de uma
   palavra ainda incomoda. */
h1,h2,h3,h4,.t-dobra,.t-benef,.t-card,.atributo,.pagto-titulo,.vip-tit,
.head .corpo,.head .corpo-sm,.vip-sub,.quem,.lbl{text-wrap:balance}
.corpo,.corpo-sm,.cap,.quote,.meta,p{text-wrap:pretty}

/* ---------- Mobile: head e subhead centradas ----------
   Medido na home deles: no mobile TODA head e subhead sai com text-align:center
   (dobra a dobra, folga 0/0 nas duas bordas); no desktop as mesmas voltam a left.
   Aqui isso vira uma regra do sistema em vez de ajuste dobra a dobra: .head e um
   flex em coluna, entao basta align-items e text-align, e margem auto nos filhos
   para os que carregam max-width proprio. */
@media(max-width:860px){
  .head{align-items:center;text-align:center;max-width:none;
    margin-left:auto;margin-right:auto}
  .head>*{margin-left:auto;margin-right:auto}
  /* subheads que vivem fora de .head */
  .cap-equilibrio{margin-left:auto;margin-right:auto}
}

/* ---------- Convivencia com a mola do anime.js ----------
   A mola escreve transform inline a cada quadro; transition de transform em cima
   disso transforma cada quadro numa transicao e arrasta o movimento. */
html[data-anime-hover] .card .tile,html[data-anime-hover] .porta{transition:none}
html[data-anime-heads] .head .t-dobra{opacity:1}

/* ---------- Padrao da loja: botao, rodape e header ----------
   Um botao primario para a loja toda: caramelo de base, verde varrendo por cima e
   ficando, 46px de altura (44 no mobile). Antes so os cards da home tinham isso; o
   .btn base nao declarava altura e ela vinha do padding, dando 53 ou 54px. */
.btn:not(.btn--ghost):not(.btn--ink):not(.btn--claro){
  height:46px;padding:0 30px;
  background-color:var(--rotulo);
  background-image:linear-gradient(to right,var(--cta) 50%,transparent 50%);
  background-size:220% 100%;background-position:100% 0;
  transition:background-position var(--t-sweep) var(--e-sweep),
    box-shadow var(--t-base) var(--e-standard)}
.btn:not(.btn--ghost):not(.btn--ink):not(.btn--claro):hover{background-position:0 0;box-shadow:var(--sh-3)}
@media(max-width:1000px){.btn:not(.btn--ghost):not(.btn--ink):not(.btn--claro){height:44px;padding:0 22px}}
/* o rodape na camada do painel: o hero e sticky pela pagina inteira e, com z-index
   menor, pintava por cima do rodape. Vale para qualquer pagina que ganhe um sticky. */
.pe{position:relative;z-index:2}
/* a logo respirando no mobile: com 10px ela encostava na borda do pill */
@media(max-width:860px){
  .hdr .pill,html.is-scrolled .hdr .pill{padding:0 16px}
}

/* ---------- PDP: alinhamentos e linha do tempo ---------- */
/* 3b. a foto e os cartoes partem do MESMO topo. Com align-items:center a coluna de
   cartoes, mais alta, centralizava a foto e ela flutuava no meio da dobra. */
#como .g2{align-items:start}
/* 3c. a foto de produto tem fundo branco; sobre a dobra branca ela desaparecia.
   Prato nude atras dela, e a dobra volta ao off-white. */
#como .foto-bloco{background:var(--nude-1-50);border-radius:var(--r-16);
  overflow:hidden;padding:0}

/* 4b. LINHA DO TEMPO VERTICAL NO MOBILE, igual a da home. Sem trilho, a bolinha
   solta no canto do card nao quer dizer nada. Aqui a linha desce: uma coluna,
   trilho por segmento dentro de cada passo (termina sozinho no ultimo) e a
   bolinha sentada nele. */
@media(max-width:860px){
  .fases{grid-template-columns:1fr;gap:0}
  .tl .rail{display:none}
  .tl-step{position:relative;display:grid;grid-template-columns:auto 1fr;
    column-gap:16px;align-items:start;padding-bottom:28px}
  .fases li.tl-step:last-child{padding-bottom:0}
  .tl-step::before{content:"";position:absolute;left:5px;top:18px;bottom:-11px;
    width:2px;background:var(--ink-08)}
  .fases li.tl-step:last-child::before{display:none}
  .tl-step.on::before{background:var(--nude-3)}
  .tl-step .dot,.fase .dot{grid-area:1/1;width:12px;height:12px;margin:5px 0 0;
    align-self:start}
  .tl-step.on .dot,.fase.on .dot{transform:scale(1.25)}
  .tl-step .marca{grid-area:1/2;margin:0}
  .tl-step .quando,.tl-step .selo-fase,.tl-step ul{grid-column:2}
  .tl-step .quando{margin:4px 0 8px}
  .tl-step .selo-fase{justify-self:start;margin-bottom:8px}
}

/* ---------- Videos: hover e entrada ----------
   Antes o reel so tinha o estado ativo do carrossel (opacidade e escala) e nenhuma
   resposta ao mouse. O hover NAO vai no .reel-mov: e ali que mora a escala do item
   ativo, e as duas brigariam. Vai na imagem, que esta dentro de .reel-caixa com
   overflow:hidden, e no botao de play. */
.reel-caixa>img,.reel-caixa>video{transition:transform 560ms var(--e-out)}
.reel:hover .reel-caixa>img,.reel:focus-visible .reel-caixa>img,
.reel:hover .reel-caixa>video,.reel:focus-visible .reel-caixa>video{transform:scale(1.06)}
.reel-play{transition:transform 320ms var(--e-emph),box-shadow 320ms var(--e-standard),opacity 260ms var(--e-standard)}
.reel:hover .reel-play,.reel:focus-visible .reel-play{transform:translate(-50%,-50%) scale(1.14);
  box-shadow:var(--sh-3)}
/* o veu escurece um tico no hover, para o play ganhar contraste */
.reel-veu{transition:opacity 380ms var(--e-standard)}
.reel:hover .reel-veu{opacity:.82}
/* ---------- Depoimento em video no card e no visor ----------
   Os arquivos vem dos Arquivos da Shopify (720x1280 com audio AAC), nao do YouTube.
   No card: mudo, em laco, e o poster continua sendo o primeiro quadro que a pessoa ve.
   No visor: com voz. O play desaparece enquanto toca, senao fica um botao de tocar
   sobre um video que ja esta tocando. */
.reel-vid{opacity:0;transition:opacity 300ms var(--e-standard)}
.reel[data-tocando] .reel-vid{opacity:1}
.reel[data-tocando] .reel-play{opacity:0;transform:translate(-50%,-50%) scale(.86)}
.visor-palco>video{display:none;background:var(--ink)}
.visor-palco>video[data-usando]{display:block}
@media(prefers-reduced-motion:reduce){.reel-vid{display:none}}
@media(hover:none){
  .reel-caixa>img,.reel-caixa>video,.reel-play,.reel-veu{transition:none}
}

/* ---------- Como tomar: rotina numerada ----------
   Eram tres caixas brancas com borda empilhadas ao lado da foto: tres molduras
   sobre uma dobra que ja e um fundo, e nada indicava que a ordem importa. Aqui e
   sequencia, na mesma linguagem da linha do tempo da pagina: numero, trilho
   ligando um ao outro, texto ao lado. O trilho e um ::before DENTRO de cada item,
   entao o ultimo nao desenha nada e nao sobra risco solto na ponta. */
.rotina{list-style:none;margin:0;padding:0;display:grid;gap:0}
.rotina li{position:relative;display:grid;grid-template-columns:auto 1fr;
  column-gap:16px;align-items:start;padding-bottom:26px}
.rotina li:last-child{padding-bottom:0}
.rotina li::before{content:"";position:absolute;left:15px;top:34px;bottom:-2px;
  width:2px;background:var(--ink-08)}
.rotina li:last-child::before{display:none}
/* o numero e o mesmo marcador da linha do tempo, com o algarismo dentro */
.rotina .num{box-sizing:border-box;width:32px;height:32px;border-radius:50%;
  background:var(--nude-1-50);color:var(--rotulo);
  display:inline-flex;align-items:center;justify-content:center;
  font-weight:600;font-size:14px;letter-spacing:0;flex:0 0 auto}
.rotina .t-card{margin:5px 0 4px}
.rotina .corpo-sm{max-width:46ch}

/* ---------- Titulo fatiado: nao duplicar na copia ----------
   O text.split do anime.js guarda o texto inteiro num span invisivel para leitor de
   tela, e marca as palavras visiveis como aria-hidden. Isso e certo para
   acessibilidade, mas ao SELECIONAR a dobra o texto vinha duas vezes, porque os
   dois sao selecionaveis. user-select:none no clone resolve a copia sem tirar ele
   da arvore de acessibilidade. */
.head .t-dobra span[style*="clip-path"]{-webkit-user-select:none;user-select:none}

/* ---------- Visor dos depoimentos ----------
   O play nao tocava nada porque nao existe arquivo de video. Aqui ele abre a imagem
   em tela cheia. Quando os videos existirem, o <video> entra dentro de .visor-palco
   e o resto continua igual. */
.visor{position:fixed;inset:0;z-index:8000;display:none;
  align-items:center;justify-content:center;padding:24px;
  background:rgb(28 28 28/.86)}
.visor[data-aberto]{display:flex}
.visor-palco{position:relative;max-width:min(92vw,520px);width:100%;
  aspect-ratio:9/16;max-height:86vh;border-radius:var(--r-20);overflow:hidden;
  background:var(--ink);box-shadow:var(--sh-3)}
.visor-palco img,.visor-palco video{width:100%;height:100%;object-fit:cover;display:block}
.visor-quem{position:absolute;left:0;right:0;bottom:0;padding:18px 20px;
  background:linear-gradient(to top,rgb(28 28 28/.82),transparent);
  color:var(--off-white);font-weight:600;font-size:14px}
.visor-fecha{position:absolute;top:16px;right:16px;width:40px;height:40px;
  border:0;border-radius:50%;background:rgb(245 244 240/.16);color:var(--off-white);
  font-size:20px;line-height:1;cursor:pointer;display:grid;place-items:center}
.visor-fecha:hover{background:rgb(245 244 240/.28)}
.visor-nota{position:absolute;left:0;right:0;top:calc(50% + 46vh);text-align:center;
  color:rgb(245 244 240/.62);font-size:12px}

/* ---------- Selos do rodape em 2x2 em toda largura ----------
   Estavam em flex-wrap: no desktop viravam uma fileira de quatro e no mobile
   quebravam 3+1. Grade de duas colunas resolve as duas larguras com uma regra. */
.pe-selos{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.pe-selos span{text-align:center}

/* ---------- Bento: «Como tomar» e a composicao ----------
   O #como tinha 700px de altura para 261 de conteudo, e o texto travado em 430px
   deixava 482px vazios a direita de uma coluna de 960. A tabela morava numa dobra
   so dela. Juntas na mesma dobra, as duas preenchem. */
.bento2{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start}
.bento-cel{display:flex;flex-direction:column;gap:22px;min-width:0}
.bento-cel .head{margin-bottom:0}
/* a foto agora ocupa a largura da celula, em faixa: dentro de uma coluna de ~660px
   um quadrado de 360 deixaria buraco dos dois lados */
.bento-cel--como .foto-bloco{width:100%;max-width:none;aspect-ratio:16/10;
  background:var(--nude-1-50);border-radius:var(--r-16);overflow:hidden}
.bento-cel--como .foto-bloco img{width:100%;height:100%;object-fit:cover;display:block}
.bento-cel--como .rotina .corpo-sm{max-width:none}
/* a tabela deixa de ter largura maxima propria: quem manda e a celula */
.bento-cel--nutri .nutri{max-width:none;margin:0;width:100%}
@media(max-width:1000px){
  .bento2{grid-template-columns:1fr;gap:44px}
  .bento-cel--como .foto-bloco{aspect-ratio:16/9}
}

/* ---------- menu «Linhas»: o realce precisa de faixa, não de grifo ----------
   Estava 44px de altura com 14px de recuo, então o retângulo do hover encostava
   na letra dos dois lados. Agora o item respira dentro do painel e o painel
   respira em volta dos itens. */
.nav-drop-menu{padding:8px}
.nav-drop-menu a{min-height:48px;padding:0 16px}
.nav-drop-menu a+a{margin-top:2px}

/* ---------- «Como tomar» no desenho do ritual ----------
   Antes: bolinha de 32px com o número dentro e um fio vertical costurando os passos,
   que é a linguagem de linha do tempo. A referência usa outra: o numeral solto em
   caramelo, pequeno, sentado sobre um filete que separa um passo do outro. O filete
   faz o trabalho que o fio vertical fazia, sem desenhar um trilho.
   Escrito depois do .rotina original de propósito: o que vem depois ganha. */
.rotina li{grid-template-columns:1fr;column-gap:0;padding:16px 0 18px;
  border-top:1px solid var(--ink-08)}
.rotina li::before{display:none}          /* o fio vertical que ligava as bolinhas */
.rotina li:first-child{border-top:0;padding-top:4px}
.rotina .num{width:auto;height:auto;border-radius:0;background:none;
  color:var(--rotulo);display:block;margin-bottom:7px;
  font-weight:400;font-size:15px;letter-spacing:.08em;font-variant-numeric:tabular-nums}
.rotina li>div{grid-column:1}
.rotina .t-card{margin-bottom:4px}

/* a plaquinha da foto, como na referência */
.foto-bloco--passos{position:relative}
.foto-chip{position:absolute;left:14px;top:14px;z-index:2;
  padding:7px 13px;border-radius:var(--r-pill);
  background:rgb(28 28 28/.58);color:var(--off-white);
  font-size:12px;font-weight:500;letter-spacing:.02em;
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
@media(max-width:860px){
  /* 16/09: à esquerda, pedido dele (estava centralizado) */
  .rotina li{text-align:left}
  .foto-chip{left:10px;top:10px;font-size:11px;padding:6px 11px}
}

/* ---------- «+ kit de autocuidado» ----------
   Conferido no seletor da loja: 30 dias NAO leva, 90 e 180 levam. O texto e o
   mesmo da loja, palavra por palavra, porque oferta nao se parafraseia. */
.kit-extra{display:block;margin:5px 0 0;font-weight:600;font-size:11.5px;letter-spacing:.04em;color:var(--rotulo)}
.card .kit-extra{margin-bottom:2px}
.vt-card .kit-extra{margin:6px 0 0}

s.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,500;0,600;0,700;1,500&display=swap">
<style>
:root{
  --off-white:#F5F4F0; --nude-1-50:#EEDED3; --nude-1:#DCBFA7;
  --nude-2:#CCA686;    --nude-3:#BE9374;    --nude-4:#AD7F66;
  --white:#FFF; --ink:#1C1C1C;
  --cta:#5FA830; --cta-dark:#4E8C27;
  --gold:#EDA900/*estrela*/; --gold-soft:#F5CE63;
  --pat-1:#D8B99F; --pat-2:#C79F7E; --pat-3:#B88A6B; --pat-4:#A6765E;
  --ink-70:rgb(28 28 28/.70); --ink-45:rgb(28 28 28/.45);
  --ink-16:rgb(28 28 28/.16); --ink-08:rgb(28 28 28/.08);
  --sh-1:0 4px 18px rgb(28 28 28/.06);
  --sh-2:0 8px 24px rgb(28 28 28/.10);
  --sh-3:0 16px 44px rgb(28 28 28/.14);
  --e-standard:cubic-bezier(.4,0,.2,1); --e-out:cubic-bezier(0,0,.2,1);
  --e-emph:cubic-bezier(.2,0,0,1);      --e-sweep:cubic-bezier(.5,0,.2,1);
  --e-expo:cubic-bezier(.16,1,.3,1);
  --t-fast:150ms; --t-base:300ms; --t-sweep:450ms; --t-slow:700ms; --t-chrome:340ms;
  --r-4:4px; --r-8:8px; --r-16:16px; --r-20:20px; --r-pill:999px;
  --container:1360px; --gutter:40px; --pill-h:66px;
  --f:"Montserrat","Helvetica Neue",Arial,sans-serif;
  --header-h:122px; --hdr-y:56px;
}
@media(max-width:860px){:root{--gutter:20px}}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--off-white);color:var(--ink);font-family:var(--f);font-weight:500;font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}
p,h1,h2,h3,h4,ol,ul{margin:0}ol,ul{padding:0;list-style:none}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:0;background:none;color:inherit}
:focus-visible{outline:2px solid var(--nude-4);outline-offset:3px}
.shell{max-width:calc(var(--container) + var(--gutter)*2);margin:0 auto;padding:0 var(--gutter)}

/* tipografia · papéis do MIV. Na PDP o H1 tem o MESMO corpo do título de dobra:
   o maior tipo da página é a frase de benefício, não o nome do que se vende. */
.t-benef{font-weight:300;font-size:clamp(30px,4vw,48px);line-height:1.06;letter-spacing:.04em;text-transform:uppercase}
.t-dobra{font-weight:300;font-size:30px;line-height:1.06;letter-spacing:.3px;text-transform:uppercase}
@media(max-width:860px){.t-dobra{font-size:24px;letter-spacing:.24px}}
.t-h1{font-weight:300;font-size:30px;line-height:1.1;letter-spacing:.2px;text-transform:uppercase}
.t-card{font-weight:600;font-size:16px;line-height:1.3}
.atributo{font-weight:600;font-size:11.5px;line-height:1;letter-spacing:.16em;text-transform:uppercase}
.corpo{font-weight:500;font-size:16px;line-height:1.6;color:var(--ink-70)}
.corpo b{font-weight:700;color:var(--ink)}
.corpo-sm{font-weight:500;font-size:14px;line-height:20px;color:var(--ink-70)}
.cap{font-weight:500;font-size:12px;line-height:1.45;color:var(--ink-45)}
.preco{font-weight:600;font-size:32px;line-height:1;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.preco-de{font-weight:500;font-size:15px;color:var(--ink-45);text-decoration:line-through;font-variant-numeric:tabular-nums}
.stars{color:var(--gold);font-size:14px;letter-spacing:.14em}
code{font-family:ui-monospace,Consolas,monospace;font-size:.86em;background:var(--nude-1-50);border-radius:3px;padding:1px 5px}

/* pattern do MIV */
.pat{position:absolute;inset:0;pointer-events:none;overflow:hidden;--pc:var(--pat-1);--per:52px}
.pat i{position:absolute;top:0;bottom:0;display:block;background-repeat:repeat-y}
.pat i:nth-child(1){left:0;width:20.54%;background-image:repeating-linear-gradient(to bottom,transparent 0 23.5px,var(--pc) 23.5px 28.5px,transparent 28.5px var(--per))}
.pat i:nth-child(2){left:20.54%;width:20.47%;background-image:repeating-linear-gradient(to bottom,transparent 0 21px,var(--pc) 21px 31px,transparent 31px var(--per))}
.pat i:nth-child(3){left:41.01%;width:19.65%;background-image:repeating-linear-gradient(to bottom,transparent 0 18.5px,var(--pc) 18.5px 33.5px,transparent 33.5px var(--per))}
.pat i:nth-child(4){left:60.66%;width:19.34%;background-image:repeating-linear-gradient(to bottom,transparent 0 16px,var(--pc) 16px 36px,transparent 36px var(--per))}
.pat i:nth-child(5){left:79.98%;width:20.02%;background-image:repeating-linear-gradient(to bottom,transparent 0 13.5px,var(--pc) 13.5px 38.5px,transparent 38.5px var(--per))}
@keyframes pat-drift{from{background-position:0 0}to{background-position:0 var(--per)}}
.pat--drift i{animation:pat-drift 22s linear infinite}

/* ticker + header */
.ticker{position:fixed;left:0;right:0;top:0;z-index:51;height:56px;background:var(--rotulo);color:var(--white);
  overflow:hidden;display:flex;align-items:center;transition:transform var(--t-chrome) var(--e-standard),opacity var(--t-chrome) var(--e-standard)}
html.is-scrolled .ticker{transform:translateY(-100%);opacity:0}

/* barra parada: o formato do desktop. Quatro promessas de uma vez, cada uma com seu
   ícone, separadas por um fio, sem nada andando. O fundo é --rotulo e não --nude-4
   porque branco sobre o nude dá 3,5:1, abaixo do mínimo para 11,5px em caixa alta. */
.tk-fixa{display:flex;align-items:center;justify-content:center;width:100%;height:56px;padding:0 20px}
.tk-i{display:inline-flex;align-items:center;gap:9px;padding:0 26px;position:relative;
  font-weight:500;font-size:11.5px;letter-spacing:.11em;text-transform:uppercase;white-space:nowrap}
.tk-i+.tk-i::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:1px;height:14px;background:rgb(255 255 255/.34)}
.tk-i svg{width:16px;height:16px;flex:0 0 16px;fill:none;stroke:currentColor;stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}

/* no celular quatro itens não cabem lado a lado, então a lista continua correndo:
   ninguém perde informação */
.ticker .track{display:none;width:max-content;animation:tick 46s linear infinite}
.ticker:hover .track{animation-play-state:paused}
@keyframes tick{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.ticker .track>span{font-weight:500;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap}
.ticker em{font-style:normal;padding:0 26px;color:rgb(255 255 255/.72)}
@media(max-width:900px){
  .tk-fixa{display:none}
  .ticker .track{display:flex}
}
@media(prefers-reduced-motion:reduce){.ticker .track{animation:none}}
.hdr{position:fixed;left:0;right:0;top:0;z-index:50;transform:translateY(var(--hdr-y));transition:transform var(--t-chrome) var(--e-standard)}
.hdr .pill{max-width:min(var(--container),calc(100% - var(--gutter)*2));margin:0 auto;height:var(--pill-h);
  display:flex;align-items:center;gap:34px;padding:0 24px;background:var(--white);
  border:1px solid transparent;border-radius:var(--r-pill);
  transition:max-width var(--t-chrome) var(--e-standard),border-color var(--t-chrome) var(--e-standard),box-shadow var(--t-chrome) var(--e-standard),background-color var(--t-chrome) var(--e-standard)}
html.is-scrolled .hdr .pill{max-width:1080px;border-color:var(--ink-16);box-shadow:var(--sh-2)}
.logo{display:flex;align-items:center;color:var(--ink);flex:0 0 auto}
.logo svg{height:21px;width:auto;display:block;fill:currentColor}
.hdr nav{display:flex;gap:24px;align-items:center}
@media(max-width:900px){.hdr nav{display:none}}
.hdr nav a{font-weight:600;font-size:14px;line-height:21px;letter-spacing:1.4px;text-transform:uppercase}
.hdr .right{margin-left:auto;display:flex;align-items:center;gap:10px}
.icon{position:relative;width:44px;height:44px;border-radius:var(--r-pill);display:inline-flex;align-items:center;justify-content:center;transition:background var(--t-base) var(--e-standard)}
.icon:hover{background:var(--nude-1-50)}
.icon svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;display:block}
.icon .bolha{position:absolute;top:4px;right:4px;min-width:17px;height:17px;border-radius:var(--r-pill);
  background:var(--cta);color:var(--white);font-weight:700;font-size:10px;line-height:17px;text-align:center;padding:0 4px}

/* seletor de linha (troca as 3 PDPs) */
/* padding-top, nao o shorthand: o elemento e .shell seletor, e o shorthand zerava o
   padding horizontal do .shell, jogando o bloco para x=0 em vez dos 40px do gutter. */
.seletor{padding-top:calc(var(--header-h) + 22px)}
/* max-width + scroll: com os três rótulos o controle mede 511px, e numa tela de 390
   o terceiro botão começava fora da tela, por baixo do vizinho. */
.seg{display:flex;width:max-content;max-width:100%;overflow-x:auto;scrollbar-width:none;
  background:var(--white);border:1px solid var(--ink-08);border-radius:var(--r-pill);padding:4px;gap:2px;box-shadow:var(--sh-1)}
.seg::-webkit-scrollbar{display:none}
.seg button{flex:0 0 auto;padding:0 18px;height:38px;border-radius:var(--r-pill);font-weight:600;font-size:12px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--ink-45);white-space:nowrap;transition:background var(--t-base) var(--e-standard),color var(--t-base) var(--e-standard)}
.seg button[aria-current="true"]{background:var(--ink);color:var(--white)}
.seg button:hover{color:var(--ink)}
.seg button[aria-current="true"]:hover{color:var(--white)}

/* troca de linha: só o bloco da linha ativa aparece.
   A especificidade aqui NÃO é detalhe: `.foto-bloco img{display:block}` é (0,1,1) e venceria
   um `[data-l]{display:none}` que é (0,1,0), fazendo as três linhas aparecerem juntas.
   Por isso a regra que esconde é ancorada no id (1,1,0) e a que mostra em (1,2,0). */
#pdp [data-l]{display:none}
/* barra-linha: a barra de compra vive fora do #pdp, então precisa do próprio par */
#barra [data-l]{display:none}
#barra[data-linha="ah"] [data-l="ah"],#barra[data-linha="ge"] [data-l="ge"],#barra[data-linha="ma"] [data-l="ma"]{display:block}
#pdp[data-linha="ah"] [data-l="ah"],#pdp[data-linha="ge"] [data-l="ge"],#pdp[data-linha="ma"] [data-l="ma"]{display:block}

.crumb{padding:14px 0 0;font-weight:500;font-size:12px;color:var(--ink-45)}
.crumb b{color:var(--ink);font-weight:600}

/* ---------- HERO da PDP: galeria + buy box ---------- */
.hero-pdp{display:grid;grid-template-columns:1fr .78fr;gap:56px;padding:22px 0 64px;align-items:start}
@media(max-width:1000px){.hero-pdp{grid-template-columns:1fr;gap:28px}}
.galeria{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.galeria .tile{position:relative;aspect-ratio:1;border-radius:var(--r-16);overflow:hidden;background:var(--white);border:1px solid var(--ink-08)}
/* 1:1 e nao 4/3: TODOS os criativos da galeria sao quadrados (760x760), desenhados com
   a composicao propria. Num tile 4/3 o object-fit:cover cortava 25% da altura e
   fatiava os potes. Com o tile quadrado a arte aparece inteira, sem recorte. */
.galeria .tile:first-child{grid-column:1/3;aspect-ratio:1}
/* faixa do video: o poster e retrato (1080x1130) e aqui vira banner, entao o recorte
   e proposital e o object-position sobe pra nao cortar o rosto. */
.galeria .tile--largo{grid-column:1/3;aspect-ratio:4/3}
.galeria .tile--largo img{object-position:center 22%}
.galeria .tile--largo .play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;
  width:52px;height:52px;border-radius:var(--r-pill);background:rgb(255 255 255/.92);
  display:inline-flex;align-items:center;justify-content:center;pointer-events:none}
.galeria .tile--largo .play svg{width:18px;height:18px;fill:var(--ink);margin-left:2px}
/* selo do canto, igual ao da PDP no ar */
.galeria .selo-gal{position:absolute;left:14px;top:14px;z-index:2;background:var(--ink);color:var(--off-white);
  border-radius:var(--r-pill);padding:6px 13px;font-weight:600;font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase}
.galeria img{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--t-slow) var(--e-out)}
.galeria .tile:hover img{transform:scale(1.04)}

/* coluna de compra PINADA, como na PDP deles (top 100px) */
.buy{position:sticky;top:calc(var(--header-h) + 14px);display:flex;flex-direction:column;gap:16px}
@media(max-width:1000px){.buy{position:static}}
.buy .nota-linha{display:flex;align-items:center;gap:9px}
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chips span{font-weight:600;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-70);
  border:1px solid var(--ink-16);border-radius:var(--r-pill);padding:5px 11px}

/* fluxo de compra em 2 passos numerados (modelo deles) */
.passo{border:1px solid var(--ink-08);border-radius:var(--r-16);background:var(--white);overflow:hidden}
.passo-cab{display:flex;align-items:center;gap:11px;padding:14px 18px;border-bottom:1px solid var(--ink-08)}
.passo-cab .n{width:22px;height:22px;border-radius:var(--r-pill);background:var(--ink);color:var(--white);
  font-weight:700;font-size:11px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 22px}
.passo-cab .t-card{font-size:14px}
.opcoes{display:flex;flex-direction:column;padding:8px}
.opcao{display:grid;grid-template-columns:20px 1fr auto;gap:12px;align-items:center;padding:13px 12px;
  border-radius:var(--r-8);cursor:pointer;transition:background var(--t-base) var(--e-standard)}
.opcao:hover{background:var(--nude-1-50)}
.opcao input{appearance:none;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--ink-16);margin:0;
  transition:border-color var(--t-base) var(--e-standard),box-shadow var(--t-base) var(--e-standard)}
.opcao input:checked{border-color:var(--cta);border-width:5px}
.opcao:has(input:checked){background:var(--nude-1-50)}
.opcao .nome{font-weight:600;font-size:14px}
.opcao .sub{font-weight:500;font-size:12px;color:var(--ink-45)}
.opcao .val{font-weight:600;font-size:15px;font-variant-numeric:tabular-nums;text-align:right}
.opcao .selo-op{display:inline-block;margin-left:8px;background:var(--ink);color:var(--white);border-radius:var(--r-pill);
  padding:2px 8px;font-weight:700;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;vertical-align:1px}
.inclui{display:flex;flex-direction:column;gap:9px;padding:14px 18px}
.inclui li{display:grid;grid-template-columns:16px 1fr;gap:10px;font-weight:500;font-size:13.5px;line-height:1.45;color:var(--ink-70)}
.inclui .tick{color:var(--cta);font-weight:700}

/* UM preço, não cinco */
.bloco-preco{display:flex;flex-direction:column;gap:4px;padding:2px 0}
.bloco-preco .linha1{display:flex;align-items:baseline;gap:11px}
.btn{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-pill);
  font-weight:600;font-size:13px;letter-spacing:.1em;text-transform:uppercase;padding:0 30px;height:54px;
  background:var(--cta);color:var(--white);box-shadow:var(--sh-1);
  transition:background var(--t-base) var(--e-standard),box-shadow var(--t-base) var(--e-standard),transform var(--t-base) var(--e-emph)}
.btn:hover{background:var(--cta-dark);box-shadow:var(--sh-3);transform:translateY(-1px)}
.btn--full{width:100%}
.btn--ghost{background:transparent;color:var(--ink);border:1px solid var(--ink-16);box-shadow:none}
.btn--ghost:hover{background:var(--white);border-color:var(--rotulo);box-shadow:var(--sh-1)}
.garante{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px}
.garante li{display:grid;grid-template-columns:15px 1fr;gap:9px;font-weight:500;font-size:12.5px;color:var(--ink-70)}
.garante .tick{color:var(--rotulo);font-weight:700}

/* nav de âncoras PINADA · aqui ela faz sentido: a página tem 12 mil pixels */
/* A barra de ancoras cola na BASE da pilha do header. O -46px punha ela em 34px, que
   cai dentro da faixa da pilula (8 a 74 com scroll), e ela aparecia por tras e pelos
   lados dela. --header-h ja e a altura do header + folga, e e o que .buy e .seletor usam. */
/* SEM GRUDAR. Ela era sticky e acompanhava a rolagem, aparecendo por cima de todas as
   dobras. Agora fica onde nasceu, logo abaixo do topo, e vai embora com a pagina.
   Continua sendo navegacao de PAGINA; o que saiu foi a perseguicao. */
.ancoras{position:relative;z-index:40;background:var(--white);
  border-top:1px solid var(--ink-08);border-bottom:1px solid var(--ink-08)}
.ancoras ul{display:flex;overflow-x:auto;scrollbar-width:none}
.ancoras ul::-webkit-scrollbar{display:none}
.ancoras a{display:block;padding:15px 16px;font-weight:600;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-45);white-space:nowrap;border-bottom:2px solid transparent;
  transition:color var(--t-base) var(--e-standard),border-color var(--t-base) var(--e-standard)}
.ancoras a:hover{color:var(--ink)}
.ancoras a.on{color:var(--ink);border-bottom-color:var(--rotulo)}

/* eyebrow em pílula, como nas dobras centralizadas da v5 */
.pill-eyebrow{display:inline-flex;align-items:center;background:var(--nude-1-50);color:var(--rotulo);
  border-radius:var(--r-pill);padding:7px 15px;font-weight:600;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase}
.head--centro{align-items:center;text-align:center;max-width:none;margin-left:auto;margin-right:auto}
.head--centro .corpo{max-width:62ch}
.dobra--nude{background:var(--nude-1-50)}

/* v5 · Você se reconhece: 6 linhas de sintoma em acordeão */
.sintomas{display:flex;flex-direction:column;gap:10px}
.sint{background:var(--white);border:1px solid var(--ink-08);border-radius:var(--r-8);overflow:hidden;
  transition:border-color var(--t-base) var(--e-standard)}
.sint:hover{border-color:var(--rotulo)}
.sint-cab{width:100%;display:grid;grid-template-columns:30px 1fr 20px;gap:12px;align-items:center;padding:13px 16px;text-align:left}
.sint-cab .ico{width:30px;height:30px;border-radius:var(--r-pill);background:var(--nude-1-50);
  display:inline-flex;align-items:center;justify-content:center;font-size:13px;color:var(--rotulo)}
.sint-cab .nome{font-weight:600;font-size:14px}
.sint-cab .mais{position:relative;width:16px;height:16px}
.sint-cab .mais::before,.sint-cab .mais::after{content:"";position:absolute;background:var(--ink-45);
  transition:transform var(--t-base) var(--e-emph),opacity var(--t-base) var(--e-standard)}
.sint-cab .mais::before{left:0;right:0;top:7px;height:2px}
.sint-cab .mais::after{top:0;bottom:0;left:7px;width:2px}
.sint-cab[aria-expanded="true"] .mais::after{transform:rotate(90deg);opacity:0}
.sint-corpo{height:0;overflow:hidden;transition:height 350ms var(--e-standard)}
.sint-corpo .inner{padding:0 16px 14px 58px}
.sint.open .sint-corpo{height:var(--h)}

/* v5 · O que a NHV faz: 4 cards com ilustração */
.faz{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
@media(max-width:900px){.faz{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.faz{grid-template-columns:1fr}}
/* SEM moldura: a ilustracao do v5 ja vem com o proprio fundo rosa arredondado, e o card
   branco com borda + o box nude do .ilu criavam tres molduras encaixadas. Na PDP real
   nao existe nenhuma: e a ilustracao e o texto embaixo. */
.faz-card{background:transparent;border:0;border-radius:0;box-shadow:none;
  display:flex;flex-direction:column}
/* a ilustração existe em 282x300 no Figma e o Figma não faz upscale, então ela nunca
   pode renderizar acima disso: com padding ela cabe no card de 322 no tamanho nativo. */
/* O arquivo da ilustracao e um retangulo creme com CANTOS ARREDONDADOS, e os pixels de
   fora do canto sao quase brancos (254,252,254 contra o creme 250,242,234). Sobre a dobra
   off-white isso aparecia como uma franja clara nos quatro cantos. O raio aqui clipa
   exatamente esses pixels. Sem background proprio de proposito: cada uma das quatro tem
   um creme ligeiramente diferente, e o painel tem o tamanho exato da imagem. */
/* prato nude: a ilustracao tem fundo claro e sobre o off-white da dobra ela sumia */
.faz-card .ilu{background:var(--nude-1-50);overflow:hidden;border-radius:var(--r-16);max-width:282px;margin-inline:auto;
  display:flex;align-items:center;justify-content:center}
.faz-card .ilu img{max-width:282px;width:100%;height:auto;object-fit:contain;display:block}
/* mesma largura e mesma centralizacao da .ilu: sem isso o texto comeca 19px a
   esquerda da imagem no desktop e 32px no mobile */
.faz-card .txt{max-width:282px;margin-inline:auto;padding:16px 0 0;
  display:flex;flex-direction:column;gap:6px}
/* hover: o card levanta e a ilustracao flutua. De proposito SEM escalar a imagem,
   porque ela ja renderiza no tamanho nativo (282px) e ampliar so borraria. */
.faz-card{transition:transform var(--t-base) var(--e-emph)}
.faz-card:hover{transform:translateY(-6px)}
.faz-card .ilu img{transition:transform var(--t-sweep) var(--e-emph)}
.faz-card:hover .ilu img{transform:translateY(-6px)}
@media(prefers-reduced-motion:reduce){
  .faz-card:hover{transform:none}
  .faz-card:hover .ilu img{transform:none}
}

/* v5 · Resultado e Importante: 2 painéis nude */
.dois-paineis{display:grid;grid-template-columns:1fr 1fr;gap:24px}
@media(max-width:760px){.dois-paineis{grid-template-columns:1fr}}
.painel-n{background:var(--nude-1-50);border-radius:var(--r-16);padding:26px;text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:10px}
.painel-n .ico{width:34px;height:34px;border-radius:var(--r-pill);background:var(--white);
  display:inline-flex;align-items:center;justify-content:center;color:var(--rotulo);font-size:15px}
.painel-n .corpo-sm{max-width:46ch}

/* v5 · Antes & Depois com tarja */
/* 700 e não 1048: a fonte tem 516px de largura, então em 1048 cada foto renderizava a
   514 e ficava gigante na página. A 700 cada uma sai a ~342, que é a escala da home. */
.par-ad{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:700px;margin:0 auto}
@media(max-width:700px){.par-ad{grid-template-columns:1fr}}
.ad{position:relative;border-radius:var(--r-16);overflow:hidden;background:var(--white);border:1px solid var(--ink-08)}
.ad img{width:100%;height:auto;display:block}
.ad .tarja{position:absolute;top:14px;left:14px;z-index:2;border-radius:var(--r-pill);padding:6px 13px;
  font-weight:700;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--white)}
.ad .tarja--antes{background:var(--ink)}
.ad .tarja--depois{background:#8E6350}

/* v5 · Histórias em vídeo · sistema de reels medido da home da Renova:
   full-bleed, 9:16, raio 20, card ativo em scale 1.14 com opacidade 1 e os outros em .66,
   vizinhos empurrados por --reel-shift, tudo em 420ms na curva enfática.
   No lugar do nome da pessoa eles usam esse espaço pra um chip de vidro com o produto. */
/* --sb e a largura da barra de rolagem, medida no JS. Sem descontar ela, 100vw fica
   MAIOR que a largura util e a faixa full-bleed empurra a pagina pro lado (~15px no
   Windows). No Chromium headless a barra e sobreposta e vale 0, e o bug nao aparece. */
.reels{margin-left:calc(50% - 50vw + var(--sb,0px) / 2);margin-right:calc(50% - 50vw + var(--sb,0px) / 2);
  overflow:hidden;padding:24px 24px 40px;
  --reel-scale:1.06;--reel-w:62vw;--reel-gap:12px;
  --reel-shift:calc(var(--reel-w) * (var(--reel-scale) - 1) / 2)}
@media(min-width:641px){.reels{--reel-scale:1.14;--reel-w:min(66vw,268px);--reel-gap:clamp(12px,2vw,22px);padding:40px 24px 48px}}

/* Os cards dividem a largura INTEIRA da faixa em vez de ficarem centrados com sobra
   nas pontas: --reel-n e a quantidade de cards da pista. O teto de 420px existe para
   as pistas de 1 ou 2 cards (gestantes e masculino) nao virarem um card gigante. */
@media(min-width:1000px){
  .reels{--reel-w:min(calc((100% - var(--reel-gap) * (var(--reel-n,4) - 1)) / var(--reel-n,4)),420px)}
}
.reels-pista{display:flex;justify-content:safe center;margin-left:calc(var(--reel-gap) * -1);overflow-x:auto;scroll-snap-type:x mandatory;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;cursor:grab}
.reels-pista::-webkit-scrollbar{display:none}
.reels-pista.dragging{cursor:grabbing;scroll-snap-type:none}
.reel{position:relative;flex:0 0 auto;width:calc(var(--reel-w) + var(--reel-gap));padding-left:var(--reel-gap);
  scroll-snap-align:center;cursor:pointer}
.reel[data-ativo]{z-index:3}
/* A escala vai no wrapper de FORA, nunca na .reel-caixa. Escalar a propria caixa que tem
   overflow:hidden + border-radius faz o Chromium pintar os filhos absolutos duas vezes
   (o chip aparecia fantasma, deslocado). Medido: com scale:1 na caixa o fantasma some. */
.reel-mov{position:relative;display:block;width:100%;aspect-ratio:9/16;transition:transform 420ms var(--e-emph)}
.reel[data-lado="antes"] .reel-mov{transform:translateX(calc(var(--reel-shift) * -1))}
.reel[data-lado="depois"] .reel-mov{transform:translateX(var(--reel-shift))}
.reel[data-ativo] .reel-mov{transform:scale(var(--reel-scale))}
.reel-caixa{position:absolute;inset:0;overflow:hidden;border-radius:var(--r-20);background:var(--nude-1-50);
  opacity:.66;transition:opacity 420ms var(--e-emph)}
.reel[data-ativo] .reel-caixa{opacity:1}
/* Sem rolagem nao existe carrossel: ninguem escurece, ninguem cresce, ninguem desloca.
   Sem isso, no desktop (onde os 4 cabem) sobrava um card inflado e tres apagados. */
.reels-pista:not(.tem-rolagem) .reel-caixa{opacity:1}
.reels-pista:not(.tem-rolagem){cursor:default}
/* filho direto: senao essa regra pega tambem o thumb dentro do chip e o joga pra absolute */
.reel-caixa>img,.reel-caixa>video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.reel-veu{position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(to top,rgb(28 28 28/.55),rgb(28 28 28/.05) 55%,transparent)}
.reel-play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;
  width:44px;height:44px;border-radius:var(--r-pill);background:rgb(28 28 28/.32);backdrop-filter:blur(1px);
  display:inline-flex;align-items:center;justify-content:center}
.reel-play svg{width:18px;height:18px;fill:var(--off-white);margin-left:2px}
.reel-chip{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:12px}
.reel-chip>span{display:flex;align-items:center;gap:6px;padding:6px 6px 6px 8px;border-radius:14px;
  border:1px solid rgb(255 255 255/.55);background:rgb(255 255 255/.68);backdrop-filter:blur(12px)}
.reel-chip a{display:flex;flex:1;min-width:0;align-items:center;gap:6px;text-decoration:none}
.reel-chip .thumb{width:32px;height:32px;flex:0 0 32px;border-radius:var(--r-8);background:var(--white);
  object-fit:cover;display:block}
.reel-chip .txt{flex:1;min-width:0;overflow:hidden}
.reel-chip .nome{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-weight:500;font-size:13px;line-height:1.25;color:var(--ink)}
.reel-chip .precos{display:flex;align-items:baseline;gap:6px;white-space:nowrap}
.reel-chip .precos s{font-size:12px;color:var(--ink-45)}
.reel-chip .precos strong{font-weight:700;font-size:13px;color:var(--ink)}
@media(max-width:899px){.reel-chip .precos s{display:none}}
.reel-chip button{width:36px;height:36px;flex:0 0 36px;border:0;border-radius:var(--r-pill);background:var(--white);
  color:var(--ink);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;
  transition:background var(--t-base) var(--e-standard),color var(--t-base) var(--e-standard)}
.reel-chip button:hover{background:var(--cta);color:var(--white)}
.reel-chip button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8}

/* v5 · Informação nutricional: tabela de verdade, com os valores do rótulo */
.nutri{max-width:640px;margin:0 auto;background:var(--white);border:1px solid var(--ink-08);
  border-radius:var(--r-16);box-shadow:var(--sh-1);overflow:hidden}
.nutri-topo{padding:18px 22px 14px;border-bottom:1px solid var(--ink-08);background:var(--nude-1-50)}
.nutri-topo strong{display:block;font-weight:600;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}
.nutri-topo span{display:block;margin-top:4px;font-weight:500;font-size:12.5px;color:var(--ink-70)}
.nutri-rolo{overflow-x:auto;min-width:0;contain:paint}
.nutri table{border-collapse:collapse;width:100%}
.nutri thead th{padding:11px 22px;text-align:right;font-weight:600;font-size:10.5px;letter-spacing:.07em;
  text-transform:uppercase;color:var(--ink-45);border-bottom:1px solid var(--ink-08);white-space:nowrap}
.nutri thead th:first-child{text-align:left}
.nutri tbody th{padding:10px 22px;text-align:left;font-weight:500;font-size:14px;color:var(--ink)}
.nutri tbody td{padding:10px 22px;text-align:right;font-weight:600;font-size:14px;color:var(--ink-70);
  font-variant-numeric:tabular-nums;white-space:nowrap}
.nutri tbody tr+tr th,.nutri tbody tr+tr td{border-top:1px solid var(--ink-08)}
.nutri tbody tr:nth-child(even){background:rgb(28 28 28/.015)}
.nutri tbody tr.so-ah th,.nutri tbody tr.so-ah td{font-weight:700;color:var(--ink);background:var(--nude-1-50)}
.nutri-pe{padding:12px 22px 0;font-weight:500;font-size:11px;line-height:1.45;color:var(--ink-45)}
.nutri-pe:last-child{padding-bottom:18px}
/* gestantes: a tabela dessa linha tem 17 nutrientes e não leva ácido hialurônico */
#pdp[data-linha="ge"] .nutri tr.so-ah{display:none}

/* v5 · Comparativo de 3 colunas */
.comp{background:var(--white);border:1px solid var(--ink-08);border-radius:var(--r-16);box-shadow:var(--sh-1);overflow-x:auto;min-width:0}
.comp table{border-collapse:collapse;width:100%;min-width:440px}
.comp thead th{padding:18px 12px 14px;text-align:center;font-weight:600;font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--ink-45);vertical-align:bottom}
.comp thead th:first-child{text-align:left;font-weight:500;text-transform:none;letter-spacing:0;font-size:12px}
.comp thead th.nhv span{display:inline-flex;align-items:center;justify-content:center;background:var(--cta);
  color:var(--white);border-radius:var(--r-8);padding:8px 14px;font-weight:700;font-size:12px;letter-spacing:.08em}
.comp tbody td{padding:13px 12px;border-top:1px solid var(--ink-08);text-align:center;font-weight:700;font-size:15px}
.comp tbody td:first-child{text-align:left;font-weight:500;font-size:13.5px;color:var(--ink-70)}
.comp .s{color:var(--cta)} .comp .p{color:var(--gold)} .comp .n{color:#C0392B}

/* v5 · Como tomar: 4 itens com ícone escuro */
/* Coluna de 360 em vez de metade da tela: a foto centrada numa coluna de 660 deixava
   190px de vao de cada lado. Em REGRA e nao em style inline, porque inline nao obedece
   media query e no mobile a coluna de 360 estourava a largura da tela. */
#como .g2{grid-template-columns:360px 1fr;gap:40px;align-items:center}
@media(max-width:860px){#como .g2{grid-template-columns:1fr;gap:28px}}
#como .foto-bloco{max-width:360px}
.tomar{display:grid;grid-template-columns:1fr 1fr;gap:26px 34px}
@media(max-width:560px){.tomar{grid-template-columns:1fr}}
.tomar .it{display:flex;flex-direction:column;gap:7px}
.tomar .ico{width:34px;height:34px;border-radius:var(--r-pill);background:var(--ink);color:var(--white);
  display:inline-flex;align-items:center;justify-content:center;font-size:14px;margin-bottom:4px}

/* v5 · Avaliações */
.aval{display:grid;grid-template-columns:.8fr 1.2fr;gap:40px;align-items:start}
@media(max-width:900px){.aval{grid-template-columns:1fr;gap:26px}}
.nota-grande{background:var(--white);border:1px solid var(--ink-08);border-radius:var(--r-16);padding:26px;
  display:flex;flex-direction:column;gap:3px}
.nota-grande .n{font-weight:300;font-size:64px;line-height:1}
.bars{display:flex;flex-direction:column;gap:8px;margin-top:16px}
.bar{display:grid;grid-template-columns:30px 1fr 62px;gap:10px;align-items:center;
  font-weight:500;font-size:11.5px;font-variant-numeric:tabular-nums;color:var(--ink-70)}
.bar .track{height:5px;border-radius:var(--r-pill);background:var(--ink-08);overflow:hidden}
.bar .track b{display:block;height:100%;background:var(--gold);border-radius:var(--r-pill)}
.bar .qt{text-align:right;color:var(--ink-45)}
.depo{background:var(--white);border:1px solid var(--ink-08);border-radius:var(--r-16);padding:22px;
  display:flex;flex-direction:column;gap:10px}
.depo .quote{font-weight:500;font-size:15px;line-height:1.55;color:var(--ink)}
.depo .quem{font-weight:600;font-size:13px}
.depo .meta{font-weight:500;font-size:11.5px;color:var(--ink-45)}

/* chips zero */
.zeros{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:22px}
.zeros span{display:inline-flex;align-items:center;gap:7px;background:var(--white);border:1px solid var(--ink-08);
  border-radius:var(--r-pill);padding:8px 15px;font-weight:600;font-size:12px;color:var(--ink-70)}
.zeros .tick{color:var(--cta);font-weight:700;font-style:normal}

/* dobras */
.dobra{padding:80px 0;position:relative;background:var(--off-white)}
@media(max-width:640px){.dobra{padding:56px 0}}
.dobra--white{background:var(--white)}
.dobra--ink{background:var(--ink);color:var(--off-white)}
.dobra--ink .corpo{color:rgb(245 244 240/.72)}
.dobra--ink .corpo b{color:var(--off-white)}
.head{display:flex;flex-direction:column;gap:10px;margin-bottom:34px;max-width:58ch}

/* reveal escalonado */
html.js [data-rev]:not([data-anim]){opacity:0;transform:translateY(40px)}
html.js [data-rev]:not([data-anim]).in{opacity:1;transform:none;transition:opacity var(--t-slow) var(--e-out),transform var(--t-slow) var(--e-out)}
html.js [data-rev]:not([data-anim]).now{opacity:1;transform:none}

/* grade genérica de 4 */
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
@media(max-width:900px){.g4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.g4{grid-template-columns:1fr}}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center}
@media(max-width:900px){.g2{grid-template-columns:1fr;gap:24px}}
.cartao{background:var(--white);border:1px solid var(--ink-08);border-radius:var(--r-16);padding:22px;
  display:flex;flex-direction:column;gap:8px}
.foto-bloco{border-radius:var(--r-16);overflow:hidden;background:var(--white);border:1px solid var(--ink-08)}
.foto-bloco img{width:100%;height:auto;display:block}

/* PainMatch em abas */
.abas{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:22px}
.abas button{padding:0 18px;height:44px;border:1px solid var(--ink-16);border-radius:var(--r-pill);
  font-weight:600;font-size:13px;color:var(--ink-70);background:var(--white);
  transition:border-color var(--t-base) var(--e-standard),background var(--t-base) var(--e-standard),color var(--t-base) var(--e-standard)}
.abas button:hover{border-color:var(--rotulo)}
.abas button[aria-selected="true"]{background:var(--ink);border-color:var(--ink);color:var(--white)}
.painel-caso{background:var(--nude-1-50);border-radius:var(--r-16);padding:30px}
.painel-caso[hidden]{display:none}
.painel-caso .g2{gap:34px;align-items:start}

/* linha do tempo */
.tl{--tl-fill:0;position:relative;padding-top:8px}
/* top 16 e nao 19: o centro da bolinha esta em 8 (padding do .tl) + 9 (metade de 18) = 17,
   e o trilho tem 2px de altura. Com 19 ele passava 5px abaixo das bolinhas. */
.tl .rail{position:absolute;left:0;right:0;top:16px;height:2px;background:var(--ink-08)}
.tl .rail b{position:absolute;left:0;top:0;bottom:0;width:100%;background:var(--nude-3);display:block;
  transform:scaleX(var(--tl-fill));transform-origin:left center}
.fases{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;position:relative}
@media(max-width:860px){.fases{grid-template-columns:repeat(2,1fr);gap:30px}.tl .rail{display:none}}
.fase{display:flex;flex-direction:column;gap:7px}
/* box-sizing pra borda nao vazar 2px pra fora da coluna, e 18px pra manter o tamanho */
.fase .dot{box-sizing:border-box;width:18px;height:18px;border-radius:50%;background:var(--off-white);border:2px solid var(--ink-16);
  margin-bottom:14px;transition:background var(--t-base) var(--e-emph),border-color var(--t-base) var(--e-emph),transform var(--t-base) var(--e-emph)}
.fase.on .dot{background:var(--nude-3);border-color:var(--rotulo);transform:scale(1.35)}
.fase .marca{font-weight:600;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-45);transition:color var(--t-base) var(--e-standard)}
.fase.on .marca{color:var(--rotulo)}
.fase .quando{font-weight:600;font-size:22px;line-height:1.1;transition:color var(--t-base) var(--e-standard)}
.fase.on .quando{color:var(--rotulo)}
.fase ul{display:flex;flex-direction:column;gap:5px;margin-top:4px}
.fase li{display:grid;grid-template-columns:14px 1fr;gap:8px;font-weight:500;font-size:13px;line-height:1.4;color:var(--ink-70)}
.fase .tick{color:var(--rotulo)}
.selo-fase{align-self:flex-start;background:var(--nude-4);color:var(--white);border-radius:var(--r-pill);
  padding:4px 11px;font-weight:600;font-size:10px;letter-spacing:.1em;text-transform:uppercase;margin-top:2px}
.pcts{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:40px;padding-top:32px;border-top:1px solid var(--ink-08)}
@media(max-width:760px){.pcts{grid-template-columns:1fr;gap:18px}}
.pct{display:flex;align-items:baseline;gap:14px}
.pct b{font-weight:300;font-size:52px;line-height:.9;color:var(--rotulo);font-variant-numeric:tabular-nums}
.pct span{font-weight:500;font-size:13.5px;line-height:1.4;color:var(--ink-70);max-width:18ch}

/* acordeão · altura medida, 350ms */
.acc{border-top:1px solid var(--ink-08)}
.acc-item{border-bottom:1px solid var(--ink-08)}
.acc-trigger{width:100%;display:flex;align-items:center;gap:14px;padding:20px 0;text-align:left;min-height:66px}
.acc-trigger .nome{font-weight:600;font-size:16px;flex:1}
.acc-trigger .dose{font-weight:600;font-size:12px;letter-spacing:.08em;color:var(--rotulo);
  border:1px solid var(--ink-16);border-radius:var(--r-pill);padding:4px 10px;white-space:nowrap;
  transition:border-color var(--t-base) var(--e-standard),background var(--t-base) var(--e-standard)}
.acc-trigger:hover .dose{border-color:var(--rotulo);background:var(--nude-1-50)}
.acc-trigger .mais{width:22px;height:22px;position:relative;flex:0 0 22px}
.acc-trigger .mais::before,.acc-trigger .mais::after{content:"";position:absolute;background:var(--ink);
  transition:transform var(--t-base) var(--e-emph),opacity var(--t-base) var(--e-standard)}
.acc-trigger .mais::before{left:0;right:0;top:10px;height:2px}
.acc-trigger .mais::after{top:0;bottom:0;left:10px;width:2px}
.acc-trigger[aria-expanded="true"] .mais::after{transform:rotate(90deg);opacity:0}
.acc-panel{height:0;overflow:hidden;transition:height 350ms var(--e-standard)}
.acc-panel .inner{padding:0 0 22px;max-width:66ch}
.acc-item.open .acc-panel{height:var(--panel-h)}

/* barra de compra FIXA no rodapé da tela, como na PDP deles */
.barra-compra{position:fixed;left:0;right:0;bottom:0;z-index:55;background:var(--white);
  border-top:1px solid var(--ink-08);box-shadow:0 -8px 30px rgb(28 28 28/.08);
  transform:translateY(110%);transition:transform var(--t-chrome) var(--e-emph)}
.barra-compra.on{transform:translateY(0)}
.barra-compra .in{display:flex;align-items:center;gap:20px;padding:12px 0}
.barra-compra .qual{display:flex;align-items:center;gap:12px;flex:1;min-width:0}
.barra-compra .mini{width:46px;height:46px;border-radius:var(--r-8);overflow:hidden;border:1px solid var(--ink-08);flex:0 0 46px}
.barra-compra .mini img{width:100%;height:100%;object-fit:cover;display:block}
.barra-compra .txt{min-width:0}
.barra-compra .txt .t-card{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.barra-compra .preco{font-size:22px}
@media(max-width:640px){
  .barra-compra .qual .txt{display:none}
  .barra-compra .btn{flex:1;padding:0 16px}
}

/* FAB do WhatsApp */
.fab{position:fixed;right:20px;bottom:96px;z-index:54;width:52px;height:52px;border-radius:var(--r-pill);
  background:var(--cta);color:var(--white);display:inline-flex;align-items:center;justify-content:center;
  box-shadow:var(--sh-3);transition:transform var(--t-base) var(--e-emph)}
.fab:hover{transform:scale(1.06)}
.fab svg{width:26px;height:26px;fill:currentColor}

/* aviso */
/* mesmo tratamento de card do resto da página: fio de 1px e raio 16.
   A ênfase fica no eyebrow em caramelo, não numa tarja lateral. */
.aviso{background:var(--white);border:1px solid var(--ink-08);border-radius:var(--r-16);
  padding:22px;display:flex;flex-direction:column;gap:10px;max-width:76ch}
.aviso .atributo{color:var(--rotulo)}
.rodape{background:var(--ink);color:rgb(245 244 240/.6);padding:40px 0 110px;font-weight:500;font-size:12px;line-height:1.7}
.rodape b{color:var(--off-white);font-weight:600}
@media(prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  html.js [data-rev]{opacity:1;transform:none}
}

/* ============================================================
   RODAPÉ do site · quatro colunas + barra legal
   Conteúdo, links, telefone, e-mail e CNPJ são os que estão no
   rodapé da loja no ar. Marcas de pagamento em SVG inline: vetor
   não borra em nenhuma densidade e não pesa base64.
   ============================================================ */
.pe{background:var(--ink);color:rgb(245 244 240/.62);padding:64px 0 0}
.pe a{color:rgb(245 244 240/.62);text-decoration:none;transition:color var(--t-base) var(--e-standard)}
.pe a:hover{color:var(--off-white)}
.pe-grade{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:40px}
@media(max-width:900px){.pe-grade{grid-template-columns:1fr 1fr;gap:34px}}
@media(max-width:560px){.pe-grade{grid-template-columns:1fr;gap:30px}}
.pe-marca .logo{display:inline-flex;color:var(--off-white)}
.pe-marca .logo svg{height:22px;width:auto;fill:currentColor}
.pe-marca p{margin-top:16px;font-weight:500;font-size:13px;line-height:1.65;max-width:34ch}
.pe h3{font-weight:600;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--off-white);margin-bottom:16px}
.pe ul{display:flex;flex-direction:column;gap:10px}
.pe li{font-weight:500;font-size:13.5px;line-height:1.4}
.pe-fala{display:flex;flex-direction:column;gap:10px;font-weight:500;font-size:13.5px}
.pe-fala a{display:inline-flex;align-items:center;gap:9px}
.pe-fala svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;flex:0 0 16px}
.pe-selos{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
.pe-selos span{border:1px solid rgb(245 244 240/.2);border-radius:var(--r-8);padding:7px 11px;
  font-weight:600;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:rgb(245 244 240/.72)}
.pe-barra{margin-top:52px;border-top:1px solid rgb(245 244 240/.14);padding:22px 0 26px;
  display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.pe-legal{font-weight:500;font-size:12px;line-height:1.6}
.pe-legal b{color:var(--off-white);font-weight:600}
.pe-pag{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pe-pag i{display:inline-flex;align-items:center;justify-content:center;width:40px;height:26px;
  background:var(--white);border-radius:var(--r-4);padding:3px}
.pe-pag i svg{width:100%;height:100%}
.pe-pag em{font-style:normal;font-weight:700;font-size:10.5px;letter-spacing:.08em;color:var(--ink);
  display:inline-flex;align-items:center;justify-content:center;min-width:40px;padding:0 7px;height:26px;
  background:var(--white);border-radius:var(--r-4);white-space:nowrap}
.pe-nota{border-top:1px solid rgb(245 244 240/.14);padding:20px 0 110px;font-weight:500;font-size:11.5px;
  line-height:1.65;color:rgb(245 244 240/.42)}
.pe-nota b{color:rgb(245 244 240/.62);font-weight:600}
.pe-nota code{background:rgb(245 244 240/.1);color:rgb(245 244 240/.72);border-radius:3px;padding:1px 5px}

/* ---------- Ajustes de tela pequena, todos medidos ---------- */
/* Em 320px a pilula pode ter 100%-40=280px, mas o conteudo minimo pedia ~308:
   logo 74 + gap 34 + bloco da direita 152 + padding 48. Aqui ela ganha o espaco. */
@media(max-width:900px){
  /* "Rastrear pedido" vive no menu de tela cheia e no rodape; no header ele era o que
     mais empurrava a pilula no mobile. */
  .hdr .rastrear{display:none}
}
@media(max-width:420px){
  /* Precisa repetir o seletor do estado rolado: html.is-scrolled .hdr .pill tem (0,3,0)
     e sobrescrevia o max-width daqui, deixando a pilula estourar em 320px. */
  .hdr .pill,html.is-scrolled .hdr .pill{max-width:calc(100% - 16px);padding:0 10px;gap:8px}
  .hdr .logo svg{height:16px}
  .hdr .right{gap:0}
  /* em 320 nao cabem quatro alvos de 44px: a conta e o menos essencial e sai */
  .hdr .right [aria-label="Minha conta"]{display:none}
  /* os cartoes de selo nao encolhiam abaixo do conteudo e vazavam 34px */
  .selo{padding:16px 8px}
  .selo img{width:84px}
}
/* Alvo de toque de 44px: o logo tem 18px de altura de desenho, o resto vem de padding.
   Nao muda nada visual, so a area clicavel. */
.hdr .logo{padding:13px 0}
/* O botao do chip do reel tem 36px (o mesmo da Renova). No carrossel de toque isso fica
   abaixo do minimo de 44, entao ele cresce onde a pista e arrastada com o dedo. */
@media(max-width:1000px){
  .reel-chip button{width:44px;height:44px;flex:0 0 44px}
  .reel-chip>span{min-height:56px}
}

/* ---------- Menu de tela cheia no mobile ----------
   Medido no site deles em 390px: painel branco ocupando a tela inteira, transição de
   520ms em cubic-bezier(.16,1,.3,1), e véu escuro a 50% em 420ms ease-in-out.
   Sem [hidden]: uso visibility com delay, porque classe de display contra [hidden] já
   me custou três bugs nesta página. */
.menu-abre{display:none}
@media(max-width:900px){.menu-abre{display:inline-flex}}
.menu-veu{position:fixed;inset:0;z-index:70;background:rgb(28 28 28/.5);opacity:0;
  visibility:hidden;transition:opacity 420ms ease-in-out,visibility 0s linear 420ms}
.menu-veu.on{opacity:1;visibility:visible;transition:opacity 420ms ease-in-out,visibility 0s}
.menu-mob{position:fixed;inset:0;z-index:71;background:var(--white);color:var(--ink);
  transform:translateX(100%);visibility:hidden;overflow-y:auto;
  transition:transform 520ms var(--e-expo),visibility 0s linear 520ms;
  display:flex;flex-direction:column;padding:20px 20px 40px}
.menu-mob.on{transform:none;visibility:visible;transition:transform 520ms var(--e-expo),visibility 0s}
.menu-topo{display:flex;align-items:center;justify-content:space-between;min-height:44px;margin-bottom:26px}
.menu-mob h2{font-weight:600;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-45)}
.menu-mob ul{display:flex;flex-direction:column}
.menu-mob li{border-bottom:1px solid var(--ink-08)}
.menu-mob li a{display:flex;align-items:center;min-height:56px;font-weight:300;font-size:22px;
  letter-spacing:.03em;text-transform:uppercase;color:var(--ink)}
.menu-mob .secao{margin-top:30px}
.menu-mob .secao li a{font-size:15px;font-weight:500;text-transform:none;letter-spacing:0;min-height:48px}
.menu-mob .pe-fala{margin-top:auto;padding-top:30px;color:var(--ink-70)}
.menu-mob .pe-fala a{color:var(--ink-70)}

/* ---------- Prévia mobile (ferramenta de conferência, não é parte do site) ---------- */
.previa-abre{position:fixed;left:16px;bottom:16px;z-index:150;display:inline-flex;align-items:center;gap:9px;
  min-height:44px;padding:0 16px;border:1px solid var(--ink-16);border-radius:var(--r-pill);
  background:var(--white);color:var(--ink);box-shadow:var(--sh-2);cursor:pointer;
  font-weight:600;font-size:12px;letter-spacing:.08em;text-transform:uppercase;
  transition:transform var(--t-base) var(--e-emph),box-shadow var(--t-base) var(--e-standard)}
.previa-abre:hover{transform:translateY(-2px);box-shadow:var(--sh-3)}
.previa-abre svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8}
@media(max-width:900px){.previa-abre{display:none}}
.previa{position:fixed;inset:0;z-index:200;background:rgb(28 28 28/.86);opacity:0;visibility:hidden;
  transition:opacity 320ms var(--e-standard),visibility 0s linear 320ms;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:24px}
.previa.on{opacity:1;visibility:visible;transition:opacity 320ms var(--e-standard),visibility 0s}
.previa-barra{display:flex;align-items:center;gap:8px}
.previa-barra button{min-height:38px;padding:0 15px;border:1px solid rgb(245 244 240/.28);
  border-radius:var(--r-pill);background:transparent;color:rgb(245 244 240/.7);cursor:pointer;
  font-weight:600;font-size:11.5px;letter-spacing:.08em;
  transition:background var(--t-base) var(--e-standard),color var(--t-base) var(--e-standard)}
.previa-barra button:hover{color:var(--off-white);background:rgb(245 244 240/.1)}
.previa-barra button[aria-pressed="true"]{background:var(--off-white);color:var(--ink);border-color:var(--off-white)}
.previa-barra .fecha{margin-left:10px}
/* moldura de aparelho: a altura acompanha a tela para caber em notebook */
.previa-frame{background:var(--ink);border-radius:46px;padding:11px;box-shadow:0 30px 80px rgb(0 0 0/.5);
  flex:0 0 auto;transition:width 320ms var(--e-emph)}
.previa-frame iframe{display:block;width:100%;height:min(844px,calc(100vh - 190px));
  border:0;border-radius:36px;background:var(--white)}
.previa-nota{font-weight:500;font-size:11.5px;color:rgb(245 244 240/.55);text-align:center;max-width:44ch}

/* ---------- Carrosseis: setas, como no mobile deles ----------
   Injetadas por JS so nas pistas que de fato transbordam, entao nao aparecem quando
   todos os itens ja cabem na tela. */
.rolo-setas{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.rolo-setas button{width:44px;height:44px;border-radius:var(--r-pill);
  border:1px solid var(--ink-16);background:var(--white);color:var(--ink);cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
  transition:background var(--t-base) var(--e-standard),border-color var(--t-base) var(--e-standard),
    opacity var(--t-base) var(--e-standard)}
.rolo-setas button:hover{background:var(--nude-1-50);border-color:var(--rotulo)}
.rolo-setas button[disabled]{opacity:.34;cursor:default}
.rolo-setas svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2}
/* dentro da faixa full-bleed dos reels as setas respeitam o gutter */
.reels .rolo-setas{padding:0 4px}
/* "Produtos em destaque": grade de 2 colunas no mobile em vez de carrossel.
   Como carrossel de 64% ele cortava o segundo card no meio do preco. */
@media(max-width:900px){
  .strip{display:grid;grid-template-columns:repeat(2,1fr);gap:30px 12px;overflow:visible;cursor:default}
  .strip>.card{flex:none;min-width:0}
}
@media(max-width:360px){.strip{grid-template-columns:1fr;gap:26px}}

/* ---------- Carrinho: cupom, desconto e total ---------- */
.dw-cupom{margin-bottom:14px}
.dw-cupom-linha{display:flex;gap:8px}
.dw-cupom-linha input{flex:1 1 auto;min-width:0;height:44px;padding:0 14px;
  border:1px solid var(--ink-16);border-radius:var(--r-10);background:var(--white);
  font:inherit;font-size:14px;color:var(--ink)}
.dw-cupom-linha input::placeholder{color:var(--ink-45)}
.dw-cupom-linha input:focus-visible{outline:2px solid var(--ink);outline-offset:1px}
.dw-cupom-linha button{flex:0 0 auto;height:44px;padding:0 18px;border:0;
  border-radius:var(--r-10);background:var(--ink);color:var(--off-white);
  font:inherit;font-size:13px;font-weight:600;letter-spacing:.02em;cursor:pointer}
.dw-cupom-msg{margin:8px 0 0;font-size:12.5px;line-height:1.4}
.dw-cupom-msg[data-ok]{color:var(--cta-dark)}
.dw-cupom-msg[data-erro]{color:#B4423A}
/* o botao de tirar o cupom e texto, nao caixa: ele nao disputa com o Aplicar */
.dw-tira-cupom{border:0;background:none;padding:0 0 0 6px;font:inherit;font-size:11.5px;
  color:var(--ink-45);text-decoration:underline;cursor:pointer}
.soma--desc .preco{color:var(--cta-dark)}
.soma--total{border-top:1px solid var(--ink-08);padding-top:10px;margin-top:2px}

/* ---------- Cortina de transicao ----------
   Cinco colunas que fecham de baixo para cima e abrem para cima na chegada.
   scaleY em vez de height: height e propriedade de layout e custa reflow a cada
   quadro; scale roda no compositor. */
.cortina{position:fixed;inset:0;z-index:9000;display:flex;pointer-events:none;
  visibility:hidden}
.cortina[data-ativa]{visibility:visible;pointer-events:auto}
/* As cinco colunas SÃO o pattern do MIV: larguras e degraus saem da mesma geometria
   vetorial de NHV PATTERN RGB CURVES.ai que o componente .pat usa. Antes eram cinco
   retângulos chapados em ink, o que não era o pattern, era só uma cortina escura.

   translateY e não scaleY: escalando, a coluna espreme as listras enquanto cresce e o
   pattern chega distorcido. Transladando, ela nasce inteira e só entra em cena. */
.cortina i{position:relative;overflow:hidden;background:var(--ink);
  transform:translateY(-100%);will-change:transform}
/* larguras do vetor, não cinco colunas iguais */
.cortina i:nth-child(1){flex:0 0 20.54%}
.cortina i:nth-child(2){flex:0 0 20.47%}
.cortina i:nth-child(3){flex:0 0 19.65%}
.cortina i:nth-child(4){flex:0 0 19.34%}
.cortina i:nth-child(5){flex:0 0 20.02%}
/* os cinco degraus, período 52px, todos centrados na mesma linha */
.cortina i::after{content:"";position:absolute;inset:-52px 0;background-repeat:repeat-y;opacity:.66}
.cortina i:nth-child(1)::after{background-image:repeating-linear-gradient(to bottom,transparent 0 23.5px,var(--nude-3) 23.5px 28.5px,transparent 28.5px 52px)}
.cortina i:nth-child(2)::after{background-image:repeating-linear-gradient(to bottom,transparent 0 21px,var(--nude-3) 21px 31px,transparent 31px 52px)}
.cortina i:nth-child(3)::after{background-image:repeating-linear-gradient(to bottom,transparent 0 18.5px,var(--nude-3) 18.5px 33.5px,transparent 33.5px 52px)}
.cortina i:nth-child(4)::after{background-image:repeating-linear-gradient(to bottom,transparent 0 16px,var(--nude-3) 16px 36px,transparent 36px 52px)}
.cortina i:nth-child(5)::after{background-image:repeating-linear-gradient(to bottom,transparent 0 13.5px,var(--nude-3) 13.5px 38.5px,transparent 38.5px 52px)}
@media(prefers-reduced-motion:reduce){.cortina{display:none}}

/* ---------- Quebra de linha equilibrada em TODA head e subhead ----------
   Regra do Matheus: a ultima linha nunca pode ficar com duas ou tres palavras
   soltas. text-wrap:balance faz o navegador testar as quebras e escolher a que
   deixa as linhas com larguras parecidas; pretty resolve o caso do corpo longo,
   onde balance nao age (o motor limita balance a poucas linhas) mas a orfa de uma
   palavra ainda incomoda. */
h1,h2,h3,h4,.t-dobra,.t-benef,.t-card,.atributo,.pagto-titulo,.vip-tit,
.head .corpo,.head .corpo-sm,.vip-sub,.quem,.lbl{text-wrap:balance}
.corpo,.corpo-sm,.cap,.quote,.meta,p{text-wrap:pretty}

/* ---------- Mobile: head e subhead centradas ----------
   Medido na home deles: no mobile TODA head e subhead sai com text-align:center
   (dobra a dobra, folga 0/0 nas duas bordas); no desktop as mesmas voltam a left.
   Aqui isso vira uma regra do sistema em vez de ajuste dobra a dobra: .head e um
   flex em coluna, entao basta align-items e text-align, e margem auto nos filhos
   para os que carregam max-width proprio. */
@media(max-width:860px){
  .head{align-items:center;text-align:center;max-width:none;
    margin-left:auto;margin-right:auto}
  .head>*{margin-left:auto;margin-right:auto}
  /* subheads que vivem fora de .head */
  .cap-equilibrio{margin-left:auto;margin-right:auto}
}

/* ---------- Convivencia com a mola do anime.js ----------
   A mola escreve transform inline a cada quadro; transition de transform em cima
   disso transforma cada quadro numa transicao e arrasta o movimento. */
html[data-anime-hover] .card .tile,html[data-anime-hover] .porta{transition:none}
html[data-anime-heads] .head .t-dobra{opacity:1}

/* ---------- Padrao da loja: botao, rodape e header ----------
   Um botao primario para a loja toda: caramelo de base, verde varrendo por cima e
   ficando, 46px de altura (44 no mobile). Antes so os cards da home tinham isso; o
   .btn base nao declarava altura e ela vinha do padding, dando 53 ou 54px. */
.btn:not(.btn--ghost):not(.btn--ink):not(.btn--claro){
  height:46px;padding:0 30px;
  background-color:var(--rotulo);
  background-image:linear-gradient(to right,var(--cta) 50%,transparent 50%);
  background-size:220% 100%;background-position:100% 0;
  transition:background-position var(--t-sweep) var(--e-sweep),
    box-shadow var(--t-base) var(--e-standard)}
.btn:not(.btn--ghost):not(.btn--ink):not(.btn--claro):hover{background-position:0 0;box-shadow:var(--sh-3)}
@media(max-width:1000px){.btn:not(.btn--ghost):not(.btn--ink):not(.btn--claro){height:44px;padding:0 22px}}
/* o rodape na camada do painel: o hero e sticky pela pagina inteira e, com z-index
   menor, pintava por cima do rodape. Vale para qualquer pagina que ganhe um sticky. */
.pe{position:relative;z-index:2}
/* a logo respirando no mobile: com 10px ela encostava na borda do pill */
@media(max-width:860px){
  .hdr .pill,html.is-scrolled .hdr .pill{padding:0 16px}
}

/* ---------- PDP: alinhamentos e linha do tempo ---------- */
/* 3b. a foto e os cartoes partem do MESMO topo. Com align-items:center a coluna de
   cartoes, mais alta, centralizava a foto e ela flutuava no meio da dobra. */
#como .g2{align-items:start}
/* 3c. a foto de produto tem fundo branco; sobre a dobra branca ela desaparecia.
   Prato nude atras dela, e a dobra volta ao off-white. */
#como .foto-bloco{background:var(--nude-1-50);border-radius:var(--r-16);
  overflow:hidden;padding:0}

/* 4b. LINHA DO TEMPO VERTICAL NO MOBILE, igual a da home. Sem trilho, a bolinha
   solta no canto do card nao quer dizer nada. Aqui a linha desce: uma coluna,
   trilho por segmento dentro de cada passo (termina sozinho no ultimo) e a
   bolinha sentada nele. */
@media(max-width:860px){
  .fases{grid-template-columns:1fr;gap:0}
  .tl .rail{display:none}
  .tl-step{position:relative;display:grid;grid-template-columns:auto 1fr;
    column-gap:16px;align-items:start;padding-bottom:28px}
  .fases li.tl-step:last-child{padding-bottom:0}
  .tl-step::before{content:"";position:absolute;left:5px;top:18px;bottom:-11px;
    width:2px;background:var(--ink-08)}
  .fases li.tl-step:last-child::before{display:none}
  .tl-step.on::before{background:var(--nude-3)}
  .tl-step .dot,.fase .dot{grid-area:1/1;width:12px;height:12px;margin:5px 0 0;
    align-self:start}
  .tl-step.on .dot,.fase.on .dot{transform:scale(1.25)}
  .tl-step .marca{grid-area:1/2;margin:0}
  .tl-step .quando,.tl-step .selo-fase,.tl-step ul{grid-column:2}
  .tl-step .quando{margin:4px 0 8px}
  .tl-step .selo-fase{justify-self:start;margin-bottom:8px}
}

/* ---------- Videos: hover e entrada ----------
   Antes o reel so tinha o estado ativo do carrossel (opacidade e escala) e nenhuma
   resposta ao mouse. O hover NAO vai no .reel-mov: e ali que mora a escala do item
   ativo, e as duas brigariam. Vai na imagem, que esta dentro de .reel-caixa com
   overflow:hidden, e no botao de play. */
.reel-caixa>img,.reel-caixa>video{transition:transform 560ms var(--e-out)}
.reel:hover .reel-caixa>img,.reel:focus-visible .reel-caixa>img,
.reel:hover .reel-caixa>video,.reel:focus-visible .reel-caixa>video{transform:scale(1.06)}
.reel-play{transition:transform 320ms var(--e-emph),box-shadow 320ms var(--e-standard),opacity 260ms var(--e-standard)}
.reel:hover .reel-play,.reel:focus-visible .reel-play{transform:translate(-50%,-50%) scale(1.14);
  box-shadow:var(--sh-3)}
/* o veu escurece um tico no hover, para o play ganhar contraste */
.reel-veu{transition:opacity 380ms var(--e-standard)}
.reel:hover .reel-veu{opacity:.82}
/* ---------- Depoimento em video no card e no visor ----------
   Os arquivos vem dos Arquivos da Shopify (720x1280 com audio AAC), nao do YouTube.
   No card: mudo, em laco, e o poster continua sendo o primeiro quadro que a pessoa ve.
   No visor: com voz. O play desaparece enquanto toca, senao fica um botao de tocar
   sobre um video que ja esta tocando. */
.reel-vid{opacity:0;transition:opacity 300ms var(--e-standard)}
.reel[data-tocando] .reel-vid{opacity:1}
.reel[data-tocando] .reel-play{opacity:0;transform:translate(-50%,-50%) scale(.86)}
.visor-palco>video{display:none;background:var(--ink)}
.visor-palco>video[data-usando]{display:block}
@media(prefers-reduced-motion:reduce){.reel-vid{display:none}}
@media(hover:none){
  .reel-caixa>img,.reel-caixa>video,.reel-play,.reel-veu{transition:none}
}

/* ---------- Como tomar: rotina numerada ----------
   Eram tres caixas brancas com borda empilhadas ao lado da foto: tres molduras
   sobre uma dobra que ja e um fundo, e nada indicava que a ordem importa. Aqui e
   sequencia, na mesma linguagem da linha do tempo da pagina: numero, trilho
   ligando um ao outro, texto ao lado. O trilho e um ::before DENTRO de cada item,
   entao o ultimo nao desenha nada e nao sobra risco solto na ponta. */
.rotina{list-style:none;margin:0;padding:0;display:grid;gap:0}
.rotina li{position:relative;display:grid;grid-template-columns:auto 1fr;
  column-gap:16px;align-items:start;padding-bottom:26px}
.rotina li:last-child{padding-bottom:0}
.rotina li::before{content:"";position:absolute;left:15px;top:34px;bottom:-2px;
  width:2px;background:var(--ink-08)}
.rotina li:last-child::before{display:none}
/* o numero e o mesmo marcador da linha do tempo, com o algarismo dentro */
.rotina .num{box-sizing:border-box;width:32px;height:32px;border-radius:50%;
  background:var(--nude-1-50);color:var(--rotulo);
  display:inline-flex;align-items:center;justify-content:center;
  font-weight:600;font-size:14px;letter-spacing:0;flex:0 0 auto}
.rotina .t-card{margin:5px 0 4px}
.rotina .corpo-sm{max-width:46ch}

/* ---------- Titulo fatiado: nao duplicar na copia ----------
   O text.split do anime.js guarda o texto inteiro num span invisivel para leitor de
   tela, e marca as palavras visiveis como aria-hidden. Isso e certo para
   acessibilidade, mas ao SELECIONAR a dobra o texto vinha duas vezes, porque os
   dois sao selecionaveis. user-select:none no clone resolve a copia sem tirar ele
   da arvore de acessibilidade. */
.head .t-dobra span[style*="clip-path"]{-webkit-user-select:none;user-select:none}

/* ---------- Visor dos depoimentos ----------
   O play nao tocava nada porque nao existe arquivo de video. Aqui ele abre a imagem
   em tela cheia. Quando os videos existirem, o <video> entra dentro de .visor-palco
   e o resto continua igual. */
.visor{position:fixed;inset:0;z-index:8000;display:none;
  align-items:center;justify-content:center;padding:24px;
  background:rgb(28 28 28/.86)}
.visor[data-aberto]{display:flex}
.visor-palco{position:relative;max-width:min(92vw,520px);width:100%;
  aspect-ratio:9/16;max-height:86vh;border-radius:var(--r-20);overflow:hidden;
  background:var(--ink);box-shadow:var(--sh-3)}
.visor-palco img,.visor-palco video{width:100%;height:100%;object-fit:cover;display:block}
.visor-quem{position:absolute;left:0;right:0;bottom:0;padding:18px 20px;
  background:linear-gradient(to top,rgb(28 28 28/.82),transparent);
  color:var(--off-white);font-weight:600;font-size:14px}
.visor-fecha{position:absolute;top:16px;right:16px;width:40px;height:40px;
  border:0;border-radius:50%;background:rgb(245 244 240/.16);color:var(--off-white);
  font-size:20px;line-height:1;cursor:pointer;display:grid;place-items:center}
.visor-fecha:hover{background:rgb(245 244 240/.28)}
.visor-nota{position:absolute;left:0;right:0;top:calc(50% + 46vh);text-align:center;
  color:rgb(245 244 240/.62);font-size:12px}

/* ---------- Selos do rodape em 2x2 em toda largura ----------
   Estavam em flex-wrap: no desktop viravam uma fileira de quatro e no mobile
   quebravam 3+1. Grade de duas colunas resolve as duas larguras com uma regra. */
.pe-selos{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.pe-selos span{text-align:center}

/* ---------- Bento: «Como tomar» e a composicao ----------
   O #como tinha 700px de altura para 261 de conteudo, e o texto travado em 430px
   deixava 482px vazios a direita de uma coluna de 960. A tabela morava numa dobra
   so dela. Juntas na mesma dobra, as duas preenchem. */
.bento2{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start}
.bento-cel{display:flex;flex-direction:column;gap:22px;min-width:0}
.bento-cel .head{margin-bottom:0}
/* a foto agora ocupa a largura da celula, em faixa: dentro de uma coluna de ~660px
   um quadrado de 360 deixaria buraco dos dois lados */
.bento-cel--como .foto-bloco{width:100%;max-width:none;aspect-ratio:16/10;
  background:var(--nude-1-50);border-radius:var(--r-16);overflow:hidden}
.bento-cel--como .foto-bloco img{width:100%;height:100%;object-fit:cover;display:block}
.bento-cel--como .rotina .corpo-sm{max-width:none}
/* a tabela deixa de ter largura maxima propria: quem manda e a celula */
.bento-cel--nutri .nutri{max-width:none;margin:0;width:100%}
@media(max-width:1000px){
  .bento2{grid-template-columns:1fr;gap:44px}
  .bento-cel--como .foto-bloco{aspect-ratio:16/9}
}

/* ---------- menu «Linhas»: o realce precisa de faixa, não de grifo ----------
   Estava 44px de altura com 14px de recuo, então o retângulo do hover encostava
   na letra dos dois lados. Agora o item respira dentro do painel e o painel
   respira em volta dos itens. */
.nav-drop-menu{padding:8px}
.nav-drop-menu a{min-height:48px;padding:0 16px}
.nav-drop-menu a+a{margin-top:2px}

/* ---------- «Como tomar» no desenho do ritual ----------
   Antes: bolinha de 32px com o número dentro e um fio vertical costurando os passos,
   que é a linguagem de linha do tempo. A referência usa outra: o numeral solto em
   caramelo, pequeno, sentado sobre um filete que separa um passo do outro. O filete
   faz o trabalho que o fio vertical fazia, sem desenhar um trilho.
   Escrito depois do .rotina original de propósito: o que vem depois ganha. */
.rotina li{grid-template-columns:1fr;column-gap:0;padding:16px 0 18px;
  border-top:1px solid var(--ink-08)}
.rotina li::before{display:none}          /* o fio vertical que ligava as bolinhas */
.rotina li:first-child{border-top:0;padding-top:4px}
.rotina .num{width:auto;height:auto;border-radius:0;background:none;
  color:var(--rotulo);display:block;margin-bottom:7px;
  font-weight:400;font-size:15px;letter-spacing:.08em;font-variant-numeric:tabular-nums}
.rotina li>div{grid-column:1}
.rotina .t-card{margin-bottom:4px}

/* a plaquinha da foto, como na referência */
.foto-bloco--passos{position:relative}
.foto-chip{position:absolute;left:14px;top:14px;z-index:2;
  padding:7px 13px;border-radius:var(--r-pill);
  background:rgb(28 28 28/.58);color:var(--off-white);
  font-size:12px;font-weight:500;letter-spacing:.02em;
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
@media(max-width:860px){
  /* 16/09: à esquerda, pedido dele (estava centralizado) */
  .rotina li{text-align:left}
  .foto-chip{left:10px;top:10px;font-size:11px;padding:6px 11px}
}

/* ---------- «+ kit de autocuidado» ----------
   Conferido no seletor da loja: 30 dias NAO leva, 90 e 180 levam. O texto e o
   mesmo da loja, palavra por palavra, porque oferta nao se parafraseia. */
.kit-extra{display:block;margin:5px 0 0;font-weight:600;font-size:11.5px;letter-spacing:.04em;color:var(--rotulo)}
.card .kit-extra{margin-bottom:2px}
.vt-card .kit-extra{margin:6px 0 0}

/* ---------- botão «Ver em 3D» sobre a foto principal ----------
   Redondo e no canto de cima, como na referência: ele não disputa com a foto, e a
   pessoa acha sem procurar porque é o único elemento circular da galeria. */
.ver3d{position:absolute;right:14px;top:14px;z-index:4;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:2px;width:72px;height:72px;border-radius:50%;
  background:var(--white);color:var(--ink);box-shadow:var(--sh-2);cursor:pointer;padding:0;
  transition:transform var(--t-base) var(--e-emph),box-shadow var(--t-base) var(--e-standard)}
.ver3d:hover{transform:scale(1.06);box-shadow:var(--sh-3)}
.ver3d-ico{display:flex;color:var(--rotulo)}
.ver3d-ico svg{width:22px;height:22px}
.ver3d-txt{font-weight:700;font-size:9px;letter-spacing:.08em;text-transform:uppercase;line-height:1.1}
@media(max-width:640px){.ver3d{width:62px;height:62px;right:10px;top:10px}
  .ver3d-ico svg{width:19px;height:19px}.ver3d-txt{font-size:8px}}

/* ---------- percentuais: as duas linhas parelhas ----------
   «notaram redução da / queda» era 18 em cima e 5 embaixo. A caixa tinha medida mas
   não tinha balanceamento, então quebrava onde desse. */
.pct span{text-wrap:balance}

/* ---------- barra de âncoras: máscara nas pontas ----------
   São dez âncoras e elas não cabem em 1440, então a barra rola e a última fica
   partida na borda. A máscara é o aviso de que continua para o lado; sem ela, a
   palavra cortada lê como defeito. As classes vêm do JS, só quando há rolagem. */
.ancoras ul{-webkit-mask-image:var(--mask,none);mask-image:var(--mask,none)}
.ancoras ul[data-corta="fim"]{--mask:linear-gradient(90deg,#000 0,#000 88%,transparent 100%)}
.ancoras ul[data-corta="inicio"]{--mask:linear-gradient(90deg,transparent 0,#000 12%,#000 100%)}
.ancoras ul[data-corta="ambos"]{--mask:linear-gradient(90deg,transparent 0,#000 8%,#000 92%,transparent 100%)}

/* ---------- popup do 3D ----------
   Grande, mas popup: o fundo da página continua visível em volta, e é isso que faz
   ele ler como uma janela sobre o produto e não como outra página. */
.p3d{position:fixed;inset:0;z-index:220;display:grid;place-items:center;padding:24px}
.p3d[hidden]{display:none}
.p3d-veu{position:absolute;inset:0;background:rgb(28 28 28/.58);opacity:0;
  transition:opacity 260ms var(--e-standard)}
.p3d.on .p3d-veu{opacity:1}
.p3d-caixa{position:relative;z-index:1;width:min(1080px,94vw);height:min(820px,88vh);
  background:var(--white);border-radius:var(--r-20);overflow:hidden;
  box-shadow:0 40px 90px rgb(28 28 28/.35);display:flex;flex-direction:column;
  transform:scale(.97);opacity:0;transition:transform 300ms var(--e-emph),opacity 260ms var(--e-standard)}
.p3d.on .p3d-caixa{transform:none;opacity:1}
.p3d-topo{display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:14px 18px;border-bottom:1px solid var(--ink-08);flex:0 0 auto}
.p3d-tit{margin:0;font-weight:600;font-size:14px;letter-spacing:.02em;color:var(--ink)}
.p3d-x{width:40px;height:40px;border-radius:var(--r-pill);border:1px solid var(--ink-16);
  background:var(--white);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;
  cursor:pointer;transition:background var(--t-base) var(--e-standard),border-color var(--t-base) var(--e-standard)}
.p3d-x:hover{background:var(--nude-1-50);border-color:var(--rotulo)}
.p3d-x svg{width:17px;height:17px}
/* o palco usa o mesmo gradiente do visualizador do pacote */
.p3d-palco{flex:1 1 auto;min-height:0;position:relative;
  background:radial-gradient(ellipse,#fafafa 20%,#e5e5e7 100%)}
.p3d-palco model-viewer{position:absolute;inset:0;width:100%;height:100%;
  background:transparent;--poster-color:transparent}
/* o giro em imagem, que só aparece se o modelo não carregar */
/* com a reserva ligada o palco vira branco: os quadros do giro foram renderizados
   sobre branco e sobre o gradiente cinza eles liam como um quadrado claro no meio */
.p3d[data-reserva] .p3d-palco{background:var(--white)}
.p3d-giro{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:min(80%,620px);aspect-ratio:1;cursor:grab;touch-action:pan-y;
  background-image:url("/cdn/shop/files/nhv-site-giroPoteAh.webp");background-repeat:no-repeat;background-size:600% 600%}
.p3d-giro:active{cursor:grabbing}
.p3d-pe{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;
  padding:14px 18px 16px;border-top:1px solid var(--ink-08)}
.p3d-btn{font:inherit;font-size:13px;font-weight:600;color:var(--ink);background:var(--white);
  border:1px solid var(--ink-16);border-radius:var(--r-pill);padding:10px 18px;cursor:pointer;
  transition:border-color var(--t-base) var(--e-standard),background var(--t-base) var(--e-standard)}
.p3d-btn:hover{border-color:var(--rotulo);background:var(--nude-1-50)}
.p3d-estado{width:100%;text-align:center;margin:6px 0 0;font-weight:500;font-size:12px;color:var(--ink-45)}
@media(max-width:640px){
  .p3d{padding:12px}
  .p3d-caixa{width:100%;height:92vh}
  .p3d-btn{font-size:12.5px;padding:9px 14px}
}
@media(prefers-reduced-motion:reduce){
  .p3d-veu,.p3d-caixa{transition:none}
}

/* ---------- comparativo ----------
   Grade e não <table>: a coluna da NHV precisa ser um PAINEL contínuo atravessando
   todas as linhas, e célula de tabela não faz isso sem gambiarra. Com grid ele é um
   pseudo-elemento atrás da coluna inteira. */
.cmp{--cmp-rot:230px}
.cmp-grade{position:relative;display:grid;
  grid-template-columns:var(--cmp-rot) repeat(3,minmax(0,1fr))}
/* o painel da coluna da NHV: caramelo, não verde. Verde aqui é só do botão comprar. */
.cmp-grade::before{content:"";position:absolute;z-index:0;
  left:calc(var(--cmp-rot) + 6px);width:calc((100% - var(--cmp-rot)) / 3 - 12px);
  top:0;bottom:0;background:var(--nude-4);border-radius:var(--r-16)}
.cmp-cab,.cmp-linha{display:grid;grid-column:1/-1;
  grid-template-columns:subgrid;align-items:stretch;position:relative;z-index:1}
.cmp-linha{border-top:1px solid var(--ink-08)}
.cmp-cab{align-items:end}

.cmp-rot{display:flex;align-items:center;gap:12px;padding:18px 20px 18px 0;
  font-weight:500;font-size:14px;line-height:1.35;color:var(--ink-70);text-wrap:balance}
.cmp-rot--cab{padding:0}
.cmp-ico{width:24px;height:24px;flex:0 0 24px;color:var(--rotulo)}

.cmp-cel{display:flex;align-items:center;gap:9px;padding:18px 16px;min-width:0}
.cmp-cel--cab{padding-bottom:16px;align-items:flex-end}
.cmp-nome{font-weight:600;font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;
  color:var(--ink-45);text-wrap:balance}
.cmp-txt{font-weight:500;font-size:13.5px;line-height:1.35;color:var(--ink-70);
  min-width:0;text-wrap:pretty}

/* a coluna da NHV, por cima do painel.
   O respiro é maior que o das outras colunas de propósito: assim a linha mais larga fica centrada no painel
   caramelo e o bloco inteiro lê centrado, sem tirar os ✓ do prumo. */
.cmp-cel--nhv{color:var(--white)}
.cmp-cel--nhv .cmp-txt{color:var(--white);font-weight:600}
.cmp-check{width:18px;height:18px;flex:0 0 18px;color:var(--white)}
.cmp-cel--cabnhv{flex-direction:column;align-items:flex-start;gap:3px;
  padding-top:22px;padding-bottom:18px}
.cmp-marca{font-weight:700;font-size:17px;letter-spacing:.14em;color:var(--white)}
.cmp-sub{font-weight:500;font-size:11.5px;letter-spacing:.04em;color:rgb(255 255 255/.78)}

/* bolinhas: a leitura rápida. A palavra ao lado é que dá o motivo. */
.cmp-bola{width:10px;height:10px;border-radius:50%;flex:0 0 10px;display:inline-block}
.cmp-bola--b{background:#4E8C27}
.cmp-bola--m{background:#9A741B/*estrela*/}
.cmp-bola--r{background:#B4423A}

.cmp-legenda{display:flex;flex-wrap:wrap;justify-content:center;gap:10px 26px;margin-top:26px}
.cmp-legenda span{display:inline-flex;align-items:center;gap:8px;
  font-weight:500;font-size:12.5px;color:var(--ink-45)}
.cmp-nota{text-align:center;margin-top:14px;max-width:64ch;margin-inline:auto;text-wrap:pretty}

@media(max-width:1000px){
  .cmp{--cmp-rot:170px}
  .cmp-rot{font-size:13px;gap:9px;padding-right:12px}
  .cmp-ico{width:20px;height:20px;flex-basis:20px}
  .cmp-cel{padding:15px 10px;gap:7px}
  .cmp-txt{font-size:12.5px}
}
/* No celular a tabela vira lista: cada linha é um bloco com o rótulo em cima e as
   três respostas embaixo. Tabela de quatro colunas em 390px não se lê, e rolar de
   lado esconde justamente a coluna que importa. */
@media(max-width:720px){
  .cmp{--cmp-rot:0px}
  .cmp-grade{display:flex;flex-direction:column;gap:14px}
  .cmp-grade::before{display:none}
  .cmp-cab{display:none}
  .cmp-linha{display:block;border-top:0;background:var(--white);
    border:1px solid var(--ink-08);border-radius:var(--r-16);padding:16px}
  .cmp-rot{padding:0 0 12px;font-weight:600;color:var(--ink);font-size:14.5px}
  .cmp-cel{padding:9px 0;border-top:1px solid var(--ink-08)}
  .cmp-cel::before{content:attr(data-quem);font-weight:600;font-size:11px;
    letter-spacing:.08em;text-transform:uppercase;color:var(--ink-45);
    flex:0 0 96px;min-width:96px}
  .cmp-cel--nhv{background:var(--nude-4);border-radius:var(--r-8);padding:10px 12px;
    border-top:0;margin-bottom:2px}
  .cmp-cel--nhv::before{color:rgb(255 255 255/.8)}
}

/* ---------- reels no desktop: fileira uniforme, sem card inflado ----------
   O destaque do card ativo vem do carrossel da Renova, e lá ele faz sentido porque a
   pista é centrada: o card do meio cresce. Aqui, numa fileira de quatro visíveis, o
   ativo é o segundo, então o aumento lê como defeito, e ainda empurra o chip de preço
   para fora da base do card enquanto os vizinhos ficam alinhados.
   No toque a pista continua centrando e o destaque continua valendo. */
@media(min-width:1000px){
  .reel[data-ativo] .reel-mov{transform:none}
  .reel[data-lado="antes"] .reel-mov,.reel[data-lado="depois"] .reel-mov{transform:none}
  .reel .reel-caixa{opacity:1}
}

/* ---------- comparativo: ícones de formato e coreografia de entrada ---------- */
.cmp-forma{width:26px;height:26px;flex:0 0 26px;margin-bottom:8px;color:var(--ink-45)}
.cmp-cel--cabnhv .cmp-forma{color:rgb(255 255 255/.85);margin-bottom:6px}
.cmp-cel--cab{flex-direction:column;align-items:flex-start;gap:0}

/* estado de repouso: tudo já legível, só sem o movimento ainda */
.cmp-grade::before{transform-origin:top center}
html.js .cmp[data-entra] .cmp-grade::before{clip-path:inset(0 0 100% 0)}
html.js .cmp[data-entra].vem .cmp-grade::before{clip-path:inset(0 0 0 0);
  transition:clip-path 520ms var(--e-emph)}
html.js .cmp[data-entra] .cmp-linha{opacity:0;transform:translateY(14px)}
html.js .cmp[data-entra].vem .cmp-linha{opacity:1;transform:none;
  transition:opacity 520ms var(--e-out),transform 520ms var(--e-out)}
html.js .cmp[data-entra] .cmp-cab{opacity:0;transform:translateY(10px)}
html.js .cmp[data-entra].vem .cmp-cab{opacity:1;transform:none;
  transition:opacity 460ms var(--e-out) 320ms,transform 460ms var(--e-out) 320ms}

/* o check se desenha */
.cmp-check path{stroke-dasharray:26;stroke-dashoffset:0}
html.js .cmp[data-entra] .cmp-check path{stroke-dashoffset:26}
html.js .cmp[data-entra].vem .cmp-check path{stroke-dashoffset:0;
  transition:stroke-dashoffset 420ms var(--e-out)}
/* a bolinha estoura com sobra */
html.js .cmp[data-entra] .cmp-bola{transform:scale(0)}
html.js .cmp[data-entra].vem .cmp-bola{transform:scale(1);
  transition:transform 420ms cubic-bezier(.34,1.56,.64,1)}
/* a legenda não é conteúdo novo: ela entra junto, discreta */
html.js .cmp[data-entra] .cmp-legenda,html.js .cmp[data-entra] .cmp-nota{opacity:0}
html.js .cmp[data-entra].vem .cmp-legenda,html.js .cmp[data-entra].vem .cmp-nota{opacity:1;
  transition:opacity 520ms var(--e-out) 620ms}

/* ---------- uso: a linha inteira acende ----------
   Numa tabela de quatro colunas o olho perde a linha no meio do caminho. */
.cmp-linha{transition:background var(--t-base) var(--e-standard)}
@media(min-width:721px){
  .cmp-linha .cmp-cel--nhv{transition:transform var(--t-base) var(--e-emph)}
  .cmp-ico{transition:color var(--t-base) var(--e-standard)}
}
@media(prefers-reduced-motion:reduce){
  html.js .cmp[data-entra] .cmp-grade::before,
  html.js .cmp[data-entra] .cmp-linha,
  html.js .cmp[data-entra] .cmp-cab,
  html.js .cmp[data-entra] .cmp-legenda,
  html.js .cmp[data-entra] .cmp-nota{opacity:1;transform:none;clip-path:none}
  html.js .cmp[data-entra] .cmp-check path{stroke-dashoffset:0}
  html.js .cmp[data-entra] .cmp-bola{transform:scale(1)}
}

/* ---------- comparativo v3: fichas, silhuetas e animação de scroll ----------

   AS FICHAS
   O glifo sozinho, em contorno fino e caramelo claro, não tinha massa e lia como
   clip-art. Dentro de uma ficha circular ele vira coluna: seis círculos iguais
   descendo pela esquerda da tabela, que é estrutura e não enfeite. */
.cmp-chip{flex:0 0 32px;width:32px;height:32px;border-radius:50%;
  display:inline-grid;place-items:center;background:var(--nude-1);color:var(--rotulo);
  transition:background var(--t-base) var(--e-standard),color var(--t-base) var(--e-standard)}
.cmp-chip .cmp-ico{width:18px;height:18px;flex:none;display:block;color:inherit}

/* AS SILHUETAS
   Cheias, não contornadas: a 32px é a massa que se lê, e o sulco vazado funciona
   igual sobre o painel caramelo e sobre o fundo claro. */
.cmp-forma{width:32px;height:32px;flex:0 0 32px;margin-bottom:9px;color:rgb(28 28 28/.3)}
.cmp-cel--cabnhv .cmp-forma{color:rgb(255 255 255/.92);margin-bottom:7px}

@media(min-width:721px){
  /* a linha inteira acende, e a ficha inverte junto */
  /* a regra antiga pintava o svg direto, e cor direta ganha de herança */
}
@media(max-width:1000px){
  .cmp-chip{flex-basis:28px;width:28px;height:28px}
  .cmp-chip .cmp-ico{width:16px;height:16px}
  .cmp-forma{width:28px;height:28px;flex-basis:28px}
}
@media(max-width:720px){
  .cmp-chip{flex-basis:30px;width:30px;height:30px}
  .cmp-chip .cmp-ico{width:17px;height:17px}
}

/* ---------- a animação anda com o scroll ----------
   O JS escreve só --p, de 0 a 1, conforme a dobra atravessa a tela. Todo o resto
   sai daqui. Rolar de volta desfaz, porque a posição é a fonte da verdade e não um
   evento que já passou.

   Cada linha pega a fatia dela: abre em 0.12 + i*0.085 e dura 0.30. O clamp devolve
   0 antes, 1 depois, e o meio no meio. A última linha fecha em 0.845, então a
   cascata ocupa quase toda a faixa em vez de estourar de uma vez. */
.cmp{--p:0}
/* A montagem célula a célula saiu: o comparativo aparece de uma vez. Tabela de
   comparação se lê linha contra linha, e linha apagada não se compara com nada. */

/* ---------- a ficha também no cabeçalho das colunas ----------
   Sem isso o topo da tabela parecia de outro projeto: seis linhas com ficha
   circular e três cabeçalhos com um glifo cinza solto. Mesma peça, escala maior. */
.cmp-chip--forma{flex:0 0 40px;width:40px;height:40px;margin-bottom:10px}
.cmp-chip--forma .cmp-forma{width:22px;height:22px;flex:none;margin:0;color:inherit}
.cmp-cel--cabnhv .cmp-chip--forma{background:rgb(255 255 255/.16);color:var(--white)}
@media(max-width:1000px){
  .cmp-chip--forma{flex-basis:34px;width:34px;height:34px;margin-bottom:8px}
  .cmp-chip--forma .cmp-forma{width:19px;height:19px}
}

/* ---------- folga das âncoras ----------
   A pilha fixa mede 132px: o header termina em 74 e a barra de âncoras em 132. Sem
   scroll-margin toda aba entregava a seção 132px atrás da barra, com o cabeçalho
   coberto. 154 = a pilha mais os 22px de folga que são o padrão da casa.

   Lista nomeada, e não [id]: os carrosséis daqui centralizam item com scrollIntoView,
   e uma margem global de 154px deslocaria todos eles. */
#reconhece,#caso,#faz,#tempo,#antes,#reais,#comparativo,#avaliacoes,#composicao,#faq,#comprar{
  scroll-margin-top:154px}

/* ---------- folga do realce no menu de Linhas ----------
   `.hdr nav a` (0,1,2) estava ganhando de `.nav-drop-menu a` (0,1,1) e zerando o
   padding lateral, então o realce encostava na letra. Subindo a especificidade acima
   dela, a folga volta a valer. */
.hdr nav .nav-drop-menu a{padding:0 18px;min-height:48px;white-space:nowrap}
.hdr nav .nav-drop-menu{min-width:296px}
.hdr nav .nav-drop-menu{padding:10px}

/* ---------- contraste das fichas ----------
   #DCBFA7 com glifo #AD7F66 dava 1,93:1, abaixo do mínimo de 3:1 para grafismo: os
   ícones sumiam. #EEDED3 com tinta a 72% dá 12,6:1. Mesmo desenho, agora visível. */
.cmp-chip{background:var(--nude-1-50);color:rgb(28 28 28/.72)}
.cmp-cel--cabnhv .cmp-chip--forma{background:var(--nude-1-50);color:rgb(28 28 28/.72)}
@media(min-width:721px){
}

/* ---------- a tabela MONTA ----------
   Antes cada linha inteira subia 18px e acendia, o que é discreto demais para ler
   como entrada. Agora cada CÉLULA entra por conta, da esquerda para a direita
   (--j), linha após linha (--i), e o traço separador é desenhado no mesmo passo.
   Tudo derivado de --p, então descer monta e subir desmonta. */



/* O separador vai como gradiente, e não como ::before: .cmp-linha é grid com subgrid,
   e um pseudo-elemento viraria item de grade e desalinharia as colunas. */
/* o separador volta a ser a borda de sempre: não há mais o que desenhar */
@media(max-width:720px){
  /* no celular a linha é um card com borda própria: não há traço para desenhar */
}
@media(prefers-reduced-motion:reduce){
}

/* ---------- chrome padrão, igual ao da home ----------
   Entrou aqui porque a auditoria achou a PDP sem: o drawer computava position:static
   e caía no fluxo da página (medido 1440x1160 a partir de x=0) em vez de flutuar. */

/* dropdown de Linhas */
.nav-drop{position:relative;display:flex;align-items:center}
.nav-drop-btn{display:inline-flex;align-items:center;gap:7px;font-weight:600;font-size:14px;line-height:21px;
  letter-spacing:1.4px;text-transform:uppercase;color:inherit;padding:5px 0;position:relative;
  background:none;border:0;cursor:pointer;font-family:inherit}
.nav-drop-btn svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2.2;
  stroke-linecap:round;stroke-linejoin:round;transition:transform var(--t-base) var(--e-emph)}
.nav-drop-btn[aria-expanded="true"] svg{transform:rotate(180deg)}
.nav-drop-menu{position:absolute;top:calc(100% + 16px);left:-14px;min-width:296px;z-index:60;
  background:var(--white);border:1px solid var(--ink-08);border-radius:var(--r-16);box-shadow:var(--sh-3);
  padding:10px;display:flex;flex-direction:column}
.nav-drop-menu a{display:flex;align-items:center;min-height:48px;padding:0 18px;border-radius:var(--r-8);
  font-weight:600;font-size:13px;letter-spacing:.02em;text-transform:none;white-space:nowrap;
  transition:background var(--t-base) var(--e-standard)}
.nav-drop-menu a::after{display:none}
/* obrigatório: o display:flex acima vence o display:none que o navegador dá ao [hidden],
   então sem esta regra o menu nasce aberto */
.nav-drop-menu[hidden]{display:none}
.nav-drop-menu a:hover{background:var(--nude-1-50)}
/* O link do dropdown tem cor PRÓPRIA: sem isto ele herda o off-white que o header usa
   sobre foto escura, e o menu abre branco no branco (contraste 1.1). */
.nav-drop-menu a,.nav-drop-menu a:link,.nav-drop-menu a:visited{color:var(--ink)}
.nav-drop-menu a:hover,.nav-drop-menu a:focus-visible{color:var(--ink)}
/* O header sobre foto escura pinta "nav a" de off-white com especificidade (0,3,3).
   O dropdown tem fundo branco, então precisa vencer essa regra, não empatar com ela. */
html:not(.is-scrolled) .hdr[data-topo="escuro"] .nav-drop-menu a,
html:not(.is-scrolled) .hdr[data-topo="escuro"] .nav-drop-menu a:hover{color:var(--ink)}

/* a casca do carrinho, que era o que faltava */
/* [hidden] dentro da gaveta ganha de qualquer classe. O remendo antigo listava quatro
   seletores e deixava a linha de cupom e a de total de fora: as duas apareciam vazias,
   com um "tirar" que não tirava nada. Uma regra só, para tudo que a gaveta esconde. */
.drawer[hidden],.drawer [hidden]{display:none!important}
.drawer{position:fixed;inset:0;z-index:100;opacity:0;visibility:hidden;
  background:rgb(28 28 28/.50);transition:opacity 420ms ease-in-out,visibility 420ms}
.drawer.open{opacity:1;visibility:visible}
.drawer aside{position:absolute;top:calc(var(--header-h) + 12px);right:24px;bottom:auto;
  width:min(460px,calc(100vw - 48px));max-height:calc(100vh - var(--header-h) - 48px);
  background:var(--white);border-radius:var(--r-16);overflow:hidden;
  display:flex;flex-direction:column;box-shadow:0 30px 80px rgb(28 28 28/.28);
  transform:translateX(calc(100% + 24px));transition:transform 520ms var(--e-expo)}
.drawer.open aside{transform:translateX(0)}
@media(max-width:640px){
  .drawer aside{right:12px;left:12px;width:auto;max-height:calc(100vh - var(--header-h) - 28px)}
  .drawer aside{transform:translateY(calc(100% + 16px))}
  .drawer.open aside{transform:translateY(0)}

  /* DENSIDADE NO CELULAR. Medido: com UM item a gaveta tomava 664 de 664px, a tela
     inteira. O que engordava era a entrelinha de 1.6 do corpo do site e o respiro de
     seção de página aplicado ao que aqui é uma lista curta. Nada some, só encolhe. */
  /* o escopo .drawer existe para a regra nao depender da ordem do arquivo: o CSS
     do tema e concatenado de varios <style> e as regras-base caem depois destas */
  .drawer aside{line-height:1.35}
  .drawer .dw-top{padding:9px var(--gutter)}
  .drawer .dw-close{width:34px;height:34px}
  .drawer .dw-frete{padding:8px var(--gutter);gap:5px}
  .drawer .dw-frete .corpo-sm,.drawer .dw-frete p{font-size:12.5px}
  .drawer .dw-itens{padding:2px var(--gutter)}
  .drawer .dw-item{grid-template-columns:60px 1fr;gap:12px;padding:10px 0}
  .drawer .dw-item .foto{width:60px;height:60px}
  .drawer .dw-item .info{gap:2px}
  .drawer .dw-item .baixo{margin-top:6px}
  .drawer #dw-total{padding-top:8px}
  .drawer .qtd button{width:30px;height:30px}
  .drawer .dw-cupom-linha input,.drawer .dw-cupom-linha button{height:40px}
  .drawer .dw-pe{padding:10px var(--gutter) 14px;gap:7px}
  .drawer .dw-pe .soma .preco{font-size:20px}
}

/* ---------- drawer: o bloco completo da home ----------
   A PDP tinha 15 das 48 regras (só as do cupom), então o item do carrinho saía
   sem tamanho e a foto tomava o card inteiro. Transplantado igual, sem variação. */
/* explícito e obrigatório: os três blocos abaixo definem display:flex, e classe VENCE o
   display:none que o navegador dá ao [hidden]. Sem estas regras eles apareceriam juntos. */
/* [hidden] dentro da gaveta ganha de qualquer classe. O remendo antigo listava quatro
   seletores e deixava a linha de cupom e a de total de fora: as duas apareciam vazias,
   com um "tirar" que não tirava nada. Uma regra só, para tudo que a gaveta esconde. */
.drawer[hidden],.drawer [hidden]{display:none!important}
/* modelo medido no site deles: overlay em quase-preto quente a 50%, fade de 420ms,
   e o painel NÃO é altura cheia colada na borda: é card FLUTUANTE, top 134px
   (ticker 56 + pílula 66 + 12 de folga), right 24px, 460px, altura pelo conteúdo.
   Ele nasce alinhado embaixo da pílula do header, na mesma linguagem de card solto. */
.drawer{position:fixed;inset:0;z-index:100;opacity:0;visibility:hidden;
  background:rgb(28 28 28/.50);transition:opacity 420ms ease-in-out,visibility 420ms}
.drawer.open{opacity:1;visibility:visible}
.drawer aside{position:absolute;top:calc(var(--header-h) + 12px);right:24px;bottom:auto;
  width:min(460px,calc(100vw - 48px));max-height:calc(100vh - var(--header-h) - 48px);
  background:var(--white);border-radius:var(--r-16);overflow:hidden;
  display:flex;flex-direction:column;box-shadow:0 30px 80px rgb(28 28 28/.28);
  transform:translateX(calc(100% + 24px));transition:transform 520ms var(--e-expo)}
.drawer.open aside{transform:translateX(0)}
@media(max-width:640px){
  .drawer aside{right:12px;left:12px;width:auto;max-height:calc(100vh - var(--header-h) - 28px)}
  .drawer aside{transform:translateY(calc(100% + 16px))}
  .drawer.open aside{transform:translateY(0)}

  /* DENSIDADE NO CELULAR. Medido: com UM item a gaveta tomava 664 de 664px, a tela
     inteira. O que engordava era a entrelinha de 1.6 do corpo do site e o respiro de
     seção de página aplicado ao que aqui é uma lista curta. Nada some, só encolhe. */
  /* o escopo .drawer existe para a regra nao depender da ordem do arquivo: o CSS
     do tema e concatenado de varios <style> e as regras-base caem depois destas */
  .drawer aside{line-height:1.35}
  .drawer .dw-top{padding:9px var(--gutter)}
  .drawer .dw-close{width:34px;height:34px}
  .drawer .dw-frete{padding:8px var(--gutter);gap:5px}
  .drawer .dw-frete .corpo-sm,.drawer .dw-frete p{font-size:12.5px}
  .drawer .dw-itens{padding:2px var(--gutter)}
  .drawer .dw-item{grid-template-columns:60px 1fr;gap:12px;padding:10px 0}
  .drawer .dw-item .foto{width:60px;height:60px}
  .drawer .dw-item .info{gap:2px}
  .drawer .dw-item .baixo{margin-top:6px}
  .drawer #dw-total{padding-top:8px}
  .drawer .qtd button{width:30px;height:30px}
  .drawer .dw-cupom-linha input,.drawer .dw-cupom-linha button{height:40px}
  .drawer .dw-pe{padding:10px var(--gutter) 14px;gap:7px}
  .drawer .dw-pe .soma .preco{font-size:20px}
}
/* estado vazio com venda cruzada, como no deles */
.dw-vazio{padding:34px var(--gutter) 8px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px}
.dw-vazio .t-card{font-size:17px}
.dw-vazio .corpo-sm{max-width:32ch}
.dw-vazio .ou{margin-top:14px;font-weight:600;font-size:12px;letter-spacing:.08em;color:var(--ink-45)}
.dw-cross{display:flex;gap:10px;margin-top:4px;overflow-x:auto;scrollbar-width:none;padding-bottom:4px;width:100%}
.dw-cross::-webkit-scrollbar{display:none}
.dw-cross button{flex:0 0 92px;display:flex;flex-direction:column;gap:6px;text-align:left}
.dw-cross .foto{width:92px;height:92px;border-radius:var(--r-8);overflow:hidden;background:var(--white);border:1px solid var(--ink-08)}
.dw-cross .foto img{width:100%;height:100%;object-fit:cover;display:block}
.dw-cross .nome{font-weight:600;font-size:11.5px;line-height:1.3}
.dw-cross .val{font-weight:600;font-size:11.5px;color:var(--ink-45);font-variant-numeric:tabular-nums}
.dw-top{display:flex;align-items:center;gap:12px;padding:20px var(--gutter);border-bottom:1px solid var(--ink-08)}
.dw-top .t-card{flex:1}
.dw-close{width:44px;height:44px;border-radius:var(--r-pill);display:inline-flex;align-items:center;justify-content:center;
  transition:background var(--t-base) var(--e-standard)}
.dw-close:hover{background:var(--nude-1-50)}
.dw-close svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.dw-frete{padding:14px var(--gutter);background:var(--nude-1-50);display:flex;flex-direction:column;gap:8px}
.dw-frete .barra{height:5px;border-radius:var(--r-pill);background:rgb(28 28 28/.10);overflow:hidden}
/* scaleX, não width: mesma técnica da linha do tempo, e não custa layout */
.dw-frete .barra b{display:block;height:100%;width:100%;background:var(--cta);border-radius:var(--r-pill);
  transform:scaleX(var(--frete,1));transform-origin:left center;
  transition:transform var(--t-slow) var(--e-out)}
.dw-itens{flex:1;overflow-y:auto;padding:8px var(--gutter);display:flex;flex-direction:column}
.dw-item{display:grid;grid-template-columns:72px 1fr;gap:14px;padding:16px 0;border-bottom:1px solid var(--ink-08)}
.dw-item:last-child{border-bottom:0}
.dw-item .foto{width:72px;height:72px;border-radius:var(--r-8);overflow:hidden;background:var(--white);border:1px solid var(--ink-08)}
.dw-item .foto img{width:100%;height:100%;object-fit:cover;display:block}
.dw-item .info{display:flex;flex-direction:column;gap:4px}
.dw-item .topo{display:flex;align-items:flex-start;gap:10px}
.dw-item .topo .t-card{flex:1;font-size:14px}
.dw-item .tirar{font-weight:500;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-45);
  transition:color var(--t-base) var(--e-standard)}
.dw-item .tirar:hover{color:var(--ink)}
.dw-item .baixo{display:flex;align-items:center;justify-content:space-between;margin-top:6px}
.qtd{display:inline-flex;align-items:center;border:1px solid var(--ink-16);border-radius:var(--r-pill);overflow:hidden}
.qtd button{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;font-size:15px;
  color:var(--ink);transition:background var(--t-base) var(--e-standard)}
.qtd button:hover{background:var(--nude-1-50)}
.qtd span{min-width:26px;text-align:center;font-weight:600;font-size:13px;font-variant-numeric:tabular-nums}
.dw-pe{padding:18px var(--gutter) 22px;border-top:1px solid var(--ink-08);display:flex;flex-direction:column;gap:12px}
.dw-pe .soma{display:flex;align-items:baseline;justify-content:space-between}
.dw-pe .soma .preco{font-size:22px}
.dw-pe .btn{width:100%}
.dw-pe .voltar{align-self:center;font-weight:600;font-size:12px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-45);transition:color var(--t-base) var(--e-standard)}
.dw-pe .voltar:hover{color:var(--ink)}
.icon .bolha{position:absolute;top:4px;right:4px;min-width:17px;height:17px;border-radius:var(--r-pill);
  background:var(--cta);color:var(--white);font-weight:700;font-size:10px;line-height:17px;text-align:center;padding:0 4px}
.icon{position:relative}

/* ---------- avaliações, formato Renova ----------
   Resumo pinado à esquerda com as barras como filtro, lista paginada à direita.
   Tudo o que é número sai calculado do dado, nunca escrito no HTML. */
.rv{display:grid;grid-template-columns:320px minmax(0,1fr);gap:40px;align-items:start}
@media(max-width:1000px){.rv{grid-template-columns:1fr;gap:28px}}

.rv-resumo{position:sticky;top:calc(var(--header-h) + 64px);
  background:var(--off-white);border:1px solid var(--ink-08);border-radius:var(--r-16);padding:24px}
@media(max-width:1000px){.rv-resumo{position:static}}
/* o aviso de massa de teste: sai sozinho quando a fonte real entrar, porque ele é
   derivado do próprio dado (amostra:true), não escrito à mão */
.rv-amostra{margin:0 0 16px;padding:10px 12px;border-radius:var(--r-8);
  background:var(--nude-1-50);border:1px dashed var(--nude-3);
  font-weight:600;font-size:11.5px;line-height:1.45;color:var(--rotulo);text-wrap:pretty}
.rv-nota{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.rv-n{font-weight:300;font-size:56px;line-height:.9;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.rv-nlado{display:flex;flex-direction:column;gap:3px}
.rv-nlado .stars{font-size:15px}

.rv-barras{display:flex;flex-direction:column;gap:6px}
.rv-barras button{display:grid;grid-template-columns:34px 1fr 42px;gap:10px;align-items:center;
  width:100%;padding:5px 6px;border-radius:var(--r-8);text-align:left;
  transition:background var(--t-base) var(--e-standard)}
.rv-barras button:hover{background:var(--nude-1-50)}
.rv-barras button[aria-pressed="true"]{background:var(--nude-1-50)}
.rv-e{font-weight:600;font-size:11.5px;color:var(--ink-70);font-variant-numeric:tabular-nums;white-space:nowrap}
.rv-track{height:6px;border-radius:var(--r-pill);background:var(--ink-08);overflow:hidden}
/* scaleX e não width: a barra anima sem custar layout, igual às outras do site */
.rv-track b{display:block;height:100%;background:var(--gold);border-radius:var(--r-pill);
  transform:scaleX(var(--w,0));transform-origin:left center;
  transition:transform var(--t-slow) var(--e-out)}
.rv-q{font-weight:500;font-size:11.5px;color:var(--ink-45);text-align:right;font-variant-numeric:tabular-nums}
.rv-legenda-filtro{margin-top:12px}

.rv-ferr{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;
  padding-bottom:16px;border-bottom:1px solid var(--ink-08)}
.rv-chips{display:flex;flex-wrap:wrap;gap:8px}
.rv-chip{height:36px;padding:0 16px;border-radius:var(--r-pill);border:1px solid var(--ink-16);
  font-weight:600;font-size:12px;letter-spacing:.02em;color:var(--ink-70);background:var(--white);
  transition:background var(--t-base) var(--e-standard),border-color var(--t-base) var(--e-standard),
             color var(--t-base) var(--e-standard)}
.rv-chip:hover{border-color:var(--rotulo)}
.rv-chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--white)}
.rv-ordem{display:inline-flex;align-items:center;gap:9px}
.rv-ordem select{height:36px;padding:0 34px 0 14px;border-radius:var(--r-pill);
  border:1px solid var(--ink-16);background:var(--white);font:inherit;font-weight:600;font-size:12px;
  color:var(--ink);cursor:pointer;-webkit-appearance:none;appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231C1C1C' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;background-size:12px}
.rv-conta{margin:14px 0 18px}

.rv-lista{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
@media(max-width:760px){.rv-lista{grid-template-columns:1fr}}
.rv-card{background:var(--white);border:1px solid var(--ink-08);border-radius:var(--r-16);
  padding:22px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--sh-1)}
.rv-card-topo{display:flex;align-items:center;justify-content:space-between;gap:12px}
.rv-card .stars{font-size:13px}
.rv-data{font-weight:500;font-size:11.5px;color:var(--ink-45)}
.rv-tit{font-weight:600;font-size:15px;line-height:1.3;text-wrap:balance}
.rv-txt{font-weight:500;font-size:14px;line-height:1.55;color:var(--ink-70);text-wrap:pretty}
.rv-pe{display:flex;align-items:center;gap:11px;margin-top:auto;padding-top:12px;
  border-top:1px solid var(--ink-08)}
/* inicial num disco, e não foto: não existe retrato de cliente aqui para usar */
.rv-av{flex:0 0 34px;width:34px;height:34px;border-radius:50%;display:inline-grid;place-items:center;
  background:var(--nude-1-50);color:var(--rotulo);font-style:normal;font-weight:700;font-size:13px}
.rv-quem{display:flex;flex-direction:column;gap:1px;min-width:0}
.rv-quem b{font-weight:600;font-size:13px}
.rv-quem span{font-weight:500;font-size:11px;color:var(--ink-45)}
.rv-verif{margin-left:auto;display:inline-flex;align-items:center;gap:5px;white-space:nowrap;
  font-weight:600;font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--cta-dark)}
.rv-verif svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2.4;
  stroke-linecap:round;stroke-linejoin:round}

.rv-vazio{margin:26px 0;font-weight:500;font-size:14px;color:var(--ink-70)}
.rv-limpa{font:inherit;font-weight:600;font-size:14px;color:var(--rotulo);text-decoration:underline}
.rv-mais{width:100%;margin-top:20px}
.rv-mais[hidden]{display:none}

/* entrada dos cards: o mesmo vocabulário da página, sem inventar um terceiro */
html.js .rv-card[data-novo]{opacity:0;transform:translateY(14px)}
html.js .rv-card[data-novo].vis{opacity:1;transform:none;
  transition:opacity var(--t-slow) var(--e-out),transform var(--t-slow) var(--e-out)}
@media(prefers-reduced-motion:reduce){
  html.js .rv-card[data-novo]{opacity:1;transform:none}
}

/* ============================================================
   ENTRADA POR SCROLL · os três estilos escolhidos
   O gatilho continua sendo o [data-rev] e o observador que já existe.
   Só o visual muda, e quem escolhe é o data-anim.
   ============================================================ */

/* ---------- 12 · EMPILHAR E ASSENTAR ----------
   Grade e fileira de cards. Chegam deslocados e tortos e se acomodam com um pouco de
   sobra na curva, o que faz o assentamento parecer físico. A sobra é 1,06 e não 1,12
   da demonstração: repetida numa página longa, 1,12 lê como brinquedo.
   --dx e --rot vêm do JS, pelo índice do card entre os irmãos. */
html.js [data-dobra] [data-anim="12"]{opacity:0;
  transform:translate(calc(var(--dx,0px) * var(--fx,1)),26px) rotate(var(--rot,0deg))}
/* No celular a grade vira uma coluna: o deslocamento lateral não diz mais nada e ainda
   pode empurrar o card para fora da tela no meio do movimento. O fator zera o eixo X
   sem mexer no valor que o JS escreveu, então volta sozinho ao girar o aparelho. */
@media(max-width:860px){html.js [data-dobra] [data-anim="12"]{--fx:0}}
html.js [data-dobra].vem [data-anim="12"]{opacity:1;transform:none;
  transition:opacity 480ms var(--e-out) calc(var(--k,0) * 70ms),
             transform 820ms cubic-bezier(.22,1.06,.36,1) calc(var(--k,0) * 70ms)}

/* ---------- 13 · DESDOBRAR ----------
   Cabeçalho de dobra, foto grande, tabela e resumo: o padrão novo da página.
   -12° e não -22°: o ângulo da demonstração existia para diferenciar num teste, e
   repetido em dez cabeçalhos ele cansa. A perspectiva vai na própria função para não
   depender de um pai declarar perspective. */
html.js [data-dobra] [data-anim="13"]{opacity:0;transform-origin:top center;
  transform:perspective(1400px) rotateX(-12deg) translateY(22px)}
html.js [data-dobra].vem [data-anim="13"]{opacity:1;transform:none;
  transition:opacity 520ms var(--e-out) calc(var(--k,0) * 70ms),
             transform 880ms var(--e-expo) calc(var(--k,0) * 70ms)}

/* ---------- 14 · RÉGUA QUE PERCORRE ----------
   Sequências. É o único preso ao scroll: não tem duração própria, quem manda é a
   posição, e voltar desfaz. Nada some, porque o que ainda não foi alcançado fica em
   24% em vez de zero: numa sequência, esconder o que vem depois atrapalha a leitura. */
/* a régua por bloco saiu: agora ela corre a dobra inteira */
[data-anim="14"] > .rg{position:absolute;left:5px;top:4px;bottom:4px;width:2px;
  background:var(--ink-08);border-radius:var(--r-pill);overflow:hidden}
[data-anim="14"] > .rg b{display:block;height:100%;background:var(--nude-3);
  transform:scaleY(var(--p));transform-origin:top center}
html.js [data-anim="14"] > :not(.rg){
  --e:clamp(0,calc((var(--p) - var(--k,0) * .17) / .26),1);
  opacity:calc(.24 + var(--e) * .76);
  transform:translateX(calc((1 - var(--e)) * 14px))}
@media(max-width:860px){[data-anim="14"]{padding-left:24px}}

@media(prefers-reduced-motion:reduce){
  html.js [data-dobra] [data-anim]{opacity:1;transform:none}
  html.js [data-anim="14"] > :not(.rg){opacity:1;transform:none}
  [data-anim="14"] > .rg b{transform:scaleY(1)}
}

/* ============================================================
   ENTRADA POR DOBRA
   Um gatilho por seção. Quando a dobra entra, tudo dentro dela entra junto,
   escalonado por --k. Antes cada bloco tinha o próprio observador e a dobra
   nunca era vista chegando: era peça solta a cada 400px de rolagem.
   ============================================================ */
/* o atraso NAO pode morar aqui: as regras de estilo abaixo usam o atalho transition,
   que reescreve o delay junto. Ele foi para dentro de cada atalho. */

/* O cabeçalho da dobra nunca espera: ele é o que anuncia que a dobra chegou,
   então sai na frente e o resto vem atrás dele. */
html.js [data-dobra] .head[data-anim]{--k:0}

/* ---------- 14 · a régua passa a correr a DOBRA inteira ----------
   Antes o trilho media só o bloco da sequência. Agora ele acompanha a seção toda,
   e cada item acende na altura em que a régua chega nele. */
[data-dobra="14"]{--p:0;position:relative}
[data-dobra="14"] > .rg-dobra{position:absolute;left:calc(var(--gutter) - 16px);
  top:56px;bottom:56px;width:2px;background:var(--ink-08);border-radius:var(--r-pill);
  overflow:hidden;z-index:2}
[data-dobra="14"] > .rg-dobra b{display:block;height:100%;background:var(--nude-3);
  transform:scaleY(var(--p));transform-origin:top center}
html.js [data-dobra="14"] [data-anim]{
  --e:clamp(0,calc((var(--p) - var(--k,0) * .13) / .24),1);
  opacity:calc(.22 + var(--e) * .78);
  transform:translateX(calc((1 - var(--e)) * 16px));transition:none}
@media(max-width:1000px){
  [data-dobra="14"] > .rg-dobra{left:6px}
}
@media(max-width:860px){
  [data-dobra="14"] > .rg-dobra{display:none}
  html.js [data-dobra="14"] [data-anim]{transform:translateY(calc((1 - var(--e)) * 16px))}
}

@media(prefers-reduced-motion:reduce){
  html.js [data-dobra] [data-anim]{opacity:1;transform:none}
  [data-dobra="14"] > .rg-dobra b{transform:scaleY(1)}
}

/* ============================================================
   DOBRA DE TOPO no layout da PDP da Renova
   Medido lá: galeria 654 + vão 40 + coluna 436 = container de 1130, com a
   GALERIA pinada e a coluna de compra rolando. Aqui era o contrário.
   ============================================================ */
.hero-pdp{max-width:1130px;margin-inline:auto;
  grid-template-columns:minmax(0,1fr) 436px;gap:40px;align-items:start}
@media(max-width:1000px){
  .hero-pdp{max-width:none;grid-template-columns:1fr;gap:26px}
}

/* a galeria pina; a coluna de compra deixa de pinar */
.galeria{position:sticky;top:calc(var(--header-h) + 12px);
  display:flex;flex-direction:column;gap:12px}
@media(max-width:1000px){.galeria{position:static}}
.buy{position:static!important}

/* PALCO: quadrado, como o deles. As miniaturas ficam fora dele, logo abaixo,
   e as duas coisas somam os 760px de altura que medi na Renova. */
.gal-palco{position:relative;aspect-ratio:1;border-radius:var(--r-16);overflow:hidden;
  background:var(--white);border:1px solid var(--ink-08)}
.gal-slides{position:absolute;inset:0}
.gal-slide{position:absolute;inset:0;margin:0;opacity:0;
  transition:opacity 420ms var(--e-standard)}
.gal-slide[data-on]{opacity:1}
.gal-slide img{width:100%;height:100%;object-fit:cover;display:block}
.gal-slide .play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;
  width:56px;height:56px;border-radius:50%;background:rgb(255 255 255/.92);
  display:grid;place-items:center;box-shadow:var(--sh-2)}
.gal-slide .play svg{width:20px;height:20px;fill:var(--ink);margin-left:2px}

/* setas sobre o palco, como as deles: círculo branco, uma em cada borda */
.gal-seta{position:absolute;top:50%;transform:translateY(-50%);z-index:3;
  width:44px;height:44px;border-radius:50%;display:grid;place-items:center;
  background:rgb(255 255 255/.88);color:var(--ink);border:1px solid rgb(28 28 28/.08);
  box-shadow:var(--sh-1);opacity:0;
  transition:opacity var(--t-base) var(--e-standard),background var(--t-base) var(--e-standard)}
.gal-seta svg{width:19px;height:19px}
.gal-seta--ant{left:16px}
.gal-seta--prox{right:16px}
.galeria:hover .gal-seta,.gal-seta:focus-visible{opacity:1}
.gal-seta:hover{background:var(--white)}
@media(max-width:1000px){.gal-seta{opacity:1}}

/* miniaturas: seis numa fileira, a ativa com aro caramelo */
/* nove miniaturas, uma por slot do carrossel */
.gal-minis{display:grid;grid-template-columns:repeat(9,1fr);gap:7px}
.gal-mini{position:relative;aspect-ratio:1;border-radius:var(--r-8);overflow:hidden;padding:0;
  border:1px solid var(--ink-08);background:var(--white);cursor:pointer;
  transition:border-color var(--t-base) var(--e-standard),box-shadow var(--t-base) var(--e-standard)}
.gal-mini img{width:100%;height:100%;object-fit:cover;display:block}
.gal-mini:hover{border-color:var(--rotulo)}
.gal-mini[aria-selected="true"]{border-color:var(--rotulo);box-shadow:0 0 0 1px var(--nude-4)}

/* o botão de 3D e o selo passam a viver no palco, não no primeiro tile */
.gal-palco .ver3d{z-index:4}
.gal-palco .selo-gal{position:absolute;left:14px;top:14px;z-index:4}

/* ---------- preço no topo da coluna ----------
   Na PDP deles o valor aparece logo abaixo das estrelas e de novo antes do botão.
   Aqui ele só existia embaixo, então quem chegava não via preço nenhum sem rolar. */
/* a regra base .bloco-preco empilha em coluna, e eu nao tinha sobrescrito a direcao:
   riscado, preco e pilula saiam um embaixo do outro. Somados eles dao 342px numa caixa
   de 436, entao cabem na mesma linha, que e como a Renova mostra. */
.bloco-preco--topo{display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline;
  gap:6px 10px;margin:2px 0}
.bloco-preco--topo .preco{font-size:32px}
.bloco-preco--topo .cap{flex-basis:100%;margin:0}
.selo-off{align-self:center;background:var(--ink);color:var(--white);border-radius:var(--r-pill);
  padding:4px 10px;font-weight:700;font-size:11px;letter-spacing:.04em;white-space:nowrap}
.selo-off[hidden]{display:none}

/* ---------- barra de segurança, logo abaixo do preço ----------
   Entra aqui porque é aqui que a dúvida aparece: "quanto custa" vem sempre seguido de
   "e se não der certo". Mesma cor e mesmos ícones da barra do topo de propósito: é a
   mesma promessa repetida no momento da decisão, não um selo novo para decifrar.
   O fundo é --rotulo e não --nude-4 porque branco sobre o nude dá 3,5:1, abaixo do
   mínimo para texto de 11,5px em caixa alta; sobre o rótulo dá 5,0:1. */
.pdp-barra{list-style:none;margin:16px 0 0;padding:12px 14px;border-radius:var(--r-12,12px);
  background:var(--rotulo);color:var(--white);
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px}
.pdp-barra li{display:flex;align-items:center;gap:8px;min-width:0;
  font-weight:500;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;line-height:1.2}
.pdp-barra svg{width:16px;height:16px;flex:0 0 16px;fill:none;stroke:currentColor;
  stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:480px){
  .pdp-barra{gap:9px 10px;padding:11px 12px}
  .pdp-barra li{font-size:10.5px;letter-spacing:.04em}
}
.rot-total{display:block;font-weight:600;font-size:11.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-45);margin-bottom:4px}

/* ============================================================
   COMPARATIVO · menor e alinhado
   Ver comparativo-menor.cjs para o porquê de cada número.
   Este bloco fecha o assunto: vem por último e reescreve as três faixas,
   senão a regra base aqui venceria os @media escritos antes dela.
   ============================================================ */

/* ---------- a tabela encolhe ---------- */
.cmp{--cmp-rot:206px;max-width:1060px;margin-inline:auto}

/* ---------- tudo começa na mesma altura ----------
   O conteúdo da célula alinha pelo TOPO, não pelo centro da linha. Assim a primeira
   linha de texto das quatro colunas nasce sempre na mesma altura, que é o que se
   compara. O marcador sobe para ficar no meio óptico dessa primeira linha. */
.cmp-rot{align-items:flex-start;gap:11px;padding:13px 18px 13px 0;font-size:13.5px}
.cmp-cel{align-items:flex-start;gap:8px;padding:13px 14px}
/* o respiro da coluna da NHV e maior que o das outras de proposito: assim a LINHA
   MAIS LARGA fica centrada no painel caramelo e o bloco inteiro le centrado, sem tirar
   os checks do prumo. Centralizar linha a linha faria os checks zigue-zaguear.
   Em clamp para nao estourar a largura util e forcar quebra nas telas medias. */
.cmp-cel--nhv,.cmp-cel--cabnhv{padding-left:clamp(18px,2.2vw,30px);padding-right:clamp(12px,1.6vw,22px)}
.cmp-txt{font-size:13px}

.cmp-chip{flex-basis:28px;width:28px;height:28px;margin-top:-5px}
.cmp-chip .cmp-ico{width:16px;height:16px}
.cmp-check{margin-top:0}
/* a bolinha passa a ocupar a mesma caixa de 18px do check: as três colunas de valor
   começam o texto no mesmo recuo, em vez de 35px numa e 43px nas outras */
.cmp-bola{margin:4px 4px 0}

/* ---------- o separador sai da linha e vai para a célula ----------
   Em grid-column:1/-1 a borda atravessava o painel caramelo com um traço escuro.
   Por célula, a da NHV pode ser branca, que é o que se enxerga sobre caramelo. */
.cmp-linha{border-top:0}
.cmp-linha > .cmp-rot,.cmp-linha > .cmp-cel{border-top:1px solid var(--ink-08)}
.cmp-linha > .cmp-cel--nhv{border-top-color:rgb(255 255 255/.18)}

/* ---------- o cabeçalho alinha pelo topo ----------
   Estava em align-items:end, e como a coluna da NHV tem uma linha a mais de texto,
   as três fichas do topo paravam em alturas diferentes. Pelo topo elas formam fileira
   e os nomes das colunas caem na mesma linha. */
.cmp-cab{align-items:stretch}
.cmp-cel--cab,.cmp-cel--cabnhv{justify-content:flex-start;padding-top:18px;padding-bottom:14px}
.cmp-chip--forma{flex-basis:34px;width:34px;height:34px;margin-top:0;margin-bottom:8px}
.cmp-chip--forma .cmp-forma{width:19px;height:19px}
.cmp-marca{font-size:16px}
.cmp-sub{font-size:11px}
.cmp-nome{font-size:12px}
.cmp-legenda{margin-top:22px;gap:9px 24px}
.cmp-nota{margin-top:12px}

@media(max-width:1000px){
  .cmp{--cmp-rot:156px}
  .cmp-rot{gap:9px;padding:11px 12px 11px 0;font-size:13px}
  .cmp-cel{padding:11px 10px;gap:7px}
  .cmp-txt{font-size:12.5px}
  .cmp-chip{flex-basis:26px;width:26px;height:26px;margin-top:-4px}
  .cmp-chip .cmp-ico{width:15px;height:15px}
  .cmp-chip--forma{flex-basis:30px;width:30px;height:30px;margin-bottom:7px}
  .cmp-chip--forma .cmp-forma{width:17px;height:17px}
  .cmp-cel--cab,.cmp-cel--cabnhv{padding-top:15px;padding-bottom:12px}
}
/* no celular a linha volta a ser card: aqui a régua é outra e as regras de cima,
   que são base e vêm depois no arquivo, precisam ser desfeitas uma a uma */
@media(max-width:720px){
  .cmp{--cmp-rot:0px;max-width:none}
  .cmp-rot{padding:0 0 12px;font-size:14.5px;align-items:flex-start}
  .cmp-linha > .cmp-rot{border-top:0}
  .cmp-cel{padding:9px 0;gap:8px}
  .cmp-linha > .cmp-cel--nhv{border-top:0;padding:10px 12px}
  .cmp-chip{flex-basis:30px;width:30px;height:30px;margin-top:-5px}
  .cmp-chip .cmp-ico{width:17px;height:17px}
}

/* ---------- cabeçalho do comparativo: a entrelinha era o volume ---------- */
.cmp-marca{line-height:1.15}
.cmp-sub{line-height:1.25}
.cmp-nome{line-height:1.2}
.cmp-cel--cab,.cmp-cel--cabnhv{padding-top:16px;padding-bottom:13px}
.cmp-cel--cabnhv{gap:4px}
@media(max-width:1000px){
  .cmp-cel--cab,.cmp-cel--cabnhv{padding-top:14px;padding-bottom:11px}
}

/* ---------- a galeria cabe na janela ----------
   Ver galeria-cabe.cjs: sticky mais alto que a janela útil fica preso pelo topo e
   nunca mostra o pé. A largura passa a sair da altura disponível. */
@media(min-width:1001px){
  .hero-pdp{--gal-w:clamp(420px,calc(100svh - 330px),654px);
    grid-template-columns:minmax(0,var(--gal-w)) minmax(0,436px);
    justify-content:center}
}

/* ---------- topo da PDP alinhado pela borda da imagem ---------- */
@media(min-width:1001px){
  #pdp{--gal-w:clamp(420px,calc(100svh - 330px),654px);
       --hero-w:min(1130px,calc(var(--gal-w) + 476px))}
  .hero-pdp{grid-template-columns:minmax(0,var(--gal-w)) minmax(0,436px);
    width:min(100%,var(--hero-w));margin-inline:auto;justify-content:stretch}
  .crumb{width:min(100%,var(--hero-w));margin-inline:auto}
  .seletor{max-width:calc(var(--hero-w) + var(--gutter)*2)}
}

/* ============================================================
   MENU DO TOPO · os dois estados
   Ver nav-estado.cjs. O marcador da página atual estava no mesmo ::after do hover e
   herdava o scaleX(0) dele, então só aparecia enquanto o ponteiro passava.
   ============================================================ */

/* Os dois estados precisam ser DIFERENTES, senão passar o mouse em SOBRE deixa a
   página atual indistinguível de um link qualquer. A diferença é de peso: a barra do
   hover é fina e o texto acende; a da página atual é o dobro da espessura e o texto já
   está em tinta cheia. Um está acontecendo, o outro é onde você está. */
.hdr nav a{color:var(--ink-70);transition:color var(--t-base) var(--e-standard)}
.hdr nav a:hover,.hdr nav a:focus-visible{color:var(--ink)}
.hdr nav a::after{height:1px;border-radius:1px;bottom:-4px}

/* página atual: pseudo-elemento PRÓPRIO, sempre visível, sem animação */
.hdr nav a[aria-current]:not([aria-current="false"]),
.hdr nav .nav-drop-btn[aria-current]:not([aria-current="false"]){color:var(--ink)}
.hdr nav a[aria-current]:not([aria-current="false"])::before,
.hdr nav .nav-drop-btn[aria-current]:not([aria-current="false"])::before{
  content:"";position:absolute;left:0;right:0;bottom:-4px;height:2px;
  border-radius:2px;background:var(--nude-4)}
/* e na página atual o traço de hover não tem o que anunciar */
.hdr nav a[aria-current]:not([aria-current="false"])::after{display:none}
/* no botão de Linhas a barra para antes da seta, senão ela sublinha o chevron também */
.hdr nav .nav-drop-btn[aria-current]:not([aria-current="false"])::before{right:19px}

/* a linha aberta, dentro do menu de Linhas */
.nav-drop-menu a[aria-current]:not([aria-current="false"]){background:var(--nude-1-50);
  color:var(--ink)}

/* menu do celular: mesma leitura, na escala dele */
.menu-mob li a[aria-current]:not([aria-current="false"]){color:var(--ink)}
.menu-mob li a[aria-current]:not([aria-current="false"])::before{content:"";
  width:18px;height:2px;border-radius:2px;background:var(--nude-4);
  margin-right:12px;flex:0 0 18px}

/* ---------- BUSCA · irma da gaveta do carrinho ---------- */
/* [hidden] contra display de classe: a regra que ja me custou tres bugs nesta pagina.
   Aqui ela vem primeiro e com !important, e o resto do bloco nao precisa lembrar dela. */
.busca[hidden]{display:none!important}
.busca{position:fixed;inset:0;z-index:100;background:rgb(28 28 28/.50);opacity:0;visibility:hidden;
  transition:opacity 420ms ease-in-out,visibility 420ms}
.busca.open{opacity:1;visibility:visible}
.busca-painel{position:absolute;left:50%;top:calc(var(--header-h) + 12px);
  transform:translate(-50%,-14px);opacity:0;
  width:min(720px,calc(100vw - 48px));max-height:calc(100vh - var(--header-h) - 48px);
  background:var(--white);border-radius:var(--r-16);box-shadow:0 30px 80px rgb(28 28 28/.28);
  display:flex;flex-direction:column;overflow:hidden;
  transition:transform 520ms var(--e-expo),opacity 320ms var(--e-out)}
.busca.open .busca-painel{transform:translate(-50%,0);opacity:1}

.busca-campo{display:flex;align-items:center;gap:12px;padding:8px 12px 8px 20px;
  border-bottom:1px solid var(--ink-08);box-shadow:inset 0 -2px 0 transparent;
  transition:box-shadow var(--t-base) var(--e-standard)}
.busca-campo:focus-within{box-shadow:inset 0 -2px 0 var(--nude-4)}
.busca-campo>svg{width:20px;height:20px;flex:0 0 20px;fill:none;stroke:var(--ink-45);stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round}
.busca-campo input{flex:1;min-width:0;height:52px;border:0;background:none;font:inherit;
  font-size:17px;font-weight:500;color:var(--ink);outline:none}
.busca-campo input::placeholder{color:var(--ink-45)}
.busca-campo input::-webkit-search-cancel-button{display:none}
.busca-fecha{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;padding:0;
  border:1px solid var(--ink-16);border-radius:50%;background:none;color:var(--ink-45);cursor:pointer;
  transition:border-color var(--t-base) var(--e-standard),color var(--t-base) var(--e-standard)}
.busca-fecha svg{width:17px;height:17px;display:block}
.busca-fecha:hover{border-color:var(--rotulo);color:var(--ink)}

.busca-res{overflow-y:auto;padding:6px 8px 10px;scrollbar-width:thin}
.br-grupo{padding:14px 12px 6px;font-weight:600;font-size:10.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink-45)}
.br-item{display:grid;grid-template-columns:44px 1fr auto;gap:14px;align-items:center;
  padding:9px 12px;border-radius:var(--r-8);transition:background var(--t-base) var(--e-standard)}
.br-item:hover,.br-item[aria-selected="true"]{background:var(--nude-1-50)}
.br-item img{width:44px;height:44px;border-radius:var(--r-8);object-fit:cover;display:block;
  background:var(--white);border:1px solid var(--ink-08)}
.br-ico{width:44px;height:44px;border-radius:var(--r-8);background:var(--nude-1-50);color:var(--rotulo);
  display:inline-flex;align-items:center;justify-content:center}
.br-ico svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.br-txt{min-width:0;display:block}
.br-txt b{display:block;font-weight:600;font-size:14px;line-height:1.3;color:var(--ink);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.br-txt small{display:block;font-weight:500;font-size:12px;color:var(--ink-45);margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.br-txt mark{background:none;color:inherit;font-weight:700;text-decoration:underline;
  text-decoration-color:var(--rotulo);text-decoration-thickness:1.5px;text-underline-offset:2px}
.br-fim{display:flex;align-items:center;gap:12px}
.br-preco{font-weight:600;font-size:14px;font-variant-numeric:tabular-nums;white-space:nowrap}
/* verde so aqui: e o botao de comprar */
.br-add{height:36px;padding:0 14px;border-radius:var(--r-pill);background:var(--cta);color:var(--white);
  font-weight:600;font-size:11px;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;
  transition:background var(--t-base) var(--e-standard)}
.br-add:hover{background:var(--cta-dark)}
.br-vazio{padding:30px 20px 18px;text-align:center}
.br-vazio p{font-weight:500;font-size:14px;line-height:1.55;color:var(--ink-70);max-width:40ch;margin:0 auto}
.br-vazio b{color:var(--ink)}
.br-chips{display:flex;flex-wrap:wrap;gap:8px;padding:6px 12px 10px}
.br-chip{height:36px;padding:0 14px;border-radius:var(--r-pill);border:1px solid var(--ink-16);
  font-weight:600;font-size:12px;color:var(--ink-70);display:inline-flex;align-items:center;
  transition:border-color var(--t-base) var(--e-standard),background var(--t-base) var(--e-standard)}
.br-chip:hover{border-color:var(--rotulo);background:var(--nude-1-50)}
.br-rodape{padding:10px 20px;border-top:1px solid var(--ink-08);display:flex;gap:18px;
  font-weight:500;font-size:11px;color:var(--ink-45)}
.br-rodape kbd{font:inherit;font-weight:600;border:1px solid var(--ink-16);border-radius:4px;
  padding:1px 6px;margin-right:5px;color:var(--ink-70)}

/* no menu mobile a busca e a primeira linha, com o mesmo tipo dos links */
.menu-mob .menu-busca{display:flex;align-items:center;gap:14px;width:100%;min-height:56px;
  font-weight:300;font-size:22px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink);text-align:left}
.menu-mob .menu-busca svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round;flex:0 0 22px}

@media(max-width:640px){
  .busca-painel{left:0;top:0;width:100%;height:100%;max-height:none;border-radius:0;
    transform:translateY(16px)}
  .busca.open .busca-painel{transform:none}
  .busca-campo{padding:10px 10px 10px 16px}
  .br-item{grid-template-columns:40px 1fr auto;gap:10px}
  .br-item img,.br-ico{width:40px;height:40px}
  .br-add{padding:0 12px}
  .br-rodape{display:none}
}
@media(prefers-reduced-motion:reduce){.busca,.busca-painel{transition:none}}

/* ---------- menu: o botao "Linhas" e item do menu como os outros ----------
   Mesmo repouso (ink-70), mesmo hover (ink) e mesmo grifo caramelo. right:19px para o
   grifo parar antes do chevron. */
.hdr nav .nav-drop-btn{color:var(--ink-70);transition:color var(--t-base) var(--e-standard)}
.hdr nav .nav-drop-btn:hover,.hdr nav .nav-drop-btn:focus-visible,
.hdr nav .nav-drop-btn[aria-expanded="true"]{color:var(--ink)}
.hdr nav .nav-drop-btn::after{content:"";position:absolute;left:0;right:19px;bottom:0;height:1px;
  background:var(--nude-4);transform:scaleX(0);transform-origin:left;
  transition:transform var(--t-base) var(--e-emph)}
.hdr nav .nav-drop-btn:hover::after,.hdr nav .nav-drop-btn:focus-visible::after,
.hdr nav .nav-drop-btn[aria-expanded="true"]::after{transform:scaleX(1)}
.hdr nav .nav-drop-btn[aria-current]:not([aria-current="false"])::after{display:none}

/* ---------- acordeoes da PDP: o gatilho responde, nao so o chip ---------- */
.acc-trigger .nome,.sint-cab .nome{transition:color var(--t-base) var(--e-standard)}
.acc-trigger .mais::before,.acc-trigger .mais::after,
.sint-cab .mais::before,.sint-cab .mais::after{transition:transform var(--t-base) var(--e-emph),
  opacity var(--t-base) var(--e-standard),background var(--t-base) var(--e-standard)}
.acc-trigger:hover .nome,.sint-cab:hover .nome{color:var(--rotulo)}
.acc-trigger:hover .mais::before,.acc-trigger:hover .mais::after,
.sint-cab:hover .mais::before,.sint-cab:hover .mais::after{background:var(--nude-4)}

/* ---------- Roleta de cupom · v2 ----------
   Modal irma da gaveta do carrinho e da busca: mesmo veu, mesma entrada, mesmo Esc. */
.rol{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:24px;
  background:rgb(22 18 16/.74);opacity:0;visibility:hidden;
  transition:opacity var(--t-base) var(--e-standard),visibility 0s linear var(--t-base)}
.rol[data-abre]{opacity:1;visibility:visible;transition-delay:0s}
.rol-cartao{position:relative;width:min(940px,100%);max-height:calc(100vh - 48px);overflow:auto;
  background:var(--off-white);border-radius:var(--r-44);box-shadow:0 48px 130px rgb(0 0 0/.46);
  display:grid;grid-template-columns:minmax(0,430px) minmax(0,1fr);gap:0;
  transform:translateY(22px) scale(.965);opacity:0;
  transition:transform 560ms var(--e-emph),opacity 420ms var(--e-out)}
.rol[data-abre] .rol-cartao{transform:none;opacity:1}
.rol-fecha{position:absolute;right:16px;top:16px;z-index:4;width:38px;height:38px;border:0;padding:0;
  border-radius:50%;background:rgb(255 255 255/.82);cursor:pointer;display:grid;place-items:center;
  transition:background var(--t-base) var(--e-standard)}
.rol-fecha:hover{background:var(--white)}
.rol-fecha svg{width:16px;height:16px;stroke:var(--ink);stroke-width:1.6;fill:none}

/* ---- lado da roda ---- */
.rol-roda{position:relative;display:grid;place-items:center;padding:34px 28px 30px;overflow:hidden;
  background:radial-gradient(128% 84% at 50% 30%,#FBF4EC 0%,#F1E1D2 44%,#DEC4AD 100%);
  box-shadow:inset -1px 0 0 rgb(28 28 28/.06)}
/* halo atras da roda: e o que tira o ar de adesivo colado no fundo */
.rol-roda::before{content:"";position:absolute;left:50%;top:48%;width:112%;aspect-ratio:1;
  transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,rgb(255 255 255/.62) 0 34%,rgb(255 255 255/.18) 52%,transparent 68%)}
.rol-svg{position:relative;z-index:1;width:100%;max-width:334px;height:auto;display:block;
  filter:drop-shadow(0 22px 46px rgb(42 35 32/.32))}
.rol-svg text{font-family:inherit}
.rol-disco{transform-origin:170px 186px}
.rol-ponta{transform-box:fill-box;transform-origin:50% 12%}
.rol-ponta[data-tic]{animation:rol-tic 120ms var(--e-out)}
@keyframes rol-tic{45%{transform:rotate(-9deg)}}
/* a fatia premiada acende quando a roda para */
.rol-ganhou{opacity:0;transition:opacity 420ms var(--e-out)}
.rol[data-passo="fim"] .rol-ganhou{opacity:1;animation:rol-pulsa 1500ms var(--e-standard) 500ms 2}
@keyframes rol-pulsa{50%{opacity:.34}}

/* estouro curto, na familia da marca */
.rol-festa{position:absolute;left:50%;top:46%;width:0;height:0;z-index:2;pointer-events:none}
.rol-festa i{position:absolute;left:0;top:0;width:9px;height:9px;border-radius:2px;opacity:0;
  transform:translate(-50%,-50%) scale(.4)}
.rol-festa[data-vai] i{animation:rol-conf 1400ms var(--e-out) forwards}
@keyframes rol-conf{
  0%{opacity:0;transform:translate(-50%,-50%) rotate(0deg) scale(.4)}
  14%{opacity:1}
  100%{opacity:0;transform:translate(calc(-50% + var(--x)),calc(-50% + var(--y))) rotate(var(--r)) scale(1)}}

/* ---- lado do texto ---- */
.rol-txt{padding:48px 46px 42px;display:flex;flex-direction:column;justify-content:center}
.rol-olho{display:flex;align-items:center;gap:9px;font-weight:600;font-size:11px;
  letter-spacing:.16em;text-transform:uppercase;color:#8E6350}
.rol-olho::before{content:"";width:22px;height:1px;background:var(--nude-3);flex:0 0 auto}
.rol-tit{margin-top:13px;font-weight:300;font-size:clamp(28px,2.7vw,36px);line-height:1.06;
  letter-spacing:-.005em;color:var(--ink);text-wrap:balance}
.rol-tit b{font-weight:500}
.rol-sub{margin-top:11px;font-weight:500;font-size:14.5px;line-height:1.55;color:var(--ink-70);max-width:42ch}
.rol-campos{display:flex;flex-direction:column;gap:10px;margin-top:24px}
.rol-campo{width:100%;height:52px;padding:0 16px;border-radius:var(--r-12);border:1px solid var(--ink-16);
  background:var(--white);font:inherit;font-size:14.5px;color:var(--ink);
  transition:border-color var(--t-base) var(--e-standard),box-shadow var(--t-base) var(--e-standard)}
.rol-campo::placeholder{color:var(--ink-45)}
.rol-campo:focus{outline:none;border-color:var(--rotulo);box-shadow:0 0 0 3px rgb(173 127 102/.18)}
.rol-campo[aria-invalid="true"]{border-color:#B4453C}
.rol-erro{font-weight:500;font-size:12.5px;color:#B4453C;min-height:1em}
.rol-btn{width:100%;margin-top:12px}
.rol-btn[disabled]{opacity:.55;pointer-events:none}
.rol-prova{margin-top:14px;font-weight:500;font-size:12px;color:var(--ink-45);text-align:center}
.rol-legal{margin-top:16px;font-weight:500;font-size:11.5px;line-height:1.5;color:var(--ink-45)}
.rol-legal button{border:0;background:none;padding:0;font:inherit;color:var(--ink-70);cursor:pointer;
  text-decoration:underline;text-underline-offset:2px}

/* ---- resultado ---- */
.rol-res{display:none;flex-direction:column}
.rol[data-passo="fim"] .rol-form{display:none}
.rol[data-passo="fim"] .rol-res{display:flex}
.rol-premio{margin-top:10px;font-weight:300;font-size:clamp(42px,4.8vw,58px);line-height:1;
  letter-spacing:-.015em;color:var(--ink)}
.rol-cupom{display:flex;align-items:center;gap:10px;margin-top:20px;padding:15px 16px;
  border-radius:var(--r-12);background:#FBF5EF;border:1px dashed var(--nude-3)}
/* sem o background:none, a regra global de CODE pinta um retângulo nude dentro da
   caixa tracejada e o cupom fica com cara de campo desabilitado */
.rol-cupom code{flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:16px;
  letter-spacing:.08em;color:var(--ink);background:none;padding:0;border-radius:0}
.rol-copia{border:0;background:none;padding:6px 8px;cursor:pointer;font-weight:600;font-size:11px;
  letter-spacing:.12em;text-transform:uppercase;color:#8E6350;
  transition:color var(--t-base) var(--e-standard)}
.rol-copia:hover{color:var(--ink)}
.rol-copia[data-ok]{color:var(--cta-dark)}

/* ---- chamada da roleta ----
   Mora ao lado do "Ver no celular", no canto de baixo a esquerda, e copia o desenho
   dele de proposito: os dois sao controles da barra de revisao, entao leem como par.
   O deslocamento horizontal e calculado no JS, porque a largura do botao vizinho muda
   com a fonte, e um deslocamento fixo deixaria os dois grudados ou separados demais. */
.rol-chama{position:fixed;left:16px;bottom:16px;z-index:150;display:none;align-items:center;gap:9px;
  min-height:44px;padding:0 16px 0 12px;border:1px solid var(--ink-16);border-radius:var(--r-pill);
  background:var(--white);color:var(--ink);box-shadow:var(--sh-2);cursor:pointer;
  font-family:inherit;font-weight:600;font-size:12px;letter-spacing:.08em;text-transform:uppercase;
  transition:transform var(--t-base) var(--e-emph),box-shadow var(--t-base) var(--e-standard)}
.rol-chama[data-ver]{display:inline-flex}
.rol-chama:hover{transform:translateY(-2px);box-shadow:var(--sh-3)}
.rol-chama svg{width:20px;height:20px;display:block;transition:transform 900ms var(--e-emph)}
.rol-chama:hover svg{transform:rotate(180deg)}

@media(max-width:860px){
  .rol-chama{height:40px;right:14px;bottom:14px;padding:0 13px 0 9px;font-size:10.5px}
  .rol{padding:0;place-items:end stretch}
  .rol-cartao{grid-template-columns:1fr;border-radius:var(--r-28) var(--r-28) 0 0;max-height:94vh;
    transform:translateY(40px)}
  .rol-roda{padding:24px 20px 14px}
  .rol-svg{max-width:246px}
  .rol-txt{padding:26px 22px 30px}
  .rol-tit{margin-top:11px}
  .rol-campos{margin-top:18px}
}

/* Tela baixa: o popup inteiro tem que caber sem rolar, senão o botão de girar fica
   abaixo da dobra. Só encolhe, não esconde nada. */
@media(max-width:860px) and (max-height:820px){
  .rol-cartao{max-height:100dvh}
  .rol-roda{padding:14px 20px 8px}
  .rol-svg{max-width:172px}
  .rol-txt{padding:16px 22px 18px}
  .rol-tit{margin-top:7px;font-size:25px}
  .rol-sub{margin-top:7px;font-size:13.5px;line-height:1.45}
  .rol-campos{margin-top:13px;gap:8px}
  .rol-campo{height:46px}
  .rol-btn{margin-top:9px}
  .rol-legal{margin-top:10px;font-size:11px;line-height:1.4}
}
@media(prefers-reduced-motion:reduce){
  .rol-disco{transition-duration:900ms !important}
  .rol-ponta[data-tic]{animation:none}
  .rol-festa[data-vai] i{animation:none}
  .rol[data-passo="fim"] .rol-ganhou{animation:none}
}
/* ---------- prova em vídeo dentro da caixa de compra ----------
   Os cards são .reel de propósito: o visor em tela cheia já abre por um handler
   delegado que procura .reel no clique. Aqui só trocamos a roupa, com regras
   .pv .reel (0,2,0) que vencem as do reel grande (0,1,0). */
.pv{margin-top:20px;padding-top:18px;border-top:1px solid var(--ink-08)}
.pv-tit{font-weight:600;font-size:12.5px;letter-spacing:.01em;color:var(--ink-70)}
/* flex e nao grid: a linha ge tem 1 video e a ah tem 4, e com faixa de grade o card
   solitario esticaria pela caixa inteira */
.pv-pista{display:flex;gap:10px;margin-top:12px}
.pv .reel{position:relative;display:block;margin:0;width:auto;min-width:0;flex:0 1 96px;
  aspect-ratio:9/16;border-radius:var(--r-16);overflow:hidden;cursor:pointer;
  background:var(--nude-1-50);box-shadow:none;scroll-snap-align:none;
  transition:transform var(--t-base) var(--e-emph),box-shadow var(--t-base) var(--e-standard)}
.pv .reel:hover{transform:translateY(-3px);box-shadow:var(--sh-2)}
.pv .reel:focus-visible{outline:2px solid var(--nude-4);outline-offset:2px}
.pv .reel-caixa{position:absolute;inset:0;display:block;border-radius:0;transform:none}
.pv .reel-caixa>img,.pv .reel-vid{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;display:block}
/* o véu só embaixo: é onde mora a duração, e sem ele o número some em pôster claro */
.pv .reel::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(to top,rgb(28 28 28/.52) 0%,rgb(28 28 28/.14) 40%,transparent 68%)}
.pv-play{position:absolute;left:50%;top:50%;z-index:2;transform:translate(-50%,-50%);
  width:34px;height:34px;border-radius:50%;background:rgb(255 255 255/.92);
  display:grid;place-items:center;box-shadow:0 4px 14px rgb(28 28 28/.3);
  transition:transform var(--t-base) var(--e-emph)}
.pv .reel:hover .pv-play{transform:translate(-50%,-50%) scale(1.09)}
.pv-play svg{width:13px;height:13px;fill:var(--ink);margin-left:2px}
.pv-dur{position:absolute;left:8px;bottom:8px;z-index:2;padding:2px 7px;border-radius:var(--r-8);
  background:rgb(28 28 28/.68);color:var(--off-white);font-weight:600;font-size:10.5px;
  letter-spacing:.04em;font-variant-numeric:tabular-nums}
@media(max-width:860px){
  .pv-pista{overflow-x:auto;scrollbar-width:none;
    margin-inline:calc(var(--gutter) * -1);padding-inline:var(--gutter);
    scroll-snap-type:x proximity}
  .pv-pista::-webkit-scrollbar{display:none}
  .pv .reel{scroll-snap-align:start;flex:0 0 98px}
  .pv-play{width:30px;height:30px}
}

/* ---------- player de video ---------- */
.visor-palco{overflow:hidden}
.visor-palco>video{background:#14110F}
.vp-toque{position:absolute;inset:0;z-index:3;display:grid;place-items:center;
  padding:0;border:0;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
.vp-selo{width:66px;height:66px;border-radius:50%;display:grid;place-items:center;
  background:rgb(245 244 240/.92);box-shadow:0 8px 26px rgb(20 17 15/.34);
  opacity:0;transform:scale(.82);transition:opacity 220ms ease,transform 260ms cubic-bezier(.16,1,.3,1)}
.visor[data-estado="pausado"] .vp-selo,.visor[data-pulso] .vp-selo{opacity:1;transform:scale(1)}
.vp-selo::before{content:"";width:0;height:0;margin-left:5px;
  border-left:19px solid #14110F;border-top:12px solid transparent;border-bottom:12px solid transparent}
.visor[data-estado="tocando"] .vp-selo::before{width:16px;height:19px;margin:0;border:0;
  background:linear-gradient(90deg,#14110F 0 5px,transparent 5px 11px,#14110F 11px 16px)}
.vp-carga{position:absolute;left:50%;top:50%;z-index:4;width:34px;height:34px;margin:-17px 0 0 -17px;
  border:2px solid rgb(245 244 240/.28);border-top-color:rgb(245 244 240/.95);border-radius:50%;
  display:none;animation:vp-gira 760ms linear infinite}
.visor[data-estado="carregando"] .vp-carga{display:block}
@keyframes vp-gira{to{transform:rotate(360deg)}}
.visor-quem{z-index:5;bottom:66px;padding:18px 18px 10px;pointer-events:none}
.vp-barra{position:absolute;left:0;right:0;bottom:0;z-index:6;padding:0 14px 12px;
  background:linear-gradient(to top,rgb(20 17 15/.78),rgb(20 17 15/.42) 56%,transparent)}
.vp-linha{position:relative;height:26px;display:flex;align-items:center;cursor:pointer;touch-action:none}
.vp-linha:focus-visible{outline:2px solid rgb(245 244 240/.9);outline-offset:2px;border-radius:6px}
.vp-trilho,.vp-buf,.vp-pro{position:absolute;left:0;height:3px;border-radius:3px;pointer-events:none}
.vp-trilho{right:0;background:rgb(245 244 240/.26)}
.vp-buf{width:0;background:rgb(245 244 240/.42)}
.vp-pro{width:0;background:var(--nude-1,#EFE1D2)}
.vp-bolha{position:absolute;left:0;width:11px;height:11px;margin-left:-5.5px;border-radius:50%;
  background:var(--nude-1,#EFE1D2);box-shadow:0 2px 8px rgb(20 17 15/.5);pointer-events:none;
  transform:scale(.001);transition:transform 160ms ease}
.vp-linha:hover .vp-bolha,.vp-linha:focus-visible .vp-bolha,.visor[data-arrastando] .vp-bolha{transform:scale(1)}
.vp-pe{display:flex;align-items:center;gap:10px;height:34px}
.vp-bt{width:34px;height:34px;flex:0 0 34px;padding:0;border:0;border-radius:50%;cursor:pointer;
  background:rgb(245 244 240/.14);display:grid;place-items:center;transition:background 180ms ease}
.vp-bt:hover{background:rgb(245 244 240/.26)}
.vp-bt:focus-visible{outline:2px solid rgb(245 244 240/.9);outline-offset:2px}
.vp-bt::before{content:"";display:block}
#vp-play::before{width:0;height:0;margin-left:3px;border-left:11px solid #F5F4F0;
  border-top:7px solid transparent;border-bottom:7px solid transparent}
.visor[data-estado="tocando"] #vp-play::before{width:10px;height:12px;margin:0;border:0;
  background:linear-gradient(90deg,#F5F4F0 0 3px,transparent 3px 7px,#F5F4F0 7px 10px)}
#vp-som::before{width:15px;height:13px;background:#F5F4F0;
  clip-path:polygon(0 33%,26% 33%,55% 4%,55% 96%,26% 67%,0 67%)}
.visor[data-mudo] #vp-som{background:rgb(245 244 240/.3)}
.visor[data-mudo] #vp-som::before{opacity:.55}
.vp-tempo{flex:1 1 auto;font-size:12px;letter-spacing:.02em;color:rgb(245 244 240/.88);
  font-variant-numeric:tabular-nums}
.vp-aviso{position:absolute;left:50%;top:14px;z-index:7;transform:translateX(-50%);
  padding:7px 14px;border-radius:999px;background:rgb(20 17 15/.72);color:#F5F4F0;
  font-size:12px;letter-spacing:.02em;white-space:nowrap;border:0;cursor:pointer}
/* a navegacao mora DENTRO da barra: solta nas laterais ela cobria o video no
   celular e caia por cima da barra flutuante da pagina */
.vp-nav[hidden]{display:none}
.vp-nav svg{width:19px;height:19px;fill:none;stroke:#F5F4F0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.vp-nav:disabled{opacity:.34;cursor:default}
.vp-nav:disabled:hover{background:rgb(245 244 240/.14)}
@media(max-width:860px){
  /* no celular a navegacao vai para baixo do palco: nas laterais ela cobriria o video */
  .visor-fecha{top:max(12px,env(safe-area-inset-top))}
  .vp-barra{padding-bottom:10px}
  .visor-quem{bottom:62px;font-size:13px}
}
@media(prefers-reduced-motion:reduce){
  .vp-selo,.vp-bolha{transition:none}
  .vp-carga{animation-duration:2s}
}

/* o carrossel nao pode alargar a coluna */
/* Medido em 390px: o documento saia com 462px, 72 a mais que a tela, e o Chromium
   respondia deitando a janela em 462 e encolhendo a pagina inteira. A causa e a regra
   de que item de grid e de flex nasce com min-width:auto e se recusa a ficar menor que
   o conteudo: a pista de videos tem 4 cards de 98px mais os vaos, da 422, e empurrava
   .buy, .hero-pdp e o documento junto. overflow-x:auto na pista sozinho nao resolve,
   porque sem min-width:0 a caixa nunca chega a ser menor que o conteudo dela. */
.hero-pdp,.buy,.pv{min-width:0}
.pv-pista{min-width:0}

/* ====== padrao de celular ====== */
@media(max-width:860px){

  /* 1. sem orfa: a ultima linha nunca fica com uma palavra sozinha */
  p,li,dd,figcaption,.corpo,.corpo-sm,.t-card,.nt-dose,.pe-legal,.pe-marca p{text-wrap:pretty}
  h1,h2,h3,h4,.t-dobra,.t-h1,.t-benef,.t-card,.atributo{text-wrap:balance}

  /* 2. cabeca de dobra centralizada */
  .head,.head>*,.t-dobra,.t-h1,.t-benef{text-align:center}
  .head{align-items:center}
  .head .corpo,.head .corpo-sm{margin-inline:auto}
  /* leitura corrida continua a esquerda */
  .artigo h2,.artigo h3,.art-corpo h2,.art-corpo h3,.doc h2,.doc h3,
  .doc h1,.doc .t-dobra,details h2,details h3,summary,.faq h2,
  .pe h3,.pe p,.pe li,.pe-legal{text-align:left}

  /* 3. alvo de toque de 44px */
  .pe ul li{display:flex}
  .pe ul li a,.pe-fala a,.art-linha-link,.link-seta,.of-linha,.rv-chip,
  .sel-linha button,select#rv-ordem{min-height:44px;display:inline-flex;align-items:center}
  /* link dentro de frase: area invisivel, sem mexer no texto */
  .crumb a,.corpo a,.corpo-sm a,.nt-nota a{position:relative}
  .crumb a::after,.corpo a::after,.corpo-sm a::after,.nt-nota a::after{
    content:"";position:absolute;left:-4px;right:-4px;top:50%;height:44px;
    transform:translateY(-50%);pointer-events:auto}

  /* 4. piso de 11,5px */
  .pe-selos span{font-size:11.5px}
  .pe h3{font-size:12px;letter-spacing:.1em}
  .pill-eyebrow,.selo-fase,.selo-gal,.selo,.rot,.atributo{font-size:11.5px}
  .pbk-olho,.rodape-nota,.nutri-pe,.dq-nota,.pe-pag em{font-size:12px}

  /* 5. nada cortado */
  /* o resumo da oferta era cortado na 2a linha; no celular o card e largo e cabe */
  .card .corpo-sm{display:block;-webkit-line-clamp:none;overflow:visible}
  /* a faixa tinha proporcao fixa 3/1 e o texto passava 25px dela */
  .grow .box--claro{aspect-ratio:auto;min-height:104px;padding-block:20px}
  /* o card de nutriente passava 12px da caixa 4/5 quando o nome quebra em 2 linhas */
  .nt{aspect-ratio:3/4}
  .nt-pe{padding:0 14px 16px}
}
@media(max-width:430px){
  /* em tela estreita o nome do nutriente ainda encostava no topo do rodape do card */
  .nt{aspect-ratio:5/7}
}

/* ====== celular, segunda rodada ====== */
@media(max-width:860px){
  /* especificidade: as regras de origem sao mais fortes que as genericas */
  .res .nota-brown .rodape-nota{font-size:12px}
  .galeria .selo-gal,.gal-palco .selo-gal{font-size:11.5px}
  .rv-quem span,.rv-verif{font-size:11.5px}
  .nutri-pe,.dq-nota,.pbk-olho{font-size:12px}

  /* a faixa cortava por causa do zoom de rolagem, nao da proporcao */
  .grow .box--claro .txt{transform:none;opacity:1;will-change:auto}

  /* alvo de toque que faltou */
  .reel-chip>span{padding:8px 8px 8px 9px}
  .reel-chip a{min-height:40px}
  .seg button,.seg [role="tab"]{min-height:44px}
  .gal-mini{min-height:44px}

  /* orfa de paragrafo curto: balance distribui as linhas todas */
  .head .corpo,.head .corpo-sm,.card .corpo-sm,.t-card,.dq-p,.faq-p,
  summary,details>summary,.q-tit,.corpo-sm{text-wrap:balance}
  /* corpo longo de artigo segue em pretty, que e o certo para muitas linhas */
  .art-corpo p,.artigo p,.doc p{text-wrap:pretty}
}

/* ====== celular, terceira rodada ====== */
@media(max-width:860px){
  /* proporcao original do card de nutriente: o corte era o estado pre-animacao */
  .nt{aspect-ratio:4/5}
  .nt-pe{padding:0 16px 18px}

  /* o titulo da faixa cabe em vez de ser cortado */
  .grow .box--claro .t-benef{font-size:clamp(19px,6.2vw,26px);line-height:1.1}

  /* orfa: balance resolve ate 6 linhas, que e o caso de todos os que sobraram */
  .art-corpo p,.art-corpo li,.doc p,.doc li,.acc-trigger .nome,
  .nome,.sub,.cap,.cartao-ic span,.tri span,strong{text-wrap:balance}

  /* a outra migalha de pao */
  .migalha a{position:relative}
  .migalha a::after{content:"";position:absolute;left:-4px;right:-4px;top:50%;
    height:44px;transform:translateY(-50%)}

  /* piso de fonte que faltou especificidade */
  .chips span,.linhas-404 .rot{font-size:11.5px}
}

/* ====== celular, quarta rodada ====== */
@media(max-width:860px){
  /* text-wrap so vale em caixa de bloco */
  .opcao .sub{display:block}
  .cartao-ic span:not(.ic),.opcao .sub,.fx-i span.cap,.dq-nota,.dq-txt p,
  .acc-trigger .nome,.rv-quem span,.tri span,.cap,.nome,.sub{text-wrap:balance!important}
}

/* ====== mv-pdp · celular da PDP ======
   A foto dos passos e quadrada, 760x760, e a moldura era 16:9: 44% da arte ficava
   fora. No celular a moldura passa a ser quadrada e a foto aparece inteira. */
@media(max-width:860px){
  .bento-cel--como .foto-bloco{aspect-ratio:1/1}
}

/* ====== pe-mob · o rodape no celular ======
   Em uma coluna o rodape virava quatro blocos do mesmo peso, um embaixo do outro:
   a marca, dois menus de cinco linhas e o contato, tudo alinhado a esquerda, quase
   900px de altura para informacao que cabe em metade disso.
   Aqui ele volta a ter forma. A marca abre centralizada e ocupa a largura inteira.
   Os dois menus ficam LADO A LADO, e cabem: o item mais longo tem 21 caracteres.
   O contato fecha a largura toda, centralizado, porque e o que a pessoa procura
   quando desce ate aqui. A barra legal empilha centralizada com as bandeiras.
   Os alvos de toque de 44px continuam valendo: o que encolhe e o espaco entre
   blocos, nunca a area clicavel. */
@media(max-width:560px){
  .pe{padding-top:44px}
  .pe-grade{grid-template-columns:1fr 1fr;gap:28px 16px}
  .pe-marca{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;
    text-align:center}
  .pe-marca p{margin-inline:auto;max-width:38ch}
  .pe-selos{width:100%;max-width:340px;margin-inline:auto}
  .pe-grade > div:nth-child(4){grid-column:1 / -1;text-align:center}
  .pe-grade > div:nth-child(4) .pe-fala{align-items:center}
  .pe h3{margin-bottom:12px}
  .pe ul{gap:4px}
  .pe-barra{flex-direction:column;align-items:center;text-align:center;gap:16px;
    margin-top:34px}
  .pe-legal{text-align:center}
  .pe-pag{justify-content:center;gap:7px}
  .pe-pag img{height:21px}
}

/* ====== pe-mob2 · o rodape, depois de medir ======
   O centralizado nao pegava: `.pe p{text-align:left}` da rodada de celular tem
   especificidade (0,2,0) e ganhava de `.pe-legal` (0,1,0). Aqui o seletor carrega
   o ancestral e passa a ganhar, sem !important.
   O resto e altura: os selos viram uma fileira so que quebra sozinha, o espaco entre
   os links some (o alvo de toque de 44px continua, e ele que da o respiro) e a barra
   legal encosta menos. Medido em 390px: 894px -> 742px, com a mesma informacao. */
@media(max-width:560px){
  .pe .pe-barra .pe-legal,.pe .pe-marca p{text-align:center}
  .pe-marca p{font-size:12.5px;max-width:34ch}
  .pe-selos{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;
    max-width:none;margin-top:16px}
  .pe-selos span{padding:6px 10px;font-size:11.5px}
  .pe ul{gap:0}
  .pe-fala{gap:2px}
  .pe-grade{gap:24px 16px}
  .pe-barra{margin-top:26px;padding:18px 0 22px}
}

/* ====== pdp-mob2 · a PDP no celular ====== */
@media(max-width:860px){
  /* 1. SELETOR DAS TRES LINHAS. Era um scroller horizontal com pilulas de uma linha
        so: a terceira ficava cortada na borda da tela, e card cortado le como
        defeito, nao como "arraste". Vira grade de tres colunas iguais e o rotulo
        pode quebrar em duas linhas. Sem rolagem lateral e sem nada cortado. */
  .seg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px;
    width:100%;max-width:none;overflow:visible}
  .seg button{padding:7px 6px;height:auto;min-height:44px;white-space:normal;
    font-size:10.5px;letter-spacing:.03em;line-height:1.2;text-align:center;
    display:flex;align-items:center;justify-content:center}

  /* 2. O NOME DO PRODUTO estava centralizado enquanto nota, preco, descricao e
        chips ficavam a esquerda. A regra geral de celular centraliza CABECA DE
        DOBRA, e o bloco de compra nao e cabeca de dobra: e ficha de produto, e
        ficha se le alinhada a esquerda, como todo o resto dela ja estava. */
  .buy .t-h1,.buy .head,.buy .head>*{text-align:left}

  /* 3. "O QUE A NHV FAZ POR VOCE" em 2x2, que e como a loja antiga sempre fez.
        Em uma coluna a dobra ia a 1794px e virava rolagem sem fim. */
  .faz{grid-template-columns:repeat(2,1fr);gap:14px}

  /* 4. ANTES E DEPOIS lado a lado, menores. Empilhados, o olho compara de memoria,
        e comparacao de memoria e justamente o que a dobra existe para evitar. */
  .par-ad{grid-template-columns:1fr 1fr;gap:10px}

  /* 5. OS VIDEOS. O card tinha 62vw e o seguinte entrava na tela pela metade,
        cortado na borda: as bordas arredondadas sumiam de um lado e a peca lia
        como quebrada. Uma peca por tela, inteira, com os quatro cantos. A escala
        do card ativo vai a 1 porque 1,06 sobre a largura cheia estouraria a tela. */
  .reels{--reel-w:calc(100vw - 40px);--reel-scale:1}
}

@media(max-width:720px){
  /* 6. O COMPARATIVO VOLTA A SER TABELA.
        Empilhado em cartoes ele perdia exatamente o que a dobra faz, que e comparar
        lado a lado, e ainda subia para 1572px de altura. A loja antiga resolvia o
        mesmo problema COMPACTANDO, nao desmontando: coluna estreita, icone menor,
        corpo de letra menor. E o que entra aqui.
        A frase de cada celula ("Foco em biotina", "Poucos por porcao") nao cabe em
        75px, entao ela sai da tela mas FICA no DOM: quem le por leitor de tela
        continua recebendo o motivo, e quem enxerga tem a bolinha mais a legenda,
        que ja existia embaixo da tabela. */
  /* a coluna do rotulo fica larga o bastante para TODO rotulo caber em uma linha:
     o mais longo tem 24 caracteres ("Acucar, gluten e lactose") e a 11,5px ocupa
     cerca de 139px. As tres colunas de resposta so precisam caber uma bolinha e um
     nome de cinco letras, entao 62px basta em cada. */
  .cmp{--cmp-rot:162px}
  .cmp-grade{display:grid;grid-template-columns:var(--cmp-rot) repeat(3,minmax(0,1fr));gap:0}
  .cmp-grade::before{display:block;left:calc(var(--cmp-rot) + 3px);
    width:calc((100% - var(--cmp-rot)) / 3 - 6px)}
  .cmp-cab{display:grid}
  .cmp-linha{display:grid;border:0;border-top:1px solid var(--ink-08);
    background:none;border-radius:0;padding:0}
  .cmp-rot{padding:12px 8px 12px 0;font-size:11.5px;gap:6px;font-weight:500;
    color:var(--ink-70);align-items:center}
  /* o icone sai e a bolacha que o segurava vai junto, senao fica um circulo
     vazio ocupando 24px da coluna mais apertada da tabela */
  .cmp-rot .cmp-chip{display:none}
  .cmp-cel{padding:12px 4px;justify-content:center;gap:0;border-top:0}
  .cmp-cel::before{content:none}
  .cmp-txt{position:absolute;width:1px;height:1px;padding:0;margin:-1px;
    overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
  .cmp-cel--nhv{background:none;border-radius:0;padding:12px 4px;margin:0}
  .cmp-cab .cmp-cel{padding:0 2px 12px;align-items:flex-end;justify-content:center}
  .cmp-cel--cabnhv{align-items:center;padding-top:14px;padding-bottom:12px}
  .cmp-marca{font-size:13px;letter-spacing:.1em}
  .cmp-sub{font-size:9px;letter-spacing:.02em;line-height:1.2;text-align:center}
  .cmp-forma{width:22px;height:22px}
  .cmp-nome{font-size:10px;text-align:center}
  .cmp-bola{width:11px;height:11px;flex-basis:11px}
  .cmp-check{width:16px;height:16px;flex-basis:16px}
}

/* ====== mv-esq · no celular a dobra de conteúdo alinha à esquerda ======
   Cabeça centralizada com corpo à esquerda é o que mais fazia a página ler
   desalinhada. Aqui tudo o que é dobra de conteúdo vai para a esquerda.
   Continua centralizado, de propósito, o texto que mora SOBRE arte de sangria:
   banner do topo, a faixa "Não é milagre", a dobra do Grupo VIP e a faixa do
   protocolo. Nesses o centro não é enfeite, é o único lugar onde o texto cabe sem
   cair em cima do assunto da foto. */
@media(max-width:860px){
  .head,.head>*,.head--centro,.head--centro>*,
  .dobra .t-dobra,.dobra .t-h1,.dobra .atributo,.dobra .pill-eyebrow{text-align:left}
  .head,.head--centro{align-items:flex-start}
  .head .corpo,.head .corpo-sm,.head--centro .corpo,.head--centro .corpo-sm{margin-inline:0}

  /* as exceções, que são as dobras com texto sobre arte */
  .rs-hero .rs-dentro,.rs-hero .rs-dentro>*,
  .sb-hero .sb-dentro,.sb-hero .sb-dentro>*,
  .grow .box--claro .txt,.grow .box--claro .t-benef,
  .vip .vip-txt,.vip .vip-txt>*,
  .faixa .dentro,.faixa .dentro>*{text-align:center}
  .rs-hero .rs-dentro,.sb-hero .sb-dentro,.vip .vip-txt,.faixa .dentro{align-items:center}
}

/* ====== mv-ad · a dobra do antes e depois, igual nas duas páginas ======
   Ela existe na PDP e em Resultados com as mesmas classes, mas só a da PDP tinha
   ganhado o lado a lado no celular. Agora as duas são a mesma dobra.
   E ela não tinha nem revelação nem hover, enquanto card, capa de artigo e reel
   já tinham: entra o mesmo par que o resto da loja usa, subir 6px e a foto dar um
   zoom lento, com a transição desligada em prefers-reduced-motion. */
.par-ad .ad{transition:transform .3s cubic-bezier(.2,.7,.3,1),box-shadow .3s cubic-bezier(.2,.7,.3,1)}
.par-ad .ad img{transition:transform .7s cubic-bezier(.2,.7,.3,1)}
@media(hover:hover){
  .par-ad .ad:hover{transform:translateY(-6px);box-shadow:0 18px 36px rgb(28 28 28/.11)}
  .par-ad .ad:hover img{transform:scale(1.05)}
}
.par-ad .ad:focus-within{transform:translateY(-6px);box-shadow:0 18px 36px rgb(28 28 28/.11)}
@media(prefers-reduced-motion:reduce){
  .par-ad .ad,.par-ad .ad img{transition:none}
  .par-ad .ad:hover{transform:none}
  .par-ad .ad:hover img{transform:none}
}
@media(max-width:860px){
  /* lado a lado, menores: separados, a comparação passa a ser de memória, que é
     justamente o que esta dobra existe para evitar */
  .par-ad{grid-template-columns:1fr 1fr;gap:10px}
}

/* ====== mv-cmp2 · o cabeçalho do comparativo no celular ======
   O erro: `.cmp-cel--cab` é flex em COLUNA, então align-items governa o eixo
   HORIZONTAL. Eu tinha posto flex-end achando que era o vertical, e isso empurrou
   chip e nome para a direita de cada coluna. O da NHV saía do painel caramelo, que
   é desenhado pelo ::before da grade e não acompanha conteúdo empurrado.
   Aqui o cabeçalho volta a ser uma pilha centrada dentro da própria coluna, e o
   nome da coluna cabe em uma linha só. */
.cmp-nome-curto{display:none}
@media(max-width:720px){
  .cmp-nome-longo{display:none}
  .cmp-nome-curto{display:inline}
  .cmp-cab .cmp-cel,.cmp-cel--cab,.cmp-cel--cabnhv{
    flex-direction:column;align-items:center;justify-content:flex-end;
    gap:6px;padding:14px 4px 12px}
  .cmp-cel--cabnhv{padding:14px 4px 12px}
  .cmp-chip--forma{display:grid;place-items:center}
  .cmp-forma{width:20px;height:20px}
  .cmp-marca{font-size:13px;letter-spacing:.08em;line-height:1}
  .cmp-sub{display:none}
  .cmp-nome{font-size:10.5px;line-height:1.1;text-align:center;letter-spacing:.03em;
    white-space:nowrap}
}

/* ====== mv-esq2 · a margem auto que segurava o olho no centro ======
   Em flexbox, margem auto GANHA de align-items: um item com margin-inline:auto fica
   centrado mesmo num contêiner align-items:flex-start. A rodada antiga de celular
   tinha posto `.head>*{margin-left:auto;margin-right:auto}` para centralizar a cabeça,
   e era essa margem, e não o alinhamento, que continuava puxando o rótulo para o meio.
   Medido: align-items computava flex-start e o elemento vinha com 85px de margem de
   cada lado. */
@media(max-width:860px){
  .head>*,.head--centro>*{margin-left:0;margin-right:0}
  .cap-equilibrio{margin-left:0;margin-right:0}
  /* as dobras sobre arte continuam centradas, e lá a margem auto é o que centra */
  .rs-hero .rs-dentro>*,.sb-hero .sb-dentro>*,.vip .vip-txt>*,.faixa .dentro>*{
    margin-left:auto;margin-right:auto}
}

/* ====== dw-folha · a gaveta no celular ======
   Ela era um cartão flutuante preso no TOPO, com 12px de folga dos lados e a altura
   acompanhando o conteúdo. Com um item só ela ficava curta e boiando na parte de
   cima da tela, longe do polegar, e o botão de finalizar ia junto.
   Vira folha de baixo: encostada no rodapé, largura inteira, cantos arredondados só
   em cima. É onde a mão está e é onde o botão principal precisa estar.
   A entrada também encurtou: 380ms em vez de 520ms, e o véu 220ms em vez de 420ms.
   Meio segundo para uma gaveta abrir é tempo demais quando o gesto é tocar e olhar. */
@media(max-width:640px){
  .drawer{transition:opacity 220ms ease-in-out,visibility 220ms}
  .drawer aside{top:auto;bottom:0;left:0;right:0;width:auto;
    max-height:min(86vh,calc(100vh - 56px));
    border-radius:var(--r-20) var(--r-20) 0 0;
    transform:translateY(100%);
    transition:transform 380ms var(--e-expo)}
  .drawer.open aside{transform:translateY(0)}
  /* alça de folha: dica de que dá para arrastar para baixo, e separa do conteúdo */
  .drawer aside::before{content:"";position:absolute;left:50%;top:8px;z-index:3;
    width:38px;height:4px;margin-left:-19px;border-radius:4px;background:var(--ink-16)}
  .dw-top{padding-top:20px}
}
/* a linha que está saindo não some de uma vez: encolhe, e nesse meio tempo a
   resposta da loja chega e confirma. Sem isso o item pisca fora e volta. */
.dw-item{transition:opacity 180ms ease,transform 180ms ease}
.dw-item[data-saindo]{opacity:.35;pointer-events:none}
.dw-item[data-mexendo] .qtd span{opacity:.55}
.qtd button{touch-action:manipulation}
@media(prefers-reduced-motion:reduce){.dw-item{transition:none}}

/* ====== hdr-topo · transparente em cima, branco ao rolar ======
   No topo a pílula não tem fundo, nem borda, nem sombra: o header flutua sobre a
   primeira dobra. Ao passar de 40px, o `is-scrolled` já existente traz o branco, a
   borda e a sombra na mesma transição.
   O texto continua ink porque a faixa do header é clara em 16 das 17 páginas
   (brilho medido entre 206 e 244). A exceção é o Sobre, tratada logo abaixo. */
html:not(.is-scrolled) .hdr .pill{background:transparent;border-color:transparent;box-shadow:none}

/* ESFUMADO ATRÁS DO HEADER TRANSPARENTE.
   Sem ele o texto do header depende do pixel que calhar de estar embaixo, e foto tem
   mancha. Medido: no Sobre o creme caía para 2,5:1 nas mechas claras, e no celular de
   Resultados os ícones caíam para 3,4:1 num ponto escuro da arte. A média da faixa
   dizia que estava tudo bem; a mancha é que reprovava.
   É uma rampa curta na cor do chão da página, não uma barra: ela some antes de virar
   faixa visível, e desaparece junto com o resto quando a pílula branca entra. */
html:not(.is-scrolled) .hdr::before{content:"";position:absolute;inset:-10px 0 -30px;
  z-index:-1;pointer-events:none;
  background:linear-gradient(to bottom,rgb(245 244 240/.80),rgb(245 244 240/.42) 58%,transparent)}
html:not(.is-scrolled) .hdr[data-topo="escuro"]::before{
  background:linear-gradient(to bottom,rgb(28 28 28/.62),rgb(28 28 28/.30) 58%,transparent)}

/* Página de fundo escuro: enquanto o header está transparente, o texto dele vira
   creme. Ao rolar, a pílula branca entra e o ink volta sozinho, porque toda esta
   regra depende do :not(.is-scrolled). */
html:not(.is-scrolled) .hdr[data-topo="escuro"] .logo,
html:not(.is-scrolled) .hdr[data-topo="escuro"] nav a,
html:not(.is-scrolled) .hdr[data-topo="escuro"] .nav-drop-btn,
html:not(.is-scrolled) .hdr[data-topo="escuro"] .rastrear,
html:not(.is-scrolled) .hdr[data-topo="escuro"] .icon{color:var(--off-white)}
html:not(.is-scrolled) .hdr[data-topo="escuro"] nav a{color:rgb(245 244 240/.86)}
html:not(.is-scrolled) .hdr[data-topo="escuro"] nav a:hover{color:var(--off-white)}
/* o sublinhado do menu e a bolha da sacola acompanham */
html:not(.is-scrolled) .hdr[data-topo="escuro"] nav a::after{background:var(--off-white)}

/* Sem transição de cor no texto seria um salto; com ela o header parece uma peça só. */
.hdr .logo,.hdr .icon,.hdr .rastrear,.hdr .nav-drop-btn{
  transition:color var(--t-chrome) var(--e-standard)}

@media(prefers-reduced-motion:reduce){
  .hdr .pill,.hdr .logo,.hdr .icon,.hdr .rastrear{transition:none}
}

/* ====== tl-palco · a linha do tempo desenhada pela rolagem ======
   O palco dá o percurso, a dobra fica presa dentro dele, e o progresso vem da
   posição do palco. Reversível por construção: subir desfaz. */
.tl-palco{position:relative}
/* o topo e calculado pelo JS: a folga da tela dividida por dois, para a dobra parar
   CENTRADA em vez de colada no alto com meia tela vazia embaixo. O valor do calc
   aqui e so o piso, usado ate a primeira medida. */
.tl-fixo{position:sticky;top:var(--tl-top, calc(var(--header-h) + 18px))}

/* enquanto o palco não está marcado pelo JS, nada disso vale e a dobra é normal:
   conteúdo escondido por script que não rodou é conteúdo perdido */
/* O pin so vale quando a dobra CABE na tela. Sticky nao segura elemento mais alto que
   a janela: ele gruda e depois escorrega, e o resultado parece engasgo. Quem decide e
   a medida, feita pelo JS, e nao a largura da tela. */
.tl-palco[data-anima="preso"]{height:calc(100vh + 220vh)}
.tl-palco[data-anima="solto"]{height:auto}
.tl-palco[data-anima="solto"] .tl-fixo{position:static}
.tl-palco[data-anima] .fase{
  opacity:calc(0.12 + var(--f, 1) * 0.88);
  transform:translateY(calc((1 - var(--f, 1)) * 16px));
  transition:opacity 120ms linear,transform 120ms linear}
/* a lista de sinais de cada fase entra depois do número, não junto: primeiro a marca
   do tempo, depois o que muda nele */
.tl-palco[data-anima] .fase ul{
  opacity:var(--fl, 1);
  transform:translateY(calc((1 - var(--fl, 1)) * 10px));
  transition:opacity 140ms linear,transform 140ms linear}

@media(max-width:860px){
  .tl-palco[data-anima="preso"]{height:calc(100vh + 160vh)}
  .tl-fixo{top:calc(var(--header-h) + 10px)}
}

/* sem pin, sem percurso e sem revelação: a dobra volta a ser uma dobra comum */
@media(prefers-reduced-motion:reduce){
  .tl-palco[data-anima]{height:auto}
  .tl-fixo{position:relative;top:auto}
  .tl-palco[data-anima] .fase,.tl-palco[data-anima] .fase ul{
    opacity:1;transform:none;transition:none}
}

/* dentro do bloco preso a cabeca respira menos: 34px de margem fariam a dobra
   passar da tela e derrubar o pin para o modo solto sem necessidade */
.tl-fixo .head{margin-bottom:22px}
@media(max-width:860px){.tl-fixo .head{margin-bottom:16px}}

/* consentimento da roleta (scripts/_roleta-lgpd.cjs) */
.rol-lgpd{margin-top:10px;font-weight:500;font-size:11.5px;line-height:1.5;color:var(--ink-70);
  text-align:center;text-wrap:balance}
.rol-lgpd + .rol-prova{margin-top:8px}

/* rodape-esquerda (scripts/_rodape-esquerda.cjs): no celular, tudo na margem esquerda */
@media(max-width:560px){
  .pe .pe-marca{align-items:flex-start;text-align:left}
  .pe .pe-marca p{margin-inline:0}
  /* mesma especificidade da regra que centralizava (0,3,0 e 0,2,1), e vem depois */
  .pe .pe-barra .pe-legal,.pe .pe-marca p{text-align:left}
  .pe .pe-selos{margin-inline:0;justify-content:flex-start}
  .pe .pe-grade > div:nth-child(4){text-align:left}
  .pe .pe-grade > div:nth-child(4) .pe-fala{align-items:flex-start}
  .pe .pe-barra{align-items:flex-start;text-align:left}
  .pe .pe-legal{text-align:left}
  .pe .pe-pag{justify-content:flex-start}
}

/* roleta com nome, WhatsApp e e-mail (scripts/_lead-tres-campos.cjs):
   nome e WhatsApp dividem a linha, então a janela não cresce */
.rol-campos{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.rol-campos #rol-email,.rol-campos .rol-erro{grid-column:1 / -1}
@media(max-width:340px){ .rol-campos{grid-template-columns:1fr} }

/* rodape-emenda (scripts/_rodape-emenda.cjs): o rodapé cobre a emenda de subpixel */
.pe{position:relative;margin-top:-1px}

/* brindes-pdp (scripts/_brindes-pdp.cjs) */
.passo .brinde-nota{margin:4px 0 10px;color:var(--ink-70)}
.passo .inclui + .brinde-nota{margin:10px 0 0}

/* nomes-produtos (scripts/_nomes-produtos.cjs) */
.dw-item .kit-extra{margin:3px 0 0}
.dw-cross .pot{font-weight:500;font-size:11.5px;line-height:1.3;color:var(--ink-70);margin-top:-4px}
.dw-cross .kit-extra{margin:-4px 0 0;font-size:10.5px;letter-spacing:.02em;line-height:1.3}
.br-txt small.br-brinde{color:var(--rotulo);font-weight:600}
.reel-chip .precos{min-width:0;overflow:hidden}
.reel-chip .chip-brinde{font-style:normal;font-weight:600;font-size:11px;color:var(--rotulo);
  min-width:0;overflow:hidden;text-overflow:ellipsis}
/* barra de frete: com item na gaveta, "você ganhou"; vazia, o convite. Sem :has(),
   fica só o "você ganhou". */
#carrinho .fr-convite{display:none}
#carrinho:not(:has(.dw-item)) .fr-ganhou{display:none}
#carrinho:not(:has(.dw-item)) .fr-convite{display:inline}

/* nomes-produtos-2 (scripts/_nomes-produtos.cjs) */
.reel-chip .nome,.reels--roda .reel .reel-chip .nome{white-space:normal!important;text-wrap:wrap!important;
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.reel-chip .precos{flex-wrap:wrap;column-gap:8px;row-gap:0}
.reel-chip .precos strong{white-space:nowrap}
.reel-chip .chip-brinde{white-space:nowrap;line-height:1.35}
.br-txt b{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}

/* nomes-produtos-3 (scripts/_nomes-produtos.cjs) */
.reel-chip .chip-brinde{white-space:normal;overflow:visible;text-overflow:clip}
@media(max-width:560px){.br-fim{flex-direction:column;align-items:flex-end;gap:6px}}

/* nomes-produtos-4 (scripts/_nomes-produtos.cjs) */
@media(max-width:560px){.reels--roda .reel .reel-chip .thumb{display:none}}

/* faq-completo-pdp (scripts/_faq-completo.cjs) */
.faq-q{margin:0;font:inherit;letter-spacing:normal;text-transform:none}
.acc-panel .inner > :last-child{margin-bottom:0}
.faq-ul{margin:0 0 10px;padding-left:20px;list-style:disc;display:flex;flex-direction:column;gap:6px}
.acc-panel .inner a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--rotulo);
  text-decoration-thickness:1.5px;text-underline-offset:3px}
.acc-panel .inner a:hover{text-decoration-color:var(--ink)}
#faq .head{margin-bottom:18px}
/* [data-anim="14"] tem padding-left:24px de outra dobra; aqui as perguntas alinham com o título */
#faq .faq-pdp[data-anim]{padding-left:0}
#faq .faq-todas{color:var(--ink);text-decoration:underline;text-decoration-color:var(--rotulo);text-underline-offset:3px;white-space:nowrap}
#faq [data-so]{display:none}
#faq[data-linha="ah"] [data-so~="ah"],#faq[data-linha="ge"] [data-so~="ge"],#faq[data-linha="ma"] [data-so~="ma"]{display:block}
/* /faq-completo-pdp */

/* carrinho-instantaneo (scripts/_carrinho-instantaneo.cjs): a linha que ainda espera a loja */
.dw-item[data-provisoria] .qtd button,.dw-item[data-provisoria] .tirar{opacity:.35}
.dw-item[data-provisoria] .preco{opacity:.6}

/* toque-resposta (scripts/_toque-resposta.cjs): a tela responde no instante do toque */
.btn[data-press],button[data-press],.opcao[data-press],.acc-trigger[data-press],
.icon[data-press],.seg button[data-press],.chip[data-press],[role="button"][data-press]{
  transition-duration:70ms}
.btn[data-press]{transform:translateY(1px) scale(.985);filter:brightness(.9);box-shadow:var(--sh-1)}
.icon[data-press],.seg button[data-press],.chip[data-press]{transform:scale(.92);filter:brightness(.9)}
.acc-trigger[data-press],.opcao[data-press]{background:var(--nude-1-50)}
button[data-press]:not(.btn):not(.icon):not(.chip):not(.hb-seta){transform:scale(.97);filter:brightness(.92)}
a[data-press]:not(.btn){opacity:.65}
/* trabalhando: o botão fica esperando a loja responder */
[data-ocupado]{opacity:.75;cursor:progress}
[data-ocupado]::after{content:"";display:inline-block;width:14px;height:14px;margin-left:10px;
  border-radius:50%;border:2px solid currentColor;border-top-color:transparent;
  animation:nhv-girando .6s linear infinite;vertical-align:-2px}
@keyframes nhv-girando{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){
  .btn[data-press],.icon[data-press],.seg button[data-press],.chip[data-press],
  button[data-press]:not(.btn):not(.icon):not(.chip):not(.hb-seta){transform:none;filter:brightness(.9)}
  [data-ocupado]::after{animation:none}
}

/* tarja-foto-kit (scripts/_tarja-foto-kit.cjs): a foto da tarja é a do kit vendido */

/* som-visor (scripts/_som-visor.cjs): o mesmo controle de volume do visor de Resultados */
.vp-vol{-webkit-appearance:none;appearance:none;height:22px;background:transparent;cursor:pointer;
  --p:80%;touch-action:none;flex:0 0 76px;width:76px;margin:0 2px 0 -2px}
.vp-vol:focus-visible{outline:2px solid var(--off-white);outline-offset:2px;border-radius:4px}
.vp-vol::-webkit-slider-runnable-track{height:3px;border-radius:3px;
  background:linear-gradient(90deg,var(--off-white) var(--p),rgb(245 244 240/.3) var(--p))}
.vp-vol::-moz-range-track{height:3px;border-radius:3px;
  background:linear-gradient(90deg,var(--off-white) var(--p),rgb(245 244 240/.3) var(--p))}
.vp-vol::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;margin-top:-4.5px;border:0;
  border-radius:50%;background:var(--off-white);box-shadow:0 1px 4px rgb(20 17 15/.45)}
.vp-vol::-moz-range-thumb{width:12px;height:12px;border:0;border-radius:50%;
  background:var(--off-white);box-shadow:0 1px 4px rgb(20 17 15/.45)}
.visor[data-mudo] .vp-vol{opacity:.6}

/* som-visor: as ondas do ícone acompanham o som que está tocando.
   --som vai de 0 a 1 e é escrito pelo script a cada quadro; o clip-path revela as ondas
   da esquerda para a direita, então volume baixo mostra só a primeira. */
#vp-som{position:relative}
#vp-som::after{content:"";position:absolute;top:50%;left:calc(50% + 1.5px);width:7px;height:11px;
  transform:translateY(-50%);pointer-events:none;
  background:no-repeat left center/7px 11px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='11' viewBox='0 0 7 11'%3E%3Cg fill='none' stroke='%23F5F4F0' stroke-width='1.4' stroke-linecap='round'%3E%3Cpath d='M1 3.6a3.6 3.6 0 0 1 0 3.8'/%3E%3Cpath d='M3.9 1.4a7.4 7.4 0 0 1 0 8.2'/%3E%3C/g%3E%3C/svg%3E");
  clip-path:inset(0 calc(100% - var(--som,0) * 100%) 0 0);
  transition:clip-path 90ms linear}
.visor[data-mudo] #vp-som::after{opacity:.55}
@media (prefers-reduced-motion:reduce){ #vp-som::after{transition:none} }

/* som-visor: com o controle novo a fileira ficou mais apertada e o relógio quebrava em
   duas linhas no celular (medido em 390px). O relógio não quebra mais, e abaixo de 420px
   o controle encurta, que é o único item que pode ceder espaço. */
#vp-tempo{white-space:nowrap}
@media(max-width:420px){ .vp-vol{flex:0 0 56px;width:56px} }



/* ====== ajustes-17-09 (scripts/_ajustes-17-09.cjs) ====== */

/* 1. a confirmação do cadastro não pode herdar flex-basis de altura */
.cadastro-ok{flex:0 0 auto;min-height:46px}

/* 2. três produtos que cabem, em vez de quatro que exigem arrastar */
.dw-cross{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;overflow:visible}
.dw-cross button{flex:none;min-width:0}
.dw-cross .foto{width:100%;height:auto;aspect-ratio:1}
.dw-cross .nome,.dw-cross .pot{overflow-wrap:anywhere}

/* 3. a barra de frete enche ao abrir a gaveta e o brilho segue rolando nela.
   O pulso no texto "Você ganhou frete grátis" existiu por algumas horas e saiu a pedido
   dele: com a barra já chamando atenção, dois movimentos na mesma faixa competiam. */
.dw-frete .barra{position:relative}
.dw-frete .barra b{animation:fr-enche .8s var(--e-out) both}
.dw-frete .barra::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgb(255 255 255/.6),transparent);
  animation:fr-brilho 2.1s var(--e-standard) .35s infinite}
@keyframes fr-enche{from{transform:scaleX(0)}to{transform:scaleX(var(--frete,1))}}
@keyframes fr-brilho{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
@media(prefers-reduced-motion:reduce){
  .dw-frete .barra b,.dw-frete .barra::after{animation:none}
}

/* 6. a frase encontra o centro do número, não a base dele */
.pct{align-items:center}
/* ====== fim ajustes-17-09 ====== */







/* ====== carrinho-precos (scripts/_carrinho-precos.cjs) ====== */
/* o preço que vale ganha a cor de acento da marca; o verde é só de botão de compra */
.dw-item .precos-item{display:flex;flex-direction:column;align-items:flex-end;line-height:1.15}
.dw-item .preco-de{font-size:12px}
.dw-item .preco{color:var(--rotulo)}
/* resumo: o Total é o número que decide a compra, e era o único que não parecia.
   A regra antiga dava 22px a TODA linha de soma, então subtotal, desconto e total
   disputavam o mesmo peso. Aqui o apoio recua e só o total fica grande. */
.dw-pe .soma .preco{font-size:15px;font-weight:600;color:var(--ink-70)}
.dw-pe .soma--total{padding-top:10px;border-top:1px solid var(--ink-08)}
.dw-pe .soma--total .corpo-sm{font-weight:700}
.dw-pe .soma--total .preco{font-size:22px;font-weight:700;color:var(--ink)}
.dw-pe .soma--frete .gratis{font-size:14px;font-weight:700;color:var(--cta-dark)}
/* ====== fim carrinho-precos ====== */





/* ====== ocultar-videos-ge-ma (scripts/_ocultar-videos-ge-ma.cjs) ====== */
/* 21/09/2026: a linha MASCULINA saiu desta lista. Ela ganhou quatro depoimentos
   próprios (Xavier, Jeff, Leonardo e Wallace), então as duas vitrines voltam a aparecer.
   Gestante continua aqui porque continua com um vídeo só. */

/* Gestante e Masculino ainda têm poucos depoimentos em vídeo: a dobra inteira sai, e o
   link dela na barra de âncoras também, para não sobrar âncora sem destino. */
#pdp[data-linha="ge"] #reais{display:none}
/* a PDP tem DUAS vitrines de video, e esconder so a dobra deixava a outra de pe: o bloco
   .pv "Clientes reais mostrando o resultado" fica dentro da coluna de compra, um por
   linha. Some tambem, pelo mesmo motivo. */
#pdp[data-linha="ge"] .pv{display:none}
/* a barra de ancoras da PDP se chama .ancoras, com c, e nao .anchors: o seletor certo
   e o link dentro do #pdp, sem depender do nome da nav. O :has() tira o <li> inteiro para
   nao sobrar marcador vazio; o segundo seletor cobre quem nao suporta :has(). */
#pdp[data-linha="ge"] li:has(> a[href="#reais"]){display:none}
#pdp[data-linha="ge"] a[href="#reais"]{display:none}
/* ====== fim ocultar-videos-ge-ma ====== */

/* cards-passo (scripts/_cards-passo.cjs): recuo padrão dentro do card de passo.
   Os três blocos de fora trazem o próprio recuo e o cabeçalho ainda precisa da borda
   inteira; todo o resto, texto solto incluso, herda o recuo do card em vez de encostar. */
.passo > :not(.passo-cab):not(.opcoes):not(.inclui){padding-left:18px;padding-right:18px}
.passo > .brinde-nota{margin:12px 0}
.passo > .inclui + .brinde-nota{margin:0 0 12px}

/* lixeira na sacola */
.dw-item .tirar{position:relative;width:40px;height:40px;flex:0 0 40px;padding:0;border-radius:50%;
  font-size:0;line-height:0;letter-spacing:0;color:var(--ink-45);
  transition:color var(--t-base) var(--e-standard),background-color var(--t-base) var(--e-standard)}
.dw-item .tirar::before{content:"";position:absolute;inset:0;background-color:currentColor;
  -webkit-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7h16M10 11v6M14 11v6M6 7l1 12a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2l1-12M9 7V5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2'/%3E%3C/svg%3E") center/19px 19px no-repeat;mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7h16M10 11v6M14 11v6M6 7l1 12a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2l1-12M9 7V5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2'/%3E%3C/svg%3E") center/19px 19px no-repeat}
.dw-item .tirar:hover,.dw-item .tirar:focus-visible{color:var(--ink);background-color:var(--ink-08)}

/* sacola em tela baixa */
@media (max-width:860px) and (max-height:760px){
  .dw-frete{padding:10px var(--gutter);gap:6px}
  .dw-pe{padding:12px var(--gutter) 14px;gap:8px}
  .dw-cupom{margin-bottom:2px}
  .dw-pe .cap,.dw-pe .voltar{display:none}
  .dw-pe:has(#dw-desc[hidden]) .dw-cupom + .soma{display:none}
  .dw-pe .soma .preco{font-size:19px}
}
