/* =========================================================
   VIVA NATURAL — Folha de estilo principal
   Paleta inspirada na loja física:
   verde escuro • creme/off-white • madeira clara
   ========================================================= */

:root {
  /* Verdes */
  --verde-900: #12301F;
  --verde-800: #1A4230;
  --verde-700: #1E4B36;   /* verde principal do logo */
  --verde-600: #2A6247;
  --verde-400: #6E9B80;

  /* Creme / off-white */
  --creme-100: #FDFBF6;
  --creme-200: #F7F1E5;
  --creme-300: #EFE6D5;

  /* Madeira clara */
  --madeira-300: #E3D2B8;
  --madeira-400: #D3BC98;
  --madeira-500: #B99B69;

  /* Texto */
  --tinta: #23261F;
  --tinta-suave: #55594E;

  --whatsapp: #25D366;

  --fonte-display: "Fraunces", Georgia, "Times New Roman", serif;
  --fonte-corpo: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

  --raio: 14px;
  --raio-g: 24px;
  --sombra: 0 2px 8px rgba(18, 48, 31, .06), 0 12px 32px rgba(18, 48, 31, .07);
  --sombra-alta: 0 8px 20px rgba(18, 48, 31, .1), 0 24px 56px rgba(18, 48, 31, .12);
  --container: 1180px;
  --transicao: 240ms cubic-bezier(.2, .7, .3, 1);
}

/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }

html { scroll-behavior: smooth; scroll-padding-top: 90px; }

body {
  font-family: var(--fonte-corpo);
  font-size: 1rem;
  line-height: 1.65;
  color: var(--tinta);
  background: var(--creme-100);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

img, svg { display: block; max-width: 100%; }

/* OBRIGATÓRIO: o atributo hidden vem da folha do navegador e perde para
   qualquer regra nossa com display (.gaveta{display:flex} etc.), o que
   deixaria o elemento visível mesmo "escondido". O JS liga e desliga
   várias coisas por hidden — carrinho, busca, contadores. */
[hidden] { display: none !important; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
ul { list-style: none; padding: 0; }

:focus-visible {
  outline: 3px solid var(--verde-600);
  outline-offset: 3px;
  border-radius: 4px;
}

/* ---------- Tipografia ---------- */
h1, h2, h3, h4 {
  font-family: var(--fonte-display);
  font-weight: 600;
  line-height: 1.12;
  letter-spacing: -.015em;
  color: var(--verde-900);
}

.secao__rotulo {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--verde-600);
  margin-bottom: 1rem;
}
.secao__rotulo::before {
  content: "";
  width: 26px;
  height: 2px;
  background: var(--madeira-400);
}

.secao__titulo {
  font-size: clamp(1.9rem, 4.2vw, 3rem);
  max-width: 22ch;
}

.secao__texto {
  font-size: 1.06rem;
  color: var(--tinta-suave);
  max-width: 58ch;
  margin-top: 1.1rem;
}

/* ---------- Layout ---------- */
.container {
  width: min(100% - 2.5rem, var(--container));
  margin-inline: auto;
}

.secao { padding: clamp(4rem, 9vw, 7.5rem) 0; }
.secao--creme { background: var(--creme-200); }
.secao--verde { background: var(--verde-800); color: var(--creme-200); }
.secao--verde h2, .secao--verde h3 { color: var(--creme-100); }

.secao__cabecalho { margin-bottom: 3rem; }

/* ---------- Botões ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .55rem;
  padding: .85rem 1.6rem;
  border-radius: 999px;
  font-weight: 600;
  font-size: .95rem;
  letter-spacing: .01em;
  cursor: pointer;
  transition: transform var(--transicao), box-shadow var(--transicao),
              background-color var(--transicao), color var(--transicao);
  white-space: nowrap;
}
.btn:hover { transform: translateY(-2px); }
.btn:active { transform: translateY(0); }

.btn--verde { background: var(--verde-700); color: var(--creme-100); }
.btn--verde:hover { background: var(--verde-600); box-shadow: 0 10px 24px rgba(30, 75, 54, .3); }

.btn--madeira { background: var(--madeira-400); color: var(--verde-900); }
.btn--madeira:hover { background: var(--madeira-300); box-shadow: 0 10px 24px rgba(185, 155, 105, .35); }

.btn--contorno {
  border: 1.5px solid currentColor;
  color: var(--creme-100);
}
.btn--contorno:hover { background: rgba(253, 251, 246, .14); }

.btn--zap { background: var(--whatsapp); color: #06331A; }
.btn--zap:hover { background: #1FBF5B; box-shadow: 0 10px 24px rgba(37, 211, 102, .35); }

.btn--bloco { width: 100%; }
.btn--pequeno { padding: .6rem 1rem; font-size: .85rem; }

/* =========================================================
   CABEÇALHO
   ========================================================= */
.cabecalho {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 100;
  padding: 1rem 0;
  transition: padding var(--transicao);
}

/* O fundo desfocado fica num pseudo-elemento de propósito:
   backdrop-filter no próprio .cabecalho criaria um containing block
   e prenderia o menu mobile (position:fixed) dentro do header. */
.cabecalho::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  opacity: 0;
  background: rgba(253, 251, 246, .93);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 1px 0 rgba(18, 48, 31, .08);
  transition: opacity var(--transicao);
}
.cabecalho--fixo { padding: .6rem 0; }
.cabecalho--fixo::before { opacity: 1; }

.cabecalho__interno {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
}

.marca { display: flex; align-items: center; gap: .75rem; }
.marca__selo { width: 56px; height: 56px; flex: none; transition: width var(--transicao), height var(--transicao); border-radius: 50%; }
.cabecalho--fixo .marca__selo { width: 48px; height: 48px; }

.marca__texto { line-height: 1.05; }
.marca__nome {
  display: block;
  font-family: var(--fonte-display);
  font-size: 1.12rem;
  font-weight: 600;
  letter-spacing: .06em;
  color: var(--creme-100);
  transition: color var(--transicao);
}
.marca__sub {
  display: block;
  font-size: .66rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: rgba(253, 251, 246, .72);
  transition: color var(--transicao);
}
.cabecalho--fixo .marca__nome { color: var(--verde-800); }
.cabecalho--fixo .marca__sub { color: var(--verde-600); }

.nav { display: flex; align-items: center; gap: 2rem; }
.nav__lista { display: flex; gap: 1.85rem; }
.nav__link {
  position: relative;
  font-size: .93rem;
  font-weight: 500;
  color: rgba(253, 251, 246, .9);
  padding: .25rem 0;
  transition: color var(--transicao);
}
.nav__link::after {
  content: "";
  position: absolute;
  left: 0; bottom: -2px;
  width: 100%; height: 2px;
  background: var(--madeira-400);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--transicao);
}
.nav__link:hover::after, .nav__link[aria-current="true"]::after { transform: scaleX(1); }
.cabecalho--fixo .nav__link { color: var(--tinta); }
.cabecalho--fixo .nav__link:hover { color: var(--verde-700); }

.cabecalho__zap { flex: none; }
/* O botão dentro do nav só serve ao menu mobile */
.nav > .btn { display: none; }

/* Botão hambúrguer */
.menu-btn {
  display: none;
  width: 46px; height: 46px;
  border-radius: 50%;
  align-items: center;
  justify-content: center;
  background: rgba(253, 251, 246, .16);
  color: var(--creme-100);
}
.cabecalho--fixo .menu-btn { background: var(--creme-300); color: var(--verde-800); }
.menu-btn__barra {
  display: block;
  width: 20px; height: 2px;
  background: currentColor;
  border-radius: 2px;
  position: relative;
  transition: background-color 120ms;
}
.menu-btn__barra::before, .menu-btn__barra::after {
  content: "";
  position: absolute; left: 0;
  width: 20px; height: 2px;
  background: currentColor;
  border-radius: 2px;
  transition: transform var(--transicao), top var(--transicao);
}
.menu-btn__barra::before { top: -6px; }
.menu-btn__barra::after { top: 6px; }
.menu-btn[aria-expanded="true"] .menu-btn__barra { background: transparent; }
.menu-btn[aria-expanded="true"] .menu-btn__barra::before { top: 0; transform: rotate(45deg); }
.menu-btn[aria-expanded="true"] .menu-btn__barra::after { top: 0; transform: rotate(-45deg); }

/* =========================================================
   HERO
   ========================================================= */
.hero {
  position: relative;
  min-height: min(94vh, 820px);
  display: flex;
  align-items: center;
  padding: 9rem 0 4rem;
  overflow: hidden;
}
.hero__fundo { position: absolute; inset: 0; z-index: 0; }
.hero__fundo img {
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center 42%;
}
.hero__veu {
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(18, 48, 31, .88) 0%, rgba(18, 48, 31, .72) 45%, rgba(18, 48, 31, .92) 100%),
    linear-gradient(100deg, rgba(18, 48, 31, .9) 12%, rgba(18, 48, 31, .58) 58%, rgba(18, 48, 31, .3) 100%);
}

.hero__conteudo { position: relative; z-index: 1; max-width: 46rem; }

.hero__tag {
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  padding: .45rem 1rem .45rem .6rem;
  border-radius: 999px;
  background: rgba(253, 251, 246, .13);
  border: 1px solid rgba(227, 210, 184, .3);
  color: var(--creme-200);
  font-size: .8rem;
  letter-spacing: .06em;
  margin-bottom: 1.6rem;
  backdrop-filter: blur(6px);
}
.hero__tag-ponto {
  width: 7px; height: 7px;
  border-radius: 50%;
  background: var(--madeira-400);
  box-shadow: 0 0 0 4px rgba(211, 188, 152, .25);
}

.hero__titulo {
  font-size: clamp(2.6rem, 7vw, 4.6rem);
  color: var(--creme-100);
  letter-spacing: -.025em;
}
.hero__titulo em {
  font-style: italic;
  color: var(--madeira-300);
}

.hero__texto {
  margin-top: 1.4rem;
  font-size: clamp(1.02rem, 2vw, 1.2rem);
  color: rgba(247, 241, 229, .88);
  max-width: 34rem;
}

.hero__acoes {
  display: flex;
  flex-wrap: wrap;
  gap: .85rem;
  margin-top: 2.4rem;
}

.hero__provas {
  display: flex;
  flex-wrap: wrap;
  gap: 2.4rem;
  margin-top: 3.5rem;
  padding-top: 2rem;
  border-top: 1px solid rgba(227, 210, 184, .22);
}
.prova__numero {
  display: block;
  font-family: var(--fonte-display);
  font-size: 1.7rem;
  color: var(--madeira-300);
  line-height: 1.1;
}
.prova__texto {
  font-size: .84rem;
  color: rgba(247, 241, 229, .72);
  letter-spacing: .02em;
}

/* =========================================================
   FAIXA DE PILARES
   ========================================================= */
.pilares {
  background: var(--madeira-300);
  padding: 2.2rem 0;
}
.pilares__grade {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 1.5rem 2rem;
}
.pilar { display: flex; align-items: flex-start; gap: .9rem; }
.pilar__icone { flex: none; color: var(--verde-700); margin-top: 2px; }
.pilar__titulo {
  font-family: var(--fonte-corpo);
  font-size: .95rem;
  font-weight: 700;
  color: var(--verde-900);
  letter-spacing: .01em;
}
.pilar__texto { font-size: .86rem; color: #4A452F; line-height: 1.5; }

/* =========================================================
   CATÁLOGO
   ========================================================= */
.catalogo__topo {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 2rem;
  margin-bottom: 2.5rem;
}

/* ---------- Atalhos circulares de categoria ---------- */
.atalhos {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1.2rem;
  margin-bottom: 2.5rem;
}
.atalho {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .8rem;
  padding: .5rem;
  border-radius: var(--raio-g);
  text-align: center;
  transition: transform var(--transicao);
}
.atalho:hover { transform: translateY(-4px); }

.atalho__circulo {
  position: relative;
  width: clamp(84px, 11vw, 116px);
  aspect-ratio: 1;
  border-radius: 50%;
  display: grid;
  place-items: center;
  color: var(--verde-700);
  background:
    repeating-linear-gradient(96deg, rgba(255, 255, 255, .18) 0 3px, transparent 3px 14px),
    linear-gradient(150deg, var(--madeira-300), var(--madeira-400));
  border: 3px solid var(--creme-100);
  box-shadow: var(--sombra);
  transition: box-shadow var(--transicao), border-color var(--transicao);
}
.atalho:hover .atalho__circulo {
  box-shadow: var(--sombra-alta);
  border-color: var(--madeira-300);
}
/* Tamanho absoluto de propósito: em % o SVG cai no tamanho intrínseco
   padrão (300x150) e estica o círculo, quebrando o aspect-ratio. */
.atalho__circulo svg {
  width: clamp(36px, 4.8vw, 50px);
  height: clamp(36px, 4.8vw, 50px);
  opacity: .72;
}

.atalho__nome {
  font-family: var(--fonte-display);
  font-size: 1.02rem;
  font-weight: 600;
  color: var(--verde-800);
  line-height: 1.2;
}
.atalho__contagem {
  display: block;
  font-family: var(--fonte-corpo);
  font-size: .76rem;
  font-weight: 400;
  color: var(--tinta-suave);
  margin-top: .15rem;
}

/* ---------- Busca ---------- */
.busca { margin-bottom: 3rem; }
.busca__campo {
  display: flex;
  align-items: center;
  gap: .75rem;
  max-width: 30rem;
  padding: .85rem 1.15rem;
  border-radius: 999px;
  background: var(--creme-100);
  border: 1.5px solid var(--creme-300);
  color: var(--tinta-suave);
  transition: border-color var(--transicao), box-shadow var(--transicao);
}
.busca__campo:focus-within {
  border-color: var(--verde-600);
  box-shadow: 0 0 0 4px rgba(42, 98, 71, .12);
}
.busca__campo input {
  flex: 1;
  min-width: 0;
  border: 0;
  outline: 0;
  background: none;
  font: inherit;
  font-size: .96rem;
  color: var(--tinta);
}
.busca__campo input::placeholder { color: var(--tinta-suave); opacity: .8; }
.busca__campo input::-webkit-search-cancel-button { display: none; }

.busca__limpar {
  flex: none;
  width: 26px; height: 26px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--creme-300);
  color: var(--verde-800);
  transition: background-color var(--transicao);
}
.busca__limpar:hover { background: var(--madeira-300); }

.busca__resultado {
  margin-top: .85rem;
  font-size: .88rem;
  color: var(--tinta-suave);
  min-height: 1.2em;
}
.busca__resultado strong { color: var(--verde-800); }

/* ---------- Seções por categoria + carrossel ---------- */
.categoria { margin-bottom: 3.5rem; scroll-margin-top: 110px; }
.categoria:last-child { margin-bottom: 0; }

.categoria__topo {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1.5rem;
  padding-bottom: 1rem;
  margin-bottom: 1.6rem;
  border-bottom: 1px solid var(--creme-300);
}
.categoria__titulo {
  display: flex;
  align-items: center;
  gap: .75rem;
  font-size: clamp(1.35rem, 2.6vw, 1.75rem);
}
.categoria__titulo svg { color: var(--madeira-500); flex: none; }
.categoria__contagem {
  font-family: var(--fonte-corpo);
  font-size: .8rem;
  font-weight: 500;
  color: var(--tinta-suave);
  letter-spacing: .04em;
}

.setas { display: flex; gap: .5rem; flex: none; }
.seta {
  width: 40px; height: 40px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--creme-100);
  border: 1.5px solid var(--creme-300);
  color: var(--verde-800);
  transition: background-color var(--transicao), border-color var(--transicao),
              opacity var(--transicao), color var(--transicao);
}
.seta:hover:not(:disabled) {
  background: var(--verde-700);
  border-color: var(--verde-700);
  color: var(--creme-100);
}
.seta:disabled { opacity: .3; cursor: default; }

/* Flexbox com largura em vw de propósito: largura de card em % dentro de
   um container com overflow-x cria dependência circular de layout
   (coluna <-> container <-> barra de rolagem) e trava o navegador. */
.carrossel {
  display: flex;
  gap: 1.4rem;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;
  /* respiro nas bordas para a sombra do card não ser cortada */
  padding: .5rem .3rem 1.4rem;
  margin: -.5rem -.3rem 0;
}
.carrossel::-webkit-scrollbar { display: none; }

.carrossel > .produto {
  flex: 0 0 clamp(244px, 25vw, 292px);
  scroll-snap-align: start;
}

.grade-produtos {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(272px, 1fr));
  gap: 1.6rem;
}

.produto {
  display: flex;
  flex-direction: column;
  background: var(--creme-100);
  border: 1px solid var(--creme-300);
  border-radius: var(--raio-g);
  overflow: hidden;
  transition: transform var(--transicao), box-shadow var(--transicao), border-color var(--transicao);
  animation: surgir 420ms cubic-bezier(.2, .7, .3, 1) backwards;
}
.produto:hover {
  transform: translateY(-4px);
  box-shadow: var(--sombra-alta);
  border-color: var(--madeira-300);
}

@keyframes surgir {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: translateY(0); }
}

.produto__midia {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--madeira-300);
}
.produto__midia img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 600ms cubic-bezier(.2, .7, .3, 1);
}
.produto:hover .produto__midia img { transform: scale(1.06); }

/* Placeholder de produto sem foto — textura de madeira + ícone da categoria */
.produto__marca-dagua {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  background:
    repeating-linear-gradient(96deg, rgba(255, 255, 255, .16) 0 3px, transparent 3px 14px),
    linear-gradient(150deg, var(--madeira-300), var(--madeira-400));
  color: var(--verde-700);
  opacity: .9;
}
.produto__marca-dagua svg { width: 58px; height: 58px; opacity: .55; }

.produto__etiqueta {
  position: absolute;
  top: .85rem; left: .85rem;
  padding: .3rem .7rem;
  border-radius: 999px;
  background: rgba(18, 48, 31, .82);
  color: var(--creme-200);
  font-size: .7rem;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  backdrop-filter: blur(4px);
}

.produto__corpo {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: 1.3rem 1.35rem 1.45rem;
}
.produto__nome {
  font-size: 1.16rem;
  margin-bottom: .45rem;
}
.produto__descricao {
  font-size: .89rem;
  color: var(--tinta-suave);
  line-height: 1.55;
  flex: 1;
}

.produto__preco {
  display: flex;
  align-items: baseline;
  gap: .4rem;
  margin: 1.1rem 0 1rem;
  padding-top: 1rem;
  border-top: 1px dashed var(--creme-300);
}
.produto__preco-rotulo {
  font-size: .72rem;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: var(--tinta-suave);
}
.produto__preco-valor {
  font-family: var(--fonte-display);
  font-size: 1.18rem;
  font-weight: 600;
  color: var(--verde-700);
}
.produto__preco-valor--consulte {
  font-size: .95rem;
  font-family: var(--fonte-corpo);
  font-weight: 600;
  color: var(--verde-600);
}
.produto__unidade { font-size: .78rem; color: var(--tinta-suave); }

.catalogo__aviso {
  margin-top: 2.75rem;
  padding: 1.15rem 1.4rem;
  border-radius: var(--raio);
  background: var(--creme-100);
  border: 1px dashed var(--madeira-400);
  font-size: .9rem;
  color: var(--tinta-suave);
  display: flex;
  gap: .8rem;
  align-items: flex-start;
}
.catalogo__aviso svg { flex: none; color: var(--verde-600); margin-top: 2px; }

/* =========================================================
   SOBRE
   ========================================================= */
.sobre__grade {
  display: grid;
  grid-template-columns: 1fr 1.05fr;
  gap: clamp(2.5rem, 6vw, 5rem);
  align-items: center;
}

.sobre__molduras {
  position: relative;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
}
.sobre__foto {
  /* É um <button> para poder abrir a foto ampliada pelo clique ou teclado */
  display: block;
  padding: 0;
  border: 0;
  background: none;
  cursor: zoom-in;
  border-radius: var(--raio-g);
  overflow: hidden;
  box-shadow: var(--sombra);
}
.sobre__foto img {
  width: 100%; height: 100%;
  object-fit: cover;
  /* Puxa o corte para cima: em foto de pessoa, o rosto fica no terço superior */
  object-position: center 22%;
  display: block;
  transition: transform 600ms cubic-bezier(.2, .7, .3, 1);
}
.sobre__foto:hover img { transform: scale(1.05); }
.sobre__foto:focus-visible { outline: 3px solid var(--verde-700); outline-offset: 3px; }

/* As três fotos de pessoa são retratos 3/4 — mesma proporção dos arquivos,
   então quase não há corte. A foto do salão é 16/9 e ocupa a linha inteira. */
.sobre__foto--retrato { aspect-ratio: 3 / 4; }
.sobre__foto--larga {
  grid-column: 1 / -1;
  aspect-ratio: 16 / 9;
}
.sobre__foto--larga img { object-position: center center; }
.sobre__selo {
  position: absolute;
  right: -14px; bottom: -18px;
  width: 116px; height: 116px;
  border-radius: 50%;
  background: var(--verde-700);
  color: var(--creme-200);
  display: grid;
  place-items: center;
  text-align: center;
  padding: .8rem;
  box-shadow: var(--sombra-alta);
  border: 5px solid var(--creme-100);
}
.sobre__selo span {
  font-family: var(--fonte-display);
  font-size: .78rem;
  line-height: 1.25;
  letter-spacing: .02em;
}

.sobre__paragrafo { margin-top: 1.15rem; color: var(--tinta-suave); }
.sobre__paragrafo strong { color: var(--verde-800); font-weight: 600; }

.sobre__citacao {
  margin: 2rem 0;
  padding: 1.1rem 0 1.1rem 1.5rem;
  border-left: 3px solid var(--madeira-400);
  font-family: var(--fonte-display);
  font-size: 1.22rem;
  font-style: italic;
  line-height: 1.45;
  color: var(--verde-800);
}
.sobre__assinatura {
  display: block;
  margin-top: .7rem;
  font-family: var(--fonte-corpo);
  font-style: normal;
  font-size: .85rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--tinta-suave);
}

.sobre__origens {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 1.2rem;
  margin-top: 2rem;
  padding-top: 1.8rem;
  border-top: 1px solid var(--creme-300);
}
.origem__titulo {
  font-family: var(--fonte-corpo);
  font-size: .88rem;
  font-weight: 700;
  color: var(--verde-800);
  margin-bottom: .2rem;
}
.origem__texto { font-size: .84rem; color: var(--tinta-suave); line-height: 1.5; }

/* =========================================================
   DEPOIMENTOS
   ========================================================= */
.depoimentos__grade {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.4rem;
  margin-top: 3rem;
}
.depoimento {
  background: rgba(253, 251, 246, .07);
  border: 1px solid rgba(227, 210, 184, .2);
  border-radius: var(--raio-g);
  padding: 1.8rem;
  display: flex;
  flex-direction: column;
}
.depoimento__estrelas { color: var(--madeira-400); letter-spacing: .18em; font-size: .95rem; margin-bottom: .9rem; }
.depoimento__texto {
  font-size: .96rem;
  color: rgba(247, 241, 229, .9);
  line-height: 1.6;
  flex: 1;
}
.depoimento__autor {
  margin-top: 1.3rem;
  padding-top: 1.1rem;
  border-top: 1px solid rgba(227, 210, 184, .2);
  font-size: .85rem;
  color: rgba(247, 241, 229, .65);
}
.depoimento__autor strong { display: block; color: var(--creme-100); font-weight: 600; font-size: .92rem; }

/* =========================================================
   BLOG
   ========================================================= */
.grade-blog {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 1.6rem;
}
.post {
  display: flex;
  flex-direction: column;
  background: var(--creme-100);
  border: 1px solid var(--creme-300);
  border-radius: var(--raio-g);
  padding: 1.9rem 1.7rem;
  transition: transform var(--transicao), box-shadow var(--transicao), border-color var(--transicao);
}
.post:hover {
  transform: translateY(-4px);
  box-shadow: var(--sombra-alta);
  border-color: var(--madeira-300);
}
.post__meta {
  display: flex;
  align-items: center;
  gap: .7rem;
  font-size: .74rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--verde-600);
  font-weight: 600;
  margin-bottom: 1rem;
}
.post__meta span:nth-child(2) { color: var(--madeira-500); }
.post__titulo { font-size: 1.28rem; margin-bottom: .7rem; }
.post__resumo { font-size: .91rem; color: var(--tinta-suave); line-height: 1.6; flex: 1; }
.post__link {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  margin-top: 1.4rem;
  font-size: .88rem;
  font-weight: 600;
  color: var(--verde-700);
}
.post__link svg { transition: transform var(--transicao); }
.post:hover .post__link svg { transform: translateX(4px); }

/* Painel de leitura do post */
.painel {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: none;
  padding: 1.5rem;
  align-items: center;
  justify-content: center;
}
.painel[open], .painel.aberto { display: flex; }
.painel__fundo {
  position: absolute; inset: 0;
  background: rgba(18, 48, 31, .55);
  backdrop-filter: blur(4px);
  animation: aparecer 200ms ease;
}
@keyframes aparecer { from { opacity: 0 } to { opacity: 1 } }

.painel__caixa {
  position: relative;
  width: min(100%, 720px);
  max-height: 88vh;
  overflow-y: auto;
  background: var(--creme-100);
  border-radius: var(--raio-g);
  padding: clamp(1.8rem, 4vw, 3rem);
  box-shadow: var(--sombra-alta);
  animation: subir 280ms cubic-bezier(.2, .7, .3, 1);
}
@keyframes subir { from { opacity: 0; transform: translateY(24px) } to { opacity: 1; transform: translateY(0) } }

.painel__fechar {
  position: absolute;
  top: 1rem; right: 1rem;
  width: 40px; height: 40px;
  border-radius: 50%;
  background: var(--creme-200);
  color: var(--verde-800);
  display: grid;
  place-items: center;
  transition: background-color var(--transicao);
}
.painel__fechar:hover { background: var(--creme-300); }

.painel__titulo { font-size: clamp(1.5rem, 3.5vw, 2rem); margin: .6rem 0 1.2rem; }
.painel__corpo p { color: var(--tinta-suave); margin-bottom: 1rem; }
.painel__corpo h4 { font-size: 1.1rem; margin: 1.6rem 0 .5rem; }
.painel__corpo ul { margin: 0 0 1rem; }
.painel__corpo li {
  position: relative;
  padding-left: 1.4rem;
  margin-bottom: .5rem;
  color: var(--tinta-suave);
}
.painel__corpo li::before {
  content: "";
  position: absolute;
  left: 0; top: .62em;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--madeira-400);
}
.painel__rodape {
  margin-top: 2rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--creme-300);
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  align-items: center;
  justify-content: space-between;
}
.painel__nota { font-size: .8rem; color: var(--tinta-suave); max-width: 34ch; }

/* =========================================================
   DROPDOWN DE BUSCA DA HOME
   ========================================================= */
.dropdown-busca {
  position: fixed;
  top: 90px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 150;
  width: min(100% - 2rem, 600px);
  max-height: calc(100vh - 120px);
  overflow-y: auto;
  background: var(--creme-100);
  border-radius: var(--raio-g);
  box-shadow: var(--sombra-alta);
  padding: 1.5rem;
  animation: aparecer 200ms ease;
}
.dropdown-busca[hidden] { display: none !important; }

.dropdown-busca__conteudo {
  display: flex;
  flex-direction: column;
  gap: 1.2rem;
}

.dropdown-busca__resultado {
  font-size: .95rem;
  color: var(--tinta-suave);
}
.dropdown-busca__resultado strong { color: var(--verde-800); }

.dropdown-busca__grade {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 1.2rem;
}

/* =========================================================
   LOCALIZAÇÃO
   ========================================================= */
.local__grade {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(2rem, 5vw, 4rem);
  align-items: start;
}

.local__cartoes { display: grid; gap: 1.1rem; }
.cartao {
  display: flex;
  gap: 1.1rem;
  padding: 1.5rem;
  background: var(--creme-100);
  border: 1px solid var(--creme-300);
  border-radius: var(--raio-g);
}
.cartao__icone {
  flex: none;
  width: 46px; height: 46px;
  border-radius: 12px;
  background: var(--creme-200);
  color: var(--verde-700);
  display: grid;
  place-items: center;
}
.cartao__titulo {
  font-family: var(--fonte-corpo);
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: var(--verde-600);
  margin-bottom: .35rem;
}
.cartao__conteudo { font-size: .96rem; color: var(--tinta); line-height: 1.55; }
.cartao__conteudo a:hover { color: var(--verde-700); text-decoration: underline; }

.horarios { display: grid; gap: .4rem; margin-top: .2rem; }
.horario {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  font-size: .93rem;
  padding: .3rem 0;
  border-bottom: 1px dashed var(--creme-300);
}
.horario:last-child { border-bottom: 0; }
.horario dt { color: var(--tinta-suave); }
.horario dd { font-weight: 600; color: var(--verde-800); font-variant-numeric: tabular-nums; }
.horario--fechado dd { color: var(--madeira-500); font-weight: 500; }

.aberto-agora {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  margin-top: .9rem;
  padding: .4rem .85rem;
  border-radius: 999px;
  font-size: .82rem;
  font-weight: 600;
  background: rgba(42, 98, 71, .1);
  color: var(--verde-700);
}
.aberto-agora__ponto {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--verde-600);
  animation: pulsar 2.2s ease-in-out infinite;
}
.aberto-agora--fechado { background: rgba(185, 155, 105, .16); color: #8A6E3C; }
.aberto-agora--fechado .aberto-agora__ponto { background: var(--madeira-500); animation: none; }
@keyframes pulsar {
  0%, 100% { box-shadow: 0 0 0 0 rgba(42, 98, 71, .45); }
  60% { box-shadow: 0 0 0 7px rgba(42, 98, 71, 0); }
}

.mapa {
  border-radius: var(--raio-g);
  overflow: hidden;
  border: 1px solid var(--creme-300);
  box-shadow: var(--sombra);
  min-height: 430px;
  height: 100%;
  background: var(--creme-200);
}
.mapa iframe { width: 100%; height: 100%; min-height: 430px; border: 0; display: block; }

/* =========================================================
   CHAMADA FINAL
   ========================================================= */
.chamada {
  position: relative;
  overflow: hidden;
  background: var(--verde-800);
  color: var(--creme-200);
  text-align: center;
  padding: clamp(3.5rem, 8vw, 6rem) 0;
}
.chamada::before, .chamada::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(211, 188, 152, .18), transparent 68%);
}
.chamada::before { width: 420px; height: 420px; top: -180px; left: -120px; }
.chamada::after { width: 520px; height: 520px; bottom: -260px; right: -140px; }
.chamada > .container { position: relative; z-index: 1; }
.chamada h2 { color: var(--creme-100); font-size: clamp(1.9rem, 4.5vw, 2.9rem); margin-inline: auto; }
.chamada p {
  margin: 1.1rem auto 2.2rem;
  max-width: 46ch;
  color: rgba(247, 241, 229, .82);
}
.chamada__acoes { display: flex; flex-wrap: wrap; gap: .85rem; justify-content: center; }

/* =========================================================
   RODAPÉ
   ========================================================= */
.rodape {
  background: var(--verde-900);
  color: rgba(247, 241, 229, .72);
  padding: 4rem 0 2rem;
  font-size: .92rem;
}
.rodape__grade {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr;
  gap: 2.5rem;
  padding-bottom: 2.5rem;
  border-bottom: 1px solid rgba(227, 210, 184, .16);
}
.rodape .marca__nome { color: var(--creme-100); }
.rodape .marca__sub { color: rgba(253, 251, 246, .6); }
.rodape__texto { margin-top: 1.2rem; max-width: 38ch; line-height: 1.65; }

.rodape__titulo {
  font-family: var(--fonte-corpo);
  font-size: .76rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--madeira-400);
  margin-bottom: 1.1rem;
}
.rodape__lista { display: grid; gap: .6rem; }
.rodape__lista a { transition: color var(--transicao); }
.rodape__lista a:hover { color: var(--creme-100); }

.rodape__social { display: flex; gap: .6rem; margin-top: 1.4rem; }
.social-btn {
  width: 40px; height: 40px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: rgba(253, 251, 246, .09);
  color: var(--creme-200);
  transition: background-color var(--transicao), transform var(--transicao);
}
.social-btn:hover { background: var(--madeira-400); color: var(--verde-900); transform: translateY(-2px); }

.rodape__base {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  justify-content: space-between;
  padding-top: 1.8rem;
  font-size: .82rem;
  color: rgba(247, 241, 229, .5);
}

/* =========================================================
   INSTAGRAM
   ========================================================= */
.insta__topo {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1.8rem;
  margin-bottom: 2.6rem;
}

.insta__grade {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: .9rem;
}

.insta__item {
  position: relative;
  display: block;
  aspect-ratio: 1;
  border-radius: var(--raio);
  overflow: hidden;
  background: var(--madeira-300);
  transition: transform var(--transicao), box-shadow var(--transicao);
}
.insta__item:hover { transform: translateY(-4px); box-shadow: var(--sombra-alta); }
.insta__item img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 600ms cubic-bezier(.2, .7, .3, 1);
}
.insta__item:hover img { transform: scale(1.07); }

.insta__veu {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: .5rem;
  padding: .85rem;
  color: var(--creme-100);
  background: linear-gradient(180deg, rgba(18, 48, 31, 0) 35%, rgba(18, 48, 31, .82) 100%);
  opacity: 0;
  transition: opacity var(--transicao);
}
.insta__item:hover .insta__veu, .insta__item:focus-visible .insta__veu { opacity: 1; }
.insta__legenda {
  font-size: .78rem;
  line-height: 1.35;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.insta__icone { color: var(--madeira-300); }

/* =========================================================
   AÇÕES DO PRODUTO (adicionar ao pedido)
   ========================================================= */
.produto__acoes { display: flex; gap: .5rem; align-items: stretch; }
.produto__acoes .btn { flex: 1; min-width: 0; }

/* Botão pequeno de perguntar no WhatsApp, ao lado do "Adicionar" */
.zap-icone {
  flex: none;
  width: 44px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  background: rgba(37, 211, 102, .14);
  color: #128C4A;
  transition: background-color var(--transicao), transform var(--transicao);
}
.zap-icone:hover { background: var(--whatsapp); color: #06331A; transform: translateY(-2px); }

/* Controle de quantidade que substitui o botão quando o item está no pedido */
.contador {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .4rem;
  flex: 1;
  padding: .3rem;
  border-radius: 999px;
  background: var(--verde-700);
  color: var(--creme-100);
}
.contador__btn {
  width: 32px; height: 32px;
  flex: none;
  border-radius: 50%;
  display: grid;
  place-items: center;
  color: inherit;
  background: rgba(253, 251, 246, .16);
  transition: background-color var(--transicao);
}
.contador__btn:hover { background: rgba(253, 251, 246, .32); }
.contador__valor {
  flex: 1;
  text-align: center;
  font-size: .86rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  line-height: 1.15;
}
.contador__unidade {
  display: block;
  font-size: .68rem;
  font-weight: 400;
  opacity: .8;
}

/* =========================================================
   SACOLA NO CABEÇALHO
   ========================================================= */
.cabecalho__acoes { display: flex; align-items: center; gap: .75rem; }

.sacola-btn {
  position: relative;
  width: 44px; height: 44px;
  flex: none;
  border-radius: 50%;
  display: grid;
  place-items: center;
  color: var(--creme-100);
  background: rgba(253, 251, 246, .16);
  transition: background-color var(--transicao), color var(--transicao);
}
.sacola-btn:hover { background: rgba(253, 251, 246, .28); }
.cabecalho--fixo .sacola-btn { background: var(--creme-200); color: var(--verde-800); }
.cabecalho--fixo .sacola-btn:hover { background: var(--creme-300); }

.sacola-btn__contador {
  position: absolute;
  top: -2px; right: -2px;
  min-width: 20px; height: 20px;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--whatsapp);
  color: #06331A;
  font-size: .7rem;
  font-weight: 800;
  display: grid;
  place-items: center;
  border: 2px solid var(--verde-800);
  font-variant-numeric: tabular-nums;
}
.cabecalho--fixo .sacola-btn__contador { border-color: var(--creme-100); }

/* =========================================================
   BUSCA NO CABEÇALHO
   ========================================================= */
.cabecalho__busca { display: none; flex: 1; max-width: 300px; }
.busca-cabecalho {
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: .65rem 1rem;
  border-radius: 999px;
  background: rgba(253, 251, 246, .12);
  border: 1.5px solid transparent;
  color: var(--tinta-suave);
  transition: background-color var(--transicao), border-color var(--transicao);
}
.busca-cabecalho:focus-within {
  background: rgba(253, 251, 246, .2);
  border-color: rgba(253, 251, 246, .4);
}
.cabecalho--fixo .busca-cabecalho {
  background: var(--creme-200);
  border-color: var(--creme-300);
}
.cabecalho--fixo .busca-cabecalho:focus-within {
  background: var(--creme-200);
  border-color: var(--verde-400);
}
.busca-cabecalho input {
  flex: 1;
  min-width: 0;
  border: 0;
  outline: 0;
  background: none;
  font: inherit;
  font-size: .9rem;
  color: var(--creme-100);
}
.cabecalho--fixo .busca-cabecalho input { color: var(--tinta); }
.busca-cabecalho input::placeholder { color: rgba(253, 251, 246, .6); }
.cabecalho--fixo .busca-cabecalho input::placeholder { color: var(--tinta-suave); }
.busca-cabecalho svg { color: rgba(253, 251, 246, .7); flex: none; }
.cabecalho--fixo .busca-cabecalho svg { color: var(--tinta-suave); }

/* =========================================================
   GAVETA DO PEDIDO
   ========================================================= */
.gaveta {
  position: fixed;
  inset: 0;
  z-index: 210;
  display: flex;
  justify-content: flex-end;
}
.gaveta__fundo {
  position: absolute;
  inset: 0;
  background: rgba(18, 48, 31, .5);
  backdrop-filter: blur(3px);
  animation: aparecer 220ms ease;
}

.gaveta__caixa {
  position: relative;
  width: min(100%, 430px);
  max-width: 100vw;
  height: 100%;
  display: flex;
  flex-direction: column;
  background: var(--creme-100);
  box-shadow: -20px 0 60px rgba(18, 48, 31, .28);
  animation: entrar-lado 300ms cubic-bezier(.2, .7, .3, 1);
}

/* Sem deslocamento horizontal de propósito: com translateX o painel
   começa fora da tela e, se a animação não completar (aba em segundo
   plano, animação pausada pelo navegador, print tirado no meio dela),
   ele trava fora da viewport e o botão de fechar fica inalcançável.
   Opacidade + escala dão a mesma sensação de entrada sem esse risco:
   em qualquer quadro o painel está inteiro na tela e clicável. */
@keyframes entrar-lado {
  from { opacity: .35; transform: scale(.99); }
  to { opacity: 1; transform: none; }
}
.gaveta__caixa { transform-origin: right center; }

.gaveta__topo {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.5rem 1.5rem 1.2rem;
  border-bottom: 1px solid var(--creme-300);
}
/* Botão de fechar: grande e com contraste, é a saída principal */
.gaveta__fechar {
  flex: none;
  width: 46px; height: 46px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--creme-200);
  color: var(--verde-800);
  border: 1.5px solid var(--creme-300);
  transition: background-color var(--transicao), transform var(--transicao);
}
.gaveta__fechar:hover {
  background: var(--verde-700);
  border-color: var(--verde-700);
  color: var(--creme-100);
  transform: rotate(90deg);
}

.gaveta__titulo { font-size: 1.4rem; }
.gaveta__sub { font-size: .85rem; color: var(--tinta-suave); margin-top: .2rem; }

.gaveta__itens {
  flex: 1;
  overflow-y: auto;
  padding: 1rem 1.5rem;
}

.item-pedido {
  display: flex;
  gap: .9rem;
  padding: .9rem 0;
  border-bottom: 1px dashed var(--creme-300);
}
.item-pedido:last-child { border-bottom: 0; }

.item-pedido__foto {
  width: 62px; height: 62px;
  flex: none;
  border-radius: 12px;
  overflow: hidden;
  background:
    repeating-linear-gradient(96deg, rgba(255, 255, 255, .16) 0 3px, transparent 3px 14px),
    linear-gradient(150deg, var(--madeira-300), var(--madeira-400));
  display: grid;
  place-items: center;
  color: var(--verde-700);
}
.item-pedido__foto img { width: 100%; height: 100%; object-fit: cover; }
.item-pedido__foto svg { width: 26px; height: 26px; opacity: .55; }

.item-pedido__corpo { flex: 1; min-width: 0; }
.item-pedido__nome {
  font-family: var(--fonte-corpo);
  font-size: .95rem;
  font-weight: 600;
  color: var(--verde-900);
  margin-bottom: .15rem;
}
.item-pedido__qtd { font-size: .82rem; color: var(--tinta-suave); }
.item-pedido__qtd strong { color: var(--verde-700); }

.item-pedido__controles {
  display: flex;
  align-items: center;
  gap: .45rem;
  margin-top: .55rem;
}
.mini-btn {
  width: 28px; height: 28px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--creme-200);
  color: var(--verde-800);
  transition: background-color var(--transicao);
}
.mini-btn:hover { background: var(--creme-300); }
.mini-btn--remover { margin-left: auto; color: #9C4A3C; }
.mini-btn--remover:hover { background: #F3DAD4; }
.item-pedido__num {
  min-width: 26px;
  text-align: center;
  font-size: .9rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--verde-800);
}

/* Estado vazio */
.gaveta__vazio {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: .8rem;
  padding: 2rem 2.2rem;
}
.gaveta__vazio-icone {
  width: 88px; height: 88px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--creme-200);
  color: var(--madeira-500);
  margin-bottom: .4rem;
}
.gaveta__vazio h3 { font-size: 1.15rem; }
.gaveta__vazio p { font-size: .9rem; color: var(--tinta-suave); max-width: 30ch; }
.gaveta__vazio .btn { margin-top: .6rem; }

/* Rodapé da gaveta */
.gaveta__rodape {
  padding: 1.2rem 1.5rem 1.5rem;
  border-top: 1px solid var(--creme-300);
  background: var(--creme-200);
}
.gaveta__total {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 1rem;
  font-size: .9rem;
  color: var(--tinta-suave);
}
.gaveta__total strong {
  font-family: var(--fonte-display);
  font-size: 1.35rem;
  color: var(--verde-700);
}

.gaveta__obs { display: block; margin-bottom: 1rem; }
.gaveta__obs span {
  display: block;
  font-size: .8rem;
  color: var(--tinta-suave);
  margin-bottom: .4rem;
}
.gaveta__obs textarea {
  width: 100%;
  padding: .7rem .9rem;
  border-radius: 12px;
  border: 1.5px solid var(--creme-300);
  background: var(--creme-100);
  font: inherit;
  font-size: .9rem;
  color: var(--tinta);
  resize: vertical;
  transition: border-color var(--transicao);
}
.gaveta__obs textarea:focus { outline: 0; border-color: var(--verde-600); }

.gaveta__limpar {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .4rem;
  width: 100%;
  margin-top: .7rem;
  padding: .5rem;
  font-size: .84rem;
  color: var(--tinta-suave);
  border-radius: 999px;
  transition: color var(--transicao), background-color var(--transicao);
}
.gaveta__limpar:hover { color: #9C4A3C; background: rgba(156, 74, 60, .08); }

.gaveta__nota {
  margin-top: .9rem;
  font-size: .76rem;
  line-height: 1.5;
  color: var(--tinta-suave);
  text-align: center;
}

/* =========================================================
   BOTÃO FLUTUANTE DO PEDIDO
   ========================================================= */
.pedido-flutuante {
  position: fixed;
  right: 1.25rem;
  bottom: 1.25rem;
  z-index: 92;
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  padding: .8rem 1.1rem;
  border-radius: 999px;
  background: var(--verde-700);
  color: var(--creme-100);
  font-weight: 700;
  font-size: .93rem;
  box-shadow: 0 8px 26px rgba(30, 75, 54, .42);
  transform: translateY(140%);
  opacity: 0;
  transition: transform 380ms cubic-bezier(.2, .7, .3, 1), opacity 380ms,
              box-shadow var(--transicao);
}
.pedido-flutuante.visivel { transform: translateY(0); opacity: 1; }
.pedido-flutuante:hover { box-shadow: 0 12px 34px rgba(30, 75, 54, .55); }

.pedido-flutuante__contador {
  min-width: 22px; height: 22px;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--whatsapp);
  color: #06331A;
  font-size: .74rem;
  font-weight: 800;
  display: grid;
  place-items: center;
  font-variant-numeric: tabular-nums;
}

/* Pulso rápido quando um item entra no pedido */
@keyframes pulinho {
  0%, 100% { transform: translateY(0) scale(1); }
  40% { transform: translateY(0) scale(1.09); }
}
.pedido-flutuante.pulsou { animation: pulinho 380ms ease; }

/* =========================================================
   BOTÃO FLUTUANTE DE WHATSAPP
   ========================================================= */
.zap-flutuante {
  position: fixed;
  right: 1.25rem;
  bottom: 1.25rem;
  z-index: 90;
  display: inline-flex;
  align-items: center;
  gap: .65rem;
  padding: .8rem 1.3rem .8rem .85rem;
  border-radius: 999px;
  background: var(--whatsapp);
  color: #06331A;
  font-weight: 700;
  font-size: .93rem;
  box-shadow: 0 8px 26px rgba(37, 211, 102, .42);
  transform: translateY(120%);
  opacity: 0;
  transition: transform 380ms cubic-bezier(.2, .7, .3, 1), opacity 380ms, box-shadow var(--transicao);
}
.zap-flutuante.visivel { transform: translateY(0); opacity: 1; }
.zap-flutuante:hover { box-shadow: 0 12px 34px rgba(37, 211, 102, .55); }
.zap-flutuante svg { flex: none; }

/* =========================================================
   ANIMAÇÃO DE ENTRADA POR SCROLL
   ========================================================= */
.revelar {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity 700ms cubic-bezier(.2, .7, .3, 1), transform 700ms cubic-bezier(.2, .7, .3, 1);
}
.revelar.visivel { opacity: 1; transform: none; }

/* =========================================================
   RESPONSIVO
   ========================================================= */
@media (min-width: 861px) {
  .cabecalho__busca { display: flex; }
}

@media (max-width: 1024px) {
  .sobre__grade, .local__grade { grid-template-columns: 1fr; }
  .sobre__molduras { max-width: 560px; }
  .rodape__grade { grid-template-columns: 1fr 1fr; }
  .rodape__marca { grid-column: 1 / -1; }
}

@media (max-width: 860px) {
  .menu-btn { display: inline-flex; }
  .cabecalho__zap { display: none; }

  .nav {
    position: fixed;
    inset: 0 0 0 auto;
    width: min(84vw, 340px);
    flex-direction: column;
    align-items: stretch;
    justify-content: center;
    gap: 2rem;
    padding: 2.5rem;
    background: var(--verde-800);
    transform: translateX(100%);
    transition: transform 340ms cubic-bezier(.2, .7, .3, 1);
    box-shadow: -20px 0 50px rgba(18, 48, 31, .3);
  }
  .nav.aberto { transform: translateX(0); }
  .nav > .btn { display: inline-flex; }
  .nav__lista { flex-direction: column; gap: 1.4rem; }
  .nav__link, .cabecalho--fixo .nav__link {
    font-size: 1.15rem;
    color: var(--creme-100);
    font-family: var(--fonte-display);
  }
  .nav .btn { width: 100%; }

  .hero { min-height: auto; padding: 7.5rem 0 3.5rem; }
  .hero__provas { gap: 1.6rem 2rem; }
  .sobre__selo { width: 92px; height: 92px; right: -6px; bottom: -12px; }
  .sobre__selo span { font-size: .68rem; }
}

@media (max-width: 900px) {
  .insta__grade { grid-template-columns: repeat(3, 1fr); }
  /* No toque não existe hover: a legenda fica sempre visível */
  .insta__veu { opacity: 1; background: linear-gradient(180deg, rgba(18,48,31,0) 45%, rgba(18,48,31,.8) 100%); }
}

@media (max-width: 720px) {
  /* No celular o carrossel se navega arrastando o dedo */
  .setas { display: none; }
  .carrossel { gap: 1rem; }
  .carrossel > .produto { flex-basis: 72vw; }
  .categoria__topo { align-items: flex-start; }
}

@media (max-width: 560px) {
  .grade-produtos { grid-template-columns: 1fr; }
  .atalhos { grid-template-columns: repeat(2, 1fr); gap: .9rem; }
  .carrossel > .produto { flex-basis: 80vw; }
  .busca__campo { max-width: none; }
  .insta__grade { grid-template-columns: repeat(2, 1fr); gap: .6rem; }
  /* No celular a gaveta ocupa a tela toda */
  .gaveta__caixa { width: 100%; }
  .pedido-flutuante { padding: .75rem 1rem; font-size: .88rem; }
  .rodape__grade { grid-template-columns: 1fr; }
  .hero__acoes .btn { flex: 1 1 100%; }
  .zap-flutuante { padding: .75rem 1.1rem .75rem .8rem; font-size: .88rem; }
  .sobre__molduras { gap: .6rem; }
}

/* ---------------------------------------------------------
   LUPA — foto ampliada ao clicar
   --------------------------------------------------------- */
.lupa {
  position: fixed;
  inset: 0;
  z-index: 120;
  display: grid;
  place-items: center;
  padding: clamp(1rem, 4vw, 3rem);
}
.lupa[hidden] { display: none; }

.lupa__fundo {
  position: absolute;
  inset: 0;
  background: rgba(18, 48, 31, .82);
  backdrop-filter: blur(3px);
  animation: lupaEntra 200ms ease both;
}

.lupa__quadro {
  position: relative;
  margin: 0;
  max-width: min(100%, 1000px);
  animation: lupaSobe 240ms cubic-bezier(.2, .7, .3, 1) both;
}

.lupa__img {
  display: block;
  /* Nunca amplia além do tamanho real do arquivo, para não borrar */
  max-width: 100%;
  max-height: calc(100vh - 9rem);
  width: auto; height: auto;
  border-radius: var(--raio-g);
  box-shadow: var(--sombra-alta);
  background: var(--creme-100);
}

.lupa__legenda {
  margin-top: .75rem;
  text-align: center;
  color: var(--creme-200);
  font-size: .92rem;
  line-height: 1.45;
}

.lupa__fechar {
  position: absolute;
  top: -14px; right: -14px;
  width: 42px; height: 42px;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 50%;
  cursor: pointer;
  background: var(--creme-100);
  color: var(--verde-800);
  box-shadow: var(--sombra-alta);
  transition: transform 180ms ease;
}
.lupa__fechar:hover { transform: scale(1.08); }
.lupa__fechar:focus-visible { outline: 3px solid var(--creme-200); outline-offset: 2px; }

@keyframes lupaEntra { from { opacity: 0 } to { opacity: 1 } }
@keyframes lupaSobe {
  from { opacity: 0; transform: translateY(14px) scale(.97) }
  to   { opacity: 1; transform: none }
}

@media (max-width: 560px) {
  .lupa { padding: 1rem; }
  .lupa__fechar { top: -10px; right: -10px; width: 38px; height: 38px; }
}

/* Acessibilidade: respeita preferência por menos movimento */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
  .revelar { opacity: 1; transform: none; }
}

/* Impressão */
@media print {
  .cabecalho, .zap-flutuante, .filtros, .painel { display: none !important; }
  body { background: #fff; }
}
