/* ==========================================
   2. VITRINA / MARKETPLACE (index.html)
   ========================================== */

/* Header com Localização e Busca */
.header-vitrina {
  background: #ffffff;
  padding: 12px 16px;
  position: sticky;
  top: 0;
  z-index: 100;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}

.localizacao-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
}

.icon-location {
  font-size: 1.1rem;
  color: var(--cor-primaria-texto);
}

.localizacao-texto {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.localizacao-texto small {
  font-size: 0.68rem;
  color: #717171;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  font-weight: 600;
}

.localizacao-texto strong {
  font-size: 0.88rem;
  color: #1a1a1a;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 280px;
}

/* Campo de Busca (com Lupa embutida) */
/* Container de Busca Flexível */
.search-bar-container {
  display: flex;
  align-items: center;
  background-color: #f4f4f5;
  border: 1px solid #f2f2f2;
  border-radius: 8px;
  padding: 2px 6px 2px 12px;
  transition: all 0.2s ease;
}

.search-bar-container:focus-within {
  background-color: #ffffff;
  border-color: var(--cor-primaria);
  box-shadow: 0 0 0 2px rgba(var(--cor-primaria-rgb), 0.1);
}

.search-bar-container input {
  flex: 1;
  padding: 10px 0;
  border: none;
  background: transparent;
  font-size: 0.88rem;
  color: #333;
  outline: none;
}

/* Botão Lupa Padrão */
.btn-search {
  background: transparent;
  border: none;
  color: #888888;
  font-size: 1rem;
  padding: 8px 10px;
  cursor: pointer;
  border-radius: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  outline: none; /* Remove a borda azul/preta de foco do navegador */
  -webkit-tap-highlight-color: transparent; /* Remove o destaque cinza no mobile */
  transition: all 0.2s ease;
}

/* Estado Ativo (SÓ acende quando tem texto ou no instante do clique) */
.btn-search.active {
  color: var(--cor-primaria-texto) !important;
  background-color: var(--cor-primaria-suave);
}

/* Container Principal */
.container-vitrina {
  padding: 16px;
  max-width: 600px;
  margin: 0 auto;
}

.secao-vitrina {
  margin-bottom: 22px;
}

.titulo-categoria, .titulo-secao-main {
  font-size: 0.98rem;
  color: #1a1a1a;
  margin: 0 0 12px 0;
  font-weight: 700;
  letter-spacing: -0.2px;
}

/* Carrosséis Horizontais com Rolagem Suave */
.carrossel-horizontal {
  display: flex;
  gap: 14px;
  overflow-x: auto;
  padding: 4px 2px 8px 2px;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  scroll-behavior: smooth;
}

.carrossel-horizontal::-webkit-scrollbar {
  display: none;
}


/* Banners promocionais do Master */
.secao-banners{margin-top:4px}
.carrossel-banners{display:flex;gap:12px;overflow-x:auto;padding:2px 1px 8px;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.carrossel-banners::-webkit-scrollbar{display:none}
.banner-card{position:relative;display:block;flex:0 0 min(92vw,560px);aspect-ratio:16/6.5;border-radius:14px;overflow:hidden;background:#eee; height:220px;
text-decoration:none;color:inherit;scroll-snap-align:start;box-shadow:0 5px 18px rgba(20,25,30,.10)}
.banner-card img{width:100%;height:100%;display:block;object-fit:cover}
.banner-overlay{position:absolute;left:0;right:0;bottom:0;padding:34px 14px 12px;background:linear-gradient(transparent,rgba(0,0,0,.68));color:#fff;display:flex;flex-direction:column;gap:3px}
.banner-overlay strong{font-size:1rem;line-height:1.15}.banner-overlay span{font-size:.75rem;line-height:1.25;opacity:.94}

/* Círculos de Categorias */
.item-circulo-cat {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 68px;
  cursor: pointer;
  user-select: none;
  transition: transform 0.15s ease;
}

.item-circulo-cat:active {
  transform: scale(0.92);
}

.item-circulo-cat img {
  width: 60px;
  height: 60px;
  border-radius: 50%;
  object-fit: cover;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
  border: 1px solid #f0f0f0;
}

.item-circulo-cat span {
  font-size: 0.72rem;
  margin-top: 6px;
  color: #3e3e3e;
  font-weight: 600;
  text-align: center;
  line-height: 1.1;
}

/* Destaques Lojas na App */
.item-loja-destaque {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 82px;
  cursor: pointer;
  background: #ffffff;
  padding: 10px 8px;
  border-radius: 12px;
  box-shadow: 0 1px 5px rgba(0, 0, 0, 0.06);
  border: 1px solid #f5f5f5;
  transition: transform 0.15s ease;
}

.item-loja-destaque:active {
  transform: scale(0.94);
}

.item-loja-destaque img {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  object-fit: cover;
  border: 1px solid #eee;
}

.item-loja-destaque strong {
  font-size: 0.73rem;
  margin-top: 6px;
  color: #222222;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  width: 72px;
}

.item-loja-destaque small {
  font-size: 0.68rem;
  color: #fca311;
  font-weight: 700;
  margin-top: 2px;
}

/* Chips de Filtro */
.filtros-chips {
  display: flex;
  gap: 8px;
  margin-bottom: 18px;
  overflow-x: auto;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  padding: 2px;
}

.filtros-chips::-webkit-scrollbar {
  display: none;
}

.chip {
  background: #ffffff;
  border: 1px solid #e2e2e2;
  padding: 6px 14px;
  border-radius: 20px;
  font-size: 0.78rem;
  font-weight: 600;
  color: #555555;
  white-space: nowrap;
  cursor: pointer;
  transition: all 0.2s ease;
  user-select: none;
}

.chip i { margin-right: 4px; }

.chip:active {
  transform: scale(0.95);
}

.chip.active {
  background: var(--cor-primaria);
  color: var(--cor-sobre-primaria);
  border-color: var(--cor-primaria);
  box-shadow: 0 2px 6px rgba(var(--cor-primaria-rgb), 0.25);
}

/* Lista de Lojas */
.lista-lojas-v2 {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.loja-cartao {
  display: flex;
  align-items: center;
  background: #ffffff;
  border-radius: 12px;
  padding: 12px;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
  border: 1px solid #f2f2f2;
  cursor: pointer;
  gap: 14px;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.loja-cartao:active {
  transform: scale(0.98);
  background-color: #fafafa;
}

@media (min-width: 768px) {
  .loja-cartao:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  }
}

.logo-loja-card {
  width: 62px;
  height: 62px;
  border-radius: 10px;
  object-fit: cover;
  border: 1px solid #f0f0f0;
  flex-shrink: 0;
}

.info-loja-card {
  flex: 1;
  min-width: 0; /* Impede que textos longos estourem a largura */
}

.linha-titulo h4 {
  margin: 0 0 3px 0;
  font-size: 0.92rem;
  color: #1a1a1a;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.linha-detalhes, .linha-entrega {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 0.78rem;
  color: #717171;
  margin-bottom: 2px;
}

.star {
  color: #fca311;
  font-weight: 700;
}

.star small, .qtd-avaliacoes {
  color: #888888;
  font-weight: normal;
}

.dot {
  color: #cccccc;
  font-size: 0.6rem;
}

.envio-gratis {
  color: #028352;
  font-weight: 600;
}

/* Mensagem de estado vazio */
.msg-vazio {
  text-align: center;
  color: #888;
  font-size: 0.88rem;
  padding: 24px 0;
}

/* ==========================================
   MELHORIAS v11 — cards agora são <button> (acessíveis por teclado)
   ========================================== */
button.item-circulo-cat, button.item-loja-destaque, button.loja-cartao {
  font: inherit; color: inherit; text-align: left; appearance: none; -webkit-appearance: none;
}
button.item-circulo-cat { background: none; border: none; padding: 0; text-align: center; }
button.item-circulo-cat.ativa img { outline: 3px solid var(--cor-primaria); outline-offset: 2px; }
button.item-circulo-cat.ativa span { color: var(--cor-primaria-texto); font-weight: 700; }
button.loja-cartao { width: 100%; }
.aval-total { color: #777; font-weight: normal; }
.loja-cartao.loja-fechada { opacity: .6; filter: grayscale(.6); }
.loja-cartao .linha-titulo { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.badge-fechada { background: #eee; color: #555; font-size: .68rem; font-weight: 700; padding: 2px 8px; border-radius: 10px; }
.banner-card-action{border:0;padding:0;text-align:inherit;font:inherit;cursor:pointer}

/* V48 — filtros de descoberta */
.filtros-chips{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 10px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.filtros-chips::-webkit-scrollbar{display:none}
.filtros-chips .chip{flex:0 0 auto;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}


/* Aviso promocional do Master: popup independente do slider */
.aviso-popup-backdrop{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:18px;background:rgba(0,0,0,.48)}
.aviso-popup-backdrop[hidden]{display:none!important}
.aviso-popup{position:relative;width:min(92vw,520px);max-height:90vh;max-height:calc(100dvh - 24px);overflow:auto;background:#fff;border-radius:18px;box-shadow:0 18px 60px rgba(0,0,0,.28)}
.aviso-popup-close{position:absolute;right:10px;top:10px;z-index:2;width:40px;height:40px;border:0;border-radius:999px;background:rgba(0,0,0,.58);color:#fff;font-size:28px;line-height:1;cursor:pointer}
.aviso-popup-content{padding:0}
.aviso-popup img,.aviso-popup video{display:block;width:100%;height:auto;max-height:70vh;max-height:calc(100dvh - 120px);object-fit:contain}
/* V75.150: sem título nem texto, só a imagem inteira */
.aviso-popup.so-midia{background:transparent;box-shadow:none;overflow:visible}
.aviso-popup.so-midia img,.aviso-popup.so-midia video{max-height:calc(100dvh - 24px);border-radius:18px;box-shadow:0 18px 60px rgba(0,0,0,.28)}
.aviso-popup-info{padding:16px 18px 18px}.aviso-popup-info h3{margin:0;font-size:20px}.aviso-popup-text{margin-top:6px;color:#5f6670;font-size:14px;line-height:1.4}.aviso-popup-link{display:block;text-decoration:none;color:inherit}
@media(max-width:600px){.aviso-popup-backdrop{padding:12px}.aviso-popup{width:min(94vw,480px);border-radius:16px}.aviso-popup-close{width:38px;height:38px}.aviso-popup-info h3{font-size:18px}.aviso-popup-text{font-size:13px}}

/* ==========================================
   V75.73 — Cidades: botão, banner "Chegando em…" e escolha de cidade
   ========================================== */
.btn-cidade{margin-left:auto;display:inline-flex;align-items:center;gap:6px;max-width:48%;min-height:36px;padding:0 10px;border:1px solid #e4e4e7;border-radius:999px;background:#fff;color:#1a1a1a;font-size:.8rem;font-weight:700;cursor:pointer}
.btn-cidade[hidden]{display:none}
.btn-cidade span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.btn-cidade i{font-size:.8rem;color:var(--cor-primaria-texto)}
.cidade-banner{margin:14px 16px 6px;padding:18px;border-radius:18px;background:linear-gradient(135deg,var(--cor-primaria-suave),#fff);border:1px solid rgba(var(--cor-primaria-rgb),.35)}
.cidade-banner[hidden]{display:none}
.cb-selo{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:var(--cor-primaria);color:var(--cor-sobre-primaria);font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.cidade-banner h3{margin:10px 0 4px;font-size:1.25rem;line-height:1.2}
.cidade-banner p{margin:0 0 10px;font-size:.9rem;line-height:1.5;color:#4b4b52}
.cb-barra{height:12px;border-radius:999px;background:rgba(0,0,0,.08);overflow:hidden;margin:12px 0 6px}
.cb-barra i{display:block;height:100%;border-radius:999px;background:var(--cor-primaria);transition:width .4s ease}
.cb-contagem{font-size:.88rem!important;margin-bottom:12px!important}
.cb-acoes{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.cb-btn{min-height:44px;padding:0 16px;border:1px solid #d4d4d8;border-radius:12px;background:#fff;color:#1a1a1a;font-weight:700;font-size:.9rem;cursor:pointer}
.cb-btn.cb-principal{background:var(--cor-primaria);border-color:var(--cor-primaria);color:var(--cor-sobre-primaria)}
.cb-btn:disabled{opacity:.6}
.cb-ok{font-size:.88rem;font-weight:700;color:#15803d}
.cidade-modal{position:fixed;inset:0;z-index:2500;background:rgba(0,0,0,.5);display:flex;align-items:flex-end;justify-content:center}
.cidade-modal[hidden]{display:none}
.cidade-modal-card{width:min(480px,100%);max-height:88vh;overflow:auto;background:#fff;border-radius:20px 20px 0 0;padding:18px 18px calc(22px + env(safe-area-inset-bottom))}
@media (min-width:600px){.cidade-modal{align-items:center}.cidade-modal-card{border-radius:20px}}
.cidade-modal-topo{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.cidade-modal-topo h2{font-size:1.1rem;margin:0}
.cidade-modal-x{width:40px;height:40px;border:0;border-radius:50%;background:#f4f4f5;font-size:1.4rem;cursor:pointer}
.cb-lista{display:grid;gap:8px;margin-bottom:10px}
.cb-item{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:48px;padding:0 14px;border:1px solid #e4e4e7;border-radius:12px;background:#fff;font-size:.95rem;font-weight:700;text-align:left;cursor:pointer}
.cb-item.ativa{border-color:var(--cor-primaria);background:var(--cor-primaria-suave)}
.cb-item small{padding:2px 8px;border-radius:999px;background:#fef3c7;color:#92400e;font-weight:700;font-size:.72rem}
.cb-link{border:0;background:none;padding:10px 0;color:var(--cor-primaria-texto);font-weight:700;text-decoration:underline;cursor:pointer}
.cb-form{display:grid;gap:12px}
.cb-form label{display:flex;flex-direction:column;gap:6px;font-size:.85rem;font-weight:700}
.cb-form input,.cb-form select{width:100%;min-height:46px;padding:0 12px;border:1px solid #d4d4d8;border-radius:10px;background:#fff;font-size:1rem}
.cb-texto{margin:0;font-size:.92rem;line-height:1.5}
.cb-erro{margin:0;color:#b91c1c;font-size:.85rem;font-weight:700}
.cb-pequeno{margin:0;font-size:.75rem;color:#71717a}
.cb-sucesso{text-align:center;padding:10px 0}
.cb-sucesso i{font-size:2.6rem;color:#16a34a}
.cb-sucesso h3{margin:8px 0 4px}
body.cb-aberto{overflow:hidden}

/* V75.76 — app travado enquanto a cidade está em espera: tela cheia na cor da plataforma, com a logo; sem busca, ofertas, lojas nem menu */
body.cidade-trava .search-bar-container,
body.cidade-trava .container-vitrina > :not(#cidade-banner),
body.cidade-trava .barra-carrinho-global,
body.cidade-trava .bottom-nav{display:none!important}
body.cidade-trava{background:var(--cor-primaria)}
body.cidade-trava .container-vitrina{padding:0!important;margin:0!important;max-width:none}
body.cidade-trava .cidade-banner{margin:0;border:0;border-radius:0;min-height:calc(100dvh - 96px);padding:28px 24px calc(36px + env(safe-area-inset-bottom));display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;color:var(--cor-sobre-primaria);background:radial-gradient(120% 70% at 50% 0%,rgba(255,255,255,.22),transparent 60%),var(--cor-primaria)}
body.cidade-trava .cidade-banner h3{margin:16px 0 8px;font-size:1.75rem;line-height:1.15;color:inherit}
body.cidade-trava .cidade-banner p{color:inherit;opacity:.9;max-width:34ch}
body.cidade-trava .cidade-banner .cb-logo{width:min(250px,68%);margin-bottom:6px}
.lg-logo{display:block;width:100%;height:auto}
.lg-letras{fill:var(--cor-sobre-primaria,#1b1b1b)}
.lg-acento{fill:var(--cor-acento-logo,#fff)}
.lg-sorriso{stroke:var(--cor-acento-logo,#fff)}
.cb-logo:empty{display:none}
.cidade-banner:has(.cb-teste) .cb-logo{display:none}
body.cidade-trava .cidade-banner .cb-selo{background:var(--cor-sobre-primaria);color:var(--cor-primaria)}
body.cidade-trava .cidade-banner .cb-barra{width:100%;max-width:340px;height:14px;background:rgba(0,0,0,.18)}
body.cidade-trava .cidade-banner .cb-barra i{background:var(--cor-acento-logo,#fff)}
body.cidade-trava .cidade-banner .cb-contagem{opacity:1!important;font-weight:600}
body.cidade-trava .cidade-banner .cb-acoes{justify-content:center;flex-direction:column;width:100%;max-width:340px;margin-top:6px}
body.cidade-trava .cidade-banner .cb-btn{width:100%;background:transparent;border:2px solid var(--cor-sobre-primaria);color:var(--cor-sobre-primaria)}
body.cidade-trava .cidade-banner .cb-btn.cb-principal{background:var(--cor-sobre-primaria);color:var(--cor-primaria)}
body.cidade-trava .cidade-banner .cb-ok{color:inherit;background:rgba(0,0,0,.14);padding:10px 14px;border-radius:12px}

/* V75.73 — faixa do modo teste (Master/testador) */
.cb-teste{font-size:.82rem;line-height:1.4;color:#5b4300;text-align:left}
body:not(.cidade-trava) .cidade-banner:has(.cb-teste){padding:10px 14px;border-radius:12px;margin:10px 16px 0;background:#fff4d6;border-color:#f0d58a}
.cb-entrar{display:inline-block;margin-top:18px;padding:8px 4px;font-size:.82rem;font-weight:700;color:var(--cor-sobre-primaria);opacity:.85;text-decoration:underline;overflow-wrap:anywhere}

/* V75.107 — mascote do selo YaSUPER no filtro; no chip ativo (fundo amarelo) o desenho vira escuro para continuar visível */
.chip .selo-super-img { height: 22px; width: auto; vertical-align: -6px; margin: -4px 2px -4px 0; }
.chip.active .selo-super-img { filter: brightness(0) opacity(.75); }

/* V75.132 — botões de filtro grudados embaixo do topo; só a lista muda */
.filtros-chips { position: sticky; top: var(--topo-vitrina, 120px); z-index: 50; background: #f7f7f7; margin: 0 -16px 14px; padding: 10px 16px; transition: box-shadow .15s; }
.filtros-chips.grudado { box-shadow: 0 8px 12px -10px rgba(0,0,0,.25); }
.secao-lista { min-height: calc(100vh - var(--topo-vitrina, 120px) - 60px); scroll-margin-top: calc(var(--topo-vitrina, 120px) + 64px); }
.lista-vazia { display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center; }
.lista-vazia p { margin: 0; }
.btn-ver-todos { min-height: 44px; padding: 0 18px; border: 1px solid #e6e6e6; border-radius: 999px; background: #fff; color: var(--cor-primaria-texto); font: inherit; font-weight: 700; box-shadow: 0 1px 4px rgba(0,0,0,.06); cursor: pointer; }
/* selo YaSUPER na cor do texto do botão (branco no selecionado) */
.selo-super-ic { display: inline-block; width: 22px; height: 22px; margin: -4px 2px -4px 0; background: currentColor;
  -webkit-mask: url(../icons/selo-yasuper.png) center / contain no-repeat; mask: url(../icons/selo-yasuper.png) center / contain no-repeat; }

/* V75.133 — cupom discreto no cartão da loja (sem fundo, sem borda) */
.loja-cartao .linha-cupom { display: flex; align-items: center; gap: 5px; margin-top: 4px; min-width: 0; font-size: .8rem; font-weight: 600; color: var(--cor-primaria-texto); }
.loja-cartao .linha-cupom span:first-of-type { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.loja-cartao .linha-cupom .ticket-ic { flex: none; }
.loja-cartao .linha-cupom .cupom-mais { flex: none; font-weight: 500; color: #8b8b8b; }
