/* =========================================================
   Packs Laser — Design System
   Preto / branco / cinzas + laranja de destaque
   ========================================================= */

:root{
  /* =====================================================================
     IDENTIDADE VISUAL OFICIAL — PACKS LASER
     ---------------------------------------------------------------------
     As duas cores abaixo foram extraídas da logo original
     ("logo png packs.png"). A marca usa exatamente estas duas — nada mais.
     Para trocar a identidade do site inteiro, altere apenas este bloco.
     ===================================================================== */
  --brand-green:#5eca02;        /* verde oficial — preenchimentos e destaques */
  --brand-graphite:#201e1e;     /* grafite oficial — texto e superfícies escuras */

  /* Derivadas, para acessibilidade. O verde da marca tem só 2,1:1 sobre
     branco, então NÃO serve para texto. Sobre o grafite (a combinação da
     própria logo) ele dá 7,8:1 — é assim que os botões são montados. */
  --brand-green-ink:#3d8102;    /* verde escurecido: texto/ícones sobre branco (4,84:1) */
  --brand-green-hover:#54b302;  /* hover dos preenchimentos verdes */
  --brand-green-soft:#eefbe0;   /* tinte claro para fundos suaves */

  --bg:#ffffff;
  --bg-soft:#f6f7f5;
  --bg-soft-2:#ecefe9;
  --ink:var(--brand-graphite);
  --ink-2:#3a3a38;
  --muted:#6b7280;
  --muted-2:#70777f;   /* 4,53:1 sobre branco */
  --line:#e5e7e2;
  --line-2:#d6d9d2;

  /* Papéis na interface (apontam para os tokens da marca) */
  --accent:var(--brand-green-ink);       /* texto, links, ícones sobre claro */
  --accent-bright:var(--brand-green);    /* preenchimentos: botões, selos */
  --accent-dark:var(--brand-green-hover);
  --accent-soft:var(--brand-green-soft);
  --on-accent:var(--brand-graphite);     /* texto sobre o verde — 7,8:1 */
  --ok:var(--brand-green-ink);
  --radius-sm:8px;
  --radius:12px;
  --radius-lg:18px;
  --shadow-sm:0 1px 2px rgba(11,12,14,.06);
  --shadow:0 6px 24px rgba(11,12,14,.08);
  --shadow-lg:0 18px 50px rgba(11,12,14,.14);
  --header-h:64px;
  /* altura real do cabeçalho fixo (topbar + linha + categorias).
     O app.js recalcula em tempo real; este valor é só o fallback. */
  --sticky-h:172px;
  --container:1240px;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:var(--font);font-size:16px;line-height:1.55;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img,svg,video{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,h4{margin:0;line-height:1.18;letter-spacing:-.02em;font-weight:800}
p{margin:0}
ul{margin:0;padding:0;list-style:none}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}

/* Âncoras (#reembolso, #categorias...) não podem parar atrás do header fixo */
[id]{scroll-margin-top:calc(var(--sticky-h) + 20px)}

/* Link "pular para o conteúdo": invisível até receber foco pelo teclado */
.skip-link{position:absolute;left:16px;top:-100px;z-index:200;background:var(--ink);color:#fff;
  padding:11px 18px;border-radius:0 0 10px 10px;font-weight:650;transition:top .15s ease}
.skip-link:focus{top:0}

.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:16px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.iconbtn.iconbtn--menu{display:none}   /* hambúrguer: só até 980px */
.mobile-search{display:none}      /* busca mobile: só até 820px */
.muted{color:var(--muted)}
.center{text-align:center}

/* ---------- Botões ---------- */
.btn{
  --btn-bg:var(--ink);--btn-fg:#fff;--btn-bd:var(--ink);
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  background:var(--btn-bg);color:var(--btn-fg);border:1px solid var(--btn-bd);
  padding:11px 18px;border-radius:10px;font-weight:650;font-size:15px;
  cursor:pointer;transition:transform .12s ease,background .15s ease,border-color .15s ease,color .15s ease;
  text-align:center;white-space:nowrap;
}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
/* Botão principal = verde oficial com texto grafite, exatamente o par
   cromático da logo. 7,8:1 de contraste, acima do exigido pelo WCAG AAA. */
.btn--primary{--btn-bg:var(--brand-green);--btn-fg:var(--brand-graphite);--btn-bd:var(--brand-green)}
.btn--primary:hover{--btn-bg:var(--brand-green-hover);--btn-bd:var(--brand-green-hover)}
.btn--outline{--btn-bg:transparent;--btn-fg:var(--ink);--btn-bd:var(--line-2)}
.btn--outline:hover{--btn-bd:var(--ink)}
.btn--light{--btn-bg:#fff;--btn-fg:var(--ink);--btn-bd:#fff}
.btn--ghost{--btn-bg:var(--bg-soft);--btn-fg:var(--ink);--btn-bd:var(--bg-soft)}
.btn--lg{padding:15px 26px;font-size:16.5px;border-radius:12px}
.btn--block{width:100%}
/* Para botao de largura cheia cujo texto pode crescer (carrinho, upsell).
   O .btn e nowrap de proposito no resto do site: aqui a excecao e
   pedida explicitamente, e vem com altura automatica e quebra segura
   para o texto nunca vazar. */
.btn--wrap{white-space:normal;height:auto;line-height:1.35;overflow-wrap:anywhere}
.btn--sm{padding:8px 13px;font-size:14px}

/* ---------- Header ---------- */
.topbar{background:var(--ink);color:#fff;font-size:13px}
.topbar__inner{display:flex;align-items:center;justify-content:center;gap:18px;min-height:34px;text-align:center}
.topbar strong{color:#fff}
.topbar em{color:var(--brand-green);font-style:normal;font-weight:700}  /* verde da marca sobre grafite: 7,8:1 */

.header{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.94);backdrop-filter:saturate(180%) blur(10px);border-bottom:1px solid var(--line)}
.header__row{display:flex;align-items:center;gap:18px;min-height:var(--header-h)}
/* Logo oficial em arquivo de imagem — nunca reconstruída em CSS/SVG */
.logo{display:flex;align-items:center;flex-shrink:0}
.logo img{height:34px;width:auto;display:block}
.footer .logo img{height:38px}
.drawer__head .logo img{height:30px}

.searchbar{position:relative;flex:1;max-width:560px}
.searchbar input{
  width:100%;height:44px;border:1px solid var(--line-2);background:var(--bg-soft);
  border-radius:10px;padding:0 44px 0 40px;font-size:15px;transition:border-color .15s,background .15s;
}
.searchbar input::placeholder{color:var(--muted-2)}
.searchbar input:focus{outline:none;border-color:var(--ink);background:#fff}
.searchbar__icon{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}
.searchbar__submit{position:absolute;right:5px;top:5px;height:34px;width:34px;display:grid;place-items:center;border:0;background:var(--ink);color:#fff;border-radius:8px;cursor:pointer;transition:background .15s,color .15s}
.searchbar__submit:hover{background:var(--brand-green);color:var(--brand-graphite)}

.suggest{
  position:absolute;left:0;right:0;top:calc(100% + 6px);background:#fff;border:1px solid var(--line);
  border-radius:12px;box-shadow:var(--shadow-lg);overflow:hidden;z-index:70;display:none;max-height:70vh;overflow-y:auto;
}
.suggest.is-open{display:block}
.suggest__label{padding:10px 14px 4px;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2);font-weight:700}
.suggest__label a{color:var(--accent);text-transform:none;letter-spacing:0;font-size:13.5px}
.suggest__label a:hover{text-decoration:underline}
.suggest__item{display:flex;align-items:center;gap:11px;padding:9px 14px;cursor:pointer;border:0;background:none;width:100%;text-align:left}
.suggest__item:hover,.suggest__item.is-active{background:var(--bg-soft)}
.suggest__item img{width:42px;height:42px;border-radius:7px;object-fit:cover;background:var(--bg-soft-2);flex-shrink:0}
.suggest__item b{display:block;font-size:14.5px;font-weight:600}
.suggest__item small{color:var(--muted);font-size:12.5px}
.suggest__price{margin-left:auto;font-weight:750;font-size:14px;white-space:nowrap}

.nav{display:flex;align-items:center;gap:4px;margin-left:auto}
.nav a{padding:8px 11px;border-radius:8px;font-size:15px;font-weight:550;color:var(--ink-2);white-space:nowrap}
.nav a:hover{background:var(--bg-soft);color:var(--ink)}
.nav a.is-active{color:var(--ink);font-weight:700}

.actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
.iconbtn{position:relative;display:grid;place-items:center;width:42px;height:42px;border-radius:10px;border:1px solid transparent;background:none;cursor:pointer;color:var(--ink-2)}
.iconbtn:hover{background:var(--bg-soft);color:var(--ink)}
.badge-count{position:absolute;top:4px;right:4px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--accent);color:#fff;font-size:11px;font-weight:700;display:none;place-items:center;line-height:17px;text-align:center}
.badge-count.is-visible{display:grid}

.subnav{border-bottom:1px solid var(--line);background:#fff}
.subnav__inner{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding-block:8px}
.subnav__inner::-webkit-scrollbar{display:none}
.subnav__inner a{flex-shrink:0;padding:6px 13px;border:1px solid var(--line);border-radius:999px;font-size:13.5px;color:var(--ink-2);font-weight:550}
.subnav__inner a:hover{border-color:var(--ink);color:var(--ink)}

/* Drawer mobile */
/* visibility:hidden tira o menu fechado da ordem de tabulação e da árvore
   de acessibilidade — sem isso o teclado entra num painel invisível. */
/* Fechado, o menu fica visibility:hidden — isso o tira da ordem de tabulação
   e da árvore de acessibilidade. A classe .is-closing o mantém visível
   durante a animação de saída; quem a remove é o app.js (transicionar
   visibility por CSS não reverte de forma confiável entre navegadores). */
.drawer{position:fixed;inset:0 auto 0 0;width:min(86vw,340px);background:#fff;z-index:90;transform:translateX(-100%);
  visibility:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);
  transition:transform .25s ease}
.drawer.is-open,.drawer.is-closing{visibility:visible}
.drawer.is-open{transform:none}
.drawer__head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line)}
.drawer__body{padding:8px 8px 30px;overflow-y:auto}
.drawer__link{display:flex;align-items:center;justify-content:space-between;padding:13px 12px;border-radius:10px;font-weight:600}
.drawer__link:hover{background:var(--bg-soft)}
.drawer__sep{margin:10px 12px 6px;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2);font-weight:700}
.overlay{position:fixed;inset:0;background:rgba(11,12,14,.45);z-index:80;opacity:0;visibility:hidden;transition:opacity .2s}
.overlay.is-open{opacity:1;visibility:visible}

/* ---------- Seções ---------- */
.section{padding:56px 0}
.section--soft{background:var(--bg-soft)}
.section--tight{padding:38px 0}
.section__head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:26px}
.section__title{font-size:clamp(22px,3vw,30px)}
.section__sub{color:var(--muted);margin-top:7px;font-size:15.5px;max-width:62ch}
.section__link{font-weight:650;color:var(--ink);display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font-size:15px}
.section__link:hover{color:var(--accent)}
.eyebrow{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:750;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:12px}

/* ---------- Hero ---------- */
.hero{border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fff 0%,var(--bg-soft) 100%);overflow:hidden}
.hero__grid{display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center;padding-block:64px}
.hero h1{font-size:clamp(30px,4.6vw,52px);letter-spacing:-.035em}
.hero__sub{margin-top:18px;font-size:clamp(16px,1.5vw,18.5px);color:var(--ink-2);max-width:52ch}
.hero__cta{display:flex;gap:12px;margin-top:28px;flex-wrap:wrap}
.hero__stats{display:flex;gap:30px;margin-top:36px;padding-top:26px;border-top:1px solid var(--line-2);flex-wrap:wrap}
.hero__stat b{display:block;font-size:22px;font-weight:800}
.hero__stat span{font-size:13.5px;color:var(--muted)}
.hero__visual{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto auto;gap:14px}
.hero__tile{border-radius:var(--radius-lg);overflow:hidden;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm);aspect-ratio:1/1}
.hero__tile img{width:100%;height:100%;object-fit:cover}

/* ---------- Cards de categoria ---------- */
.cat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.cat-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;transition:border-color .15s,transform .15s,box-shadow .15s}
.cat-card:hover{border-color:var(--line-2);transform:translateY(-3px);box-shadow:var(--shadow)}
.cat-card__media{aspect-ratio:16/10;background:var(--bg-soft-2);overflow:hidden}
.cat-card__media img{width:100%;height:100%;object-fit:cover}
.cat-card__body{padding:16px 17px 18px;display:flex;flex-direction:column;flex:1}
.cat-card__body h3{font-size:17px}
.cat-card__body p{color:var(--muted);font-size:14px;margin-top:6px;flex:1}
.cat-card__foot{display:flex;align-items:center;justify-content:space-between;margin-top:15px;font-size:13.5px}
.cat-card__count{color:var(--muted-2)}
.cat-card__go{font-weight:700;color:var(--accent);display:inline-flex;align-items:center;gap:5px}

/* ---------- Cards de produto ---------- */
.grid-products{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.card{position:relative;display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;transition:border-color .15s,transform .15s,box-shadow .15s}
.card:hover{border-color:var(--line-2);transform:translateY(-3px);box-shadow:var(--shadow)}
.card__media{position:relative;aspect-ratio:4/3;background:var(--bg-soft-2);overflow:hidden}
.card__media img{width:100%;height:100%;object-fit:cover;transition:transform .35s ease}
.card:hover .card__media img{transform:scale(1.04)}
.card__badges{position:absolute;top:10px;left:10px;display:flex;flex-direction:column;gap:6px;align-items:flex-start;z-index:2}
.tag{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:999px;font-size:11.5px;font-weight:750;letter-spacing:.02em;background:var(--ink);color:#fff;text-transform:uppercase}
/* O verde fica reservado ao selo de maior valor comercial. Os outros usam
   o grafite da marca, para a cor não perder força por repetição. */
.tag--best{background:var(--brand-green);color:var(--brand-graphite)}   /* 7,8:1 */
.tag--new{background:var(--brand-graphite);color:#fff}                  /* 16,6:1 */
.tag--off{background:var(--brand-graphite);color:var(--brand-green)}    /* 7,8:1 */
/* contorno tênue para os selos grafite não sumirem sobre fotos escuras */
.tag--new,.tag--off{box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}
.card__body{padding:14px 15px 16px;display:flex;flex-direction:column;flex:1}
.card__cat{font-size:11.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted-2);font-weight:700}
.card__title{font-size:15.5px;font-weight:700;margin-top:5px;line-height:1.32;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card__meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.chip{font-size:11.5px;padding:3px 8px;border-radius:6px;background:var(--bg-soft);color:var(--ink-2);border:1px solid var(--line);font-weight:600;white-space:nowrap}
.card__price{margin-top:auto;padding-top:13px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.price{font-size:19px;font-weight:800;letter-spacing:-.02em}
.price--old{font-size:13.5px;font-weight:500;color:var(--muted-2);text-decoration:line-through}
.price--off{font-size:12px;font-weight:750;color:var(--accent)}
.card__btn{margin-top:12px}
.card__link::after{content:"";position:absolute;inset:0;z-index:1}
.rating{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--muted);margin-top:8px}
.stars{display:inline-flex;gap:1px;color:var(--accent)}
.stars svg{width:14px;height:14px}

/* Lista */
.grid-products.is-list{grid-template-columns:1fr;gap:14px}
.is-list .card{flex-direction:row}
.is-list .card__media{width:230px;flex-shrink:0;aspect-ratio:4/3}
.is-list .card__body{padding:18px 20px}
.is-list .card__title{font-size:18px;-webkit-line-clamp:1}
.is-list .card__desc{display:block;color:var(--muted);font-size:14.5px;margin-top:8px;max-width:70ch}
.is-list .card__price{padding-top:14px}
.is-list .card__btn{margin-top:14px;align-self:flex-start;width:auto}
.card__desc{display:none}

/* Carrossel mobile */
.shelf{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}

/* ---------- Toolbar categoria ---------- */
.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 0 22px;border-bottom:1px solid var(--line);margin-bottom:26px}
.toolbar[hidden]{display:none}
.toolbar__count{color:var(--muted);font-size:14.5px}
.toolbar__spacer{flex:1}
.select{position:relative}
.select select{appearance:none;border:1px solid var(--line-2);background:#fff;border-radius:9px;padding:9px 34px 9px 13px;font-size:14.5px;font-weight:600;cursor:pointer}
.select::after{content:"";position:absolute;right:13px;top:50%;width:7px;height:7px;border-right:2px solid var(--ink-2);border-bottom:2px solid var(--ink-2);transform:translateY(-70%) rotate(45deg);pointer-events:none}
.viewtoggle{display:flex;border:1px solid var(--line-2);border-radius:9px;overflow:hidden}
.viewtoggle button{width:38px;height:38px;display:grid;place-items:center;border:0;background:#fff;cursor:pointer;color:var(--muted)}
.viewtoggle button.is-active{background:var(--ink);color:#fff}

.loadmore{display:flex;justify-content:center;margin-top:34px}
.card.is-hidden{display:none}

/* ---------- Breadcrumb ---------- */
.crumbs{display:flex;flex-wrap:wrap;gap:7px;align-items:center;font-size:13.5px;color:var(--muted);padding:16px 0}
.crumbs a:hover{color:var(--ink);text-decoration:underline}
.crumbs span[aria-current]{color:var(--ink-2);font-weight:600}

/* ---------- Página do produto ---------- */
.pdp{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:44px;padding-bottom:20px;align-items:start}
/* Item de grid nasce com min-width:auto, que impede a trilha de encolher
   abaixo do min-content do conteudo. No mobile a coluna vira 1fr, mas a
   regua de miniaturas mede 84px x N + gaps (com 5 fotos da 460px) e
   segurava a trilha nesse tamanho dentro de um container de 343px — todo
   o .pdp vazava junto, para a direita.
   O overflow-x:auto de .gallery__thumbs sozinho nao resolve: quem trava e
   o minimo automatico do ITEM do grid, um nivel acima. */
.pdp>*{min-width:0}
.gallery__main{position:relative;border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;background:var(--bg-soft-2);aspect-ratio:4/3;cursor:zoom-in}
.gallery__main img{width:100%;height:100%;object-fit:cover;transition:transform .2s ease}
.gallery__main.is-zoom img{transform:scale(2);transition:none}
.gallery__hint{position:absolute;right:10px;bottom:10px;background:rgba(11,12,14,.75);color:#fff;font-size:12px;padding:5px 10px;border-radius:999px;display:flex;gap:6px;align-items:center;pointer-events:none}
.hint-touch{display:none}
.gallery__thumbs{display:flex;gap:10px;margin-top:12px;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}
.thumb{position:relative;width:84px;height:84px;flex-shrink:0;border:2px solid var(--line);border-radius:10px;overflow:hidden;background:var(--bg-soft-2);cursor:pointer;padding:0}
.thumb.is-active{border-color:var(--ink)}
.thumb img{width:100%;height:100%;object-fit:cover}
.thumb__play{position:absolute;inset:0;display:grid;place-items:center;background:rgba(11,12,14,.45);color:#fff}

.pdp__title{font-size:clamp(23px,3vw,32px)}
.pdp__short{color:var(--ink-2);margin-top:12px;font-size:16px}
.pdp__facts{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.pricebox{border:1px solid var(--line);border-radius:var(--radius-lg);padding:20px;margin-top:22px;background:#fff}
.pricebox__row{display:flex;align-items:baseline;gap:11px;flex-wrap:wrap}
.pricebox .price{font-size:34px}
.pricebox__note{color:var(--muted);font-size:13.5px;margin-top:8px}
.pricebox__cta{margin-top:16px;display:flex;flex-direction:column;gap:10px}
.pricebox__cta .btn--primary{font-size:17.5px;padding:16px}

/* ---------- Upsell dentro da caixa de compra ----------
   Fica ABAIXO dos botoes do produto atual: primeiro a compra desta
   pagina, depois a oferta alternativa, cada uma com o seu botao.
   O separador acima existe para o bloco nao ser lido como continuacao
   da compra principal.
   O bloco so existe no DOM quando ha upsell configurado — sem oferta
   nao sobra espaco, nem borda, nem separador. */
.upsell{position:relative;margin-top:22px;border:1.5px solid var(--brand-green);border-radius:var(--radius);background:var(--brand-green-soft);padding:14px}
.upsell::before{content:"";position:absolute;left:0;right:0;top:-12px;height:1px;background:var(--line)}
.upsell__selo{display:inline-block;background:var(--brand-green);color:var(--brand-graphite);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;padding:4px 10px;border-radius:999px;margin-bottom:10px}
.upsell__corpo{display:flex;gap:12px;align-items:flex-start}
.upsell__img{width:64px;height:64px;border-radius:9px;object-fit:cover;flex:0 0 auto;background:#fff}
.upsell__txt{flex:1;min-width:0}
.upsell__titulo{display:block;font-size:15.5px;line-height:1.3;color:var(--ink)}
.upsell__desc{margin:5px 0 0;font-size:13.5px;color:var(--ink-2);line-height:1.45}
.upsell__preco{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;margin-top:9px}
.upsell__preco strong{font-size:23px;letter-spacing:-.02em;color:var(--ink)}
.upsell__de{font-size:14px;color:var(--muted);text-decoration:line-through}
.upsell__chip{font-size:12px;font-weight:650;color:var(--brand-green-ink);background:#fff;border:1px solid var(--brand-green);padding:3px 9px;border-radius:999px}
.upsell__btn{margin-top:13px}

@media (max-width:560px){
  .upsell{padding:12px}
  .upsell__img{width:52px;height:52px}
  .upsell__preco strong{font-size:20px}
}

/* ---------- Order bumps no checkout ----------
   Oferta adicional, nao meio de pagamento: por isso o cartao e sobrio,
   sem urgencia visual, e so ganha a borda verde quando marcado.
   O bloco inteiro so existe no DOM quando ha oferta ativa. */
.bumps{border:1px solid var(--line);border-radius:var(--radius-lg);background:#fff;padding:16px}
.bumps__titulo{font-size:14.5px;font-weight:750;color:var(--ink);margin-bottom:12px}
.bumps__lista{display:flex;flex-direction:column;gap:10px}

.bump-item{display:flex;align-items:flex-start;gap:11px;border:1.5px solid var(--line-2);border-radius:var(--radius);padding:12px;cursor:pointer;background:var(--bg-soft);transition:border-color .15s,background .15s}
.bump-item:hover{border-color:var(--brand-green)}
.bump-item:has(.bump-item__check:checked),
.bump-item.is-marcado{border-color:var(--brand-green);background:var(--brand-green-soft)}
.bump-item__check{width:20px;height:20px;flex:0 0 auto;margin-top:2px;accent-color:var(--brand-green);cursor:pointer}
.bump-item__img{width:52px;height:52px;border-radius:8px;object-fit:cover;flex:0 0 auto;background:#fff}
.bump-item__txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.bump-item__selo{align-self:flex-start;background:var(--brand-green);color:var(--brand-graphite);font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;padding:3px 8px;border-radius:999px}
.bump-item__nome{font-size:14.5px;font-weight:700;color:var(--ink);line-height:1.3}
.bump-item__desc{font-size:13px;color:var(--ink-2);line-height:1.4}
.bump-item__prod{font-size:12.5px;color:var(--muted)}
.bump-item__preco{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-top:3px}
.bump-item__preco b{font-size:17px;color:var(--brand-green-ink)}
.bump-item__de{font-size:12.5px;color:var(--muted);text-decoration:line-through}
.bump-item__chip{font-size:11.5px;color:var(--muted);border:1px solid var(--line-2);padding:2px 7px;border-radius:999px}

.bump-total{margin-top:14px;padding-top:13px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:5px}
.bump-total__linha{display:flex;justify-content:space-between;gap:12px;font-size:13.5px;color:var(--ink-2)}
.bump-total__soma{display:flex;justify-content:space-between;gap:12px;align-items:baseline;font-size:15px;font-weight:750;color:var(--ink);margin-top:4px;padding-top:9px;border-top:1px dashed var(--line-2)}
.bump-total__soma b{font-size:21px;letter-spacing:-.02em}

@media (max-width:560px){
  .bumps{padding:13px}
  .bump-item{padding:10px;gap:9px}
  .bump-item__img{width:44px;height:44px}
  .bump-total__soma b{font-size:19px}
}
.trust{display:flex;flex-direction:column;gap:9px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.trust li{display:flex;align-items:flex-start;gap:9px;font-size:14px;color:var(--ink-2)}
.trust svg{flex-shrink:0;color:var(--ok);margin-top:2px}

.specs{display:grid;grid-template-columns:repeat(2,1fr);gap:0 40px;margin-top:14px}
.spec{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--line);font-size:14.5px}
.spec dt{color:var(--muted);flex-shrink:0}
.spec dd{margin:0;font-weight:650;text-align:right}

.deliver{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-top:8px}
.deliver__item{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px 16px}
.deliver__item svg{color:var(--accent);margin-bottom:10px}
.deliver__item b{display:block;font-size:15px}
.deliver__item span{color:var(--muted);font-size:13.5px}

.prose{max-width:78ch;color:var(--ink-2);font-size:15.5px}
.prose p+p{margin-top:14px}
.prose h3{margin:26px 0 10px;font-size:19px;color:var(--ink)}
.prose ul{margin:12px 0;padding-left:0}
.prose li{position:relative;padding-left:24px;margin-bottom:8px}
.prose li::before{content:"";position:absolute;left:6px;top:9px;width:6px;height:6px;border-radius:2px;background:var(--accent)}

/* Avaliações */
.reviews{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.review{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px}
.review__head{display:flex;align-items:center;gap:11px}
.review__avatar{width:40px;height:40px;border-radius:50%;background:var(--bg-soft-2);display:grid;place-items:center;font-weight:750;color:var(--ink-2);overflow:hidden;flex-shrink:0}
.review__avatar img{width:100%;height:100%;object-fit:cover}
.review__name{font-weight:700;font-size:14.5px}
.review__date{color:var(--muted-2);font-size:12.5px}
.review p{margin-top:12px;font-size:14.5px;color:var(--ink-2)}
.empty-state{border:1px dashed var(--line-2);border-radius:var(--radius-lg);padding:34px 24px;text-align:center;color:var(--muted);background:#fff}
.empty-state b{display:block;color:var(--ink);font-size:17px;margin-bottom:7px}

/* Barra fixa mobile */
.buybar{position:fixed;left:0;right:0;bottom:0;z-index:70;background:rgba(255,255,255,.97);backdrop-filter:blur(8px);border-top:1px solid var(--line);padding:10px 14px calc(10px + env(safe-area-inset-bottom));display:none;gap:12px;align-items:center;box-shadow:0 -4px 20px rgba(11,12,14,.07)}
.buybar__price b{display:block;font-size:19px;font-weight:800;line-height:1.1}
.buybar__price span{font-size:12px;color:var(--muted)}
.buybar .btn{flex:1}

/* ---------- Benefícios / CTA / Newsletter ---------- */
.benefits{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.benefit{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);padding:24px 22px}
.benefit__icon{width:44px;height:44px;border-radius:11px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;margin-bottom:14px}
.benefit h3{font-size:16.5px}
.benefit p{color:var(--muted);font-size:14.5px;margin-top:7px}

.cta-band{background:var(--ink);color:#fff;border-radius:var(--radius-lg);padding:48px;display:grid;grid-template-columns:1.2fr .8fr;gap:36px;align-items:center;overflow:hidden;position:relative}
.cta-band h2{font-size:clamp(24px,3.2vw,34px)}
.cta-band p{color:#bcbfb7;margin-top:14px;font-size:16px;max-width:52ch}
.cta-band .btn{margin-top:24px}
.cta-band__art{opacity:.9}

.newsletter{background:var(--bg-soft);border:1px solid var(--line);border-radius:var(--radius-lg);padding:36px;display:grid;grid-template-columns:1fr auto;gap:28px;align-items:center}
.newsletter h2{font-size:23px}
.newsletter p{color:var(--muted);margin-top:8px;max-width:50ch;font-size:15px}
.form-inline{display:flex;gap:10px;flex-wrap:wrap}
.input{height:48px;border:1px solid var(--line-2);border-radius:10px;padding:0 14px;background:#fff;min-width:260px;font-size:15px}
.input:focus{outline:none;border-color:var(--ink)}
.form-msg{font-size:13.5px;margin-top:9px;color:var(--ok);display:none}
.form-msg.is-visible{display:block}
.form-msg.is-error{color:#d93025}

/* ---------- Acordeão ---------- */
.accordion{border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;background:#fff;max-width:900px}
.accordion details{border-bottom:1px solid var(--line)}
.accordion details:last-child{border-bottom:0}
.accordion summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px;cursor:pointer;font-weight:650;font-size:16px;list-style:none}
.accordion summary::-webkit-details-marker{display:none}
.accordion summary::after{content:"";width:9px;height:9px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);transition:transform .2s;flex-shrink:0;margin-top:-4px}
.accordion details[open] summary::after{transform:rotate(-135deg);margin-top:2px}
.accordion details[open] summary{color:var(--accent)}
.accordion__content{padding:0 20px 20px;color:var(--ink-2);font-size:15px;max-width:80ch}

/* ---------- Formulários / conta ---------- */
.form-grid{display:grid;gap:16px;max-width:560px}
.field label{display:block;font-size:14px;font-weight:650;margin-bottom:6px}
.field .input,.field textarea,.field select{width:100%}
.field textarea{border:1px solid var(--line-2);border-radius:10px;padding:12px 14px;min-height:140px;background:#fff;font-size:15px;resize:vertical}
.field textarea:focus{outline:none;border-color:var(--ink)}
.field small{color:var(--muted);font-size:13px}
.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);padding:26px}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}
.two-col--cart{grid-template-columns:minmax(0,1.6fr) minmax(0,.9fr);padding-bottom:40px}
.contact-list li{display:flex;gap:12px;align-items:flex-start;padding:14px 0;border-bottom:1px solid var(--line)}
.contact-list li:last-child{border-bottom:0}
.contact-list svg{color:var(--accent);flex-shrink:0;margin-top:3px}
.contact-list b{display:block}
.contact-list span{color:var(--muted);font-size:14.5px}

/* ---------- Carrinho ---------- */
.cart-row{display:flex;gap:16px;align-items:center;padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;margin-bottom:12px}
.cart-row img{width:92px;height:70px;object-fit:cover;border-radius:8px;background:var(--bg-soft-2);flex-shrink:0}
.cart-row__info{flex:1;min-width:0}
.cart-row__info b{display:block;font-size:15.5px}
.cart-row__info small{color:var(--muted)}
.cart-row__price{font-weight:750;white-space:nowrap}
.cart-remove{border:0;background:none;color:var(--muted);cursor:pointer;padding:6px;border-radius:6px}
.cart-remove:hover{color:#d93025;background:var(--bg-soft)}
.summary{position:sticky;top:calc(var(--sticky-h) + 16px)}
.summary__line{display:flex;justify-content:space-between;padding:9px 0;font-size:15px}
.summary__total{display:flex;justify-content:space-between;padding:14px 0 4px;border-top:1px solid var(--line);margin-top:8px;font-size:19px;font-weight:800}

/* ---------- Footer ---------- */
.footer{background:var(--ink);color:#c6cac2;margin-top:70px;padding:56px 0 0}
.footer a{color:#c6cac2}
.footer a:hover{color:#fff}
.footer__grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr 1fr;gap:36px}
.footer__brand .logo{color:#fff;margin-bottom:14px}
.footer__brand p{font-size:14.5px;max-width:34ch;line-height:1.6}
.footer h4{color:#fff;font-size:14px;text-transform:uppercase;letter-spacing:.08em;margin-bottom:14px}
.footer li{margin-bottom:9px;font-size:14.5px}
.social{display:flex;gap:10px;margin-top:18px}
.social a{width:38px;height:38px;border-radius:10px;border:1px solid #3a3835;display:grid;place-items:center;transition:background .15s,color .15s,border-color .15s}
.social a:hover{background:var(--brand-green);color:var(--brand-graphite);border-color:var(--brand-green)}
.footer__bottom{margin-top:44px;border-top:1px solid #34322f;padding:22px 0;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:13.5px;color:#949790}

/* ---------- Diversos ---------- */
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:var(--ink);color:#fff;padding:13px 20px;border-radius:12px;font-size:14.5px;font-weight:600;box-shadow:var(--shadow-lg);opacity:0;visibility:hidden;transition:.22s;z-index:120;max-width:90vw;text-align:center}
.toast.is-visible{opacity:1;visibility:visible;transform:translate(-50%,0)}
.lightbox{position:fixed;inset:0;background:rgba(11,12,14,.92);z-index:130;display:none;align-items:center;justify-content:center;padding:24px}
.lightbox.is-open{display:flex}
.lightbox img,.lightbox video{max-width:min(1100px,94vw);max-height:88vh;border-radius:12px;width:auto}
.lightbox__close{position:absolute;top:18px;right:18px;width:44px;height:44px;border-radius:12px;border:0;background:rgba(255,255,255,.14);color:#fff;cursor:pointer;display:grid;place-items:center}
.page-head{padding:26px 0 8px}
.page-head h1{font-size:clamp(26px,4vw,40px)}
.page-head p{color:var(--muted);margin-top:12px;max-width:70ch;font-size:16px}
.ph-note{position:absolute;left:10px;bottom:10px;background:rgba(11,12,14,.72);color:#fff;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;padding:4px 8px;border-radius:6px;font-weight:700;z-index:2;pointer-events:none}

/* ---------- Responsivo ---------- */
@media (max-width:1100px){
  .grid-products,.cat-grid,.benefits{grid-template-columns:repeat(3,1fr)}
  /* Prateleiras viram carrossel horizontal antes de sobrar card órfão */
  .shelf{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:14px;padding-bottom:8px;margin-inline:-16px;padding-inline:16px;scrollbar-width:none}
  .shelf::-webkit-scrollbar{display:none}
  .shelf>*{flex:0 0 300px;scroll-snap-align:start}
  .deliver{grid-template-columns:repeat(3,1fr)}
  .footer__grid{grid-template-columns:1.4fr 1fr 1fr;row-gap:34px}
}
@media (max-width:980px){
  .nav{display:none}
  .iconbtn.iconbtn--menu{display:grid}
  .hero__grid{grid-template-columns:1fr;gap:34px;padding-block:38px}
  .hero__visual{max-width:520px}
  .pdp{grid-template-columns:1fr;gap:28px}
  .cta-band{grid-template-columns:1fr;padding:34px}
  .cta-band__art{display:none}
  .newsletter{grid-template-columns:1fr;padding:26px}
  .two-col,.two-col--cart{grid-template-columns:1fr}
  .summary{position:static}
  .specs{grid-template-columns:1fr;gap:0}
  /* a barra só ocupa espaço quando está realmente visível */
  .buybar.is-visible{display:flex}
  body.buybar-on{padding-bottom:82px}
  .hint-desk{display:none}
  .hint-touch{display:inline}
  .gallery__main{cursor:pointer}
}
@media (max-width:820px){
  .header__row .searchbar{display:none}
  .header__row{gap:10px}
  .mobile-search{display:block;padding-block:0 12px}
  .mobile-search .searchbar{max-width:none}
  .reviews{grid-template-columns:1fr 1fr}
}
@media (max-width:700px){
  .section{padding:40px 0}
  .grid-products,.cat-grid,.benefits{grid-template-columns:repeat(2,1fr);gap:12px}
  .deliver{grid-template-columns:repeat(2,1fr)}
  .card__body{padding:12px 12px 14px}
  .card__title{font-size:14px}
  .price{font-size:17px}
  .card__btn{font-size:14px;padding:10px 12px}
  .section__head{flex-direction:column;align-items:flex-start;gap:10px}
  .footer__grid{grid-template-columns:1fr 1fr}
  .reviews{grid-template-columns:1fr}
  .is-list .card{flex-direction:column}
  .is-list .card__media{width:100%}
  .is-list .card__desc{display:none}
  .hero__stats{gap:20px}
  .shelf{gap:12px}
  .shelf>*{flex:0 0 71%}
  .cta-band{padding:26px}
  .deliver__item{padding:14px}
}
@media (max-width:640px){
  .topbar__long{display:none}
  .topbar{font-size:12.5px}
}
@media (max-width:560px){
  .cart-row{flex-wrap:wrap;gap:12px}
  .cart-row img{width:74px;height:58px}
  .cart-row__info{flex:1 1 60%}
  .cart-row__price{margin-left:auto}
}
@media (max-width:420px){
  .grid-products,.cat-grid{gap:10px}
  .btn--lg{padding:14px 18px;font-size:15.5px}
}

@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}

@media print{.header,.footer,.buybar,.topbar{display:none}}
