/* Site público das lojas.
   UM arquivo atende TODAS as empresas. O que muda de uma loja para outra são apenas as
   variáveis CSS (escritas pelo _LayoutSite a partir da configuração da empresa) e a classe
   de template no <body>. Nada aqui é duplicado por loja. */

:root {
    --cor-primaria: #1f6feb;
    --cor-secundaria: #0d1117;
    --cor-botao: #1f6feb;
    --cor-texto: #24292f;
    --cor-fundo: #ffffff;

    --borda: rgba(0, 0, 0, .09);
    --suave: rgba(0, 0, 0, .55);
    --raio: 12px;
    --sombra: 0 1px 2px rgba(0, 0, 0, .04), 0 10px 28px rgba(0, 0, 0, .07);
}

* { box-sizing: border-box; }

body {
    margin: 0;
    background: var(--cor-fundo);
    color: var(--cor-texto);
    font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 { line-height: 1.2; letter-spacing: -0.015em; margin: 0 0 .5em; }
p { margin: 0 0 1em; }
img { max-width: 100%; display: block; }
a { color: inherit; }

.wrap { width: 100%; max-width: 1180px; margin: 0 auto; padding: 0 20px; }
.centro { text-align: center; margin-top: 32px; }

/* ------------------------------------------------------------------ botões */

.botao {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 12px 24px;
    border: 1px solid transparent;
    border-radius: 10px;
    background: var(--cor-botao);
    color: #fff;
    font-weight: 600;
    font-size: .9375rem;
    text-decoration: none;
    cursor: pointer;
    transition: filter .12s ease, transform .12s ease;
}

.botao:hover { filter: brightness(.93); transform: translateY(-1px); color: #fff; }

.botao-secundario {
    background: transparent;
    color: var(--cor-texto);
    border-color: var(--borda);
}

.botao-secundario:hover { color: var(--cor-texto); border-color: var(--cor-primaria); }

.botao-grande { padding: 15px 32px; font-size: 1.0625rem; width: 100%; margin-bottom: 24px; }

/* --------------------------------------------------------------- cabeçalho */

.cabecalho {
    position: sticky;
    top: 0;
    z-index: 30;
    background: var(--cor-fundo);
    border-bottom: 1px solid var(--borda);
}

.cabecalho-linha {
    display: flex;
    align-items: center;
    gap: 20px;
    min-height: 72px;
    flex-wrap: wrap;
}

.logo { text-decoration: none; font-weight: 700; font-size: 1.125rem; color: var(--cor-secundaria); }
.logo img { max-height: 46px; width: auto; }

.menu { display: flex; gap: 20px; margin-left: auto; flex-wrap: wrap; }

.menu a {
    text-decoration: none;
    font-size: .9375rem;
    font-weight: 500;
    color: var(--suave);
    padding: 4px 0;
    border-bottom: 2px solid transparent;
}

.menu a:hover { color: var(--cor-primaria); border-bottom-color: var(--cor-primaria); }

.busca { display: flex; align-items: center; gap: 6px; }

.busca input {
    padding: 9px 14px;
    border: 1px solid var(--borda);
    border-radius: 999px;
    font-size: .875rem;
    min-width: 190px;
    background: var(--cor-fundo);
    color: var(--cor-texto);
}

.busca input:focus { outline: 2px solid var(--cor-primaria); outline-offset: 1px; }

.busca button {
    border: 0;
    background: transparent;
    cursor: pointer;
    font-size: 1rem;
    padding: 6px;
}

.menu-botao { display: none; }

/* ------------------------------------------------------------------ banner */

.banner {
    position: relative;
    background-size: cover;
    background-position: center;
    padding: 108px 0;
    color: #fff;
    text-align: center;
}

.banner::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0, 0, 0, .32), rgba(0, 0, 0, .58));
}

.banner-liso {
    background: linear-gradient(135deg, var(--cor-primaria), var(--cor-secundaria));
}

.banner-liso::before { background: none; }

.banner-conteudo { position: relative; }

.banner h1 { font-size: clamp(2rem, 5vw, 3.25rem); font-weight: 800; margin-bottom: 12px; }

.banner p { max-width: 60ch; margin: 0 auto 26px; font-size: 1.0625rem; opacity: .95; }

.banner .botao { background: #fff; color: var(--cor-secundaria); }

.banner .botao:hover { color: var(--cor-secundaria); }

/* ------------------------------------------------------------------ seções */

.secao { padding: 64px 0; }

.secao-destaque { background: rgba(0, 0, 0, .025); }

.secao-titulo { font-size: clamp(1.375rem, 3vw, 1.875rem); font-weight: 700; margin-bottom: 28px; }

/* -------------------------------------------------------------- categorias */

.categorias {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 16px;
}

.categoria {
    display: block;
    padding: 20px;
    border: 1px solid var(--borda);
    border-radius: var(--raio);
    text-decoration: none;
    text-align: center;
    transition: border-color .15s ease, transform .15s ease, box-shadow .15s ease;
}

.categoria:hover { border-color: var(--cor-primaria); transform: translateY(-2px); box-shadow: var(--sombra); }

.categoria img { width: 72px; height: 72px; object-fit: cover; border-radius: 50%; margin: 0 auto 12px; }

.categoria-nome { display: block; font-weight: 600; }

.categoria-total { display: block; font-size: .8125rem; color: var(--suave); }

/* ---------------------------------------------------------------- produtos */

.produtos {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 22px;
}

.produto {
    border: 1px solid var(--borda);
    border-radius: var(--raio);
    overflow: hidden;
    background: var(--cor-fundo);
    transition: transform .15s ease, box-shadow .15s ease;
}

.produto:hover { transform: translateY(-3px); box-shadow: var(--sombra); }

.produto-link { text-decoration: none; color: inherit; display: block; height: 100%; }

.produto-foto {
    position: relative;
    aspect-ratio: 1 / 1;
    background: rgba(0, 0, 0, .04);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.produto-foto img { width: 100%; height: 100%; object-fit: cover; }

.produto-sem-foto { font-size: 2.5rem; opacity: .35; }

.selo-desconto {
    position: absolute;
    top: 10px;
    left: 10px;
    padding: 4px 10px;
    border-radius: 999px;
    background: #16a34a;
    color: #fff;
    font-size: .75rem;
    font-weight: 700;
}

.produto-corpo { padding: 16px; }

.produto-categoria {
    display: inline-block;
    font-size: .75rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--cor-primaria);
    font-weight: 600;
    margin-bottom: 6px;
    text-decoration: none;
}

.produto-nome { font-size: 1rem; font-weight: 600; margin: 0 0 6px; }

.produto-descricao {
    font-size: .875rem;
    color: var(--suave);
    margin: 0 0 12px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.produto-preco { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }

.preco-antigo { color: var(--suave); text-decoration: line-through; font-size: .875rem; }

.preco-atual { font-size: 1.1875rem; font-weight: 700; color: var(--cor-primaria); }

/* ----------------------------------------------------------------- trilha */

.trilha { padding: 16px 0; border-bottom: 1px solid var(--borda); font-size: .875rem; }

.trilha a { color: var(--suave); text-decoration: none; }

.trilha a:hover { color: var(--cor-primaria); }

.trilha span { color: var(--suave); margin: 0 6px; }

.trilha .trilha-atual { color: var(--cor-texto); font-weight: 500; margin: 0; }

/* -------------------------------------------------------- página de produto */

.produto-detalhe { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: start; }

.galeria-principal {
    position: relative;
    aspect-ratio: 1 / 1;
    background: rgba(0, 0, 0, .04);
    border-radius: var(--raio);
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
}

.galeria-principal img { width: 100%; height: 100%; object-fit: cover; }

.galeria-miniaturas { display: flex; gap: 10px; margin-top: 12px; flex-wrap: wrap; }

.miniatura {
    width: 72px;
    height: 72px;
    padding: 0;
    border: 1px solid var(--borda);
    border-radius: 8px;
    overflow: hidden;
    background: none;
    cursor: pointer;
}

.miniatura:hover { border-color: var(--cor-primaria); }

.miniatura img { width: 100%; height: 100%; object-fit: cover; }

.produto-info h1 { font-size: clamp(1.5rem, 3.5vw, 2.125rem); font-weight: 700; margin-bottom: 10px; }

.produto-chamada { color: var(--suave); font-size: 1.0625rem; }

.produto-preco-detalhe { display: flex; align-items: baseline; gap: 12px; margin: 20px 0 26px; flex-wrap: wrap; }

.produto-preco-detalhe .preco-atual { font-size: 2rem; }

.produto-texto { border-top: 1px solid var(--borda); padding-top: 24px; }

.produto-texto img { border-radius: 8px; margin: 12px 0; }

/* ---------------------------------------------------------------- vitrine */

.vitrine-cabecalho { display: flex; justify-content: space-between; align-items: flex-start; gap: 24px; flex-wrap: wrap; margin-bottom: 28px; }

.vitrine-cabecalho .secao-titulo { margin-bottom: 4px; }

.vitrine-total { color: var(--suave); font-size: .9375rem; margin: 0; }

.filtros { display: flex; gap: 8px; flex-wrap: wrap; }

.filtro {
    padding: 7px 16px;
    border: 1px solid var(--borda);
    border-radius: 999px;
    font-size: .875rem;
    text-decoration: none;
    color: var(--suave);
}

.filtro:hover { border-color: var(--cor-primaria); color: var(--cor-primaria); }

.filtro-ativo { background: var(--cor-primaria); border-color: var(--cor-primaria); color: #fff; }

.filtro-ativo:hover { color: #fff; }

.paginacao { display: flex; align-items: center; justify-content: center; gap: 16px; margin-top: 40px; }

.pagina {
    padding: 9px 18px;
    border: 1px solid var(--borda);
    border-radius: 8px;
    text-decoration: none;
    font-size: .9375rem;
    font-weight: 500;
}

.pagina:hover { border-color: var(--cor-primaria); color: var(--cor-primaria); }

.pagina-info { color: var(--suave); font-size: .875rem; }

.vazio { text-align: center; padding: 56px 20px; color: var(--suave); }

/* ----------------------------------------------------------------- rodapé */

.rodape { border-top: 1px solid var(--borda); margin-top: 24px; padding-top: 48px; }

.rodape-grade {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 32px;
    padding-bottom: 32px;
}

.rodape h3 { font-size: 1.125rem; }
.rodape h4 { font-size: .875rem; text-transform: uppercase; letter-spacing: .05em; color: var(--suave); }
.rodape p { font-size: .9375rem; margin-bottom: .4em; }
.rodape a { text-decoration: none; }
.rodape a:hover { color: var(--cor-primaria); }

.rodape-horario { color: var(--suave); }

.redes { display: flex; gap: 14px; margin-top: 10px; font-size: .9375rem; font-weight: 500; }

.rodape-base {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    padding: 18px 20px;
    border-top: 1px solid var(--borda);
    font-size: .8125rem;
    color: var(--suave);
}

.assinatura a { color: var(--suave); }

/* -------------------------------------------------------- whatsapp e avisos */

.whatsapp-flutuante {
    position: fixed;
    right: 20px;
    bottom: 20px;
    z-index: 40;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: #25d366;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 8px 24px rgba(37, 211, 102, .38);
    transition: transform .15s ease;
}

.whatsapp-flutuante:hover { transform: scale(1.06); color: #fff; }

.aviso-loja { max-width: 620px; margin: 0 auto; padding: 96px 24px; text-align: center; }

.aviso-loja h1 { font-size: clamp(1.5rem, 4vw, 2rem); }

.menu-conta { font-weight: 600 !important; color: var(--cor-primaria) !important; }

/* ------------------------------------------------------- área do cliente */

.painel-cliente { max-width: 760px; margin: 0 auto; }

.painel-cliente.painel-largo { max-width: 980px; }

.cartao {
    border: 1px solid var(--borda);
    border-radius: var(--raio);
    padding: 26px;
    margin-bottom: 20px;
    background: var(--cor-fundo);
}

.cartao h2 { font-size: 1.25rem; margin-bottom: 4px; }

.cartao-texto { color: var(--suave); font-size: .9375rem; }

.campo { margin-bottom: 16px; }

.campo label { display: block; font-size: .875rem; font-weight: 600; margin-bottom: 6px; }

.campo input, .campo select {
    width: 100%;
    padding: 11px 14px;
    border: 1px solid var(--borda);
    border-radius: 9px;
    font-size: .9375rem;
    background: var(--cor-fundo);
    color: var(--cor-texto);
    font-family: inherit;
}

.campo input:focus, .campo select:focus { outline: 2px solid var(--cor-primaria); outline-offset: 1px; }

.campo-ajuda { display: block; font-size: .8125rem; color: var(--suave); margin-top: 5px; }

/* Campo reprovado na validação: a mensagem fica no topo do cartão, e a borda aponta qual
   campo é o culpado. Sai sozinha quando a pessoa mexe nele. */
.campo input.campo-invalido, .campo select.campo-invalido {
    border-color: #dc2626;
    background: #fff5f5;
}

.linha { display: grid; gap: 16px; }
.linha-2 { grid-template-columns: 1fr 1fr; }
.linha-3 { grid-template-columns: 1fr 1fr 1fr; }
.linha-cep { grid-template-columns: 160px 1fr 120px; }

.erro-formulario {
    display: none;
    padding: 11px 14px;
    border-radius: 9px;
    background: #fee2e2;
    color: #991b1b;
    font-size: .875rem;
    margin-bottom: 16px;
}

.acoes-formulario { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin-top: 4px; }

.link-secundario { font-size: .9375rem; color: var(--suave); }

/* O mesmo endereço serve a loja e o painel, e o "Entrar" da vitrine é o do CLIENTE. O
   lojista chega nestas telas por instinto e não tem como adivinhar que a porta dele é
   outra — o erro que ele vê é "e-mail e/ou senha inválido(s)", com a senha certa.
   Discreto de propósito: é recado para uma pessoa, não para os compradores da loja. */
.rodape-painel {
    margin-top: 22px;
    padding-top: 16px;
    border-top: 1px solid var(--borda);
    color: var(--suave);
    font-size: .875rem;
}

.rodape-painel a { font-weight: 600; white-space: nowrap; }

.endereco {
    border: 1px solid var(--borda);
    border-radius: 10px;
    padding: 16px;
    margin-bottom: 12px;
}

.endereco-topo { display: flex; justify-content: space-between; gap: 12px; align-items: center; margin-bottom: 6px; }

.endereco-apelido { font-weight: 600; }

.etiqueta-principal {
    padding: 3px 10px;
    border-radius: 999px;
    background: var(--cor-primaria);
    color: #fff;
    font-size: .6875rem;
    font-weight: 700;
}

.endereco-texto { color: var(--suave); font-size: .9375rem; margin: 0; }

.endereco-acoes { display: flex; gap: 14px; margin-top: 10px; font-size: .875rem; }

.endereco-acoes a { cursor: pointer; color: var(--cor-primaria); }

.endereco-acoes .acao-remover { color: #dc2626; }

/* ------------------------------------------------------------- carrinho */

.carrinho-botao {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    border: 1px solid var(--borda);
    border-radius: 10px;
    color: var(--cor-texto);
    text-decoration: none;
}

.carrinho-botao:hover { border-color: var(--cor-primaria); color: var(--cor-primaria); }

.carrinho-contador {
    position: absolute;
    top: -6px;
    right: -6px;
    min-width: 20px;
    height: 20px;
    padding: 0 5px;
    border-radius: 999px;
    background: var(--cor-primaria);
    color: #fff;
    font-size: .6875rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
}

.quantidade { display: inline-flex; align-items: center; border: 1px solid var(--borda); border-radius: 9px; overflow: hidden; }

.quantidade button {
    width: 38px;
    height: 40px;
    border: 0;
    background: transparent;
    font-size: 1.125rem;
    cursor: pointer;
    color: var(--cor-texto);
}

.quantidade button:hover { background: rgba(0, 0, 0, .05); }

.quantidade input {
    width: 52px;
    height: 40px;
    border: 0;
    border-left: 1px solid var(--borda);
    border-right: 1px solid var(--borda);
    text-align: center;
    font-size: .9375rem;
    background: transparent;
    color: var(--cor-texto);
    -moz-appearance: textfield;
}

.quantidade input::-webkit-outer-spin-button,
.quantidade input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

.compra { display: flex; gap: 12px; align-items: center; margin-bottom: 12px; flex-wrap: wrap; }

.compra .botao-grande { flex: 1; min-width: 200px; margin-bottom: 0; }

.carrinho-grade { display: grid; grid-template-columns: 1fr 340px; gap: 32px; align-items: start; }

.item-carrinho {
    display: grid;
    grid-template-columns: 92px 1fr auto auto;
    gap: 16px;
    align-items: center;
    padding: 16px 0;
    border-bottom: 1px solid var(--borda);
}

.item-indisponivel { opacity: .6; }

.item-foto {
    width: 92px;
    height: 92px;
    border-radius: 10px;
    overflow: hidden;
    background: rgba(0, 0, 0, .04);
    display: flex;
    align-items: center;
    justify-content: center;
}

.item-foto img { width: 100%; height: 100%; object-fit: cover; }

.item-nome { font-weight: 600; margin-bottom: 4px; }
.item-nome a { text-decoration: none; }
.item-nome a:hover { color: var(--cor-primaria); }

.item-preco { color: var(--suave); font-size: .875rem; }

.item-aviso { color: #dc2626; font-size: .875rem; font-weight: 500; }

.item-subtotal { font-weight: 700; font-size: 1.0625rem; min-width: 110px; text-align: right; }

.resumo {
    position: sticky;
    top: 92px;
    border: 1px solid var(--borda);
    border-radius: var(--raio);
    padding: 24px;
}

.resumo h2 { font-size: 1.125rem; margin-bottom: 16px; }

.resumo-linha { display: flex; justify-content: space-between; align-items: baseline; padding: 8px 0; font-size: .9375rem; }

.resumo-total {
    border-top: 1px solid var(--borda);
    margin-top: 8px;
    padding-top: 14px;
    font-size: 1.125rem;
}

.resumo-total strong { font-size: 1.375rem; color: var(--cor-primaria); }

.resumo .botao-grande { margin: 12px 0; }

.resumo .link-secundario { display: block; text-align: center; }

@media (max-width: 900px) {
    .carrinho-grade { grid-template-columns: 1fr; }
    .resumo { position: static; }
    .item-carrinho { grid-template-columns: 72px 1fr; row-gap: 12px; }
    .item-foto { width: 72px; height: 72px; }
    .item-quantidade { grid-column: 1 / -1; }
    .item-subtotal { grid-column: 1 / -1; text-align: left; }
}

/* -------------------------------------------------- checkout e pedidos */

.endereco-escolha { display: block; cursor: pointer; transition: border-color .12s ease; }

.endereco-escolha:hover { border-color: var(--cor-primaria); }

.endereco-ativo { border-color: var(--cor-primaria); box-shadow: 0 0 0 1px var(--cor-primaria) inset; }

.endereco-escolha input[type=radio] { margin-right: 6px; }

.cartao-confirmacao { text-align: center; }

.cartao-confirmacao h1 { font-size: clamp(1.375rem, 3vw, 1.75rem); margin: 12px 0 6px; }

.confirmacao-icone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: #16a34a;
    color: #fff;
    font-size: 1.75rem;
    font-weight: 700;
}

.etiqueta-status {
    display: inline-block;
    padding: 6px 14px;
    border-radius: 999px;
    background: var(--cor-primaria);
    color: #fff;
    font-size: .8125rem;
    font-weight: 600;
}

.cartao-pedido { display: block; text-decoration: none; color: inherit; transition: border-color .12s ease; }

.cartao-pedido:hover { border-color: var(--cor-primaria); }

.pedido-linha { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; }

.pedido-direita { display: flex; align-items: center; gap: 14px; }

.linha-tempo { position: relative; padding-left: 6px; }

.etapa { position: relative; display: flex; gap: 14px; padding: 0 0 20px 22px; }

.etapa::before {
    content: "";
    position: absolute;
    left: 5px;
    top: 14px;
    bottom: -6px;
    width: 2px;
    background: var(--borda);
}

.etapa:last-child::before { display: none; }

.etapa-marca {
    position: absolute;
    left: 0;
    top: 5px;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: var(--borda);
}

.etapa-atual .etapa-marca { background: var(--cor-primaria); box-shadow: 0 0 0 4px rgba(0, 0, 0, .06); }

/* Aviso curto no canto — substitui a biblioteca de notificação do painel */
.aviso-site {
    position: fixed;
    left: 50%;
    bottom: 24px;
    transform: translate(-50%, 140%);
    z-index: 60;
    max-width: 90vw;
    padding: 13px 22px;
    border-radius: 10px;
    background: var(--cor-secundaria);
    color: #fff;
    font-size: .9375rem;
    box-shadow: 0 10px 30px rgba(0, 0, 0, .22);
    transition: transform .22s ease;
}

.aviso-site.aviso-visivel { transform: translate(-50%, 0); }

.aviso-site.aviso-sucesso { background: #16a34a; }
.aviso-site.aviso-erro { background: #dc2626; }

@media (max-width: 620px) {
    .linha-2, .linha-3, .linha-cep { grid-template-columns: 1fr; }
}

/* ================================================================ TEMPLATES

   A empresa escolhe o template na tela de personalização; aqui ele só muda o
   arranjo, nunca o conteúdo. Trocar de template não exige republicar nada. */

/* Minimalista: mais respiro, sem banner cheio, cards sem moldura */
.tpl-minimalista .banner { padding: 72px 0; }
.tpl-minimalista .banner::before { background: rgba(0, 0, 0, .25); }
.tpl-minimalista .produtos { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 32px; }
.tpl-minimalista .produto { border: 0; }
.tpl-minimalista .produto:hover { box-shadow: none; transform: none; }
.tpl-minimalista .produto-foto { border-radius: var(--raio); }
.tpl-minimalista .produto-corpo { padding: 14px 2px; }
.tpl-minimalista .secao-destaque { background: none; }

/* Visual: foco na imagem — cards maiores, texto sobre a foto no hover */
.tpl-visual .produtos { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; }
.tpl-visual .produto { border-radius: 16px; }
.tpl-visual .produto-foto { aspect-ratio: 4 / 5; }
.tpl-visual .produto-descricao { display: none; }
.tpl-visual .banner { padding: 150px 0; }
.tpl-visual .categoria img { width: 100%; height: 130px; border-radius: 10px; }

/* ---------------------------------------------------------------- celular */

@media (max-width: 900px) {
    .produto-detalhe { grid-template-columns: 1fr; gap: 28px; }
}

@media (max-width: 760px) {
    .cabecalho-linha { min-height: 62px; }

    .menu-botao {
        display: flex;
        flex-direction: column;
        justify-content: center;
        gap: 5px;
        width: 42px;
        height: 42px;
        margin-left: auto;
        border: 1px solid var(--borda);
        border-radius: 9px;
        background: none;
        cursor: pointer;
        padding: 0 10px;
    }

    .menu-botao span { display: block; height: 2px; background: var(--cor-texto); border-radius: 2px; }

    .menu {
        display: none;
        width: 100%;
        flex-direction: column;
        gap: 0;
        margin: 0;
        padding: 8px 0;
        border-top: 1px solid var(--borda);
    }

    .menu a { padding: 11px 0; border-bottom: 0; }

    .busca { width: 100%; padding-bottom: 12px; }
    .busca input { flex: 1; min-width: 0; }

    body.menu-aberto .menu { display: flex; }

    .banner { padding: 72px 0; }
    .secao { padding: 44px 0; }
    .produtos { grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 14px; }
    .produto-corpo { padding: 12px; }
    .produto-nome { font-size: .9375rem; }
    .preco-atual { font-size: 1.0625rem; }
    .vitrine-cabecalho { flex-direction: column; gap: 16px; }
}
