/* NAYA — as cores/raio vêm do config.json e são injetadas como variáveis pelo app.js.
   Os valores abaixo são só o fallback enquanto o fetch não volta. */
:root{
  --fundo:#FAF8F5; --superficie:#FFFFFF; --texto:#1C1A17; --texto-suave:#6E675E;
  --dourado:#B8912F; --dourado-claro:#D9BE73; --borda:#EAE4DA; --raio:14px;
  --serif:"Cormorant Garamond",Georgia,"Times New Roman",serif;
  --sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --topo-h:64px;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}

/* O [hidden] do navegador perde para qualquer regra de classe com display
   (.gaveta usa display:flex). Sem isto, a gaveta do carrinho nasce aberta. */
[hidden]{display:none !important}
body{
  margin:0; background:var(--fundo); color:var(--texto);
  font-family:var(--sans); font-size:15px; line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%; display:block}
button{font:inherit; cursor:pointer}
a{color:inherit}

/* ---------- topo ---------- */
.topo{
  position:sticky; top:0; z-index:40; background:color-mix(in srgb,var(--fundo) 88%,transparent);
  backdrop-filter:saturate(180%) blur(12px); border-bottom:1px solid var(--borda);
}
.topo-inner{
  max-width:1180px; margin:0 auto; height:var(--topo-h); padding:0 20px;
  display:flex; align-items:center; justify-content:space-between;
}
.logo{
  font-family:var(--serif); font-size:31px; font-weight:500; letter-spacing:.22em;
  text-decoration:none; padding-left:.22em;
  background:linear-gradient(100deg,var(--dourado) 0%,var(--dourado-claro) 45%,var(--dourado) 100%);
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.topo-acoes{display:flex; align-items:center; gap:9px}
.icone-btn{
  position:relative; background:none; border:1px solid var(--borda); border-radius:999px;
  width:42px; height:42px; display:grid; place-items:center; color:var(--texto);
  flex:0 0 auto; transition:border-color .2s, color .2s;
}
.icone-btn:hover{border-color:var(--dourado); color:var(--dourado)}

/* Busca: campo aberto no desktop, escondido atrás da lupa no mobile. */
.busca{
  display:flex; align-items:center; gap:8px;
  border:1px solid var(--borda); border-radius:999px; background:var(--superficie);
  padding:0 12px; height:42px; width:250px;
  transition:border-color .2s, width .2s;
}
.busca:focus-within{border-color:var(--dourado)}
.busca-icone{color:var(--texto-suave); flex:0 0 auto}
/* 16px é o mínimo que o Safari do iPhone aceita sem dar zoom no campo ao focar.
   Abaixo disso ele amplia a página inteira e o usuário se perde. */
.busca input{
  border:0; outline:0; background:none; width:100%; min-width:0;
  font:inherit; font-size:16px; color:var(--texto);
}

/* Painel de resultados: aparece sobre o desfoque enquanto se digita no mobile.
   No desktop fica escondido — lá a grade inteira já responde à busca ao vivo. */
.busca-resultados{
  position:absolute; top:calc(100% + 8px); left:0; right:0;
  background:var(--superficie); border:1px solid var(--borda); border-radius:var(--raio);
  box-shadow:0 14px 40px rgba(28,26,23,.18);
  max-height:min(58vh,440px); overflow-y:auto; overscroll-behavior:contain;
  animation:descer .18s ease-out;
}
.busca-item{
  display:flex; align-items:center; gap:12px; width:100%;
  padding:10px 12px; background:none; border:0; text-align:left;
  border-bottom:1px solid var(--borda);
}
.busca-item:last-child{border-bottom:0}
.busca-item:active{background:var(--fundo)}
.busca-item-foto{
  width:50px; height:50px; flex:0 0 50px; border-radius:9px; overflow:hidden;
  background:#fff; border:1px solid var(--borda); display:grid; place-items:center;
}
.busca-item-foto img{width:100%; height:100%; object-fit:contain; padding:3px}
.busca-item-info{min-width:0; flex:1}
.busca-item-nome{
  font-size:14px; font-weight:500; margin:0 0 2px; line-height:1.3;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.busca-item-meta{
  font-size:11.5px; color:var(--texto-suave); margin:0;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.busca-item-preco{font-size:14px; font-weight:600; color:var(--dourado); flex:0 0 auto; white-space:nowrap}
.busca-vazio{padding:22px 16px; font-size:13.5px; color:var(--texto-suave); text-align:center}
.busca-todos{
  width:100%; padding:13px; background:var(--fundo); border:0; border-top:1px solid var(--borda);
  font-size:13px; color:var(--dourado); font-weight:500;
  position:sticky; bottom:0;
}

.busca-fundo{
  position:fixed; inset:0; z-index:35;
  background:color-mix(in srgb,var(--texto) 22%,transparent);
  backdrop-filter:blur(5px); -webkit-backdrop-filter:blur(5px);
  animation:fade .18s;
}
.busca input::placeholder{color:var(--texto-suave)}
.busca input::-webkit-search-cancel-button{display:none}
.busca-limpar{
  border:0; background:none; color:var(--texto-suave); font-size:20px; line-height:1;
  padding:0 2px; flex:0 0 auto;
}
.busca-limpar:hover{color:var(--texto)}
.busca-abrir{display:none}

.resultado-busca{
  margin:-10px 0 18px; font-size:13.5px; color:var(--texto-suave);
}
.resultado-busca b{color:var(--texto); font-weight:500}
.carrinho-btn.pulsa{animation:pulsa .5s ease-out}
@keyframes pulsa{
  0%{transform:scale(1)}
  35%{transform:scale(1.16); border-color:var(--dourado); color:var(--dourado)}
  100%{transform:scale(1)}
}
.carrinho-badge{
  position:absolute; top:-4px; right:-4px; min-width:19px; height:19px; padding:0 5px;
  background:var(--dourado); color:#fff; border-radius:999px;
  font-size:11px; font-weight:600; display:grid; place-items:center;
}

/* ---------- hero ---------- */
.hero{max-width:760px; margin:0 auto; padding:66px 24px 46px; text-align:center}
.hero-eyebrow{
  margin:0 0 18px; font-size:11px; letter-spacing:.24em; text-transform:uppercase;
  color:var(--dourado); font-weight:500;
}
.hero h1{
  font-family:var(--serif); font-weight:400; font-size:clamp(30px,5.4vw,50px);
  line-height:1.16; margin:0 0 18px; letter-spacing:-.01em;
}
.hero-sub{margin:0 auto; max-width:540px; color:var(--texto-suave); font-size:16px}

/* ---------- chips (mobile) ---------- */
.chips{
  display:none; gap:8px; overflow-x:auto; scrollbar-width:none;
  padding:12px 20px; position:sticky; top:var(--topo-h); z-index:30;
  background:var(--fundo); border-bottom:1px solid var(--borda);
}
.chips::-webkit-scrollbar{display:none}
.chip{
  flex:0 0 auto; padding:8px 16px; border-radius:999px; border:1px solid var(--borda);
  background:var(--superficie); color:var(--texto-suave); font-size:13px; white-space:nowrap;
  transition:all .18s;
}
.chip[aria-pressed="true"]{background:var(--texto); border-color:var(--texto); color:var(--fundo)}

/* ---------- layout ---------- */
.conteudo{
  max-width:1180px; margin:0 auto; padding:0 20px 80px;
  display:grid; grid-template-columns:206px 1fr; gap:48px; align-items:start;
}
/* O sticky vai no grid item, não no filho: com align-items:start o .lateral tem
   a altura do próprio conteúdo, e um sticky lá dentro não teria por onde correr.
   Aqui ele se posiciona contra o .conteudo, que é alto o bastante. */
.lateral{
  position:sticky; top:calc(var(--topo-h) + 28px); align-self:start;
  max-height:calc(100vh - var(--topo-h) - 48px); overflow-y:auto;
}
.lateral::-webkit-scrollbar{width:0}
.lateral-titulo{
  font-size:11px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--texto-suave); font-weight:500; margin:0 0 14px;
}
.lateral-lista{list-style:none; margin:0; padding:0}
.lateral-lista button{
  width:100%; text-align:left; background:none; border:0; padding:9px 0;
  color:var(--texto-suave); font-size:15px; border-bottom:1px solid transparent;
  display:flex; justify-content:space-between; align-items:center; gap:10px;
  transition:color .18s;
}
.lateral-lista button:hover{color:var(--texto)}
.lateral-lista button[aria-pressed="true"]{color:var(--dourado); font-weight:500}
.lateral-lista .cont{font-size:12px; color:var(--texto-suave); opacity:.7; font-variant-numeric:tabular-nums}

.secao-titulo{
  font-family:var(--serif); font-weight:400; font-size:27px; margin:0 0 22px;
  padding-top:34px;
}
.vitrine{max-width:1180px; margin:0 auto; padding:0 20px}
.vitrine .secao-titulo{padding-top:8px}

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

/* ---------- card ---------- */
.card{
  background:var(--superficie); border:1px solid var(--borda); border-radius:var(--raio);
  overflow:hidden; text-align:left; padding:0; color:inherit;
  display:flex; flex-direction:column; transition:transform .2s, box-shadow .2s, border-color .2s;
}
.card:hover{transform:translateY(-3px); box-shadow:0 12px 30px rgba(28,26,23,.07); border-color:var(--dourado-claro)}
.card-foto{
  aspect-ratio:1; background:#fff; display:grid; place-items:center;
  border-bottom:1px solid var(--borda); overflow:hidden;
}
.card-foto img{width:100%; height:100%; object-fit:contain; padding:12px}
/* produto ainda sem foto: espaço limpo com o monograma bem discreto */
.card-foto.sem-foto::after{
  content:attr(data-marca); font-family:var(--serif); font-size:26px; letter-spacing:.2em;
  color:var(--dourado); opacity:.16;
}
/* Estoque zerado vira "sob encomenda" — nunca um número. Quantidade é dado interno. */
.card-foto{position:relative}
.selo{
  position:absolute; top:10px; left:10px; z-index:1;
  background:color-mix(in srgb,var(--texto) 88%,transparent); color:var(--fundo);
  font-size:10px; letter-spacing:.1em; text-transform:uppercase;
  padding:4px 9px; border-radius:999px;
}
.opcao .encomenda{
  display:block; font-style:normal; font-size:11px; letter-spacing:.08em;
  text-transform:uppercase; color:var(--texto-suave); margin-top:3px;
}
.card-corpo{padding:15px 16px 17px; display:flex; flex-direction:column; flex:1}
.card-marca{
  font-size:10px; letter-spacing:.15em; text-transform:uppercase;
  color:var(--texto-suave); margin:0 0 6px;
}
.card-nome{font-size:15px; font-weight:500; margin:0 0 6px; line-height:1.32}
.card-insp{font-size:12px; color:var(--texto-suave); font-style:italic; margin:0 0 8px; line-height:1.4}
.card-desc{font-size:13px; color:var(--texto-suave); margin:0 0 14px; line-height:1.5}
.card-preco{margin-top:auto; display:flex; align-items:baseline; gap:6px}
.card-preco .rot{font-size:11px; color:var(--texto-suave)}
.card-preco .val{font-size:17px; font-weight:600; color:var(--dourado); font-variant-numeric:tabular-nums}

.vazio{color:var(--texto-suave); padding:40px 0}

/* ---------- modal ---------- */
.overlay{position:fixed; inset:0; background:rgba(28,26,23,.42); z-index:50; animation:fade .2s}
@keyframes fade{from{opacity:0}to{opacity:1}}
.modal{
  position:fixed; z-index:60; top:50%; left:50%; transform:translate(-50%,-50%);
  width:min(1060px,calc(100vw - 32px)); max-height:min(92vh,820px); overflow-y:auto;
  background:var(--superficie); border-radius:var(--raio); box-shadow:0 24px 70px rgba(28,26,23,.24);
}
/* a foto ganha mais espaço que o texto: é ela que vende */
.modal-corpo{display:grid; grid-template-columns:1.15fr 1fr}
.modal-foto{
  background:#fff; border-right:1px solid var(--borda); display:grid; place-items:center;
  min-height:420px; padding:10px;
}
.modal-foto img{width:100%; max-height:560px; object-fit:contain}
.modal-foto.sem-foto::after{
  content:attr(data-marca); font-family:var(--serif); font-size:44px; letter-spacing:.2em;
  color:var(--dourado); opacity:.16;
}
.modal-info{padding:30px 30px 32px}
.modal-marca{font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:var(--texto-suave); margin:0 0 8px}
.modal-nome{font-family:var(--serif); font-weight:500; font-size:27px; line-height:1.2; margin:0 0 10px}
.modal-insp{font-size:13px; color:var(--texto-suave); font-style:italic; margin:0 0 14px}
.modal-desc{font-size:14px; color:var(--texto-suave); margin:0 0 22px}

.opcoes{border:0; padding:0; margin:0 0 20px; display:grid; gap:8px}
.opcoes legend{
  font-size:11px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--texto-suave); margin-bottom:10px; padding:0;
}
.opcao{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  border:1px solid var(--borda); border-radius:10px; padding:12px 14px;
  background:var(--superficie); transition:border-color .18s, background .18s;
}
.opcao:hover{border-color:var(--dourado-claro)}
.opcao[aria-pressed="true"]{border-color:var(--dourado); background:color-mix(in srgb,var(--dourado) 6%,var(--superficie))}
.opcao .lab{font-size:14px}
.opcao .pre{font-weight:600; font-variant-numeric:tabular-nums}

.qtd-linha{display:flex; align-items:center; justify-content:space-between; margin-bottom:18px}
.qtd-label{font-size:13px; color:var(--texto-suave)}
.qtd{display:flex; align-items:center; gap:2px; border:1px solid var(--borda); border-radius:999px; padding:3px}
.qtd button{
  width:30px; height:30px; border:0; background:none; border-radius:999px;
  color:var(--texto-suave); font-size:16px; line-height:1;
}
.qtd button:hover{background:var(--fundo); color:var(--texto)}
.qtd span{min-width:26px; text-align:center; font-variant-numeric:tabular-nums; font-size:14px}

.btn-primario{
  width:100%; padding:14px; border:0; border-radius:10px; background:var(--texto); color:var(--fundo);
  font-size:14px; font-weight:500; letter-spacing:.02em; transition:opacity .18s;
}
.btn-primario:hover{opacity:.87}
.btn-secundario{
  width:100%; padding:13px; margin-top:9px; border:1px solid var(--borda); border-radius:10px;
  background:none; color:var(--texto-suave); font-size:13.5px; transition:all .18s;
}
.btn-secundario:hover{border-color:var(--dourado); color:var(--dourado)}

.fechar{
  position:absolute; top:12px; right:14px; background:none; border:0; z-index:2;
  font-size:28px; line-height:1; color:var(--texto-suave); width:34px; height:34px; border-radius:999px;
}
.fechar:hover{background:var(--fundo); color:var(--texto)}

/* ---------- gaveta do carrinho ---------- */
.gaveta{
  position:fixed; z-index:60; top:0; right:0; bottom:0; width:min(400px,100vw);
  background:var(--superficie); box-shadow:-14px 0 44px rgba(28,26,23,.14);
  display:flex; flex-direction:column; animation:desliza .24s ease-out;
}
@keyframes desliza{from{transform:translateX(100%)}to{transform:translateX(0)}}
.gaveta-topo{
  display:flex; align-items:center; justify-content:space-between;
  padding:20px 22px; border-bottom:1px solid var(--borda); position:relative;
}
.gaveta-topo h2{font-family:var(--serif); font-weight:500; font-size:21px; margin:0}
.gaveta-topo .fechar{position:static}
.gaveta-itens{flex:1; overflow-y:auto; padding:8px 22px}
.gaveta-vazio{padding:34px 22px; color:var(--texto-suave); font-size:14px}
.item{display:flex; gap:12px; padding:15px 0; border-bottom:1px solid var(--borda)}
.item-foto{
  width:56px; height:56px; flex:0 0 56px; border:1px solid var(--borda); border-radius:8px;
  background:#fff; display:grid; place-items:center; overflow:hidden;
}
.item-foto img{width:100%; height:100%; object-fit:contain; padding:4px}
.item-info{flex:1; min-width:0}
.item-nome{font-size:13.5px; font-weight:500; margin:0 0 2px; line-height:1.3}
.item-tam{font-size:12px; color:var(--texto-suave); margin:0 0 8px}
.item-baixo{display:flex; align-items:center; justify-content:space-between; gap:10px}
.item-preco{font-size:14px; font-weight:600; font-variant-numeric:tabular-nums}
.item-remover{background:none; border:0; color:var(--texto-suave); font-size:12px; text-decoration:underline; padding:0}
.item-remover:hover{color:#a33}
.gaveta-rodape{padding:18px 22px 22px; border-top:1px solid var(--borda)}
.gaveta-total{display:flex; justify-content:space-between; align-items:baseline; margin-bottom:14px; font-size:15px}
.gaveta-total strong{font-size:21px; font-variant-numeric:tabular-nums}
.gaveta-obs{font-size:11.5px; color:var(--texto-suave); margin:11px 0 0; line-height:1.45}

/* ---------- botão flutuante de WhatsApp ---------- */
/* z-index abaixo do overlay (50): com o modal ou a gaveta abertos ele some,
   senão fica boiando por cima do conteúdo e rouba o clique de comprar. */
.zap-flutuante{
  position:fixed; z-index:45; right:20px; bottom:20px;
  width:54px; height:54px; border-radius:999px;
  display:grid; place-items:center;
  background:#25D366; color:#fff; text-decoration:none;
  box-shadow:0 6px 20px rgba(37,211,102,.36);
  transition:transform .18s, box-shadow .18s;
}
.zap-flutuante:hover{transform:scale(1.07); box-shadow:0 8px 26px rgba(37,211,102,.46)}
.zap-flutuante:active{transform:scale(.97)}
@media (max-width:860px){
  .zap-flutuante{right:16px; bottom:16px; width:50px; height:50px}
}

body.sobreposto .zap-flutuante{opacity:0; pointer-events:none}

/* ---------- rodapé ---------- */
.rodape{border-top:1px solid var(--borda); background:var(--superficie)}
.rodape-inner{
  max-width:1180px; margin:0 auto; padding:52px 20px 34px;
  display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:38px;
}
.rodape-logo{
  font-family:var(--serif); font-size:27px; letter-spacing:.2em; margin:0 0 6px; color:var(--dourado);
}
.rodape-tag{margin:0; color:var(--texto-suave); font-size:13.5px}
.rodape-col h3{font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--texto-suave); margin:0 0 12px; font-weight:500}
.rodape-col p{margin:0 0 6px; font-size:14px}
.rodape-col a{color:var(--dourado); text-decoration:none}
.rodape-col a:hover{text-decoration:underline}
.rodape-col .suave{color:var(--texto-suave); font-size:13px}
.rodape-fim{
  max-width:1180px; margin:0 auto; padding:0 20px 40px;
  font-size:12px; color:var(--texto-suave);
}

/* ---------- responsivo ---------- */
@media (max-width:860px){
  /* No celular a busca vira uma faixa própria abaixo do topo, aberta pela lupa:
     campo permanente ao lado do carrinho não caberia sem espremer o logo. */
  .busca-abrir{display:grid}
  .busca{
    position:absolute; left:0; right:0; top:calc(var(--topo-h) + 10px);
    width:auto; margin:0 20px; display:none;
    box-shadow:0 10px 30px rgba(28,26,23,.16);
  }
  /* desce junto com o desfoque, em vez de simplesmente aparecer */
  .busca.aberta{display:flex; animation:descer .2s ease-out}
  @keyframes descer{
    from{opacity:0; transform:translateY(-10px)}
    to{opacity:1; transform:translateY(0)}
  }
  .topo{position:sticky}
  .chips{display:flex}
  .lateral{display:none}
  .conteudo{grid-template-columns:1fr; gap:0; padding:0 0 60px}
  .secao-titulo{padding-top:26px; font-size:23px}
  .hero{padding:44px 22px 30px}
  .grade{grid-template-columns:repeat(2,minmax(0,1fr)); gap:0}
  .card{border-radius:0; border-left:0; border-right:0}
  .card-foto img{padding:0}
  .card-corpo{padding:12px 13px 14px}
  .card-desc{display:none}
  .modal{
    top:auto; bottom:0; left:0; transform:none; width:100vw;
    max-height:92vh; border-radius:var(--raio) var(--raio) 0 0;
  }
  .modal-corpo{grid-template-columns:1fr}
  /* No celular a foto ocupa a largura inteira, sem respiro nas laterais:
     as artes já vêm com fundo branco, então encostar na borda não fica cru. */
  .modal-foto{
    border-right:0; border-bottom:1px solid var(--borda);
    min-height:0; padding:0; aspect-ratio:1;
  }
  .modal-foto img{width:100%; height:100%; max-height:none; object-fit:contain}
  .modal-foto.sem-foto{aspect-ratio:16/9}
  .modal-info{padding:22px 20px 26px}
  .rodape-inner{grid-template-columns:1fr; gap:28px; padding-top:38px}
}

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