/* ============================================================
   Catálogo MONTRA — app de compras: grelha foto-first, carrinho,
   ficha em modal, revista PDF. Tema carvão + azul #0040E0.
   ============================================================ */
:root {
  --fundo: #f2f4f8;
  --card: #ffffff;
  --linha: #e3e7ee;
  --texto: #1c2430;
  --texto-suave: #5b6776;
  --acento: #0040e0;
  --acento-forte: #0033b3;
  --verde: #0e7a3c;
  --verde-fundo: #e5f4ea;
  --ambar: #8a5a00;
  --ambar-fundo: #fdf3dc;
  --cinza-fundo: #eef1f5;
  --carvao: #0c0d10;
  --sombra: 0 1px 2px rgba(16, 24, 40, .06), 0 4px 16px rgba(16, 24, 40, .08);
  --sombra-elevada: 0 12px 40px rgba(16, 24, 40, .18);
  --raio: 12px;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  background: var(--fundo);
  color: var(--texto);
  line-height: 1.45;
  padding-bottom: 86px; /* espaço para a barra do carrinho */
}

/* ---------- topo (app) ---------- */
.topo {
  position: sticky; top: 0; z-index: 20;
  background: rgba(255, 255, 255, .94);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--linha);
  padding: 10px 16px 8px;
}
.topo-linha { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.marca { display: flex; align-items: center; gap: 10px; }
.marca-logo {
  width: 38px; height: 38px; border-radius: 10px; flex: none;
  background: linear-gradient(135deg, var(--acento), var(--acento-forte));
  color: #fff; display: grid; place-items: center;
  font-weight: 800; font-size: 1.15rem; box-shadow: var(--sombra);
}
.marca-nome { margin: 0; font-size: 1.05rem; letter-spacing: .01em; line-height: 1.15; }
.marca-nome span { color: var(--acento); font-weight: 700; }
.marca-sub { margin: 0; font-size: .72rem; color: var(--texto-suave); }
.topo-acoes { display: flex; align-items: center; gap: 8px; }
.contador { color: var(--texto-suave); font-size: .85rem; white-space: nowrap; }
.botao-carrinho {
  position: relative; border: 1px solid var(--linha); background: #fff;
  border-radius: 10px; padding: 8px 12px; font-size: 1.05rem; cursor: pointer;
}
.botao-carrinho:hover { border-color: var(--acento); }
.carrinho-badge {
  position: absolute; top: -7px; right: -7px; min-width: 20px; height: 20px;
  border-radius: 999px; background: var(--acento); color: #fff;
  font-size: .7rem; font-weight: 700; display: grid; place-items: center;
  padding: 0 5px; box-shadow: var(--sombra);
}
.carrinho-badge[hidden] { display: none; }
@keyframes pulsar {
  0% { transform: scale(1); }
  40% { transform: scale(1.35); }
  100% { transform: scale(1); }
}
.carrinho-badge.pulse { animation: pulsar .35s ease; }
.topo-filtros {
  display: flex; gap: 8px; margin-top: 8px; flex-wrap: wrap; align-items: center;
}
.busca {
  flex: 1 1 260px; min-width: 200px;
  padding: 9px 14px; border: 1px solid var(--linha); border-radius: 10px;
  font-size: .95rem; background: #fff;
}
.busca:focus { outline: 2px solid var(--acento); outline-offset: 1px; }
.select {
  padding: 9px 12px; border: 1px solid var(--linha); border-radius: 10px;
  background: #fff; font-size: .9rem; color: var(--texto);
}
.switch-label { display: inline-flex; align-items: center; gap: 6px; font-size: .9rem; color: var(--texto-suave); user-select: none; }
.switch { width: 16px; height: 16px; accent-color: var(--acento); }

/* chips de categorias (roláveis, estilo app) */
.chips {
  display: flex; gap: 7px; overflow-x: auto; padding: 9px 2px 3px;
  scrollbar-width: none;
}
.chips::-webkit-scrollbar { display: none; }
.chip {
  flex: none; border: 1px solid var(--linha); background: #fff;
  border-radius: 999px; padding: 6px 14px; font-size: .82rem; cursor: pointer;
  color: var(--texto-suave); transition: .15s; white-space: nowrap;
}
.chip:hover { border-color: var(--acento); color: var(--acento); }
.chip.ativo { background: var(--acento); border-color: var(--acento); color: #fff; font-weight: 600; }

/* ---------- botões ---------- */
.botao-secundario {
  padding: 8px 14px; border: 1px solid var(--linha); border-radius: 10px;
  background: #fff; font-size: .9rem; cursor: pointer; color: var(--texto);
}
.botao-secundario:hover { border-color: var(--acento); color: var(--acento); }
.botao-primario {
  padding: 10px 18px; border: 0; border-radius: 10px; background: var(--acento);
  color: #fff; font-size: .95rem; font-weight: 600; cursor: pointer;
  transition: background .15s;
}
.botao-primario:hover { background: var(--acento-forte); }
.botao-primario:disabled { background: #aab4c5; cursor: not-allowed; }

/* ---------- grelha ---------- */
main { max-width: 1500px; margin: 0 auto; padding: 16px; }
.grelha {
  display: grid; gap: 14px;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
}
.card {
  position: relative;
  background: var(--card); border: 1px solid var(--linha); border-radius: var(--raio);
  overflow: hidden; cursor: pointer; display: flex; flex-direction: column;
  transition: transform .12s ease, box-shadow .12s ease;
}
.card:hover { transform: translateY(-2px); box-shadow: var(--sombra-elevada); }
.card:focus-visible { outline: 2px solid var(--acento); outline-offset: 2px; }
.card-foto {
  aspect-ratio: 4 / 3; background: var(--cinza-fundo); object-fit: contain;
  width: 100%; padding: 8px;
}
.card-adicionar {
  position: absolute; top: 8px; right: 8px; z-index: 2;
  width: 34px; height: 34px; border: 0; border-radius: 999px;
  background: var(--acento); color: #fff; font-size: 1.15rem; line-height: 1;
  cursor: pointer; box-shadow: var(--sombra-elevada);
  display: grid; place-items: center; opacity: .92;
  transition: transform .12s ease, background .12s ease;
}
.card-adicionar:hover { background: var(--acento-forte); transform: scale(1.08); }
.card-adicionar:active { transform: scale(.94); }
.card-corpo { padding: 10px 12px 12px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.card-nome {
  font-size: .88rem; line-height: 1.35; margin: 0;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  min-height: 2.4em;
}
.card-nome-link { color: inherit; text-decoration: none; }
.card-nome-link:hover { color: var(--acento); text-decoration: underline; }
.card-preco { font-size: 1.12rem; font-weight: 700; letter-spacing: -.01em; }
.card-preco.consulta { color: var(--ambar); font-size: .95rem; }
.card-sku { font-size: .75rem; color: var(--texto-suave); }

/* badges */
.badge {
  display: inline-flex; align-items: center; gap: 4px; align-self: flex-start;
  font-size: .72rem; font-weight: 600; padding: 3px 8px; border-radius: 999px;
}
.badge-stock { color: var(--verde); background: var(--verde-fundo); }
.badge-esgotado { color: var(--texto-suave); background: var(--cinza-fundo); }
.badge-consulta { color: var(--ambar); background: var(--ambar-fundo); }
.badge-semfoto { color: var(--texto-suave); background: var(--cinza-fundo); }

.vazio { text-align: center; color: var(--texto-suave); padding: 60px 0; }
.vazio-dica { font-size: .85rem; color: var(--texto-suave); opacity: .8; }

/* ---------- modal ficha ---------- */
.modal { position: fixed; inset: 0; z-index: 40; display: flex; align-items: center; justify-content: center; padding: 16px; }
.modal[hidden] { display: none; }
.modal-fundo { position: absolute; inset: 0; background: rgba(15, 20, 30, .55); }
.modal-painel {
  position: relative; background: #fff; border-radius: 16px; max-width: 860px; width: 100%;
  max-height: 90vh; overflow: auto; display: grid; grid-template-columns: 1.1fr 1fr;
  box-shadow: 0 24px 64px rgba(0, 0, 0, .25);
}
.modal-fechar {
  position: absolute; top: 10px; right: 10px; z-index: 2;
  width: 36px; height: 36px; border: 0; border-radius: 999px; background: rgba(15, 20, 30, .55);
  color: #fff; font-size: 1rem; cursor: pointer;
}
.ficha-galeria { background: var(--cinza-fundo); padding: 14px; }
#ficha-foto {
  width: 100%; aspect-ratio: 4 / 3; object-fit: contain; border-radius: 10px; background: #fff;
}
.ficha-thumbs { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.ficha-thumbs img {
  width: 64px; height: 48px; object-fit: contain; background: #fff;
  border: 2px solid transparent; border-radius: 8px; cursor: pointer;
}
.ficha-thumbs img.ativa { border-color: var(--acento); }
.ficha-info { padding: 22px; display: flex; flex-direction: column; gap: 10px; }
#ficha-nome { margin: 0; font-size: 1.25rem; line-height: 1.3; }
.ficha-categoria { margin: 0; color: var(--acento); font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
.ficha-preco { font-size: 1.7rem; font-weight: 800; color: var(--texto); margin: 0; }
.ficha-preco.consulta { color: var(--ambar); font-size: 1.2rem; }
.ficha-stock-badge { display: flex; gap: 6px; flex-wrap: wrap; }
.ficha-detalhes { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 14px; margin: 4px 0; }
.ficha-detalhes div { display: flex; justify-content: space-between; gap: 8px; border-bottom: 1px dashed var(--linha); padding: 4px 0; }
.ficha-detalhes dt { color: var(--texto-suave); font-size: .8rem; }
.ficha-detalhes dd { margin: 0; font-size: .85rem; font-weight: 600; text-align: right; }
.ficha-desc { color: var(--texto-suave); font-size: .88rem; margin: 0; }
.ficha-compra { display: flex; gap: 8px; margin-top: auto; align-items: center; }
.qtd-stepper {
  display: flex; align-items: center; border: 1px solid var(--linha);
  border-radius: 10px; overflow: hidden; background: #fff;
}
.qtd-stepper button {
  width: 34px; height: 40px; border: 0; background: var(--cinza-fundo);
  font-size: 1.1rem; cursor: pointer; color: var(--texto);
}
.qtd-stepper button:hover { background: var(--linha); }
#ficha-qtd {
  width: 52px; height: 40px; border: 0; text-align: center; font-size: 1rem;
  -moz-appearance: textfield; appearance: textfield;
}
#ficha-qtd::-webkit-inner-spin-button { -webkit-appearance: none; }

/* ---------- barra inferior de pedido (estilo app) ---------- */
.pedido {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 30;
  background: var(--carvao); color: #fff;
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 10px 16px; box-shadow: 0 -8px 30px rgba(16, 24, 40, .25);
  border-top: 2px solid var(--acento);
}
.pedido[hidden] { display: none; }
.pedido-info { display: flex; align-items: center; gap: 12px; }
.pedido-detalhes {
  border: 0; background: rgba(255, 255, 255, .1); color: #fff; cursor: pointer;
  border-radius: 10px; padding: 9px 13px; font-size: 1rem; font-weight: 600;
}
.pedido-detalhes:hover { background: rgba(255, 255, 255, .2); }
.pedido-valores { display: flex; flex-direction: column; line-height: 1.15; }
.pedido-rotulo { font-size: .68rem; text-transform: uppercase; letter-spacing: .05em; color: rgba(255, 255, 255, .6); }
.pedido-total { font-size: 1.15rem; font-weight: 800; color: #fff; }
.pedido-acoes { display: flex; gap: 8px; }
.pedido-acoes .botao-primario { flex: 1; white-space: nowrap; }

/* ---------- carrinho (drawer) ---------- */
.carrinho-overlay {
  position: fixed; inset: 0; z-index: 44; background: rgba(15, 20, 30, .5);
}
.carrinho-overlay[hidden] { display: none; }
.carrinho {
  position: fixed; top: 0; right: 0; bottom: 0; z-index: 45;
  width: min(420px, 100vw); background: var(--card);
  box-shadow: -16px 0 48px rgba(16, 24, 40, .25);
  display: flex; flex-direction: column;
  transform: translateX(105%); transition: transform .22s ease;
}
.carrinho.aberto { transform: translateX(0); }
.carrinho[hidden] { display: none; }
.carrinho-cabeca {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 18px; border-bottom: 1px solid var(--linha); background: var(--carvao);
  color: #fff;
}
.carrinho-cabeca h2 { margin: 0; font-size: 1.05rem; }
.carrinho-fechar {
  border: 0; background: none; color: #fff; font-size: 1.15rem; cursor: pointer;
  padding: 4px 8px; border-radius: 8px;
}
.carrinho-fechar:hover { background: rgba(255, 255, 255, .15); }
.carrinho-lista { list-style: none; margin: 0; padding: 8px 18px; overflow-y: auto; flex: 1; }
.carrinho-lista .vazio-carrinho { color: var(--texto-suave); text-align: center; padding: 40px 0; font-size: .9rem; }
.carrinho-item {
  display: grid; grid-template-columns: 52px 1fr auto; gap: 10px; align-items: center;
  padding: 10px 0; border-bottom: 1px dashed var(--linha);
}
.carrinho-item img {
  width: 52px; height: 40px; object-fit: contain; background: var(--cinza-fundo);
  border-radius: 8px; border: 1px solid var(--linha);
}
.carrinho-item .nome {
  font-size: .8rem; font-weight: 600; line-height: 1.3;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.carrinho-item .preco { font-size: .76rem; color: var(--texto-suave); margin-top: 2px; }
.carrinho-item .direita { display: flex; flex-direction: column; align-items: end; gap: 6px; }
.carrinho-item .subtotal { font-size: .85rem; font-weight: 700; white-space: nowrap; }
.qtd-mini { display: flex; align-items: center; gap: 2px; }
.qtd-mini button {
  width: 26px; height: 26px; border: 1px solid var(--linha); background: #fff;
  border-radius: 7px; cursor: pointer; font-size: .95rem; line-height: 1;
}
.qtd-mini button:hover { border-color: var(--acento); color: var(--acento); }
.qtd-mini span { min-width: 28px; text-align: center; font-size: .88rem; font-weight: 700; }
.carrinho-item .remover {
  border: 0; background: none; color: var(--texto-suave); cursor: pointer; font-size: .8rem;
}
.carrinho-item .remover:hover { color: #c22; }
.carrinho-rodape {
  padding: 14px 18px 18px; border-top: 1px solid var(--linha); background: var(--fundo);
  display: flex; flex-direction: column; gap: 8px;
}
.carrinho-resumo {
  display: flex; justify-content: space-between; align-items: center; font-size: .9rem;
}
.carrinho-resumo strong { font-size: 1.3rem; color: var(--acento); }
.carrinho-rodape .botao-primario { width: 100%; }

/* ---------- toast ---------- */
.toast {
  position: fixed; bottom: 92px; left: 50%; transform: translateX(-50%);
  background: var(--carvao); color: #fff; padding: 10px 18px; border-radius: 10px;
  font-size: .88rem; box-shadow: var(--sombra-elevada); z-index: 60;
  border: 1px solid rgba(255, 255, 255, .15);
}
.toast[hidden] { display: none; }

/* ---------- impressão ---------- */
@media print {
  body { background: #fff; padding-bottom: 0; }
  .topo, .pedido, .modal, #ficha, .carrinho, .carrinho-overlay, #toast { display: none !important; }
  main { max-width: none; padding: 0; }
  .grelha { grid-template-columns: repeat(4, 1fr); gap: 8px; }
  .card { break-inside: avoid; }
  .card-adicionar { display: none; }
}

/* ---------- mobile ---------- */
@media (max-width: 760px) {
  .modal-painel { grid-template-columns: 1fr; max-height: 92vh; }
  .ficha-galeria { padding: 10px; }
  .grelha { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; }
  .pedido { flex-wrap: wrap; padding: 8px 12px; }
  .pedido-acoes { width: 100%; }
  .pedido-acoes .botao-secundario { padding: 8px 10px; }
  .contador { display: none; }
}

/* ============================================================
   FORMATO-AFRITRONIC (19/08) — formato do catálogo da Afritronic:
   chrome navy #1a1a2e/#000015 + azul da marca #0040E0/#1A5FFF,
   logo oficial no header/carrinho/loader/footer.
   Anexado ao FIM (padrão: anexar vence por ordem).
   ============================================================ */
:root {
  --navy: #1a1a2e;
  --navy-profundo: #000015;
  --azul-claro: #1A5FFF;
  --azul-suave: #7ea2ff;
  --texto-navy: #9aa7c7;
}

/* ---------- loader Afritronic ---------- */
.loader {
  position: fixed; inset: 0; z-index: 100;
  background: var(--navy-profundo);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 14px; transition: opacity .35s ease, visibility .35s;
}
.loader.pronto { opacity: 0; visibility: hidden; pointer-events: none; }
.loader-rings { position: relative; width: 84px; height: 84px; }
.loader-ring {
  position: absolute; inset: 0; border-radius: 50%;
  border: 3px solid transparent; border-top-color: var(--azul-claro);
  animation: girar 1s linear infinite;
}
.loader-ring:nth-child(2) { inset: 10px; border-top-color: #5588FF; animation-duration: 1.4s; }
.loader-ring:nth-child(3) { inset: 20px; border-top-color: #8899BB; animation-duration: 1.8s; }
@keyframes girar { to { transform: rotate(360deg); } }
.loader-logo { position: absolute; inset: 24px; width: 36px; height: auto; margin: auto; }
.loader-text {
  color: #fff; letter-spacing: .28em; font-size: .8rem; font-weight: 700;
  text-transform: uppercase;
}

/* ---------- topo navy (Afritronic) ---------- */
.topo { background: var(--navy); border-bottom: 2px solid var(--acento); }
.topo-logo { height: 34px; width: auto; border-radius: 4px; background: #fff; padding: 2px 6px; }
.marca-nome { color: #fff; }
.marca-nome span { color: var(--azul-suave); }
.marca-sub { color: var(--texto-navy); }
.contador { color: var(--texto-navy); }
.botao-cotacao {
  display: inline-flex; align-items: center;
  background: var(--acento); color: #fff; font-weight: 600; font-size: .88rem;
  padding: 8px 14px; border-radius: 10px; text-decoration: none;
  transition: background .15s;
}
.botao-cotacao:hover { background: var(--azul-claro); }
.topo .botao-secundario { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .2); color: #fff; }
.topo .botao-secundario:hover { border-color: var(--azul-suave); color: var(--azul-suave); }
.topo .botao-carrinho { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .2); color: #fff; }
.topo .botao-carrinho:hover { border-color: var(--azul-suave); }
.busca, .select { border-color: #c7cede; }
.chip:hover { border-color: var(--acento); color: var(--acento); }

/* ---------- footer Afritronic ---------- */
.rodape {
  margin-top: 28px; background: var(--navy);
  color: #d5dbee; border-top: 2px solid var(--acento);
}
.rodape-inner {
  max-width: 1200px; margin: 0 auto; padding: 28px 16px 14px;
  display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 24px;
}
.rodape-logo { height: 44px; width: auto; background: #fff; border-radius: 6px; padding: 3px 8px; }
.rodape-marca p { font-size: .85rem; color: var(--texto-navy); }
.rodape-col h3 {
  margin: 0 0 8px; font-size: .85rem; color: #fff; text-transform: uppercase;
  letter-spacing: .06em;
}
.rodape-col p { font-size: .85rem; color: var(--texto-navy); margin: 0 0 6px; }
.rodape-col a { display: block; color: var(--azul-suave); text-decoration: none; font-size: .88rem; margin: 3px 0; }
.rodape-col a:hover { color: #fff; }
.rodape-site a { display: inline; }
.rodape-nota {
  max-width: 1200px; margin: 0 auto; padding: 10px 16px 16px;
  border-top: 1px solid rgba(255, 255, 255, .12);
  font-size: .75rem; color: #7b88ab;
}

/* ---------- carrinho navy + sugestões ---------- */
.carrinho-cabeca { background: var(--navy); }
.carrinho-logo { height: 20px; width: auto; background: #fff; border-radius: 3px; padding: 1px 4px; vertical-align: -4px; }
.carrinho-sugestoes { padding: 10px 18px 4px; border-top: 1px solid var(--linha); background: var(--fundo); }
.carrinho-sugestoes h3 { margin: 0 0 8px; font-size: .82rem; color: var(--texto-suave); font-weight: 700; }
.sugestoes-lista { display: flex; flex-direction: column; gap: 6px; max-height: 180px; overflow-y: auto; }
.sugestao {
  display: grid; grid-template-columns: 44px 1fr auto; gap: 8px; align-items: center;
  background: #fff; border: 1px solid var(--linha); border-radius: 10px; padding: 6px 8px;
}
.sugestao img { width: 44px; height: 34px; object-fit: contain; background: var(--cinza-fundo); border-radius: 6px; }
.sugestao .nome {
  font-size: .76rem; font-weight: 600; line-height: 1.25;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.sugestao .preco { font-size: .74rem; color: var(--texto-suave); }
.sugestao button {
  border: 0; background: var(--acento); color: #fff; border-radius: 8px;
  width: 28px; height: 28px; font-size: 1rem; cursor: pointer; line-height: 1;
}
.sugestao button:hover { background: var(--acento-forte); }

/* ---------- barra de pedido + toast navy ---------- */
.pedido { background: var(--navy); }
.toast { background: var(--navy); }

/* ---------- ficha: cotação ---------- */
.ficha-compra .qtd-stepper:has(~ .botao-primario.consulta) { display: none; }
.botao-primario.consulta { background: #128C7E; }
.botao-primario.consulta:hover { background: #0e7367; }

/* ---------- partilhar no card ---------- */
.card-partilhar {
  position: absolute; top: 8px; left: 8px; z-index: 2;
  width: 34px; height: 34px; border: 0; border-radius: 999px;
  background: rgba(12, 13, 16, .72); color: #fff; font-size: .95rem; line-height: 1;
  cursor: pointer; box-shadow: var(--sombra-elevada);
  display: grid; place-items: center; opacity: .92;
  transition: transform .12s ease, background .12s ease;
}
.card-partilhar:hover { background: var(--navy); transform: scale(1.08); }

/* ---------- mobile ---------- */
@media (max-width: 760px) {
  .rodape-inner { grid-template-columns: 1fr; gap: 14px; }
  .botao-cotacao { padding: 8px 10px; font-size: .8rem; }
  .marca-sub { display: none; }

  /* topo compacto: marca NUNCA estoura (ellipsis) nem sobrepõe as acções */
  .topo { padding: 8px 12px 6px; }
  .topo-linha { gap: 8px; }
  .marca { min-width: 0; }
  .marca-nome { font-size: .95rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .topo-acoes { flex-wrap: wrap; justify-content: flex-end; gap: 6px; }
  .topo-filtros { gap: 6px; margin-top: 6px; }
  .busca { min-width: 0; flex: 1 1 180px; }
  .select { padding: 8px 8px; font-size: .85rem; }
}

/* ============================================================
   ELEVAÇÃO SÍNTESE-1000 (19/08) — átomos premium dos sites-piloto
   (cortina de marca, kicker, serif display, hairlines, reveals,
   fleuron, pulso AO VIVO) aplicados à identidade Afritronic
   (navy #1a1a2e + azul #0040E0). Fontes locais SEMPRE (PWA offline).
   ============================================================ */
:root {
  --serif: "Palatino Linotype", "Book Antiqua", Palatino, Georgia, "Times New Roman", serif;
  --mono: "Cascadia Mono", Consolas, "Courier New", monospace;
  --fio: rgba(255, 255, 255, .14);   /* hairline sobre navy */
  --ouro: #c9a24b;                    /* acento secundário (consulta) */
}

/* ---------- cortina de marca (loader) ---------- */
.loader-text { display: flex; gap: .08em; align-items: center; }
.loader-text i { font-style: normal; display: inline-block; opacity: 0; transform: translateY(16px); animation: subir .7s ease forwards; }
.loader-text i:nth-child(2) { animation-delay: .05s; } .loader-text i:nth-child(3) { animation-delay: .10s; }
.loader-text i:nth-child(4) { animation-delay: .15s; } .loader-text i:nth-child(5) { animation-delay: .20s; }
.loader-text i:nth-child(6) { animation-delay: .25s; } .loader-text i:nth-child(7) { animation-delay: .30s; }
.loader-text i:nth-child(8) { animation-delay: .35s; } .loader-text i:nth-child(9) { animation-delay: .40s; }
.loader-text i:nth-child(10) { animation-delay: .45s; } .loader-text i:nth-child(11) { animation-delay: .50s; }
.loader-text i:nth-child(12) { animation-delay: .55s; } .loader-text i:nth-child(13) { animation-delay: .60s; }
.loader-text i:nth-child(14) { animation-delay: .65s; } .loader-text i:nth-child(15) { animation-delay: .70s; }
.loader-text i:nth-child(16) { animation-delay: .75s; } .loader-text i:nth-child(17) { animation-delay: .80s; }
.loader-text i:nth-child(18) { animation-delay: .85s; } .loader-text i:nth-child(19) { animation-delay: .90s; }
@keyframes subir { to { opacity: 1; transform: translateY(0); } }
.loader-sub {
  margin: 0; color: #9aa7c7; font-size: .62rem; letter-spacing: .42em;
  text-transform: uppercase; opacity: 0; animation: subir .8s ease 1s forwards;
}
.loader.pronto {
  transform: translateY(-100%);
  opacity: 0; visibility: hidden; pointer-events: none;
  transition: transform .85s cubic-bezier(.76, 0, .24, 1),
              opacity .45s ease .3s, visibility 0s linear .85s;
}

/* ---------- topo: hairline + AO VIVO ---------- */
.topo {
  box-shadow: 0 10px 30px rgba(0, 0, 21, .18);
  border-bottom: 1px solid var(--fio);
}
.contador {
  font-family: var(--mono); font-size: .76rem; letter-spacing: .06em;
  display: inline-flex; align-items: center; gap: 7px;
}
.contador::before {
  content: ""; width: 7px; height: 7px; border-radius: 50%; flex: none;
  background: #22c55e; animation: pulso 2.2s ease-out infinite;
}
@keyframes pulso {
  0% { box-shadow: 0 0 0 0 rgba(34, 197, 94, .5); }
  70% { box-shadow: 0 0 0 7px rgba(34, 197, 94, 0); }
  100% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0); }
}
.marca-nome { font-family: var(--serif); font-size: 1.16rem; letter-spacing: .08em; }
.marca-sub { letter-spacing: .18em; text-transform: uppercase; font-size: .64rem; }

/* ---------- kicker de secção ---------- */
.kicker {
  display: flex; align-items: center; gap: 12px;
  margin: 2px 0 14px; font-size: .66rem; letter-spacing: .34em;
  text-transform: uppercase; color: var(--texto-suave); font-weight: 500;
}
.kicker::before { content: ""; width: 38px; height: 1px; background: var(--acento); opacity: .7; flex: none; }
.kicker b { color: var(--acento); font-weight: 700; }

/* ---------- título hero (nome do catálogo, 19/08) ---------- */
.hero-titulo {
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.35rem, 2.6vw, 2.05rem);
  font-weight: 700;
  line-height: 1.22;
  color: var(--carvao);
  margin: 0 0 6px;
  letter-spacing: .01em;
}
.hero-titulo b { color: var(--acento); font-weight: 700; }
.hero-24h {
  display: inline-flex; align-items: center; gap: 8px;
  margin-left: 12px; vertical-align: middle;
  font-family: "Cascadia Mono", Consolas, "Courier New", monospace;
  font-size: .62rem; font-weight: 600; letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--acento);
  background: rgba(0,64,224,.06);
  border: 1px solid rgba(0,64,224,.3);
  border-radius: 999px;
  padding: 4px 12px;
}
.hero-24h::before { content: "❧ "; color: var(--acento); }
@media (max-width: 640px) {
  .hero-24h { display: block; margin: 8px 0 0; width: fit-content; }
}

/* ---------- aviso por encomenda (19/08): mais produtos no site Afritronic ---------- */
.aviso-encomenda {
  position: relative;
  background:
    radial-gradient(700px 240px at 88% -60%, rgba(0, 64, 224, .45), transparent 60%),
    linear-gradient(150deg, #0a0b0f 0%, #101a3a 55%, #00164d 100%);
  color: #fff;
  border: 1px solid rgba(0, 64, 224, .35);
  border-radius: 16px;
  padding: 1.4rem 3.1rem 1.4rem 1.5rem;
  margin: 0 0 1.6rem;
  box-shadow: 0 14px 34px rgba(0, 0, 0, .16);
}
.aviso-inner { display: flex; align-items: center; gap: 1.5rem; }
.aviso-textos { flex: 1; min-width: 0; }
.aviso-kicker {
  margin: 0 0 .45rem;
  font-family: var(--mono); font-size: .68rem;
  letter-spacing: .3em; text-transform: uppercase;
  color: var(--ouro);
}
.aviso-kicker::before { content: "❧ "; color: var(--ouro); }
.aviso-titulo {
  margin: 0 0 .4rem;
  font-family: var(--serif); font-size: 1.22rem; font-weight: 700;
  letter-spacing: .01em;
}
.aviso-titulo b { color: #6f9dff; }
.aviso-sub { margin: 0; color: rgba(255, 255, 255, .72); font-size: .9rem; max-width: 62ch; }
.aviso-sub b { color: #fff; }
.botao-aviso {
  flex: none;
  display: inline-flex; align-items: center; gap: .5rem;
  background: linear-gradient(180deg, #2a63f0, var(--acento) 55%, #0033b3);
  color: #fff; font-weight: 700; font-size: .92rem;
  border: 0; border-radius: 12px; padding: .85rem 1.35rem;
  text-decoration: none; letter-spacing: .02em;
  box-shadow: 0 1px 0 rgba(255, 255, 255, .25) inset, 0 10px 24px rgba(0, 40, 160, .35);
  transition: transform .2s ease, filter .2s ease, box-shadow .2s ease;
}
.botao-aviso:hover { transform: translateY(-2px); filter: brightness(1.07); }
.botao-aviso:active { transform: translateY(0); }
.aviso-fechar {
  position: absolute; top: 10px; right: 10px;
  width: 30px; height: 30px;
  display: grid; place-items: center;
  background: rgba(255, 255, 255, .12);
  color: rgba(255, 255, 255, .8);
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius: 50%;
  font-size: .8rem; line-height: 1; cursor: pointer;
  transition: background .18s ease, color .18s ease;
}
.aviso-fechar:hover { background: rgba(255, 255, 255, .28); color: #fff; }
@media (max-width: 720px) {
  .aviso-inner { flex-direction: column; align-items: flex-start; gap: 1.1rem; }
  .botao-aviso { width: 100%; justify-content: center; }
}

/* ---------- grelha: cards premium ---------- */
.card {
  border-color: rgba(0, 64, 224, .12);
  transition: transform .18s cubic-bezier(.2, .8, .2, 1), box-shadow .18s ease, border-color .18s ease;
}
.card:hover {
  transform: translateY(-3px);
  border-color: rgba(0, 64, 224, .45);
  box-shadow: 0 16px 40px rgba(16, 24, 40, .16);
}
.card-foto {
  padding: 6px;
  background: linear-gradient(180deg, #f7f9fc, var(--cinza-fundo));
  transition: transform .4s ease;
}
.card:hover .card-foto { transform: scale(1.04); }
.card-preco { font-family: var(--serif); font-size: 1.2rem; }
.card-sku { font-family: var(--mono); font-size: .68rem; letter-spacing: .05em; }
.badge-consulta {
  color: #7a5208;
  background: linear-gradient(180deg, #fdf3dc, #f8e8bf);
  border: 1px solid rgba(201, 162, 75, .45);
}
.card-partilhar { background: rgba(10, 14, 26, .78); backdrop-filter: blur(4px); }

/* ---------- botões premium (degrau azul) ---------- */
.botao-primario {
  background: linear-gradient(180deg, #1a5fff, var(--acento));
  border-radius: 12px;
  box-shadow: 0 4px 14px rgba(0, 64, 224, .28), inset 0 1px 0 rgba(255, 255, 255, .25);
  transition: transform .15s ease, box-shadow .15s ease;
}
.botao-primario:hover { transform: translateY(-1px); box-shadow: 0 8px 22px rgba(0, 64, 224, .36); }
.botao-primario:active { transform: translateY(0); }
.botao-cotacao {
  background: linear-gradient(180deg, #1a5fff, var(--acento));
  border-radius: 12px;
  box-shadow: 0 4px 14px rgba(0, 64, 224, .3), inset 0 1px 0 rgba(255, 255, 255, .25);
}
.botao-cotacao:hover { background: linear-gradient(180deg, #2f6bff, #0048f5); }
.botao-secundario { border-radius: 12px; }

/* ---------- chips premium ---------- */
.chip { padding: 6px 16px; font-weight: 500; transition: .18s ease; }
.chip.ativo {
  background: linear-gradient(180deg, #1a5fff, var(--acento));
  box-shadow: 0 3px 10px rgba(0, 64, 224, .35);
}

/* ---------- ficha: serif + cartão de preço ---------- */
.modal-fundo { background: rgba(10, 14, 26, .62); backdrop-filter: blur(6px); }
.modal-painel { border-radius: 20px; box-shadow: 0 32px 80px rgba(0, 0, 0, .35); }
#ficha-nome { font-family: var(--serif); font-size: 1.5rem; line-height: 1.25; }
.ficha-categoria { letter-spacing: .14em; }
.ficha-preco {
  font-family: var(--serif); letter-spacing: .01em;
  background: linear-gradient(180deg, #f2f6ff, #e8efff);
  border: 1px solid rgba(0, 64, 224, .16); border-radius: 12px;
  padding: 10px 16px; display: inline-block;
}
.ficha-detalhes dd { font-family: var(--mono); font-size: .78rem; }

/* ---------- barra de pedido + carrinho ---------- */
.pedido {
  background: linear-gradient(180deg, #1a1a2e, #0c0d1c);
  border-top: 1px solid var(--fio);
}
.pedido-total { font-family: var(--serif); font-size: 1.22rem; letter-spacing: .02em; }
.carrinho-cabeca { background: linear-gradient(180deg, #1a1a2e, #12121f); }
.carrinho-cabeca h2 { font-family: var(--serif); letter-spacing: .04em; }
.carrinho-resumo strong { font-family: var(--serif); color: var(--acento); }

/* ---------- footer: hairline + fleuron ---------- */
.rodape-inner { border-top: 1px solid var(--fio); }
.rodape-col h3 { letter-spacing: .14em; font-weight: 600; }
.rodape-col h3::after { content: ""; display: block; width: 22px; height: 1px; background: var(--azul-suave); margin-top: 7px; opacity: .6; }
.rodape-nota { letter-spacing: .03em; }
.rodape-nota::before {
  content: "❧"; display: block; color: var(--azul-suave);
  font-size: 1.05rem; margin-bottom: 7px; opacity: .85;
}

/* ---------- detalhes de qualidade ---------- */
::selection { background: var(--acento); color: #fff; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: #c4cbd9; border-radius: 8px; border: 2px solid var(--fundo); }
::-webkit-scrollbar-thumb:hover { background: #a8b2c4; }
::-webkit-scrollbar-track { background: transparent; }
.busca:focus, .select:focus, .chip:focus-visible,
.botao-primario:focus-visible, .botao-secundario:focus-visible,
.botao-cotacao:focus-visible { outline: 2px solid var(--azul-claro); outline-offset: 2px; }
.toast { border-left: 3px solid var(--azul-claro); animation: toastin .25s ease; }
@keyframes toastin {
  from { opacity: 0; transform: translate(-50%, 10px); }
  to { opacity: 1; transform: translate(-50%, 0); }
}

/* ---------- reveals (1 shot; reduced-motion desligado) ---------- */
html.js [data-reveal] { opacity: 0; transform: translateY(16px); }
html.js [data-reveal].revelado {
  opacity: 1; transform: none;
  transition: opacity .7s ease, transform .7s cubic-bezier(.2, .8, .2, 1);
}
@media (prefers-reduced-motion: reduce) {
  html.js [data-reveal] { opacity: 1; transform: none; transition: none; }
  .loader.pronto { transform: none; transition: opacity .2s ease, visibility 0s linear .2s; }
  .loader-text i { animation-duration: .01s; }
  .card:hover .card-foto { transform: none; }
}

/* ---------- mobile: compacto (a elevação anexa por cima → re-aplicar) ---------- */
@media (max-width: 760px) {
  .contador { display: none; }
  .marca-nome { font-size: .95rem; letter-spacing: .04em; }
  .kicker { font-size: .6rem; letter-spacing: .26em; }
}

/* ============================================================
   ELEVAÇÃO SÍNTESE-1000 · ONDA 2 (19/08) — "CONTINUE MESMA COISA"
   Banda de cotação + empty state premium + micro-animações
   ============================================================ */

/* ---------- banda de cotação (CTA final) ---------- */
.banda-cotacao {
  background:
    radial-gradient(900px 300px at 85% -40%, rgba(0,64,224,.5), transparent 60%),
    radial-gradient(700px 320px at -10% 120%, rgba(0,64,224,.32), transparent 55%),
    linear-gradient(150deg, #0a0b0f 0%, #101a3a 55%, #00164d 100%);
  color: #fff;
  padding: 3.2rem max(1.25rem, calc((100vw - 1180px) / 2));
  border-top: 1px solid var(--fio);
  border-bottom: 1px solid var(--fio);
}
.banda-inner {
  display: flex; align-items: center; justify-content: space-between; gap: 2.2rem;
  max-width: 1180px; margin: 0 auto;
}
.banda-kicker {
  margin: 0 0 .55rem;
  font-family: var(--mono); font-size: .72rem;
  letter-spacing: .32em; text-transform: uppercase;
  color: var(--ouro);
}
.banda-kicker::before {
  content: ""; display: inline-block; width: 26px; height: 1px;
  background: var(--ouro); vertical-align: middle; margin-right: 10px; opacity: .8;
}
.banda-titulo {
  margin: 0 0 .5rem;
  font-family: var(--serif); font-size: 1.65rem; font-weight: 700;
  letter-spacing: .02em;
}
.banda-sub { margin: 0; color: rgba(255,255,255,.72); font-size: .95rem; max-width: 46ch; }
.botao-banda {
  flex: none;
  display: inline-flex; align-items: center; gap: .5rem;
  background: linear-gradient(180deg, #e0b75e, #c9a24b 55%, #a8842f);
  color: #14161c; font-weight: 700; font-size: .95rem;
  border: 0; border-radius: 12px; padding: .95rem 1.6rem;
  text-decoration: none; letter-spacing: .02em;
  box-shadow: 0 1px 0 rgba(255,255,255,.35) inset, 0 10px 26px rgba(0,0,0,.35);
  transition: transform .2s ease, box-shadow .2s ease, filter .2s ease;
}
.botao-banda:hover { transform: translateY(-2px); filter: brightness(1.06); }
.botao-banda:active { transform: translateY(0); }

/* ---------- empty state premium ---------- */
.vazio {
  text-align: center; padding: 3.5rem 1.25rem 4.5rem;
  color: var(--texto-suave);
}
.vazio-atomo {
  width: 74px; height: 74px; margin: 0 auto 1.4rem;
  display: grid; place-items: center;
  border: 1px solid var(--fio); border-radius: 50%;
  background: linear-gradient(160deg, #f4f7ff, #e9efff);
  box-shadow: 0 0 0 8px rgba(0,64,224,.05);
}
.vazio-atomo span {
  font-size: 1.9rem; color: var(--acento); line-height: 1;
  animation: vazio-pulso 2.4s ease-in-out infinite;
}
@keyframes vazio-pulso {
  0%, 100% { transform: scale(1); opacity: .85; }
  50% { transform: scale(1.12); opacity: 1; }
}
.vazio-titulo {
  margin: 0 0 .5rem;
  font-family: var(--serif); font-size: 1.25rem; font-weight: 700;
  color: var(--texto);
}
.vazio-dica { margin: 0 0 1.3rem; font-size: .95rem; }
.vazio .botao-secundario { display: inline-flex; }

/* ---------- micro-animações (ficha modal-in, pedido slide-up, carrinho, cards) ---------- */
.modal-fundo { animation: fundo-in .25s ease both; }
@keyframes fundo-in { from { opacity: 0; } }
.modal-painel { animation: painel-in .32s cubic-bezier(.16, 1, .3, 1) both; }
@keyframes painel-in {
  from { opacity: 0; transform: translateY(14px) scale(.97); }
  to { opacity: 1; transform: none; }
}
.pedido { animation: pedido-in .38s cubic-bezier(.16, 1, .3, 1) both; }
@keyframes pedido-in {
  from { transform: translateY(100%); }
  to { transform: none; }
}
.carrinho { animation: carrinho-in .38s cubic-bezier(.16, 1, .3, 1) both; }
@keyframes carrinho-in {
  from { transform: translateX(100%); }
  to { transform: none; }
}
.carrinho-overlay { animation: fundo-in .3s ease both; }
.card { animation: card-in .4s ease both; }
@keyframes card-in {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .modal-fundo, .modal-painel, .pedido, .carrinho, .carrinho-overlay, .card,
  .vazio-atomo span, .botao-banda { animation: none; }
}

/* ---------- ONDA 2: mobile (empilhar banda + empty compacto) ---------- */
@media (max-width: 760px) {
  .banda-cotacao { padding: 2.4rem 1.25rem; }
  .banda-inner { flex-direction: column; align-items: flex-start; gap: 1.4rem; }
  .banda-titulo { font-size: 1.3rem; }
  .botao-banda { width: 100%; justify-content: center; }
  .vazio { padding: 2.6rem 1rem 3.4rem; }
}

/* ---------- ONDA 2 · LUXO (19/08): toques finais — risca ouro + kicker --- */
.kicker b { color: var(--ouro); font-weight: 700; }
.ficha-nome {
  position: relative;
  padding-bottom: .6rem;
}
.ficha-nome::after {
  content: "";
  display: block;
  width: 42px; height: 2px;
  background: var(--ouro);
  margin-top: .55rem;
}
.ficha-categoria { letter-spacing: .18em; }

/* ---------- Novidades em destaque (banda rolável no topo) ---------- */
.faixa-novidades {
  margin: 0 0 1.6rem;
  background:
    radial-gradient(560px 200px at 96% -40%, rgba(0, 64, 224, .5), transparent 60%),
    linear-gradient(150deg, #0a0b0f 0%, #0e1733 60%, #001a5e 100%);
  border: 1px solid rgba(0, 64, 224, .38);
  border-radius: 16px;
  padding: 1.15rem 1.25rem 1.2rem;
  box-shadow: 0 14px 34px rgba(0, 0, 0, .16);
  color: #fff;
}
.faixa-cabeca { display: flex; align-items: flex-end; justify-content: space-between; gap: 14px; margin: 0 0 .9rem; }
.faixa-kicker {
  margin: 0 0 .3rem; font-family: var(--mono); font-size: .64rem;
  letter-spacing: .3em; text-transform: uppercase; color: var(--ouro);
}
.faixa-kicker::before { content: "❧ "; color: var(--ouro); }
.faixa-titulo {
  margin: 0; font-family: var(--serif); font-size: 1.16rem; font-weight: 700;
  letter-spacing: .01em; line-height: 1.2;
}
.faixa-titulo b { color: #7fa3ff; font-weight: 700; }
.faixa-ver-todas {
  flex: none; display: inline-flex; align-items: center; gap: .4rem;
  background: transparent; color: #cdd9ff; font: 600 .82rem/1 system-ui, sans-serif;
  letter-spacing: .03em; border: 1px solid rgba(255, 255, 255, .22); border-radius: 999px;
  padding: .45rem .9rem; cursor: pointer;
  transition: border-color .15s ease, color .15s ease;
}
.faixa-ver-todas:hover { border-color: var(--ouro); color: #fff; }
.faixa-ver-todas span { color: var(--ouro); }
.faixa-pista {
  display: flex; gap: 12px; overflow-x: auto; padding: 2px 2px 6px;
  scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch;
}
.faixa-pista::-webkit-scrollbar { height: 6px; }
.faixa-pista::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, .22); border-radius: 999px; }
.faixa-card {
  flex: none; width: 168px; scroll-snap-align: start;
  display: flex; flex-direction: column; text-align: left;
  background: #fff; color: var(--texto); border: 0; border-radius: 12px;
  overflow: hidden; padding: 0; cursor: pointer;
  box-shadow: 0 6px 18px rgba(0, 0, 0, .22);
  transition: transform .15s ease, box-shadow .15s ease;
}
.faixa-card:hover { transform: translateY(-3px); box-shadow: 0 12px 26px rgba(0, 0, 0, .3); }
.faixa-card:focus-visible { outline: 2px solid var(--ouro); outline-offset: 2px; }
.faixa-foto { width: 100%; aspect-ratio: 4 / 3; object-fit: contain; background: #f7f9fc; padding: 6px; }
.faixa-nome {
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  font-size: .8rem; line-height: 1.3; font-weight: 600; min-height: 2.08em;
  padding: 8px 10px 0; color: var(--texto);
}
.faixa-preco {
  font-family: var(--serif); font-size: .98rem; font-weight: 700;
  padding: 2px 10px 10px; color: var(--carvao); letter-spacing: .01em;
}
.faixa-preco.consulta { color: var(--ambar); font-family: system-ui, sans-serif; font-size: .78rem; }

/* selo NOVO (sobe sobre a base da foto) + badge NOVO na ficha */
.selo-novo {
  position: relative; z-index: 1; align-self: flex-start; margin-top: -9px; margin-bottom: -3px;
  font-family: var(--mono); font-size: .58rem; font-weight: 700; letter-spacing: .16em;
  text-transform: uppercase; color: #6d4f12;
  background: linear-gradient(180deg, #ffe7ad, #f2bd57);
  border: 1px solid rgba(201, 162, 75, .6);
  border-radius: 999px; padding: 2px 9px 2px 11px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, .12);
}
.badge-novo {
  color: #6d4f12;
  background: linear-gradient(180deg, #ffe7ad, #f2bd57);
  border: 1px solid rgba(201, 162, 75, .5);
}

@media (max-width: 640px) {
  .faixa-card { width: 140px; }
  .faixa-nome { font-size: .74rem; min-height: 1.92em; }
}
@media print { .faixa-novidades { display: none; } }

/* ============================================================
   UPGRADE MOBILE PREMIUM · NÚCLEO (08/09) — CSS/HTML só, zero JS.
   Anexado ao fim (anexar vence). Mantém identidade navy+azul.
   Ideia: no telemóvel o header deixa de "colar" e colapsa em
   botões só-ícone (hit ≥ 40px) → o produto ganha o ecrã inteiro.
   ============================================================ */
html { -webkit-tap-highlight-color: transparent; }

@media (max-width: 760px) {
  /* ---------- topo: estático + 1 linha de botões só-ícone ---------- */
  .topo { position: static; padding: 8px 12px; }
  .marca { flex: 1; min-width: 0; gap: 8px; }
  .marca > div { min-width: 0; }
  .marca-nome {
    font-size: .84rem; letter-spacing: .05em;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  .topo-logo { height: 30px; }
  .topo-acoes { flex-wrap: nowrap; gap: 6px; }
  .topo-acoes .rotulo { display: none; }
  .botao-cotacao, .topo .botao-secundario, .topo .botao-carrinho {
    min-width: 40px; height: 40px; padding: 0 11px; gap: 6px;
    display: inline-flex; align-items: center; justify-content: center;
  }
  .busca { flex: 1 1 140px; min-width: 0; height: 42px; border-radius: 12px; }
  .select { height: 42px; padding: 0 8px; }
  .topo-filtros { margin-top: 6px; }
  .chip { padding: 7px 14px; }

  /* ---------- aviso por encomenda enxuto (encolhe, não some) ---------- */
  .aviso-encomenda {
    padding: 12px 14px; margin: 0 0 12px;
    border-radius: 14px; box-shadow: none;
  }
  .aviso-inner { flex-direction: column; align-items: stretch; gap: 8px; }
  .aviso-kicker { margin: 0 0 3px; font-size: .56rem; letter-spacing: .24em; }
  .aviso-titulo { margin: 0; font-size: .96rem; line-height: 1.25; }
  .aviso-sub {
    margin: 2px 0 0; font-size: .78rem;
    display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .botao-aviso {
    width: 100%; justify-content: center;
    padding: .62rem .9rem; font-size: .84rem;
  }
  .aviso-fechar { top: 6px; right: 6px; width: 26px; height: 26px; font-size: .7rem; }

  /* ---------- faixa de novidades mais contida ---------- */
  .faixa-novidades { padding: .9rem 1rem .95rem; margin-bottom: .9rem; }
  .faixa-kicker { font-size: .58rem; }
  .faixa-titulo { font-size: 1rem; }

  /* grelha entre 641–760: fotos maiores (2–3 col, não 4) */
  .grelha { grid-template-columns: repeat(auto-fill, minmax(158px, 1fr)); }

  /* ---------- safe-area iOS (barra de pedido + toast) ---------- */
  .pedido { padding: 10px 16px calc(10px + env(safe-area-inset-bottom, 0px)); }
  .toast { bottom: calc(88px + env(safe-area-inset-bottom, 0px)); }
}

@media (max-width: 640px) {
  /* ---------- grelha foto-first: 2 colunas fixas ---------- */
  main { padding: 10px; }
  .grelha { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .card { border-radius: 14px; }
  .card-foto { padding: 4px; aspect-ratio: 1 / 1; }
  .card-corpo { padding: 8px 10px 10px; gap: 4px; }
  .card-nome { font-size: .82rem; line-height: 1.3; min-height: 2.08em; }
  .card-preco { font-size: 1.05rem; letter-spacing: 0; }
  .card-sku { font-size: .66rem; }
  .card-adicionar { top: 6px; right: 6px; width: 36px; height: 36px; font-size: 1.05rem; }
  .card-partilhar { top: 6px; left: 6px; width: 32px; height: 32px; font-size: .85rem; }
  .selo-novo { margin-top: -8px; font-size: .54rem; padding: 1px 8px 1px 9px; }

  /* ---------- ficha: folha de baixo com CTA fixo ---------- */
  .modal { align-items: flex-end; padding: 0; }
  .modal-painel {
    width: 100%; max-height: 92dvh;
    border-radius: 20px 20px 0 0;
    display: flex; flex-direction: column; overflow: hidden;
  }
  .modal-fechar { top: 12px; right: 12px; width: 40px; height: 40px; }
  .ficha-galeria { flex: none; padding: 10px; }
  #ficha-foto { aspect-ratio: 4 / 3; max-height: 42dvh; border-radius: 12px; }
  .ficha-thumbs { margin-top: 8px; }
  .ficha-thumbs img { width: 56px; height: 42px; }
  .ficha-info { min-height: 0; overflow-y: auto; padding: 16px 18px 0; }
  .ficha-compra {
    position: sticky; bottom: 0;
    margin: auto -18px 0;
    padding: 10px 18px calc(10px + env(safe-area-inset-bottom, 0px));
    background: linear-gradient(180deg, rgba(255, 255, 255, .94), #fff 30%);
    backdrop-filter: blur(6px);
    box-shadow: 0 -10px 24px rgba(16, 24, 40, .1);
    border-radius: 14px 14px 0 0;
  }
  .ficha-compra .botao-primario { flex: 1; }
}

@media (max-width: 480px) {
  .marca-nome { font-size: .78rem; }
  .grelha { gap: 8px; }
  .faixa-card { width: 128px; }
  body { padding-bottom: calc(76px + env(safe-area-inset-bottom, 0px)); }
}
