/* ===========================
   Vitrine da Loja (loja.css)
   =========================== */

/* ---------- Tokens ---------- */
:root{
  --brand:#ff4d4f;
  --ink:#0f172a;
  --muted:#6b7280;
  --line:#e6e8eb;
  --hdrH:72px;   /* altura do header sticky medida via JS */
  --tbH:52px;    /* altura aproximada da toolbar (abas) */
}

/* ---------- Wrap da página ---------- */
#menu-page{
  max-width:1200px;
  margin:0 auto;
  padding:0 16px 24px;
  /* empurra tudo para baixo do header sticky */
  padding-top:calc(var(--hdrH) + 8px);
  background:#fff;
}

/* ---------- Capa ---------- */
#menu-page .cover{
  width:100%;
  height:220px;
  border-radius:12px;
  background:#fafafa;
  overflow:hidden;
  margin:0;                 /* zera a margem que criava o “vão” */
}
#menu-page .cover img{
  width:100%; height:100%;
  object-fit:cover;
  object-position:50% 34%;
  display:block;
}

/* ---------- Header da loja ---------- */
.store-header{
  display:grid;
  grid-template-columns:auto 1fr auto;
  grid-template-areas:"logo main actions";
  gap:16px;
  align-items:center;
  margin:14px 0 8px;
}
.store-header .sh-logo{
  grid-area:logo;
  width:96px; height:96px;
  border-radius:18px; overflow:hidden; background:#fff;
  box-shadow:0 1px 4px rgba(0,0,0,.05);
}
.store-header .sh-logo img{ width:100%; height:100%; object-fit:cover; display:block; }
.store-header .sh-main{ grid-area:main; }
.store-header .sh-actions{ grid-area:actions; display:flex; justify-content:flex-end; }

.store-header .title{ font-size:28px; font-weight:800; margin:0 0 4px; color:#111827; }
.store-header .meta{ color:var(--muted); font-size:14px; display:flex; gap:12px; align-items:center; }
#menu-page .rating{ display:inline-flex; align-items:center; gap:6px; font-weight:800; color:#111827; }

/* botão “Horário de funcionamento” */
.btn-hours{
  display:inline-flex; align-items:center; gap:8px;
  padding:10px 14px; border:1px solid #e5e7eb; border-radius:10px;
  background:#fff; color:#0f172a; font-weight:800; line-height:1;
  box-shadow:0 4px 14px rgba(15,23,42,.06); cursor:pointer;
  transition:background .2s, box-shadow .2s, transform .02s;
}
.btn-hours:hover{ background:#f7fafc; box-shadow:0 6px 18px rgba(15,23,42,.10); }
.btn-hours:active{ transform:translateY(1px); }

@media (max-width:700px){
  .store-header{
    grid-template-columns:84px 1fr;
    grid-template-areas:
      "logo main"
      "actions main";
    gap:12px 14px; align-items:start;
  }
  .store-header .sh-logo{ width:84px; height:84px; }
  .store-header .sh-actions{ justify-content:flex-start; }
  .store-header .title{ font-size:1.45rem; line-height:1.2; }
}

/* ---------- Favoritos (loja/produto) ---------- */
.fav-btn{
  display:inline-flex; align-items:center; gap:8px;
  padding:8px 12px; border-radius:10px;
  border:1px solid #e5e7eb; background:#f3f4f6;
  cursor:pointer; line-height:1; transition:.15s ease;
}
.fav-btn .ico{ font-size:16px; line-height:1; }
.fav-btn[disabled]{ opacity:.6; cursor:not-allowed; }
.fav-btn:active{ transform:scale(.98); }
.fav-btn[data-on="1"]{ background:#fee2e2; border-color:#fecaca; }
.fav-btn[data-on="1"] .ico{ color:#ef4444; }

.fav-btn--mini{
  padding:6px 8px; border-radius:8px; background:#fff; border:1px solid #e5e7eb;
}
.fav-btn--mini[data-on="1"]{ background:#fee2e2; border-color:#fecaca; }

/* ---------- Toolbar (abas de categorias) ---------- */
.toolbar-wrap{
  position:sticky;
  top:var(--hdrH);          /* gruda exatamente abaixo do header */
  z-index:3000;
  background:#fff;
  border-bottom:1px solid var(--line);
}
.toolbar{ display:flex; align-items:center; gap:16px; padding:8px 0; }
.tabs{ display:flex; gap:16px; overflow:auto; scrollbar-width:none; }
.tabs::-webkit-scrollbar{ display:none; }
.tab{ appearance:none; background:none; border:none; padding:10px 4px; font-weight:800; white-space:nowrap; cursor:pointer }
.tab.active{ color:var(--brand); position:relative }
.tab.active::after{ content:""; position:absolute; left:0; right:0; bottom:-7px; height:3px; background:var(--brand); border-radius:3px }

/* botão carrinho dentro da barra */
.tab.tab-cart{
  display:inline-flex; align-items:center; gap:8px;
  padding:10px 10px; border-radius:8px; background:#fff; border:1px solid var(--line);
}
.tab.tab-cart.active{ color:var(--brand); }
.cart-badge{
  min-width:18px; height:18px; padding:0 5px;
  display:inline-flex; align-items:center; justify-content:center;
  border-radius:999px; background:#111827; color:#fff; font:700 12px/1 system-ui;
}

/* ---------- Layout (lista + aside carrinho) ---------- */
.layout{
  display:grid;
  grid-template-columns:1fr 340px;
  gap:24px;
  align-items:start;
}
@media (max-width:1300px){
  .layout{ display:block; }
}

/* ---------- Títulos e grid de produtos ---------- */
.cat-title{ font-size:22px; font-weight:900; margin:18px 0 10px; letter-spacing:.3px }
.grid{ display:grid; gap:12px; grid-template-columns:1fr 1fr; }
@media (max-width:900px){ .grid{ grid-template-columns:1fr; } }

.product{
  display:flex; gap:12px; align-items:stretch;
  background:#fff; border:1px solid var(--line); border-radius:12px; padding:10px;
  transition: transform .16s ease, box-shadow .16s ease;
}
.product:hover{ transform:translateY(-4px); box-shadow:0 10px 24px rgba(0,0,0,.08); }

.thumb{ position:relative; flex:0 0 120px; height:96px; border-radius:12px; overflow:hidden; background:#fafafa; display:flex; align-items:center; justify-content:center; cursor:zoom-in; }
.thumb a{ display:block; width:100%; height:100%; border-radius:inherit; text-decoration:none; }
.thumb img{ width:100%; height:100%; object-fit:cover; display:block; }

.info{ flex:1; display:flex; flex-direction:column; gap:8px; min-width:0 }
.ttl{ margin:0; font-weight:700; line-height:1.25 }
.desc{ margin:0; color:var(--muted); font-size:.95rem; line-height:1.25; }

.priceRow{ display:flex; align-items:center; gap:10px; margin-top:auto; flex-wrap:wrap; }
.price{ font-weight:900; }
.was{ color:#9CA3AF; text-decoration:line-through; font-weight:600; }
.off-badge{
  display:inline-block; padding:2px 8px; border-radius:9999px;
  font:700 12px/1 system-ui; background:#E6F4EA; color:#15803D; border:1px solid #C7EBD0;
}
.add{
  margin-left:auto; width:40px; height:36px; border:none; border-radius:10px;
  background:var(--brand); color:#fff; font-weight:900; font-size:20px; cursor:pointer;
}
.product .add[disabled], .product .add[aria-disabled="true"]{
  opacity:.45; cursor:not-allowed; filter:grayscale(.3); box-shadow:none; outline:0;
}

/* destaque suave quando há desconto */
.product:has(.off-badge){ position:relative; animation:cardGlow 1.5s ease-in-out infinite; }
.product:has(.off-badge):hover{ animation-play-state:paused; }
.product:has(.off-badge) .off-badge{ animation:badgePulse 1.1s ease-in-out infinite; transform-origin:center; }
@keyframes badgePulse{ 0%,100%{transform:scale(1)} 50%{transform:scale(1.00)} }
@keyframes cardGlow{ 0%,100%{box-shadow:0 0 0 rgba(239,68,68,0)} 50%{box-shadow:0 0 0 8px rgba(239,68,68,.15)} }

/* ---------- Carrinho (aside) ---------- */
.cart-sidebar{
  position:sticky;
  top:calc(var(--hdrH) + 16px);   /* respeita o header */
  align-self:start;
  background:#fff; border:1px solid var(--line); border-radius:12px; padding:12px;
  box-shadow:0 8px 24px rgba(0,0,0,.04);
  z-index:30;
}
.cart-sidebar h3{ margin:0 0 8px; font-size:16px; font-weight:900 }
.cart-empty{ color:var(--muted); font-size:14px; padding:6px 0 10px }
.cart-list{ max-height:calc(100vh - 260px); overflow:auto; position:relative; z-index:1; }

.cart-item{
  display:flex; gap:10px; align-items:center;
  padding:8px 0; border-bottom:1px solid var(--line);
}

/* THUMB do carrinho — FIX do “thumbnail gigante” */
.cart-sidebar .cart-list img,
.cart-sidebar .cart-item img,
.cart-sidebar img{
  width:72px !important;
  height:72px !important;
  object-fit:cover !important;
  border-radius:10px;
  display:block;
}

.cart-meta{ flex:1; min-width:0 }
.cart-title{ font-size:14px; font-weight:700; margin:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.cart-price{ font-size:13px; color:var(--muted) }

.cart-controls{ display:inline-flex; align-items:center; gap:8px; position:relative; z-index:2; }
.cart-controls button{
  width:28px; height:28px; border:1px solid var(--brand); background:var(--brand);
  color:#fff; border-radius:8px; cursor:pointer; font-weight:900;
}
.cart-controls .qtd{ min-width:26px; text-align:center; font-weight:800 }

.cart-total{ display:flex; justify-content:space-between; gap:8px; padding-top:10px; font-weight:900 }
.cart-actions{ display:flex; gap:8px; margin-top:10px }
.cart-checkout{ flex:1; height:40px; border-radius:10px; background:var(--brand); color:#fff; border:1px solid var(--brand); font-weight:900; cursor:pointer }
.cart-clear{ height:40px; border-radius:10px; background:#fff; border:1px solid #e5e7eb; cursor:pointer }

/* ----- Modal de Foto (CSS-only via :target) ----- */
.photo-mask{ position:fixed; inset:0; display:none; align-items:center; justify-content:center; background:rgba(0,0,0,.55); z-index:9999; padding:20px; }
.photo-mask:target{ display:flex; }
.photo-modal{ background:#000; border-radius:14px; overflow:hidden; max-width:min(96vw,980px); max-height:min(90vh,820px); box-shadow:0 30px 80px rgba(0,0,0,.5); position:relative; }
.photo-modal img{ display:block; width:100%; height:auto; max-height:90vh; object-fit:contain; background:#000; }
.photo-close{ position:absolute; top:8px; right:8px; width:40px; height:40px; border-radius:10px; border:1px solid rgba(255,255,255,.25); background:rgba(17,24,39,.6); color:#fff; font:800 18px/40px system-ui; text-align:center; text-decoration:none; }

/* ---------- Responsivo fino ---------- */
@media (max-width:1024px){
  /* um pouco mais de respiro abaixo do header em telas médias */
  #menu-page{ padding-top:calc(var(--hdrH) + 6px); }
}
@media (max-width:900px){
  .grid{ grid-template-columns:1fr; }
}
@media (max-width:425px){
  .product{ align-items:flex-start; gap:10px; padding:10px; }
  .thumb{ flex:0 0 100px; height:84px; border-radius:10px; }
  .ttl{ font-size:16px; }
  .desc{ font-size:13px; }
  .priceRow{ gap:8px; }
}
:root{ --hdrH:72px; }                 /* altura do header medida via JS */

#menu-page{                           /* empurra o conteúdo p/ baixo do header */
  padding-top: calc(var(--hdrH) + 8px);
}

/* Capa sem margem extra */
#menu-page .cover{
  width:100%;
  height:220px;
  border-radius:12px;
  background:#fafafa;
  overflow:hidden;
  margin:0;                           /* <— importante */
}
#menu-page .cover img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:50% 34%;
  display:block;
}

/* Toolbar colada exatamente abaixo do header */
.toolbar-wrap{
  position: sticky;
  top: var(--hdrH);
  z-index: 3000;
  background:#fff;
  border-bottom:1px solid #e6e8eb;
}
/* Se por algum motivo a capa vier sem imagem visível, zera o bloco */
#menu-page .cover:empty { display:none; height:0; margin:0; padding:0; }

/* (Chrome/Edge/Safari modernos) – se o <img> estiver sem src ou vazio, some a capa */
#menu-page .cover:has(img[src=""]),
#menu-page .cover:has(img:not([src])) {
  display:none; height:0; margin:0; padding:0;
}

/* Capa normal (quando existir) */
#menu-page .cover{
  width:100%; height:220px; border-radius:12px; background:#fafafa;
  overflow:hidden; margin:20px 0 10px;
}
#menu-page .cover img{ width:100%; height:100%; object-fit:cover; object-position:50% 34%; }
/* === FIX DEFINITIVO PARA O ESPAÇO VERTICAL === */

/* Remove qualquer margem superior no conteúdo principal */
body.has-sidebar main,
body.has-sidebar #menu-page,
body.has-sidebar .page-wrap,
body.has-sidebar .container-loja {
  margin-top: 0 !important;
  padding-top: 0 !important;
}

/* Garante que o primeiro bloco da loja encoste no header */
body.has-sidebar #menu-page > *:first-child {
  margin-top: 0 !important;
}

/* Se o header for fixo, use esta variável (ajustável) */
:root {
  --hdrH: 64px;
}

/* Empurra conteúdo exatamente abaixo do header */
body.has-sidebar #menu-page {
  padding-top: var(--hdrH) !important;
}

/* Remove blocos "vazios" como capas sem imagem */
#menu-page .cover:empty,
#menu-page .cover.no-img,
#menu-page .store-hero:empty,
#menu-page .store-cover:empty {
  display: none !important;
}

/* Caso a capa exista mas sem imagem real */
#menu-page .cover img[src=""],
#menu-page .cover img:not([src]) {
  display: none !important;
}
#menu-page .cover { border-radius:12px; overflow:hidden; margin:0 0 12px; }
#menu-page .cover img { display:block; width:100%; height:auto; max-height:220px; object-fit:cover; }

/* placeholder opcional (se usar) */
#menu-page .cover--placeholder{
  height:110px; margin:0 0 12px;
  border-radius:12px; border:1px dashed #e5e7eb;
  background:linear-gradient(90deg,#fafafa,#f5f7fb);
  color:#9aa3af; display:flex; align-items:center; justify-content:center;
  font-style:italic; font-size:14px;
}
/* antes */
#menu-page{ padding-top: calc(var(--hdrH, 64px) + 12px); }
.toolbar-wrap{ position: sticky; top: var(--hdrH, 64px); z-index: 3000; }
@media (min-width:1300px){
  .cart-sidebar{ position: sticky; top: calc(var(--hdrH, 64px) + 12px); }
}

/* depois */
#menu-page{ padding-top: calc(var(--hdrH, 0px) + 12px); }
.toolbar-wrap{ position: sticky; top: var(--hdrH, 0px); z-index: 3000; }
@media (min-width:1300px){
  .cart-sidebar{ position: sticky; top: calc(var(--hdrH, 0px) + 12px); }
}
/* padrão sem header sticky */
#menu-page { padding-top: 0; }
.toolbar-wrap { top: 0; }

/* quando houver header sticky, adicionamos a classe no <html> e ativamos o espaçamento */
html.has-sticky-hdr #menu-page { padding-top: calc(var(--hdrH, 64px) + 12px); }
html.has-sticky-hdr .toolbar-wrap { top: var(--hdrH, 64px); }
  /* zera qualquer empurrão de topo, independente de quem setar --hdrH */
  html{ --hdrH:0px !important; }
  body{ margin:0 !important; }                 /* remove a margem padrão de 8px do <body> */
  #menu-page{ padding-top:0 !important; }      /* anula o calc(...) do espaçamento */
  .toolbar-wrap{ top:0 !important; }           /* se tiver sticky, encosta no topo */
  #menu-page .cover{ margin-top:0 !important; }/* se existir essa margem, zera */
  header.tc-hdr{ position:static !important; } /* se um header sticky vazar, deixa de ser sticky */
  /* mostra a capa e dá um respiro embaixo */
  #menu-page .cover{
    display:block !important;
    margin: 0 0 12px;
  }
  /* capa ocupando a largura toda, cortando com objeto cover */
  #menu-page .cover img{
    width: 100%;
    height: 220px;          /* ajuste aqui se quiser maior/menor */
    object-fit: cover;
    border-radius: 12px;
    display:block;
    background:#f3f4f6;     /* fallback se a imagem demorar */
  }
  @media (max-width: 768px){
    #menu-page .cover img{ height: 180px; }
  }
  @media (max-width: 480px){
    #menu-page .cover img{ height: 150px; }
  }/* === Capa da loja =================================== */
#menu-page .cover{ display:block; margin:0 0 12px; }
#menu-page .cover img{
  width:100%;
  height:220px;      /* ajuste a altura que preferir */
  object-fit:cover;
  border-radius:12px;
  display:block;
  background:#f3f4f6; /* fallback se a imagem demorar */
}
@media (max-width:768px){ #menu-page .cover img{ height:180px; } }
@media (max-width:480px){ #menu-page .cover img{ height:150px; } }

/* garantir que nada “empurre” o topo além do header fixo */
#menu-page{ padding-top: calc(var(--hdrH,64px) + 8px); }
#menu-page .store-header{ margin-top:0; }

/* Capa da loja */
#menu-page .cover{
  height: 220px;              /* ajuste se quiser mais/menos alta */
  border-radius: 14px;
  overflow: hidden;
  background: #f5f6f8;
  box-shadow: 0 2px 10px rgba(0,0,0,.04);
  margin-bottom: 12px;
}
#menu-page .cover img{
  width: 100%;
  height: 100%;
  object-fit: cover;          /* recorta sem distorcer */
  display: block;
}

/* Mobile: capa um pouco mais baixa */
@media (max-width: 560px){
  #menu-page .cover{ height: 170px; }
}

/* Sidebar fixo, abaixo do header */
.ck-sidebar{
  position: fixed;
  left: 0;
  top: var(--hdrH, 64px);
  height: calc(100vh - var(--hdrH, 64px));
  width: var(--sb-w, 250px);
  z-index: 30; /* deixe < header se o header usa 40+ */
}

/* Desktop (>=901px): empurra conteúdo SEM overlay */
@media (min-width: 901px){
  .ck-sidebar{ transform: none !important; }
  .ck-sidebar.is-open{ transform: none !important; }
  .ck-sb-toggle{ display: none !important; } /* esconde hamburguer */
  body.has-sidebar{ margin-left: var(--sb-w, 250px) !important; }
}

/* Mobile (<=900px): overlay e não empurra conteúdo */
@media (max-width: 900px){
  .ck-sidebar{ transform: translateX(-100%); }
  .ck-sidebar.is-open{ transform: translateX(0); }
  body.has-sidebar{ margin-left: 0 !important; }
}

/* Protege contra CSS locais que zere a margem no desktop */
@media (min-width: 901px){
  body.has-sidebar{ margin-left: var(--sb-w, 250px) !important; }
}

/* Caso alguma página não use #menu-page, ainda assim respeite o header */
main, .with-header, #menu-page{
  padding-top: calc(var(--hdrH, 64px) + 12px);
}

