/* Meu Caco — camada de acabamento compartilhada (index, ofertas, categorias, natal).
   Carregada DEPOIS do <style> de cada pagina: so' refina (movimento, sombras, foco, estados)
   e traz o aviso de cookies / toast / voltar ao topo montados pelo caco.js.
   Regra de ouro: so' anima transform/opacity; tudo respeita prefers-reduced-motion. */

:root{
  --ease: cubic-bezier(.22,.8,.24,1);
  --ease-mola: cubic-bezier(.34,1.45,.64,1);
  --sombra-1: 0 1px 2px rgba(26,43,34,.05), 0 2px 8px -2px rgba(26,43,34,.06);
  --sombra-2: 0 14px 30px -14px rgba(26,43,34,.38), 0 3px 8px -3px rgba(26,43,34,.12);
  --borda-suave: #ECE3C9;
}

/* ---------- base ---------- */
html{ scroll-padding-top:92px; }
body{ -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale; text-rendering:optimizeLegibility; overflow-x:clip; }
::selection{ background:var(--amarelo-banana); color:var(--tinta-jungle); }
h1, h2, .section-heading, .catalogo-header h1{ text-wrap:balance; }
p{ text-wrap:pretty; }
:focus-visible{ outline:3px solid var(--verde-mata); outline-offset:3px; border-radius:8px; }
a, button, summary{ -webkit-tap-highlight-color:transparent; }

/* navegacao entre paginas sem "piscar": fade curtinho (Chrome/Edge/Safari novos; o resto ignora) */
@view-transition{ navigation:auto; }
::view-transition-old(root){ animation:caco-vt-sai .16s var(--ease) both; }
::view-transition-new(root){ animation:caco-vt-entra .22s var(--ease) both; }
@keyframes caco-vt-sai{ to{ opacity:0; } }
@keyframes caco-vt-entra{ from{ opacity:0; } }

/* ---------- menu fixo com vidro ---------- */
body > nav{ position:sticky; top:0; z-index:60; isolation:isolate; transition:padding .25s var(--ease); }
body > nav::before{
  content:""; position:absolute; top:0; bottom:0; left:50%; width:100vw; transform:translateX(-50%); z-index:-1;
  background:rgba(255,246,224,.82); -webkit-backdrop-filter:saturate(1.4) blur(12px); backdrop-filter:saturate(1.4) blur(12px);
  border-bottom:1px solid transparent; transition:border-color .25s, box-shadow .25s;
}
body > nav.nav-rolou::before{ border-bottom-color:var(--borda-suave); box-shadow:0 6px 20px -12px rgba(26,43,34,.25); }
.logo-mark svg{ transition:transform .5s var(--ease-mola); }
.logo-mark:hover svg{ transform:rotate(-10deg) scale(1.06); }
.nav-link{ position:relative; transition:color .2s; }
.nav-link::after{ content:""; position:absolute; left:4px; right:4px; bottom:6px; height:2px; border-radius:2px; background:var(--amarelo-banana); transform:scaleX(0); transform-origin:left; transition:transform .3s var(--ease); }
.nav-link:hover::after{ transform:scaleX(1); }

/* ---------- botoes: sobem no hover, afundam no clique ---------- */
.nav-cta, .btn-primary, .btn-submit, .btn-pesquisar, .btn-carregar-mais, .lp-card .cta, .lp-card .btn-share, .banner-tema .botao, .seta{
  transition:transform .2s var(--ease), box-shadow .2s var(--ease), background-color .2s, border-color .2s, color .2s;
}
@media (hover:hover){
  .nav-cta:hover, .btn-primary:hover, .btn-submit:hover:not(:disabled), .btn-pesquisar:hover, .btn-carregar-mais:hover:not(:disabled){
    transform:translateY(-2px); box-shadow:0 10px 22px -10px rgba(26,43,34,.55);
  }
  .nav-cta:hover{ background:var(--verde-mata-dark); }
  .lp-card .cta:hover{ transform:translateY(-1px); box-shadow:0 8px 16px -8px rgba(21,94,63,.7); }
  .lp-card .btn-share:hover{ transform:translateY(-1px); }
  .banner-tema:hover .botao{ transform:translateY(-2px) scale(1.04); box-shadow:0 8px 18px -8px rgba(0,0,0,.5); }
  .seta:hover{ transform:scale(1.08); }
}
.nav-cta:active, .btn-primary:active, .btn-submit:active, .btn-pesquisar:active, .btn-carregar-mais:active,
.lp-card .cta:active, .lp-card .btn-share:active, .cat-item:active, .grupo-header:active, .cat-pill:active{
  transform:translateY(0) scale(.97); box-shadow:none; transition-duration:.08s;
}

/* ---------- cards de oferta ---------- */
.lp-card{ box-shadow:var(--sombra-1); transition:transform .28s var(--ease), box-shadow .28s var(--ease), border-color .28s; }
.lp-card .thumb-wrap{ overflow:hidden; }
.lp-card .thumb-wrap img{ transition:transform .6s var(--ease); }
@media (hover:hover){
  .lp-card:hover{ transform:translateY(-4px); box-shadow:var(--sombra-2); border-color:#E2D5AE; }
  .lp-card:hover .thumb-wrap img{ transform:scale(1.06); }
}
/* chegada em cascata (so' opacidade/transform; "backwards" p/ nao brigar com o hover depois) */
@keyframes caco-card-entra{ from{ opacity:0; transform:translateY(14px) scale(.985); } }
.grid-cards .lp-card, .lp-cards .lp-card{ animation:caco-card-entra .5s var(--ease) backwards; }
.lp-card:nth-child(4n+2){ animation-delay:.05s; }
.lp-card:nth-child(4n+3){ animation-delay:.1s; }
.lp-card:nth-child(4n+4){ animation-delay:.15s; }
/* carrossel: folga em cima/embaixo pro card nao ser cortado quando sobe com a sombra */
.lp-cards{ padding:8px 6px 22px; margin:-8px -6px -14px; scroll-padding-left:6px; }
.lp-card .tag{ box-shadow:0 2px 6px rgba(199,62,29,.4); }

/* ---------- filtros / pills / sidebar ---------- */
.cat-item, .grupo-header, .cat-pill{ transition:background-color .2s var(--ease), border-color .2s, color .2s, transform .15s var(--ease), box-shadow .2s; }
@media (hover:hover){
  .cat-item:hover:not(.ativa), .grupo-header:hover:not(.ativa){ transform:translateX(3px); }
  .cat-pill:hover{ transform:translateY(-2px); box-shadow:0 6px 14px -8px rgba(26,43,34,.4); background:var(--branco); }
}
.cat-item.ativa{ box-shadow:0 6px 14px -8px rgba(21,94,63,.8); }
.grupo-seta{ transition:transform .25s var(--ease-mola); }
@keyframes caco-filhos-entram{ from{ opacity:0; transform:translateY(-6px); } }
.grupo-bloco.aberto .grupo-filhos{ animation:caco-filhos-entram .25s var(--ease); }
.catalogo-sidebar{ top:92px; max-height:calc(100vh - 108px); overflow-y:auto; overflow-x:hidden; padding:4px; margin:-4px; scrollbar-width:thin; scrollbar-color:#D9CDA6 transparent; }
.pill-check span{ transition:background-color .2s, color .2s, border-color .2s, transform .25s var(--ease-mola), box-shadow .2s; }
.pill-check input:checked + span{ transform:scale(1.04); box-shadow:0 6px 14px -8px rgba(21,94,63,.8); }
.pill-check input:focus-visible + span{ outline:3px solid var(--verde-mata); outline-offset:3px; }

/* campos: anel verde suave no foco */
.toolbar-catalogo input[type=search], .toolbar-catalogo select, .signup-card input[type=email], .campo-categoria{
  transition:border-color .2s, box-shadow .2s, background-color .2s;
}
.toolbar-catalogo input[type=search]:focus, .toolbar-catalogo select:focus, .signup-card input[type=email]:focus, .campo-categoria:focus{
  outline:none; border-color:var(--verde-mata); box-shadow:0 0 0 4px rgba(31,122,83,.16);
}

/* ---------- entrada da hero (fade + sobe, em cascata) ---------- */
@keyframes caco-sobe{ from{ opacity:0; transform:translateY(16px); } }
.hero h1{ animation:caco-sobe .6s var(--ease) backwards; }
.hero p.sub{ animation:caco-sobe .6s .08s var(--ease) backwards; }
.hero-ctas{ animation:caco-sobe .6s .16s var(--ease) backwards; }
.hero-art{ animation:caco-sobe .8s .12s var(--ease) backwards; }
.catalogo-header h1, .catalogo-header p{ animation:caco-sobe .5s var(--ease) backwards; }
.catalogo-header p{ animation-delay:.07s; }

/* ---------- revelar secoes ao rolar (classes postas pelo caco.js; sem JS nada fica escondido) ---------- */
.reveal{ opacity:0; transform:translateY(26px); transition:opacity .7s var(--ease), transform .7s var(--ease); }
.reveal.in{ opacity:1; transform:none; }

/* ---------- toast ---------- */
.caco-toast{
  position:fixed; left:50%; bottom:26px; z-index:120; max-width:calc(100vw - 32px);
  background:var(--tinta-jungle); color:var(--branco); font-weight:600; font-size:14px; line-height:1.35;
  padding:12px 18px; border-radius:100px; box-shadow:0 14px 34px -10px rgba(0,0,0,.5);
  opacity:0; transform:translate(-50%, 24px) scale(.96); pointer-events:none;
  transition:opacity .25s var(--ease), transform .35s var(--ease-mola);
}
.caco-toast.visivel{ opacity:1; transform:translate(-50%, 0) scale(1); }

/* ---------- voltar ao topo ---------- */
.caco-topo{
  position:fixed; right:18px; bottom:18px; z-index:70; width:48px; height:48px; border-radius:50%;
  border:none; cursor:pointer; background:var(--tinta-jungle); color:var(--branco);
  display:flex; align-items:center; justify-content:center; box-shadow:0 10px 24px -8px rgba(26,43,34,.6);
  opacity:0; transform:translateY(14px) scale(.9); pointer-events:none;
  transition:opacity .25s var(--ease), transform .35s var(--ease-mola), background-color .2s;
}
.caco-topo.visivel{ opacity:1; transform:none; pointer-events:auto; }
.caco-topo svg{ width:20px; height:20px; }
@media (hover:hover){ .caco-topo.visivel:hover{ background:var(--verde-mata); transform:translateY(-3px); } }
body.cc-aberto .caco-topo{ opacity:0; pointer-events:none; }

/* ---------- aviso de cookies ---------- */
.caco-cookie{
  position:fixed; left:20px; bottom:20px; z-index:110; width:min(440px, calc(100vw - 24px));
  background:var(--branco); color:var(--tinta-jungle); border:1.5px solid var(--borda-suave); border-radius:22px;
  box-shadow:0 24px 60px -18px rgba(26,43,34,.55), 0 4px 14px -4px rgba(26,43,34,.15);
  padding:20px 20px 16px; overflow:hidden;
  opacity:0; transform:translateY(40px) scale(.97); transition:opacity .35s var(--ease), transform .55s var(--ease-mola);
}
.caco-cookie[hidden]{ display:none; }
.caco-cookie.visivel{ opacity:1; transform:none; }
.caco-cookie::before{ content:""; position:absolute; left:0; right:0; top:0; height:5px; background:repeating-linear-gradient(90deg, var(--amarelo-banana) 0 18px, var(--amarelo-banana-dark) 18px 36px); }
.cc-topo{ display:flex; align-items:center; gap:12px; margin-bottom:10px; }
.cc-topo svg{ width:46px; height:46px; flex:0 0 auto; transform-origin:50% 80%; }
.caco-cookie.visivel .cc-topo svg{ animation:caco-aceno 1.3s .5s var(--ease-mola) 1; }
@keyframes caco-aceno{ 0%,100%{ transform:rotate(0); } 20%{ transform:rotate(-14deg); } 45%{ transform:rotate(10deg); } 70%{ transform:rotate(-6deg); } }
.cc-titulo{ font-family:'Baloo 2',sans-serif; font-weight:800; font-size:20px; line-height:1.15; }
.cc-texto{ font-size:14px; line-height:1.55; color:#34463C; }
.cc-texto strong{ color:var(--tinta-jungle); }
.cc-acoes{ display:flex; gap:10px; margin-top:14px; flex-wrap:wrap; }
.cc-acoes button{
  font-family:'Baloo 2',sans-serif; font-weight:700; font-size:15px; border-radius:100px; cursor:pointer; padding:11px 20px; min-height:44px;
  transition:transform .2s var(--ease), box-shadow .2s, background-color .2s, border-color .2s;
}
.cc-sim{ flex:1 1 auto; background:var(--verde-mata); color:var(--branco); border:2px solid var(--verde-mata); }
.cc-nao{ background:transparent; color:var(--tinta-jungle); border:2px solid #D9CDA6; }
@media (hover:hover){
  .cc-sim:hover{ background:var(--verde-mata-dark); border-color:var(--verde-mata-dark); transform:translateY(-2px); box-shadow:0 10px 20px -10px rgba(21,94,63,.8); }
  .cc-nao:hover{ border-color:var(--tinta-jungle); transform:translateY(-2px); }
}
.cc-acoes button:active{ transform:scale(.97); }
.cc-mais{ margin-top:10px; font-size:13px; color:#43543F; }
.cc-mais summary{ cursor:pointer; font-weight:700; color:var(--verde-mata-dark); padding:6px 0; list-style:none; display:inline-flex; align-items:center; gap:6px; }
.cc-mais summary::-webkit-details-marker{ display:none; }
.cc-mais summary::before{ content:"▸"; display:inline-block; transition:transform .2s var(--ease); font-size:11px; }
.cc-mais[open] summary::before{ transform:rotate(90deg); }
.cc-mais ul{ margin:4px 0 0 18px; display:grid; gap:6px; line-height:1.5; }
.cc-prefs{ background:none; border:none; padding:6px 4px; margin-top:6px; color:inherit; opacity:.75; font:inherit; font-size:12px; text-decoration:underline; cursor:pointer; }
.cc-prefs:hover{ opacity:1; }
@media (max-width:560px){
  .caco-cookie{ left:12px; right:12px; bottom:12px; width:auto; padding:18px 16px 14px; border-radius:20px; }
  .cc-titulo{ font-size:18px; }
  .cc-acoes button{ flex:1 1 100%; }
  .caco-toast{ bottom:90px; }
}

@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{ animation:none !important; transition:none !important; scroll-behavior:auto !important; }
  .reveal{ opacity:1; transform:none; }
  .caco-cookie, .caco-toast{ transform:none; }
  .caco-cookie:not(.visivel), .caco-toast:not(.visivel){ opacity:0; }
  @view-transition{ navigation:none; }
}

/* menu: links compartilhados por todas as paginas (index define os mesmos; ofertas/categorias/cupons/natal dependem destes) */
.nav-acoes{ display:flex; align-items:center; gap:20px; }
.nav-link{ font-family:'Baloo 2',sans-serif; font-weight:700; font-size:15px; color:var(--tinta-jungle); text-decoration:none; padding:12px 4px; display:inline-block; }
.nav-link[aria-current]{ color:var(--verde-mata-dark); }
@media (max-width:760px){ .nav-acoes{ gap:8px; } .nav-link{ font-size:14px; white-space:nowrap; } }
@media (max-width:420px){ .nav-link:not(.nav-cupons):not(.nav-guias){ display:none; } .nav-link.nav-cupons, .nav-link.nav-guias{ display:inline-block; } }

/* botao principal do topo, igual em TODAS as paginas: leva a todas as ofertas. Quem chega por uma oferta que nao
   gostou precisa de um proximo passo visivel (antes era so' um link de texto, e sumia no celular). */
.nav-cta.nav-ofertas{
  background:var(--amarelo-banana); color:var(--tinta-jungle); border:2px solid var(--tinta-jungle);
  padding:8px 18px; font-weight:800; display:inline-flex; align-items:center; gap:6px; white-space:nowrap;
  box-shadow:0 3px 0 var(--tinta-jungle);
}
.nav-ofertas .rot-curto{ display:none; }
.nav-ofertas .seta-cta{ display:inline-block; transition:transform .2s var(--ease); }
@media (hover:hover){
  .nav-cta.nav-ofertas:hover{ background:var(--amarelo-banana-dark); box-shadow:0 5px 0 var(--tinta-jungle); }
  .nav-ofertas:hover .seta-cta{ transform:translateX(3px); }
}
.nav-cta.nav-ofertas:active{ box-shadow:0 0 0 var(--tinta-jungle); transform:translateY(3px); }
.nav-cta.nav-ofertas:focus-visible{ outline:3px solid var(--verde-mata-dark); outline-offset:3px; }
@media (max-width:760px){
  .nav-ofertas .rot-longo{ display:none; }
  .nav-ofertas .rot-curto{ display:inline; }
  .nav-cta.nav-ofertas{ padding:7px 13px; }
}
@media (max-width:420px){
  .nav-cta.nav-ofertas{ padding:6px 10px; font-size:13px; gap:4px; box-shadow:0 2px 0 var(--tinta-jungle); }
}
/* celular: se a faixa de cadastro for religada no admin, o botao de newsletter do topo nao cabe ao lado deste (estourava
   a largura em 375px); em tela estreita o topo fica com "Ver ofertas" e o cadastro continua nos blocos da pagina. */
@media (max-width:520px){ nav .nav-cta.cta-newsletter{ display:none !important; } }
body.bf .nav-cta.nav-ofertas{ color:#111; border-color:#111; box-shadow:0 3px 0 #111; }

/* links institucionais no rodape */
.rodape-links{ display:flex; flex-wrap:wrap; gap:6px 20px; justify-content:center; margin:10px 0 2px; }
.rodape-links a{ color:var(--creme-polpa); font-size:13.5px; text-decoration:none; opacity:.85; padding:6px 2px; transition:opacity .2s; border-bottom:1px solid transparent; }
.rodape-links a:hover{ opacity:1; border-bottom-color:var(--amarelo-banana); }

/* redes sociais no rodape (redes_sociais.py preenche; sem endereco confirmado o bloco nem aparece) */
.rodape-redes{ display:flex; flex-wrap:wrap; gap:8px 12px; justify-content:center; align-items:center; margin:14px 0 8px; font-family:'Baloo 2',sans-serif; font-weight:700; font-size:16px; color:var(--creme-polpa); }
.rodape-redes span{ opacity:.9; }
.rodape-redes a{ background:var(--amarelo-banana); color:var(--tinta-jungle); text-decoration:none; padding:9px 20px; border-radius:100px; box-shadow:0 2px 0 rgba(0,0,0,.28); transition:transform .15s var(--ease), box-shadow .15s var(--ease); }
.rodape-redes a:hover, .rodape-redes a:focus-visible{ transform:translateY(-2px); box-shadow:0 4px 0 rgba(0,0,0,.28); }

/* FAIXAS:INICIO (gerado pelo admin: nao editar a mao) */
.cta-newsletter{ display:none !important; }
/* FAIXAS:FIM */

/* logo animado: letras do "Caco" pulam na entrada; olhos do macaco piscam de vez em quando; no hover o macaco balanca */
.logo-mark .wordmark .caco .l{ display:inline-block; animation:caco-letra .7s var(--ease-mola) both; animation-delay:calc(var(--i) * 70ms + .15s); }
.logo-mark .wordmark .meu{ animation:caco-meu .6s var(--ease) both; }
.logo-mark:hover .wordmark .caco .l{ animation:caco-pula .5s var(--ease-mola) both; animation-delay:calc(var(--i) * 45ms); }
.logo-mark svg [cx="39"], .logo-mark svg [cx="37.2"]{ transform-box:view-box; transform-origin:39px 49px; animation:caco-pisca 5.5s ease-in-out infinite; }
.logo-mark svg [cx="61"], .logo-mark svg [cx="59.2"]{ transform-box:view-box; transform-origin:61px 49px; animation:caco-pisca 5.5s ease-in-out infinite; }
@keyframes caco-letra{ from{ opacity:0; transform:translateY(16px) rotate(-8deg) scale(.7); } to{ opacity:1; transform:none; } }
@keyframes caco-meu{ from{ opacity:0; transform:translateX(-8px); } to{ opacity:.75; transform:none; } }
@keyframes caco-pula{ 0%,100%{ transform:translateY(0); } 40%{ transform:translateY(-9px) rotate(-5deg); } 70%{ transform:translateY(1px); } }
@keyframes caco-pisca{ 0%,92%,100%{ transform:scaleY(1); } 96%{ transform:scaleY(.1); } }

/* cards: nota + vendas (uma linha discreta), "conferida ha X" e botao do grafico de preco */
.lp-card .meta-prod{ font-size:11.5px; color:#5C6A59; margin-top:3px; display:flex; gap:5px; align-items:center; flex-wrap:wrap; line-height:1.3; }
.lp-card .meta-prod .nota{ color:#8A5A00; font-weight:700; }
.lp-card .conferida{ font-size:10.5px; color:#6B786A; margin-top:7px; }
.lp-card .price small{ display:block; font-size:10.5px; font-weight:600; color:#5C6A59; line-height:1; margin-bottom:2px; }
/* botao de grafico foi descartado; esta regra so' cobre paginas antigas ate serem regeneradas */
.lp-card .btn-hist{ display:none !important; }

/* AliExpress: origem e prazo de entrega */
.meta-prod .envio{ display:block; font-size:11.5px; font-weight:600; color:#7A6A3A; margin-top:2px; }
.meta-prod .envio.br{ color:var(--verde-mata-dark); font-weight:700; }

/* aba lateral "Guias" (injetada por caco.js): chama atencao sem cobrir o conteudo */
.aba-guias{ position:fixed; right:0; top:46%; z-index:60; display:flex; align-items:center; gap:6px; background:var(--verde-mata); color:#fff; text-decoration:none;
  font-family:'Baloo 2',sans-serif; font-weight:800; font-size:14px; padding:10px 8px 10px 10px; border-radius:14px 0 0 14px; box-shadow:-6px 8px 20px -10px rgba(0,0,0,.5);
  writing-mode:vertical-rl; text-orientation:mixed; transform:translateX(0); transition:transform .25s, background-color .2s; opacity:0; animation:aba-entra .5s ease 2.2s forwards; }
.aba-guias:hover{ background:var(--verde-mata-dark); transform:translateX(-4px); }
.aba-guias .x{ writing-mode:horizontal-tb; font-size:15px; opacity:.75; padding:2px 4px; cursor:pointer; line-height:1; }
@keyframes aba-entra{ to{ opacity:1; } }
@media (max-width:700px){ .aba-guias{ top:auto; bottom:84px; right:12px; writing-mode:horizontal-tb; border-radius:100px; padding:9px 14px; font-size:13px; } }
@media (prefers-reduced-motion: reduce){ .aba-guias{ animation:none; opacity:1; } }

/* celular estreito: o menu ganhou "Guias"; o logo nao pode quebrar em "Cac/o" */
@media (max-width:420px){
  .logo-mark svg{ width:38px; height:38px; }
  .logo-mark .wordmark .caco{ font-size:24px; white-space:nowrap; }
  .logo-mark .wordmark .meu{ font-size:13px; }
  .nav-acoes{ gap:6px; }
  .nav-link{ font-size:13px; padding:12px 2px; }
  .nav-cta{ padding:8px 11px; font-size:12.5px; white-space:nowrap; }
}

/* selo "novo" no menu */
.nav-novo{ display:inline-block; margin-left:5px; padding:1px 6px; border-radius:100px; background:var(--coral-selo); color:#fff; font-family:'Baloo 2',sans-serif; font-weight:800; font-size:10px; letter-spacing:.3px; vertical-align:3px; animation:nav-novo-pulsa 2.4s ease-in-out infinite; }
@keyframes nav-novo-pulsa{ 0%,100%{ transform:scale(1); } 50%{ transform:scale(1.12); } }
@media (max-width:420px){ .nav-novo{ display:none; } }
@media (prefers-reduced-motion: reduce){ .nav-novo{ animation:none; } }
