/* ---------------------------------------------------------------------------
 * Cabeçalho — uma fonte só de estilo para todas as páginas
 *
 * O HTML do cabeçalho sempre foi include (`includes/header.php`), mas o CSS
 * dele estava copiado dentro de cada página, com o comentário "navbar idêntica
 * ao index.html". As cópias divergiram, como cópia sempre diverge:
 *
 *   - produtos.php tinha `font-size: 14px !important` e o menu saía um ponto
 *     maior que o da home;
 *   - 404.php não tinha cópia nenhuma e herdava o estilo cru do template —
 *     outra fonte, outras cores, logo de 40px em vez de 60px.
 *
 * Este arquivo é carregado por includes/header.php, junto com o HTML que ele
 * estiliza: quem inclui o cabeçalho recebe o estilo do cabeçalho. As regras
 * foram copiadas de index.php, que é a referência.
 *
 * Enquanto index.php ainda mantiver a cópia embutida dela, tests/navbar-igual
 * garante que as duas não divirjam: ele compara o resultado final no navegador
 * nas três páginas.
 * --------------------------------------------------------------------------- */

/* Medidas do eixo do site. Cada página também as declara; como o <style> da
 * página vem depois deste arquivo, o valor dela prevalece. Aqui elas existem
 * para a página que esquecer de declarar — foi assim que a 404 apareceu com a
 * navbar fora do eixo. */
:root {
  --container-max: 1200px;
  --container-gutter: 24px;
  --frame: 16px;
}

.navbar {
  position: fixed !important;
  /* Um pouco mais abaixo do topo da moldura (var(--frame) sozinho deixava a
     navbar colada na borda de cima da foto do hero, sem respiro nenhum). */
  top: calc(var(--frame) + 24px) !important;
  left: 0 !important;
  right: 0 !important;
  z-index: 1000 !important;
  width: min(var(--container-max), calc(100% - (var(--container-gutter) * 2))) !important;
  margin: 0 auto !important;
  padding: 0 !important;
  background: transparent !important;
}
.nav-block {
  display: flex !important;
  justify-content: space-between !important;
  align-items: stretch !important;
  height: 72px !important;
  width: 100% !important;
  background-color: #ffffff !important;
  border-radius: 0 0 28px 0 !important;
  overflow: hidden !important;
  box-shadow: 0 8px 32px rgba(0,0,0,0.12) !important;
}
/* Navbar e Botão Contact 1:1 Fiel */
.navbar {
  background: transparent !important;
  padding: 0 !important;
}
.nav-block {
  display: flex !important;
  justify-content: space-between !important;
  align-items: stretch !important;
  height: 72px !important;
  background-color: #ffffff !important;
  border-radius: 0 0 28px 0 !important;
  overflow: hidden !important;
  box-shadow: 0 4px 20px rgba(0,0,0,0.08) !important;
}
/* Logo com o mesmo recuo do original Harvest: imagem a 28px da borda da navbar.
   O recuo vem só do .brand (margin-left 18 + padding 10); o .nav-left não soma padding. */
.nav-left {
  display: flex !important;
  align-items: center !important;
  padding-left: 0 !important;
}
.nav-left .brand {
  margin: 0 10px 0 18px !important;
  padding: 10px !important;
}
.nav-right {
  display: flex !important;
  align-items: stretch !important;
  height: 100% !important;
}
/* Menu horizontal só no desktop. Abaixo de 992px o menu mobile
   posiciona o .nav-menu dentro de um container ao clicar no hambúrguer. */
@media (min-width: 992px) {
  .nav-menu {
    display: flex !important;
    align-items: center !important;
    gap: 24px !important;
    margin: 0 24px 0 0 !important;
  }
  /* No desktop o Contato é o botão vermelho da barra, não um item do menu. */
  #nav-contato-mobile {
    display: none !important;
  }
}
.nav-button, #whatsapp-btn {
  background-color: var(--cor-a, #B20E19) !important;
  color: #ffffff !important;
  height: 100% !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 36px !important;
  margin: 0 !important;
  border-radius: 0 0 28px 0 !important;
  text-decoration: none !important;
  position: relative !important;
  overflow: hidden !important;
  transition: background 0.35s cubic-bezier(0.25, 1, 0.5, 1), box-shadow 0.35s cubic-bezier(0.25, 1, 0.5, 1), transform 0.25s ease !important;
}
.nav-button::after, #whatsapp-btn::after {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 60%;
  height: 100%;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(255, 255, 255, 0.28) 50%,
    transparent 100%
  );
  transform: skewX(-20deg);
  transition: none;
  pointer-events: none;
}
/* A tipografia do cabeçalho é declarada aqui, e não herdada do body: cada
 * página define a própria fonte de corpo, e o botão saía em Merriweather na
 * 404 e em Arvo nas demais. Cabeçalho compartilhado tem de ser autossuficiente
 * — se depende do que a página define, volta a divergir. */
.nav-button, #whatsapp-btn,
.nav-button .text-button,
.nav-link {
  font-family: Arvo, sans-serif;
}
.nav-button .text-button {
  color: #ffffff !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 1px !important;
  font-size: 14px !important;
  position: relative !important;
  z-index: 2 !important;
  transition: transform 0.3s cubic-bezier(0.25, 1, 0.5, 1), letter-spacing 0.3s ease !important;
}
@media (hover: hover) and (pointer: fine) {
  .nav-button:hover, #whatsapp-btn:hover {
    background: linear-gradient(135deg, #4A4A4A 0%, #2B2B2B 100%) !important;
    box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.3), 0 8px 20px rgba(0, 0, 0, 0.38) !important;
  }
  .nav-button:hover::after, #whatsapp-btn:hover::after {
    left: 180%;
    transition: left 0.75s ease-in-out;
  }
  .nav-button:hover .text-button, #whatsapp-btn:hover .text-button {
    letter-spacing: 1.4px !important;
    transform: scale(1.04) !important;
  }
  .nav-button:active, #whatsapp-btn:active {
    transform: scale(0.97) !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important;
  }
}
/* Pílula que "acende" atrás do link ao passar o mouse: nasce pequena e
   transparente e cresce com um leve efeito de mola, no tom da cor principal.
   Só no desktop — no celular o menu é lista empilhada e já pinta a linha
   inteira (ver @media max-width 991px), e o ::after lá é do rótulo Instagram. */
.nav-link {
  color: var(--texto, #4A3026) !important;
  transition: color 0.3s ease, transform 0.3s cubic-bezier(0.25, 1, 0.5, 1);
}
.nav-link:hover,
.nav-link:focus-visible {
  color: var(--cor-a, #B20E19) !important;
}
@media (hover: hover) and (pointer: fine) and (min-width: 992px) {
  .nav-link {
    isolation: isolate;
  }
  .nav-link::before {
    content: '';
    position: absolute;
    inset: 10px 0;
    border-radius: 0 0 14px 0;
    background: color-mix(in srgb, var(--cor-a, #B20E19) 14%, transparent);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--cor-a, #B20E19) 22%, transparent);
    transform: scale(0.6);
    opacity: 0;
    transition: transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.25s ease;
    z-index: -1;
    pointer-events: none;
  }
  .nav-link:hover::before,
  .nav-link:focus-visible::before {
    transform: scale(1);
    opacity: 1;
  }
  .nav-link:hover,
  .nav-link:focus-visible {
    transform: translateY(-1px);
  }
}
/* Item do menu que é só ícone. O traço usa currentColor, então acompanha o hover
   vermelho dos demais links sem precisar de regra própria. */
.nav-link-instagram svg {
  width: 20px;
  height: 20px;
  display: block;
}
/* Logo do cabeçalho.
 *
 * A altura vem do painel (`header.logo_height`), por variável. Antes o valor do
 * painel era escrito num style="" inline no <img> e nunca fazia efeito, porque
 * a regra abaixo usa !important — e !important em folha vence style="" inline.
 * O campo existia no painel e não mudava nada. */
.logo {
  max-height: 48px;
  width: auto;
  object-fit: contain;
}
@media (min-width: 992px) {
  .logo {
    height: var(--logo-height, 60px) !important;
    max-height: none;
  }
}

@media (max-width: 991px) {
  .logo {
    max-height: 46px;
  }
}

@media (max-width: 991px) {
  .nav-link:hover,
  .nav-link:focus-visible {
    background-color: var(--cor-a, #B20E19) !important;
    color: #ffffff !important;
  }
  /* No celular o menu é uma lista empilhada: o ícone sozinho ficaria sem rótulo e
     com área de toque pequena, então ganha o texto ao lado via ::after. */
  .nav-link-instagram {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
  }@media (max-width: 991px) {
    /* Moldura interna da navbar: no desktop ela aparece "de graça", porque o
       max-width de 1200px (--container-max) é MENOR que a largura do herói, deixando
       a navbar recuada ~96px para dentro de cada lado. No responsivo esse limite nunca
       entra em ação — a largura cai em `100% - gutter*2`, exatamente a mesma medida da
       moldura do herói, e a navbar fica encostada nas bordas dele, sem recuo nenhum.
       Aqui esse recuo é declarado explicitamente: --frame a mais de cada lado, além da
       moldura que o herói já tem. */
    .navbar {
      width: calc(100% - (var(--frame) * 2) - (var(--frame) * 2)) !important;
    }
    .nav-block {
      height: 64px !important;
      position: relative !important;
      border-radius: 0 0 24px 0 !important;
      overflow: hidden !important;
    }
    /* Com o menu aberto, o nav-block não pode cortar o dropdown com overflow:hidden */
    .nav-block.is-open,
    .nav-block:has(.menu-button.is-open),
    .nav-block:has(.menu-button.w--open) {
      overflow: visible !important;
      border-radius: 0 !important;
    }
    /* Hambúrguer no vermelho da marca, ocupando a ponta direita da barra */
    .menu-button,
    .menu-button.is-open,
    .menu-button.w--open,
    .menu-button:hover,
    .menu-button:focus {
      display: flex !important;
      align-items: center !important;
      justify-content: center !important;
      width: 64px !important;
      height: 64px !important;
      background-color: var(--cor-a, #B20E19) !important;
      color: #ffffff !important;
      font-size: 22px;
      border-radius: 0 0 24px 0 !important;
      -webkit-tap-highlight-color: transparent;
      cursor: pointer;
    }
    /* Com o menu ABERTO, zera o raio do botão */
    .menu-button.is-open,
    .menu-button.w--open {
      border-radius: 0 !important;
    }
    /* O ícone acompanha o botão em qualquer estado. */
    .menu-button .w-icon-nav-menu,
    .menu-button.is-open .w-icon-nav-menu,
    .menu-button.w--open .w-icon-nav-menu {
      color: #ffffff !important;
    }
    /* O botão de Contato sai da barra e vira o último item do menu. */
    .nav-button, #whatsapp-btn {
      display: none !important;
    }
    /* Menu mobile dropdown nativo */
    .nav-menu {
      display: none !important;
      position: absolute !important;
      top: 64px !important;
      left: 0 !important;
      right: 0 !important;
      width: 100% !important;
      background-color: #ffffff !important;
      padding: 8px 0 16px !important;
      border-radius: 0 0 24px 0 !important;
      box-shadow: 0 18px 36px rgba(0, 0, 0, .16) !important;
      z-index: 1001 !important;
    }
    .nav-block.is-open .nav-menu,
    .nav-menu.is-open,
    .nav-menu.w--open,
    [data-nav-menu-open] {
      display: block !important;
    }
    #nav-contato-mobile {
      display: block !important;
      width: auto !important;
      margin: 12px 20px 0 !important;
      padding: 16px 20px !important;
      background-color: var(--cor-a, #B20E19);
      color: #ffffff !important;
      text-align: center;
      border-bottom: none !important;
      border-radius: 0 0 24px 0 !important;
    }
    .nav-menu .nav-link {
      display: block;
      width: 100%;
      padding: 15px 28px !important;
      margin: 0 !important;
      border-bottom: 1px solid rgba(58, 94, 46, .1);
    }
    .nav-menu .nav-link:last-child {
      border-bottom: none;
    }
    .nav-left .brand {
      margin-left: 4px !important;
      padding-left: 6px !important;
    }
    .nav-button, #whatsapp-btn {
      padding: 0 22px !important;
    }
}

