/* =============================================================
   ELUVIUM — folha de estilo única, usada por todas as páginas
   Paleta tirada do pote e do Instagram da marca.
   ============================================================= */

:root{
  --cream:#F4EDE3; --paper:#FBF8F4; --branco:#FFFDFB;
  --sand:#E8DCCC; --sand-deep:#DCCBB6;
  --wine:#5A1F27; --wine-deep:#3B1218; --wine-soft:#8C4A54;
  /* --nude é claro: só serve sobre fundo ESCURO.
     Sobre fundo claro use --nude-escuro, senão o texto some. */
  --nude:#C9A99A; --nude-escuro:#8A5340;
  --ink:#2A2220; --muted:#6B5A52;
  --line:rgba(90,31,39,.15); --line-forte:rgba(90,31,39,.28);
  --ok:#2F6B4F; --alerta:#8A5A16;
  --serif:'Newsreader',Georgia,serif;
  --sans:'Jost','Segoe UI',sans-serif;
  --u:clamp(16px,4vw,28px);
  --borda:clamp(20px,6vw,80px);
  --topo:74px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--cream);color:var(--ink);font-family:var(--sans);
  font-weight:300;line-height:1.62;-webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
input,select,textarea{font:inherit;color:inherit;font-weight:300}
::selection{background:var(--wine);color:var(--cream)}

/* grão sutil por cima de tudo */
body::after{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:99;opacity:.3;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.34'/%3E%3C/svg%3E");
  mix-blend-mode:multiply;
}

.env{max-width:1360px;margin:0 auto;padding:0 var(--borda)}
.env-estreito{max-width:920px;margin:0 auto;padding:0 var(--borda)}

h1,h2,h3,h4.serif{font-family:var(--serif);font-weight:300;line-height:1.06;letter-spacing:-.015em}
h1{font-size:clamp(2.4rem,5.4vw,4.4rem)}
h2{font-size:clamp(1.9rem,4.2vw,3.3rem)}
h3{font-size:clamp(1.2rem,2vw,1.55rem);line-height:1.2}
p{max-width:66ch}
em,.it{font-style:italic;font-family:var(--serif)}

.sobrelinha{font-size:.68rem;letter-spacing:.28em;text-transform:uppercase;font-weight:400;color:var(--wine-soft)}
.texto-muted{color:var(--muted)}

/* ---------- animações de entrada ---------- */
.js .rv{opacity:0;transform:translateY(24px);transition:opacity .85s cubic-bezier(.2,.7,.2,1),transform .85s cubic-bezier(.2,.7,.2,1)}
.js .rv.on{opacity:1;transform:none}
.js .rv.d1{transition-delay:.08s}.js .rv.d2{transition-delay:.16s}
.js .rv.d3{transition-delay:.24s}.js .rv.d4{transition-delay:.32s}
.js .rvimg{clip-path:inset(0 0 100% 0);transform:scale(1.05);transition:clip-path 1.2s cubic-bezier(.16,.8,.24,1),transform 1.4s cubic-bezier(.16,.8,.24,1)}
.js .rvimg.on{clip-path:inset(0 0 0 0);transform:none}
@media (prefers-reduced-motion:reduce){
  .js .rv,.js .rvimg{opacity:1!important;transform:none!important;clip-path:none!important;transition:none!important}
}

/* ---------- botões ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.6em;border-radius:100px;
  padding:.95em 1.9em;font-size:.85rem;letter-spacing:.07em;text-transform:uppercase;
  border:1px solid var(--wine);transition:.35s cubic-bezier(.2,.7,.2,1);min-height:46px;text-align:center;
}
.btn-cheio{background:var(--wine);color:var(--cream)}
.btn-cheio:hover{background:var(--wine-deep);border-color:var(--wine-deep);transform:translateY(-2px)}
.btn-vazio:hover{background:var(--wine);color:var(--cream);transform:translateY(-2px)}
.btn-claro{background:var(--cream);color:var(--wine);border-color:var(--cream)}
.btn-claro:hover{background:transparent;color:var(--cream);transform:translateY(-2px)}
.btn[disabled],.btn.off{opacity:.4;pointer-events:none}
.btn-p{padding:.7em 1.3em;font-size:.76rem;min-height:40px}

/* ---------- cabeçalho ---------- */
.topo{position:fixed;inset:0 0 auto;z-index:60;transition:background .4s,box-shadow .4s}
.topo.densa{background:rgba(244,237,227,.93);backdrop-filter:blur(14px);box-shadow:0 1px 0 var(--line)}
.topo-barra{display:flex;align-items:center;justify-content:space-between;gap:var(--u);padding:calc(var(--u)*.55) 0}
.marca{font-size:1.55rem;letter-spacing:-.03em;color:var(--wine);font-weight:400;line-height:1;white-space:nowrap}
/* o logo é imagem; o nome escrito continua no alt, para quando o arquivo faltar */
.marca img{display:block;height:1.18rem;width:auto}
.menu{display:flex;gap:calc(var(--u)*1.15);align-items:center}
.menu a{font-size:.83rem;letter-spacing:.05em;position:relative;padding:.3em 0}
.menu a::after{content:'';position:absolute;left:0;bottom:0;height:1px;width:0;background:var(--wine);transition:width .35s cubic-bezier(.2,.7,.2,1)}
.menu a:hover::after,.menu a.atual::after{width:100%}
.menu a.atual{color:var(--wine)}
.topo-acoes{display:flex;align-items:center;gap:calc(var(--u)*.5)}
.bt-sacola{position:relative;display:inline-flex;align-items:center;gap:.5em;font-size:.8rem;
  letter-spacing:.05em;padding:.6em 1em;min-height:44px;color:var(--wine);
  border:1px solid var(--line-forte);border-radius:100px;background:transparent;
  transition:background .3s ease,color .3s ease,border-color .3s ease}
.bt-sacola svg,.bt-conta svg{width:15px;height:15px;flex:none}
.bt-conta{display:inline-flex;align-items:center;gap:.5em;font-size:.8rem;letter-spacing:.05em;
  padding:.6em .9em;min-height:44px;color:var(--wine);border-radius:100px;
  transition:background .3s ease}
.bt-conta:hover{background:rgba(90,31,39,.06)}
@media (max-width:560px){ .bt-conta .rotulo{display:none} .bt-conta{padding:.6em .55em} }
.bt-sacola:hover{border-color:var(--wine);background:rgba(90,31,39,.06)}
/* Com item dentro o botao fica CHEIO. É o sinal de longe: sem contar
   número, já se vê que tem coisa na sacola. */
.bt-sacola.cheia{background:var(--wine);border-color:var(--wine);color:var(--cream)}
.bt-sacola.cheia:hover{background:var(--wine-deep);border-color:var(--wine-deep)}
.bolha{min-width:1.5em;height:1.5em;border-radius:100px;background:var(--wine);color:var(--cream);
  font-size:.68rem;line-height:1;display:grid;place-items:center;padding:0 .4em;font-weight:500}
.bt-sacola.cheia .bolha{background:var(--cream);color:var(--wine)}
/* pulso curto quando entra item — o aviso agora é aqui em cima, não embaixo */
@keyframes sacolaPulso{0%{transform:scale(1)}35%{transform:scale(1.16)}100%{transform:scale(1)}}
.bt-sacola.pulsa{animation:sacolaPulso .5s cubic-bezier(.2,.7,.2,1)}
@media (prefers-reduced-motion:reduce){.bt-sacola.pulsa{animation:none}}
@media (max-width:420px){
  .bt-sacola{padding:.6em .7em;gap:.4em}
  .bt-sacola .rotulo{display:none}
}
.hamb{display:none;width:44px;height:44px;position:relative;flex:none}
.hamb i{position:absolute;left:9px;right:9px;height:1px;background:var(--ink);transition:.35s}
.hamb i:nth-child(1){top:15px}.hamb i:nth-child(2){bottom:15px}
.hamb.x i:nth-child(1){top:21px;transform:rotate(45deg)}
.hamb.x i:nth-child(2){bottom:22px;transform:rotate(-45deg)}

/* ---------- estrutura de página ---------- */
main{padding-top:var(--topo)}
section{padding:calc(var(--u)*3.4) 0}
.cab{max-width:62ch;margin-bottom:calc(var(--u)*2)}
.cab h1,.cab h2{margin:.4em 0 .35em}
.cab p{color:var(--muted)}

.capa{padding:calc(var(--u)*2.6) 0 calc(var(--u)*1.6);border-bottom:1px solid var(--line)}
.capa h1{margin:.3em 0 .3em}
.capa p{color:var(--muted);max-width:56ch}

.migalha{font-size:.76rem;color:var(--muted);letter-spacing:.04em;display:flex;gap:.55em;flex-wrap:wrap;align-items:center}
.migalha a:hover{color:var(--wine)}
.migalha span{opacity:.5}

/* ---------- faixa de frases ---------- */
.faixa{border-block:1px solid var(--line);padding:calc(var(--u)*.9) 0;overflow:hidden;background:var(--paper)}
.trilha{display:flex;gap:calc(var(--u)*2.2);width:max-content;will-change:transform}
.trilha span{font-family:var(--serif);font-size:clamp(1.05rem,2vw,1.55rem);font-style:italic;color:var(--wine-soft);
  white-space:nowrap;display:flex;align-items:center;gap:calc(var(--u)*2.2)}
.trilha span::after{content:'✦';font-size:.5em;font-style:normal;color:var(--nude-escuro)}

/* ---------- cartão de produto (catálogo) ---------- */
.grade-prod{display:grid;grid-template-columns:repeat(auto-fill,minmax(258px,1fr));gap:calc(var(--u)*1.2)}
/* Fileira única dos mais vendidos. Abaixo de 1080px cinco colunas ficariam
   estreitas demais, então a fileira continua sendo UMA fileira: rola de lado
   dentro da própria caixa, sem empurrar a página. */
.fileira-5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:calc(var(--u)*.8)}
@media (max-width:1080px){
  .fileira-5{display:flex;overflow-x:auto;scroll-snap-type:x proximity;padding-bottom:.7em;
    scrollbar-width:thin}
  .fileira-5>*{flex:0 0 min(62vw,238px);scroll-snap-align:start}
}
/* Cinco colunas deixam cada cartão com ~220px. No cartão normal o preço partia
   em duas linhas ("R$" / "69,90") e ficava espremido contra o botão. Aqui ele
   fica em cima e o botão embaixo, na largura toda. */
.fileira-5 .cardp-corpo{padding:calc(var(--u)*.8)}
.fileira-5 .cardp h3{font-size:1.02rem}
.fileira-5 .cardp-linha{font-size:.79rem}
.fileira-5 .cardp-pe{display:block;padding-top:calc(var(--u)*.7)}
.fileira-5 .cardp-preco{font-size:1.35rem;white-space:nowrap}
.fileira-5 .cardp-pe .btn-p{display:block;width:100%;text-align:center;margin-top:.65em}
.fileira-5 .cardp-breve{display:block;margin-bottom:.2em}
.cardp{display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--line);border-radius:3px;
  overflow:hidden;transition:border-color .4s,transform .4s,box-shadow .4s}
.cardp:hover{border-color:var(--line-forte);transform:translateY(-4px);box-shadow:0 18px 44px rgba(59,18,24,.09)}
.cardp-foto{position:relative;aspect-ratio:1;background:#fff;
  display:grid;place-items:center;overflow:hidden;padding:var(--u)}
/* Sem aproximacao ao passar o mouse: a foto fica parada. O cartao ja
   sobe e ganha sombra, e isso basta como resposta. */
.cardp-foto img{max-height:100%;width:auto;object-fit:contain}
.cardp-sem{font-family:var(--serif);font-size:2.6rem;color:var(--nude-escuro);font-style:italic}
.cardp-tag{position:absolute;top:12px;left:12px;font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;
  background:var(--wine);color:var(--cream);padding:.4em .8em;border-radius:100px}
.cardp-tag.suave{background:var(--sand);color:var(--wine)}
.cardp-corpo{padding:calc(var(--u)*.95);display:flex;flex-direction:column;gap:.35em;flex:1}
.cardp-corpo h3{font-size:1.28rem}
.cardp-linha{font-size:.83rem;color:var(--muted)}
.cardp-benef{display:flex;flex-wrap:wrap;gap:.35em;margin-top:.3em}
.mini-tag{font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--wine-soft);
  border:1px solid var(--line);border-radius:100px;padding:.3em .65em}
/* O preço e o botão dividem a linha. Com preço de 3 dígitos em cartão estreito
   o botão era empurrado 31px para fora e ficava cortado pela borda do cartão:
   por isso o preço não quebra e o rodapé pode passar o botão para a linha de baixo. */
.cardp-pe{margin-top:auto;padding-top:calc(var(--u)*.8);display:flex;align-items:flex-end;
  justify-content:space-between;gap:.6em;flex-wrap:wrap}
.cardp-pe .btn-p{flex:1 1 auto;justify-content:center}
.cardp-preco{font-family:var(--serif);font-size:1.5rem;color:var(--wine);line-height:1.1;white-space:nowrap}
.cardp-preco small{display:block;font-family:var(--sans);font-size:.72rem;color:var(--muted);letter-spacing:.02em}
.cardp-breve{font-size:.78rem;color:var(--muted);font-style:italic;font-family:var(--serif);font-size:.95rem}

/* ---------- produto sem foto: peça da marca, não buraco ---------- */
.prod-desenhada{
  display:flex;flex-direction:column;
  width:78%;max-width:290px;aspect-ratio:5/6;border-radius:6px;overflow:hidden;
  background:linear-gradient(158deg,#fff 0%,var(--paper) 46%,var(--sand) 100%);
  box-shadow:0 18px 40px rgba(59,18,24,.13), inset 0 1px 0 rgba(255,255,255,.9);
  text-align:center;
}
.pd-topo{
  flex:44;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:.2em;padding:.8em;padding:clamp(.3em,5cqw,.8em);min-height:0;
}
.pd-base{
  flex:56;background:var(--wine);display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:.4em;padding:.9em .8em;min-height:0;
  gap:clamp(.2em,1.5cqw,.4em);padding:clamp(.35em,5cqw,.9em) clamp(.3em,4cqw,.8em);
}
.pd-marca{font-family:var(--sans);font-weight:300;font-size:1.5rem;letter-spacing:-.03em;color:var(--wine);line-height:1}
.pd-risco{width:34px;height:1px;background:var(--line-forte)}
.pd-nome{font-family:var(--sans);font-size:.82rem;letter-spacing:.2em;text-transform:uppercase;color:var(--cream);line-height:1.5}
.pd-peso{font-size:.68rem;letter-spacing:.18em;color:rgba(244,237,227,.72);text-transform:uppercase}

/* A peça se mede pela PRÓPRIA largura, não pela da tela. Nos cartões estreitos
   da fileira ela fica com 128px e, no tamanho fixo, o nome do produto ocupava
   94px numa faixa de 84: era cortado no meio da palavra. As linhas abaixo só
   valem onde o navegador entende cqw; onde não entender, vale o tamanho fixo. */
.prod-desenhada{container-type:inline-size}
.pd-marca{font-size:clamp(.86rem,13cqw,1.5rem)}
.pd-nome{font-size:clamp(.56rem,6cqw,.82rem);letter-spacing:clamp(.06em,1.4cqw,.2em);line-height:1.42;
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden}
.pd-peso{font-size:clamp(.5rem,4.6cqw,.68rem)}
.prod-desenhada.tom-vinho .pd-base{background:var(--wine)}
.prod-desenhada.tom-vinho-escuro .pd-base{background:var(--wine-deep)}
.prod-desenhada.tom-vinho-suave .pd-base{background:var(--wine-soft)}
.prod-desenhada.tom-terra .pd-base{background:#6E4433}
.prod-desenhada.tom-areia .pd-base{background:#8A7A63}
.prod-desenhada.tom-vinho-suave .pd-marca,
.prod-desenhada.tom-terra .pd-marca,
.prod-desenhada.tom-areia .pd-marca{color:var(--wine-deep)}
.prod-desenhada.g{max-width:340px}
.prod-desenhada.p{width:100%;max-width:none;aspect-ratio:1;border-radius:3px}
.prod-desenhada.p .pd-topo{padding:.3em}
.prod-desenhada.p .pd-base{padding:.3em}
.prod-desenhada.p .pd-marca{font-size:.82rem}
.prod-desenhada.p .pd-risco{display:none}
/* Na miniatura (62–74px) o nome saía com 7px e ocupava 44px numa faixa de 34px:
   vazava. O nome já está escrito ao lado, então aqui fica só a marca sobre a cor. */
.prod-desenhada.p .pd-nome,
.prod-desenhada.p .pd-peso{display:none}
.prod-desenhada.p .pd-topo{flex:60}
.prod-desenhada.p .pd-base{flex:40}

/* ---------- camada de edição (só com ?editar=1) ---------- */
.ed-ativo [data-ed],.ed-ativo [data-ed-img]{
  outline:1px dashed transparent;outline-offset:3px;border-radius:2px;
  transition:outline-color .18s,background .18s;cursor:text;
}
.ed-ativo [data-ed]:hover,.ed-ativo [data-ed-img]:hover{outline-color:var(--wine-soft);background:rgba(140,74,84,.06)}
.ed-ativo [data-ed-img]{cursor:pointer}
.ed-ativo [data-ed].ed-focado{outline:2px solid var(--wine);outline-offset:3px;background:rgba(90,31,39,.05)}
.ed-ativo [contenteditable]{cursor:text}
.ed-ativo a[data-ed]{pointer-events:auto}
body.ed-ativo{padding-top:58px}
body.ed-ativo .topo{top:58px}

.ed-barra{
  position:fixed;inset:0 0 auto;height:58px;z-index:150;background:var(--wine-deep);color:var(--cream);
  display:flex;align-items:center;gap:12px;padding:0 clamp(12px,3vw,22px);
  box-shadow:0 2px 18px rgba(59,18,24,.3);
}
.ed-barra .lg{font-family:var(--serif);font-style:italic;font-size:1.15rem;white-space:nowrap}
.ed-barra .dica{font-size:.79rem;color:rgba(244,237,227,.66);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ed-barra .esp{flex:1}
.ed-bt{
  border:1px solid rgba(244,237,227,.4);border-radius:3px;padding:.5em 1em;font-size:.79rem;
  color:var(--cream);transition:.22s;white-space:nowrap;min-height:38px;display:inline-flex;align-items:center;gap:.4em;
}
.ed-bt:hover{background:rgba(244,237,227,.14)}
.ed-bt[disabled]{opacity:.35;pointer-events:none}
.ed-bt.forte{background:var(--cream);color:var(--wine);border-color:var(--cream)}
.ed-bt.forte:hover{background:#fff}
.ed-marca{width:8px;height:8px;border-radius:100px;background:#E0A94B;flex:none;opacity:0;transition:opacity .2s}
.ed-marca.on{opacity:1}

.ed-flutua{
  position:absolute;z-index:151;background:var(--wine-deep);color:var(--cream);border-radius:100px;
  padding:.34em .5em;display:flex;gap:.2em;box-shadow:0 6px 20px rgba(59,18,24,.34);
  transform:translateY(-50%);opacity:0;pointer-events:none;transition:opacity .18s;
}
.ed-flutua.on{opacity:1;pointer-events:auto}
.ed-flutua button{
  font-size:.75rem;padding:.5em .95em;min-height:36px;border-radius:100px;transition:.2s;white-space:nowrap;
  display:inline-flex;align-items:center;justify-content:center;gap:.3em;
}
.ed-flutua button:hover{background:rgba(244,237,227,.18)}

.ed-aviso{
  position:fixed;left:50%;bottom:22px;transform:translate(-50%,150%);background:var(--wine);color:var(--cream);
  padding:.8em 1.4em;border-radius:100px;font-size:.84rem;z-index:160;transition:transform .35s cubic-bezier(.2,.7,.2,1);
  max-width:92vw;text-align:center;
}
.ed-aviso.on{transform:translate(-50%,0)}

@media (max-width:700px){
  .ed-barra .dica,.ed-barra .lg{display:none}
  body.ed-ativo{padding-top:58px}
}

/* entrega: só Correios, então não é escolha — é informação */
.entrega-unica{border:1px solid var(--line-forte);border-radius:4px;
  padding:calc(var(--u)*.9) calc(var(--u)*1)}
.entrega-unica h4{font-family:var(--serif);font-weight:400;font-size:1.05rem;margin-bottom:.2em}
.entrega-unica small{color:var(--muted);font-size:.85rem;line-height:1.6;display:block}

/* ---------- pontos do produto ---------- */
/* Selo discreto: informa sem competir com o preco, que e o que decide a compra. */
.pts-selo{display:inline-flex;align-items:center;gap:.3em;margin-top:.5em;
  font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;
  color:var(--wine);background:rgba(90,31,39,.07);
  border-radius:100px;padding:.3em .7em;width:fit-content}
.cardp-corpo .pts-selo{margin-top:.55em}
.gav-item .pts-selo{margin-top:.4em;font-size:.66rem}
.gav-pontos{font-size:.8rem;color:var(--muted);margin-top:.5em;line-height:1.6}
.gav-pontos b{color:var(--wine)}
/* Etiqueta enxuta: antes era uma caixa larga com muito vazio dentro,
   colada no botao de comprar. Agora acompanha o texto e respira. */
.pdp-pontos{display:inline-flex;align-items:baseline;gap:.4em;
  margin:.55em 0 0;width:fit-content;max-width:100%;
  background:rgba(90,31,39,.06);border-radius:100px;
  padding:.4em .95em;font-size:.82rem;color:var(--muted);line-height:1.5}
.pdp-pontos b{color:var(--wine);font-weight:500}
.preco-unit{display:block;width:100%;font-size:.8rem;color:var(--muted);margin-top:.15em}

/* ---------- filtros ---------- */
.cat-layout{display:grid;grid-template-columns:238px 1fr;gap:calc(var(--u)*2)}
.filtros{position:sticky;top:calc(var(--topo) + var(--u));align-self:start;
  /* sem isto, lista maior que a tela tem o fim inalcançável: a barra fica
     parada e só a grade rola. Agora ela rola por dentro. */
  max-height:calc(100vh - var(--topo) - var(--u)*2);
  overflow-y:auto;overscroll-behavior:contain;
  padding-right:.5em;scrollbar-gutter:stable}
.filtros::-webkit-scrollbar{width:6px}
.filtros::-webkit-scrollbar-thumb{background:var(--line-forte);border-radius:100px}
/* aplicar filtros: grudado no topo da própria barra */
.filtros-acao{position:sticky;top:0;z-index:3;background:var(--cream);
  padding:0 0 calc(var(--u)*.8);margin-bottom:calc(var(--u)*.4);
  display:grid;gap:.5em;justify-items:center}
.filtros-acao .btn{width:100%;justify-content:center}
.link-limpa{background:none;color:var(--muted);font-size:.8rem;text-decoration:underline;
  text-underline-offset:3px}
.link-limpa:hover{color:var(--wine)}
/* enquanto nada mudou, o botão fica apagado e não convida ao clique */
#aplicaFiltros:disabled{opacity:.4;cursor:default}
.filtro-grupo{border-top:1px solid var(--line);padding:calc(var(--u)*.9) 0}
.filtro-grupo:first-child{border-top:none;padding-top:0}
.filtro-grupo h4{font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;color:var(--wine);margin-bottom:.9em;font-weight:400;font-family:var(--sans)}
.filtro-op{display:flex;align-items:center;gap:.6em;padding:.42em 0;font-size:.9rem;color:var(--muted);cursor:pointer;transition:color .25s;min-height:32px}
.filtro-op:hover{color:var(--ink)}
.filtro-op input{width:15px;height:15px;accent-color:var(--wine);flex:none;cursor:pointer}
.filtro-op.on{color:var(--wine)}
.filtro-qtd{margin-left:auto;font-size:.72rem;opacity:.6}
.cat-topo{display:flex;justify-content:space-between;align-items:center;gap:var(--u);flex-wrap:wrap;margin-bottom:calc(var(--u)*1.2)}
.cat-conta{font-size:.85rem;color:var(--muted)}
.ordenar{border:1px solid var(--line);border-radius:100px;padding:.6em 1em;background:var(--paper);font-size:.82rem;min-height:40px}
.ordenar:focus{outline:none;border-color:var(--wine)}
.chips{display:flex;gap:.45em;flex-wrap:wrap;margin-bottom:calc(var(--u)*1)}
.chip{display:inline-flex;align-items:center;gap:.5em;font-size:.75rem;background:var(--wine);color:var(--cream);
  border-radius:100px;padding:.45em .5em .45em .9em}
.chip button{width:1.5em;height:1.5em;border-radius:100px;display:grid;place-items:center;font-size:.75rem;transition:.25s}
.chip button:hover{background:rgba(244,237,227,.25)}
.limpar-tudo{font-size:.78rem;color:var(--muted);text-decoration:underline;text-underline-offset:3px;padding:.5em 0}
.limpar-tudo:hover{color:var(--wine)}
.vazio-cat{padding:calc(var(--u)*3) 0;text-align:center;color:var(--muted)}
.vazio-cat b{display:block;font-family:var(--serif);font-size:1.6rem;color:var(--ink);font-weight:300;margin-bottom:.4em}
.bt-filtro-mob{display:none}

/* ---------- página do produto ---------- */
.pdp{display:grid;grid-template-columns:1fr 1fr;gap:calc(var(--u)*2.6);align-items:start}
.pdp-fotos{position:sticky;top:calc(var(--topo) + var(--u));display:grid;gap:.7em}
/* Branco chapado, sem degrade. Havia um `background-image` com degrade
   para creme pintando POR CIMA da cor de fundo: como a foto do produto
   tem fundo branco puro, aparecia uma faixa creme entre a borda da
   moldura e a foto — parecia um retrato com passe-partout. */
.pdp-palco{background:#fff;border:1px solid var(--line);border-radius:3px;aspect-ratio:1;
  display:grid;place-items:center;padding:calc(var(--u)*1.4);overflow:hidden}
/* SEM `drop-shadow` aqui. O `drop-shadow` desenha a sombra do RECORTE da
   imagem, e JPEG nao tem recorte: e um retangulo opaco. Entao o navegador
   nao sombreava o pote, sombreava o QUADRADO da foto — uma faixa escura
   descia 24px por baixo dele e batia no branco da moldura. Era isso que
   entregava a emenda: dava para ver uma foto colada dentro da moldura.
   A sombra de verdade ja esta pintada dentro do proprio arquivo, no
   formato do pote, e essa acompanha o produto em vez do quadrado. */
.pdp-palco img{max-height:100%;max-width:100%;width:auto;object-fit:contain}
.pdp-miniaturas{display:flex;gap:.55em}
.pdp-miniaturas button{width:74px;height:74px;border:1px solid var(--line);border-radius:3px;overflow:hidden;background:#fff;transition:border-color .3s}
.pdp-miniaturas button.on{border-color:var(--wine)}
.pdp-miniaturas img{width:100%;height:100%;object-fit:cover}
.pdp-info h1{font-size:clamp(2rem,3.6vw,2.9rem);margin:.15em 0 .12em}
.pdp-linha{font-family:var(--serif);font-style:italic;font-size:1.15rem;color:var(--muted)}
.claims{display:flex;flex-wrap:wrap;gap:.45em;margin:calc(var(--u)*.85) 0}
.claim{font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;border:1px solid var(--line-forte);
  border-radius:100px;padding:.5em 1em;color:var(--wine)}
.pdp-resumo{color:var(--muted);margin:calc(var(--u)*1) 0}
.preco-cx{display:flex;align-items:baseline;gap:.75em;flex-wrap:wrap;margin:calc(var(--u)*1.1) 0 .4em}
.preco{font-family:var(--serif);font-size:clamp(2rem,3.2vw,2.7rem);color:var(--wine);line-height:1}
.preco-de{text-decoration:line-through;color:var(--muted);font-size:1.05rem}
.parcela{color:var(--muted);font-size:.9rem}
.meta-linha{display:flex;gap:calc(var(--u)*1.1);flex-wrap:wrap;color:var(--muted);font-size:.84rem;margin-bottom:calc(var(--u)*1.2)}
.meta-linha b{font-weight:500;color:var(--ink)}
.pdp-compra{display:flex;gap:.6em;flex-wrap:wrap;align-items:center;margin-top:calc(var(--u)*1.1)}
.qtd-sel{display:flex;align-items:center;border:1px solid var(--line-forte);border-radius:100px;overflow:hidden;height:46px}
.qtd-sel button{width:42px;height:100%;display:grid;place-items:center;font-size:1rem;transition:.25s}
.qtd-sel button:hover{background:var(--sand)}
.qtd-sel b{min-width:2em;text-align:center;font-weight:500}
.aviso-estoque{font-size:.85rem;color:var(--muted);margin-top:.9em}
/* Produto indisponível: em vez de anunciar "disponível" com bolinha verde no
   que está à venda, quem muda é o botão de comprar — ele fica cinza, sem
   ponteiro de clique, e diz o que está acontecendo ao passar o mouse. */
.btn.esgotado,.btn.esgotado:hover{background:var(--paper);color:var(--muted);border:1px solid var(--line-forte);
  cursor:not-allowed;transform:none;box-shadow:none}

/* abas */
.abas{margin-top:calc(var(--u)*2.2);border-top:1px solid var(--line)}
.abas-nav{display:flex;gap:calc(var(--u)*1.3);flex-wrap:wrap}
.aba-bt{font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);
  padding:1.1em 0 .8em;min-height:44px;border-bottom:1px solid transparent;transition:.3s}
.aba-bt:hover{color:var(--wine)}
.aba-bt.on{color:var(--wine);border-bottom-color:var(--wine)}
/* AS TRÊS ABAS.
   Erro que estava aqui: `.aba{display:none}` tem o mesmo peso que
   `.lista-oferece{display:grid}` e `.passos{display:grid}`, que vêm DEPOIS no
   arquivo — então venciam, e os painéis "O que oferece" e "Como usar" ficavam
   visíveis o tempo todo. Clicar nas abas parecia não fazer nada.
   Conserto: as três ficam empilhadas na MESMA célula da grade. Assim a caixa
   tem sempre a altura da maior, e trocar de aba não empurra nada da página
   para baixo — era a "quebra" que aparecia ao clicar. */
.aba-corpo{padding-top:calc(var(--u)*1.3);display:grid;align-items:start}
.aba-corpo > .aba{grid-area:1 / 1;visibility:hidden;opacity:0;
  transition:opacity .32s ease;pointer-events:none}
.aba-corpo > .aba.on{visibility:visible;opacity:1;pointer-events:auto}
@media (prefers-reduced-motion:reduce){ .aba-corpo > .aba{transition:none} }
@keyframes sobe{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

.lista-oferece{display:grid;gap:calc(var(--u)*1.05)}
.lista-oferece li{list-style:none;display:grid;grid-template-columns:auto 1fr;gap:1em;align-items:start}
.lista-oferece .pt{width:6px;height:6px;border-radius:100px;background:var(--wine);margin-top:.65em}
.lista-oferece h4{font-family:var(--serif);font-weight:400;font-size:1.14rem;margin-bottom:.15em}
.lista-oferece p{color:var(--muted);font-size:.95rem}
.passos{counter-reset:p;display:grid;gap:calc(var(--u)*1.05)}
.passos li{list-style:none;counter-increment:p;display:grid;grid-template-columns:auto 1fr;gap:1.1em;align-items:start}
.passos li::before{content:counter(p,decimal-leading-zero);font-family:var(--serif);font-size:.95rem;color:var(--wine-soft);
  border:1px solid var(--line-forte);border-radius:100px;width:2.3em;height:2.3em;display:grid;place-items:center}
.passos h4{font-weight:500;font-size:.97rem;margin-bottom:.12em}
.passos p{color:var(--muted);font-size:.95rem}
.espera{display:grid;border-top:1px solid var(--line)}
.espera li{list-style:none;display:grid;grid-template-columns:.4fr 1fr;gap:var(--u);padding:calc(var(--u)*1) 0;border-bottom:1px solid var(--line)}
.espera .q{font-family:var(--serif);font-style:italic;color:var(--wine);font-size:1.05rem}
.espera p{color:var(--muted);font-size:.95rem}
.nota{margin-top:calc(var(--u)*1.2);padding:calc(var(--u)*.9) calc(var(--u)*1.05);background:var(--sand);border-radius:3px;font-size:.86rem;color:var(--muted)}

/* ativos */
.ativos{display:grid;border-top:1px solid var(--line)}
.ativo{display:grid;grid-template-columns:.32fr .26fr 1fr;gap:var(--u);align-items:baseline;
  padding:calc(var(--u)*1.05) 0;border-bottom:1px solid var(--line);transition:background .35s,padding-left .35s}
.ativo:hover{background:rgba(90,31,39,.03);padding-left:.6em}
.ativo b{font-family:var(--serif);font-weight:400;font-size:1.18rem;color:var(--wine)}
.ativo .tec{font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;color:var(--nude-escuro)}
.ativo p{color:var(--muted);font-size:.94rem}

.detalhe{margin-top:calc(var(--u)*1.5);border:1px solid var(--line);border-radius:3px;overflow:hidden}
.detalhe summary{cursor:pointer;padding:calc(var(--u)*.9) calc(var(--u)*1.05);font-size:.78rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--wine);list-style:none;display:flex;justify-content:space-between;gap:1em;min-height:44px;align-items:center}
.detalhe summary::-webkit-details-marker{display:none}
.detalhe summary::after{content:'+';font-size:1.2rem}
.detalhe[open] summary::after{content:'−'}
.detalhe .txt{padding:0 calc(var(--u)*1.05) calc(var(--u)*1.1);color:var(--muted);font-size:.87rem;line-height:1.75}

/* ---------- blocos escuros ---------- */
.escuro{background:var(--wine);color:var(--cream)}
.escuro .sobrelinha{color:var(--nude)}
.escuro p{color:rgba(244,237,227,.75)}
.escuro h2,.escuro h3{color:var(--cream)}
.mais-escuro{background:var(--wine-deep);color:var(--cream)}
.mais-escuro .sobrelinha{color:var(--nude)}
.mais-escuro p{color:rgba(244,237,227,.72)}

/* ---------- votação ---------- */
.opcoes{display:grid;grid-template-columns:repeat(auto-fit,minmax(262px,1fr));gap:calc(var(--u)*.75)}

/* Escrever uma sugestão, em vez de só votar. Estava no <style> da home;
   como a votação virou página própria, mora aqui para as duas enxergarem. */
.sugestao{margin-top:calc(var(--u)*2.6);padding-top:calc(var(--u)*2);border-top:1px solid rgba(244,237,227,.18);max-width:620px}
.sugestao h3{font-family:var(--serif);color:var(--cream);font-size:1.4rem;margin-bottom:.3em}
.sugestao p{color:rgba(244,237,227,.7);font-size:.94rem;margin-bottom:calc(var(--u)*1.1)}
#sugForm{display:flex;gap:.6em;flex-wrap:wrap}
#sugCampo{flex:1;min-width:220px;background:rgba(244,237,227,.08);border:1px solid rgba(244,237,227,.28);
  border-radius:100px;padding:.85em 1.3em;color:var(--cream);min-height:48px;transition:border-color .25s}
#sugCampo::placeholder{color:rgba(244,237,227,.42)}
#sugCampo:focus{outline:none;border-color:var(--nude);background:rgba(244,237,227,.12)}
#sugForm .btn{flex:none}
.sug-ok{color:var(--nude);font-family:var(--serif);font-style:italic;margin-top:calc(var(--u)*.9);font-size:1.05rem}
.opc{position:relative;overflow:hidden;text-align:left;width:100%;border:1px solid rgba(244,237,227,.24);
  border-radius:3px;padding:calc(var(--u)*1);transition:border-color .35s,transform .35s,background .35s}
.opc:not(.travado):hover{border-color:var(--nude);transform:translateY(-3px);background:rgba(244,237,227,.05)}
.opc>*{position:relative}
.opc h4{font-family:var(--serif);font-weight:400;font-size:1.2rem;margin-bottom:.12em}
.opc small{color:rgba(244,237,227,.6);font-size:.84rem;display:block}
.opc.escolhido{border-color:var(--nude);background:rgba(201,169,154,.08)}
.opc.escolhido::before{content:'Seu voto';position:absolute;top:calc(var(--u)*1);right:calc(var(--u)*1);
  font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--nude);z-index:2}
.voto-obrigado{margin-top:calc(var(--u)*1.4);font-family:var(--serif);font-style:italic;color:var(--nude);opacity:0;transition:opacity .55s}
.votou .voto-obrigado{opacity:1}

/* ---------- instagram ---------- */
.ig-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(228px,1fr));gap:calc(var(--u)*.85)}
.ig-card{position:relative;overflow:hidden;border-radius:2px;aspect-ratio:4/5;display:block}
.ig-card img{width:100%;height:100%;object-fit:cover;transition:transform 1s cubic-bezier(.2,.7,.2,1)}
.ig-card:hover img{transform:scale(1.06)}
.ig-card .cap{position:absolute;inset:auto 0 0;padding:calc(var(--u)*1);color:#fff;font-family:var(--serif);
  font-style:italic;font-size:1.04rem;line-height:1.35;
  background:linear-gradient(to top,rgba(59,18,24,.86),rgba(59,18,24,.32) 55%,transparent)}

/* ---------- faq ----------
   Coluna de leitura: esticada até 1360px a pergunta curta ficava com um
   vão enorme até o "+". Fica centrada e com largura de texto. */
.faq-lista{border-top:1px solid var(--line);max-width:880px;margin-inline:auto}
.faq-item{border-bottom:1px solid var(--line)}
.faq-p{width:100%;text-align:left;display:flex;justify-content:space-between;gap:var(--u);align-items:center;
  padding:calc(var(--u)*1.1) 0;font-family:var(--serif);font-size:clamp(1.02rem,1.7vw,1.3rem);font-weight:300;transition:color .3s;min-height:48px}
.faq-p:hover{color:var(--wine)}
.faq-p .mais{flex:none;width:1.5em;height:1.5em;border:1px solid var(--line-forte);border-radius:100px;display:grid;place-items:center;font-size:.8rem;transition:.35s}
.faq-item.on .mais{background:var(--wine);color:var(--cream);border-color:var(--wine);transform:rotate(45deg)}
.faq-r{max-height:0;overflow:hidden;transition:max-height .5s cubic-bezier(.2,.7,.2,1)}
.faq-r p{color:var(--muted);font-size:.96rem;padding-bottom:calc(var(--u)*1.2);max-width:72ch}

/* ---------- quiz ---------- */
.quiz{max-width:760px;margin:0 auto}
.quiz-progresso{height:2px;background:var(--sand);border-radius:100px;overflow:hidden;margin-bottom:calc(var(--u)*2)}
.quiz-progresso i{display:block;height:100%;background:var(--wine);transition:width .5s cubic-bezier(.2,.7,.2,1)}
.quiz-passo{display:none;animation:sobe .5s cubic-bezier(.2,.7,.2,1)}
.quiz-passo.on{display:block}
.quiz-conta{font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--wine-soft);margin-bottom:.9em}
.quiz-passo h2{margin-bottom:calc(var(--u)*1.5)}
.quiz-ops{display:grid;gap:.6em}
.quiz-op{text-align:left;border:1px solid var(--line);border-radius:3px;padding:calc(var(--u)*.95) calc(var(--u)*1.1);
  background:var(--paper);font-size:1rem;transition:.3s;min-height:56px;display:flex;align-items:center;gap:.9em}
.quiz-op:hover{border-color:var(--wine);transform:translateX(4px)}
.quiz-op.on{border-color:var(--wine);background:var(--wine);color:var(--cream)}
.quiz-op .marca-op{width:16px;height:16px;border:1px solid var(--line-forte);border-radius:100px;flex:none;transition:.3s}
.quiz-op.on .marca-op{background:var(--cream);border-color:var(--cream)}
.quiz-nav{display:flex;justify-content:space-between;gap:1em;margin-top:calc(var(--u)*1.8)}
.quiz-fim{display:none}
.quiz-fim.on{display:block;animation:sobe .6s cubic-bezier(.2,.7,.2,1)}
.quiz-honesto{background:var(--sand);border-radius:3px;padding:calc(var(--u)*1.2);margin-top:calc(var(--u)*1.4);font-size:.9rem;color:var(--muted)}
.quiz-honesto b{color:var(--ink);font-weight:500}

/* ---------- carrinho / checkout ---------- */
.checkout{display:grid;grid-template-columns:1.35fr .9fr;gap:calc(var(--u)*2.2);align-items:start}
.linha-item{display:grid;grid-template-columns:96px 1fr auto;gap:calc(var(--u)*.9);padding:calc(var(--u)*1.1) 0;border-bottom:1px solid var(--line);align-items:start}
.linha-item .foto{width:96px;height:96px;background:var(--paper);border:1px solid var(--line);border-radius:3px;display:grid;place-items:center;overflow:hidden}
.linha-item .foto img{width:100%;height:100%;object-fit:contain;padding:6px}
.linha-item .foto .prod-desenhada{width:100%;height:100%;box-shadow:none;border-radius:0}
.linha-item h3{font-size:1.15rem;margin-bottom:.15em}
.linha-item small{color:var(--muted);font-size:.83rem}
.linha-item .dir{text-align:right}
.linha-item .val{font-family:var(--serif);color:var(--wine);font-size:1.3rem}
.resumo{background:var(--paper);border:1px solid var(--line);border-radius:3px;padding:calc(var(--u)*1.3);
  position:sticky;top:calc(var(--topo) + var(--u))}
.resumo h3{margin-bottom:calc(var(--u)*1.1)}
.resumo-linha{display:flex;justify-content:space-between;gap:1em;padding:.5em 0;font-size:.92rem;color:var(--muted)}
.resumo-linha.total{border-top:1px solid var(--line);margin-top:.7em;padding-top:1em;color:var(--ink);font-size:1rem;align-items:baseline}
.resumo-linha.total b{font-family:var(--serif);font-size:1.75rem;color:var(--wine);font-weight:300}
.resumo-linha .gratis{color:var(--ok);font-weight:400}
.campo{margin-bottom:calc(var(--u)*.85)}
.campo label{display:block;font-size:.7rem;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin-bottom:.45em}
.campo input,.campo select,.campo textarea{width:100%;background:var(--branco);border:1px solid var(--line);
  border-radius:3px;padding:.75em .9em;transition:border-color .25s,box-shadow .25s;min-height:46px}
.campo input:focus,.campo select:focus,.campo textarea:focus{outline:none;border-color:var(--wine);box-shadow:0 0 0 3px rgba(90,31,39,.08)}
.campo.erro input{border-color:#9B2C2C}
.campo .msg-erro{color:#9B2C2C;font-size:.76rem;margin-top:.35em;display:none}
.campo.erro .msg-erro{display:block}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:calc(var(--u)*.75)}
.g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:calc(var(--u)*.75)}
.barra-frete{background:var(--sand);border-radius:3px;padding:.85em 1.1em;font-size:.85rem;color:var(--muted);margin-bottom:calc(var(--u)*1.1)}
.barra-frete b{color:var(--wine)}
.medidor{height:3px;background:rgba(90,31,39,.14);border-radius:100px;margin-top:.6em;overflow:hidden}
.medidor i{display:block;height:100%;background:var(--wine);transition:width .6s cubic-bezier(.2,.7,.2,1)}
.entrega-op{display:flex;gap:.8em;align-items:flex-start;border:1px solid var(--line);border-radius:3px;
  padding:calc(var(--u)*.85);cursor:pointer;transition:.3s;margin-bottom:.55em;background:var(--branco)}
.entrega-op:hover{border-color:var(--line-forte)}
.entrega-op.on{border-color:var(--wine);background:rgba(90,31,39,.03)}
.entrega-op input{margin-top:.3em;accent-color:var(--wine);flex:none}
.entrega-op h4{font-size:.95rem;font-weight:500}
.entrega-op small{color:var(--muted);font-size:.82rem;display:block}
.entrega-op .v{margin-left:auto;font-family:var(--serif);color:var(--wine);font-size:1.1rem;white-space:nowrap}
.carrinho-vazio{text-align:center;padding:calc(var(--u)*4) 0}
.carrinho-vazio b{display:block;font-family:var(--serif);font-size:2rem;font-weight:300;margin-bottom:.35em}
.carrinho-vazio p{color:var(--muted);margin:0 auto calc(var(--u)*1.6)}

/* ---------- gaveta da sacola ---------- */
.veu{position:fixed;inset:0;background:rgba(59,18,24,.42);backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .4s;z-index:80}
.veu.on{opacity:1;pointer-events:auto}
.gaveta{position:fixed;top:0;right:0;bottom:0;width:min(430px,92vw);background:var(--cream);z-index:90;
  transform:translateX(101%);transition:transform .45s cubic-bezier(.2,.7,.2,1);display:flex;flex-direction:column;
  box-shadow:-20px 0 60px rgba(59,18,24,.2)}
.gaveta.on{transform:none}
.gav-topo{display:flex;justify-content:space-between;align-items:center;padding:calc(var(--u)*1.2);border-bottom:1px solid var(--line)}
.gav-topo h3{font-size:1.3rem;margin-right:auto}
/* Esvaziar a sacola. Ficava no topo, miúdo, e o Luiz não achava: agora é botão
   de verdade, no pé da gaveta e alinhado à esquerda. A pergunta de confirmação
   acontece no próprio lugar — sem caixa do navegador, que pode vir bloqueada. */
.gav-limpar{display:flex;align-items:center;gap:.55em;flex-wrap:wrap;
  margin-bottom:calc(var(--u)*.9);padding-bottom:calc(var(--u)*.9);border-bottom:1px solid var(--line);
  font-size:.86rem;color:var(--muted)}
.gav-limpar .lim-abre{display:inline-flex;align-items:center;gap:.5em;font-size:.84rem;
  border:1px solid var(--line-forte);border-radius:100px;padding:.55em 1.1em;min-height:40px;
  color:var(--nude-escuro);transition:.25s}
.gav-limpar .lim-abre:hover{border-color:var(--wine);color:var(--wine);background:rgba(90,31,39,.05)}
.gav-limpar .lim-sim,.gav-limpar .lim-nao{font-size:.86rem;min-height:40px;padding:.5em .9em;
  border:1px solid var(--line-forte);border-radius:100px;transition:.25s}
.gav-limpar .lim-sim{color:var(--wine);font-weight:500;border-color:var(--wine)}
.gav-limpar .lim-sim:hover{background:var(--wine);color:var(--cream)}
.gav-limpar .lim-nao{color:var(--muted)}
.gav-limpar .lim-nao:hover{border-color:var(--line-forte);color:var(--wine)}
.fechar{width:44px;height:44px;border-radius:100px;border:1px solid var(--line-forte);display:grid;place-items:center;transition:.3s;flex:none}
.fechar:hover{background:var(--wine);color:var(--cream);border-color:var(--wine)}
.gav-itens{flex:1;overflow-y:auto;padding:calc(var(--u)*1.2);display:grid;gap:calc(var(--u)*1);align-content:start}
.gav-vazio{color:var(--muted);text-align:center;padding:calc(var(--u)*3) 0;font-family:var(--serif);font-style:italic;font-size:1.1rem}
.gav-item{display:grid;grid-template-columns:64px 1fr;gap:1em;align-items:start}
.gav-item .mini{width:64px;height:64px;background:#fff;border:1px solid var(--line);border-radius:2px;display:grid;place-items:center;overflow:hidden}
.gav-item .mini img{width:100%;height:100%;object-fit:contain;padding:5px}
.gav-item .mini .prod-desenhada{width:100%;height:100%;box-shadow:none;border-radius:0}
.gav-item h4 a{color:inherit;transition:color .25s}
.gav-item h4 a:hover{color:var(--wine)}
.gav-item .mini{transition:border-color .25s}
.gav-item .mini:hover{border-color:var(--wine-soft)}
.gav-item h4{font-size:.97rem;font-weight:500}
.gav-item small{color:var(--muted);font-size:.8rem}
.qtd-ctl{display:flex;align-items:center;gap:.55em;margin-top:.5em}
.qtd-ctl button{width:38px;height:38px;flex:none;border:1px solid var(--line-forte);border-radius:100px;display:grid;place-items:center;transition:.25s}
.qtd-ctl button:hover{background:var(--wine);color:var(--cream);border-color:var(--wine)}
.qtd-ctl b{min-width:1.6em;text-align:center;font-weight:500}
.gav-item .val{margin-left:auto;font-family:var(--serif);color:var(--wine);font-size:1.05rem}
.tirar{font-size:.74rem;color:var(--muted);text-decoration:underline;text-underline-offset:3px;display:inline-block;padding:.7em 0;cursor:pointer}
.tirar:hover{color:var(--wine)}
.gav-pe{padding:calc(var(--u)*1.2);border-top:1px solid var(--line);background:var(--paper)}
.total{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:calc(var(--u)*1)}
.total b{font-family:var(--serif);font-size:1.65rem;color:var(--wine);font-weight:300}
.gav-pe .btn{width:100%}
.gav-obs{font-size:.76rem;color:var(--muted);text-align:center;margin-top:.85em;line-height:1.6}

/* ---------- rodapé ---------- */
.rodape{background:var(--wine-deep);color:rgba(244,237,227,.72);padding:calc(var(--u)*3.2) 0 calc(var(--u)*1.5);font-size:.87rem}
.rod-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:calc(var(--u)*1.8);padding-bottom:calc(var(--u)*2);border-bottom:1px solid rgba(244,237,227,.15)}
.rodape .marca{color:var(--cream);font-size:2rem}
.rodape .marca img{height:1.75rem;width:auto}
.rod-tagline{font-family:var(--serif);font-style:italic;color:rgba(244,237,227,.55);font-size:.95rem;margin-top:.2em;letter-spacing:.02em}
.rod-frase{font-family:var(--serif);font-style:italic;color:var(--nude);margin-top:.9em;font-size:1.08rem;max-width:26ch}
.rodape h5{font-size:.66rem;letter-spacing:.22em;text-transform:uppercase;color:var(--nude);margin-bottom:1em;font-weight:400}
.rodape li{list-style:none;margin-bottom:.55em}
.rodape a:hover{color:var(--cream)}
.legal{padding-top:calc(var(--u)*1.3);font-size:.73rem;color:rgba(244,237,227,.44);line-height:1.75;display:grid;gap:.45em}
.legal a{text-decoration:underline;text-underline-offset:3px}

/* ---------- avisos e flutuantes ---------- */
/* Aviso claro sobre borda escura: o fundo era vinho, e nas secoes escuras
   do site ele sumia dentro do proprio fundo. Assim contrasta nas duas. */
.toast{position:fixed;left:50%;bottom:calc(var(--u)*1.5);transform:translate(-50%,150%);
  background:var(--cream);color:var(--wine);border:1px solid var(--wine);
  box-shadow:0 14px 40px rgba(26,16,18,.35);font-weight:500;
  padding:.9em 1.5em;border-radius:100px;font-size:.85rem;z-index:95;
  opacity:0;visibility:hidden;pointer-events:none;max-width:90vw;text-align:center;
  transition:transform .45s cubic-bezier(.2,.7,.2,1),opacity .3s ease,visibility 0s linear .45s}
.toast.on{transform:translate(-50%,0);opacity:1;visibility:visible;
  transition:transform .45s cubic-bezier(.2,.7,.2,1),opacity .3s ease,visibility 0s linear 0s}

/* ---------- responsivo ---------- */
@media (max-width:1000px){
  .cat-layout{grid-template-columns:1fr}
  .filtros{position:fixed;inset:0;z-index:85;background:var(--cream);padding:calc(var(--u)*1.3);
    overflow-y:auto;transform:translateY(100%);transition:transform .45s cubic-bezier(.2,.7,.2,1)}
  .filtros.on{transform:none}
  .filtros-topo{display:flex!important;justify-content:space-between;align-items:center;margin-bottom:var(--u)}
  .bt-filtro-mob{display:inline-flex}
  .pdp,.checkout{grid-template-columns:1fr}
  .pdp-fotos,.resumo,.filtros{position:static}
  .rod-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:900px){
  .menu{position:fixed;inset:0;background:var(--cream);flex-direction:column;justify-content:center;
    gap:calc(var(--u)*1.2);transform:translateY(-100%);transition:transform .5s cubic-bezier(.2,.7,.2,1);z-index:59}
  .menu.on{transform:none}
  .menu a{font-family:var(--serif);font-size:1.65rem;letter-spacing:0}
  .hamb{display:block;z-index:61}
  .ativo{grid-template-columns:1fr;gap:.3em}
  .ativo .tec{margin-bottom:.25em}
  .espera li{grid-template-columns:1fr;gap:.3em}
  .linha-item{grid-template-columns:72px 1fr}
  .linha-item .foto{width:72px;height:72px}
  .linha-item .dir{grid-column:2;text-align:left;display:flex;gap:1em;align-items:center}
}
@media (max-width:560px){
  .rod-grid{grid-template-columns:1fr}
  .g2,.g3{grid-template-columns:1fr}
  .grade-prod{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:calc(var(--u)*.7)}
  .cardp-corpo{padding:calc(var(--u)*.7)}
  .cardp-corpo h3{font-size:1.05rem}
}
.filtros-topo{display:none}


/* =================== ZOOM DAS FOTOS ===================
   Nasceu por causa do rótulo: é uma tira de 6:1 com letra miúda, que do
   tamanho da página ninguém lê. A foto abre em tela cheia e dá para
   aproximar, arrastar e passar para a próxima. Vale para qualquer foto. */
.pdp-palco.amplia{cursor:zoom-in}
.pdp-palco.amplia:focus-visible{outline:2px solid var(--wine);outline-offset:4px}
.pdp-lupa{position:absolute;right:calc(var(--u)*.6);bottom:calc(var(--u)*.6);
  width:38px;height:38px;border-radius:50%;display:grid;place-items:center;
  background:rgba(42,34,32,.6);color:var(--cream);pointer-events:none;
  opacity:0;transition:opacity .25s ease}
.pdp-palco.amplia:hover .pdp-lupa,
.pdp-palco.amplia:focus-visible .pdp-lupa{opacity:1}
@media (hover:none){ .pdp-lupa{opacity:1} }

.zoom-cx{position:fixed;inset:0;z-index:170;background:rgba(42,34,32,.97);
  display:grid;grid-template-columns:minmax(0,1fr);
  grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;
  opacity:0;pointer-events:none;visibility:hidden;
  transition:opacity .28s ease,visibility 0s linear .28s}
.zoom-cx.on{opacity:1;pointer-events:auto;visibility:visible;cursor:zoom-out;
  transition:opacity .28s ease,visibility 0s linear 0s}
.zoom-topo{display:flex;align-items:center;justify-content:space-between;gap:1em;
  padding:calc(var(--u)*.6) calc(var(--u)*.8);color:var(--cream);min-width:0}
.zoom-tit{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;opacity:.75;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.zoom-palco{position:relative;overflow:hidden;display:grid;place-items:center;
  min-width:0;touch-action:none;cursor:zoom-in}
.zoom-cx.perto .zoom-palco{cursor:grab}
.zoom-palco.puxando{cursor:grabbing}
.zoom-pe{min-height:44px}
.zoom-img{position:absolute;top:3%;left:3%;width:94%;height:94%;object-fit:contain;
  transform-origin:center center;-webkit-user-drag:none;user-select:none;
  transition:transform .2s cubic-bezier(.2,.7,.2,1)}
.zoom-palco.puxando .zoom-img{transition:none}
.zoom-pe{display:flex;align-items:center;justify-content:center;gap:.5em;
  padding:calc(var(--u)*.6);flex-wrap:wrap;color:var(--cream);min-width:0}
.zoom-bt{min-width:44px;height:44px;padding:0 .85em;display:inline-flex;
  align-items:center;justify-content:center;background:rgba(244,237,227,.1);
  color:var(--cream);border:1px solid rgba(244,237,227,.24);border-radius:100px;
  font-family:var(--sans);font-size:.95rem;cursor:pointer;
  transition:background .2s ease,border-color .2s ease,opacity .2s ease}
.zoom-bt:hover:not(:disabled){background:rgba(244,237,227,.2);border-color:rgba(244,237,227,.45)}
.zoom-bt:disabled{opacity:.3;cursor:default}
.zoom-conta{font-size:.8rem;letter-spacing:.12em;opacity:.85;min-width:6ch;text-align:center}
.zoom-dica{flex-basis:100%;text-align:center;font-size:.76rem;opacity:.6;margin-top:.15em}
.zoom-seta{position:absolute;top:50%;transform:translateY(-50%);z-index:2;
  width:46px;height:46px;border-radius:50%;display:grid;place-items:center;
  background:rgba(42,34,32,.6);border:1px solid rgba(244,237,227,.26);
  color:var(--cream);cursor:pointer;font-size:1.5rem;line-height:0;padding-bottom:.12em;
  transition:background .2s ease}
.zoom-seta:hover{background:rgba(42,34,32,.92)}
.zoom-seta.esq{left:calc(var(--u)*.4)} .zoom-seta.dir{right:calc(var(--u)*.4)}
.zoom-seta[hidden]{display:none}
@media (max-width:620px){
  .zoom-img{top:0;left:0;width:100%;height:100%}
  .zoom-seta{width:44px;height:44px}
  .zoom-dica{display:none}
}
@media (prefers-reduced-motion:reduce){ .zoom-cx,.zoom-img{transition:none} }
