/* Fontes AUTO-HOSPEDADAS em /assets/fonts (subset latin, woff2).
   Antes havia um import do Google Fonts aqui dentro — uma cadeia render-
   -blocking (documento -> este CSS -> CSS externo -> woff2 em outra origem)
   que o PageSpeed mediu em ~750 ms no 4G. Arquivos locais saem na mesma
   conexão do site e são descobertos assim que este CSS chega.
   Plus Jakarta Sans usa font-display:optional para eliminar CLS (a troca
   de fonte era o maior deslocamento de layout da página — ~0.185 no mobile).
   Sora mantém font-display:swap (fonte de display, preloadada no <head>). */
/* Plus Jakarta Sans 400 — latin (auto-hospedada; antes: @import do Google Fonts, cadeia render-blocking de ~750 ms)
   font-display: optional elimina o CLS causado pela troca de fonte: em conexões
   lentas o navegador usa a fonte de reserva (Segoe UI / Arial) e NÃO troca depois,
   evitando o deslocamento de layout que o PageSpeed media como ~0.185 de CLS.
   Com os preloads no <head>, a fonte chega em <100ms na maioria das conexões e
   continua sendo usada normalmente. Nas visitas seguintes o cache garante exibição
   instantânea. */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: optional;
  src: url('/assets/fonts/plus-jakarta-sans-400.woff2') format('woff2');
}

/* Plus Jakarta Sans 500 — latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: optional;
  src: url('/assets/fonts/plus-jakarta-sans-500.woff2') format('woff2');
}

/* Plus Jakarta Sans 600 — latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: optional;
  src: url('/assets/fonts/plus-jakarta-sans-600.woff2') format('woff2');
}

/* Plus Jakarta Sans 700 — latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: optional;
  src: url('/assets/fonts/plus-jakarta-sans-700.woff2') format('woff2');
}

/* Plus Jakarta Sans 800 — latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 800;
  font-display: optional;
  src: url('/assets/fonts/plus-jakarta-sans-800.woff2') format('woff2');
}

/* Sora 600 — latin */
@font-face {
  font-family: 'Sora';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/assets/fonts/sora-600.woff2') format('woff2');
}

/* Sora 700 — latin */
@font-face {
  font-family: 'Sora';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/assets/fonts/sora-700.woff2') format('woff2');
}

/* Sora 800 — latin */
@font-face {
  font-family: 'Sora';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url('/assets/fonts/sora-800.woff2') format('woff2');
}

/* ══════════════════════════════════════════════════════════
   CORREÇÕES DE ACESSIBILIDADE — contraste WCAG
══════════════════════════════════════════════════════════ */

/* Classe para screen readers - esconde visualmente mas acessível */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Selo "🔥 DESTAQUE" - melhorava contraste para WCAG AA */
.selo-destaque-card {
  background: #c2410c !important; /* laranja mais escuro para contraste */
  color: #ffffff !important;
  text-shadow: 0 1px 2px rgba(0,0,0,0.2);
}

/* Badge "💸 R$ XX no Pix" - melhorava contraste */
.pix-badge {
  color: #15803d !important; /* verde mais escuro */
  font-weight: 700;
}

/* ══════════════════════════════════════════════════════════
   TIPOGRAFIA FLUIDA — clamp() para escala automática
   Mobile-First (FIX 6)
══════════════════════════════════════════════════════════ */
:root {
  --fs-xs:   clamp(0.70rem, 1.5vw, 0.78rem);
  --fs-sm:   clamp(0.78rem, 2vw,   0.88rem);
  --fs-base: clamp(0.88rem, 2.5vw, 0.95rem);
  --fs-md:   clamp(1rem,    3vw,   1.15rem);
  --fs-lg:   clamp(1.15rem, 4vw,   1.4rem);
  --fs-xl:   clamp(1.35rem, 5vw,   1.75rem);
  --fs-2xl:  clamp(1.6rem,  6vw,   2.2rem);
}


:root {
  /* Paleta padrão do sistema — UMA SÓ para todo mundo, master (GranTech) e
     lojas clientes: Preto + Laranja. O que diferencia a master é o ÍCONE e
     o NOME GranTech (assets grantech-*.png), não a cor. */
  --preto: #1a1a1a;
  --preto-esc: #0f0f0f;
  --preto-claro: #2a2a2a;
  --laranja: #f97316;
  --laranja-esc: #ea580c;
  --laranja-claro: #fed7aa;

  /* Herança da era azul do sistema. O theme.js NEUTRALIZA estas variáveis em
     todas as páginas (aponta --azul/--ciano para a cor secundária da loja),
     então nenhuma tela fica azul por engano — elas só existem porque partes
     antigas do CSS ainda as referenciam. */
  --azul: #263ee0;
  --azul-esc: #141c78;
  --azul-claro: #eaecff;
  --ciano: #06b6d4;
  --ciano-esc: #0891b2;

  /* Sombra do anel de foco dos campos. O theme.js ajusta por loja a partir da
     cor secundária (laranja no padrão, a cor escolhida nas personalizadas). */
  --foco-sombra: rgba(249, 115, 22, 0.16);

  --verde: #16a34a;
  --vermelho: #dc2626;
  --cinza-100: #f5f7fc;
  --cinza-200: #e6e9f2;
  --cinza-500: #6b7280;
  --cinza-700: #374151;
  --texto: #131a2e;
  --radius: 16px;
  --sombra: 0 8px 28px rgba(20, 40, 150, 0.09);
  --sombra-forte: 0 16px 40px rgba(20, 40, 150, 0.16);
  --fonte-display: "Sora", "Segoe UI", sans-serif;
  font-family: "Plus Jakarta Sans", "Segoe UI", "Helvetica Neue", Arial, sans-serif;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
html { overflow-x: hidden; scroll-behavior: smooth; }
body {
  background: var(--cinza-100);
  color: var(--texto);
  min-height: 100vh;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; }
img { max-width: 100%; }
h1, h2, h3 { font-family: var(--fonte-display); letter-spacing: -0.01em; }

/* ---------- Topbar geral ---------- */
.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  background: linear-gradient(120deg, var(--preto-esc), var(--preto) 60%, var(--preto-claro));
  color: #fff;
  padding: 14px 24px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
  position: sticky !important;
  top: 0 !important;
  z-index: 1000 !important;
  backdrop-filter: blur(6px);
}
.topbar .brand {
  display: flex;
  align-items: center;
  gap: 11px;
  font-weight: 800;
  font-size: 1.18rem;
  letter-spacing: 0.2px;
  font-family: var(--fonte-display);
  flex-shrink: 0;
}
.topbar .brand .logo {
  width: 42px; height: 42px;
  background: transparent;
  color: var(--azul);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.3rem;
  overflow: visible;
  flex-shrink: 0;
}
.topbar .brand .logo img { width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 2px 4px rgba(0,0,0,0.35)); }
.topbar .brand .marca-texto { display: inline-flex; align-items: baseline; gap: 0; }
.topbar .brand .marca-texto .tech { color: var(--laranja); }
/* Marca GRANTECH (loja master): o "TECH" sai em laranja onde o nome completo
   aparecer — menu do painel, vitrine, login, PDV. htmlNomeLoja (theme.js) só
   gera esta classe na master, então lojas clientes nunca ficam laranja. */
/* Laranja mais claro no fundo escuro da topbar/hero — #f97316 falhava
   WCAG AA (PageSpeed Acessibilidade 91). #fdba74 passa ~8:1 em #1a1a1a. */
.tech { color: #fdba74; }
.topbar .brand .marca-sufixo { font-weight: 600; opacity: .92; margin-left: 2px; }
.topbar nav { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.topbar nav a, .topbar nav button {
  color: #fff;
  background: rgba(255,255,255,0.12);
  border: none;
  padding: 8px 15px;
  border-radius: 999px;
  font-size: 0.9rem;
  font-weight: 600;
  transition: background .18s, transform .18s;
}
.topbar nav a:hover, .topbar nav button:hover { background: rgba(255,255,255,0.25); transform: translateY(-1px); }
.topbar nav a.active { background: #fff; color: var(--azul-esc); font-weight: 700; }

/* Atalho "🔐 Painel" das páginas públicas (Loja, Blog, Tutoriais, Meus
   Pedidos): porta de entrada do painel da loja, presente desde o início do
   projeto. Visual de "área restrita" — contorno sem preenchimento — para não
   competir com os links de compra do cliente final. O href ganha ?loja=slug
   via theme.js (ajustarLinksPainel) quando a vitrine está em contexto de
   loja cliente/demo. */
.topbar nav a.nav-painel { background: transparent; border: 1px solid rgba(255,255,255,0.45); }
.topbar nav a.nav-painel:hover { background: rgba(255,255,255,0.18); }

  /* Mobile: topbar vira coluna, botões abaixo da logo. A busca (lupa) fica
     dentro do nav, então a barra tem só 2 linhas — bem mais fina. */
  @media (max-width: 768px) {
    .topbar {
      flex-direction: column !important;
      align-items: stretch !important;
      padding: 10px 14px !important;
      gap: 6px !important;
    }
    .topbar .brand {
      justify-content: center !important;
      font-size: 1.05rem !important;
      order: 1;
    }
    .topbar .brand .logo {
      width: 34px !important;
      height: 34px !important;
    }
    .topbar nav {
      order: 2;
      display: flex !important;
      justify-content: center !important;
      flex-wrap: wrap !important;
      gap: 4px !important;
      width: 100% !important;
    }
    .topbar nav a, .topbar nav button {
      font-size: 0.82rem !important;
      padding: 6px 10px !important;
    }
  }

.badge {
  background: var(--laranja);
  color: #fff;
  border-radius: 999px;
  font-size: 0.7rem;
  padding: 1px 7px;
  margin-left: 4px;
}

.wrap { max-width: 1280px; margin: 0 auto; padding: 22px; }
.wrap.narrow { max-width: 980px; }

.card {
  background: #fff;
  border-radius: var(--radius);
  box-shadow: var(--sombra);
  padding: 20px;
  max-width: 100%;
  border: 1px solid rgba(20, 40, 150, 0.04);
}
/* Evita que tabelas largas estourem a tela em celulares: a rolagem
   horizontal fica contida dentro do card, não na página inteira. */
.card:has(table) {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.card:has(table) table { min-width: 560px; }
.grid { display: grid; gap: 16px; }
.grid.cols-2 { grid-template-columns: 1fr 1fr; }
.grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
.grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 900px) {
  .grid.cols-2, .grid.cols-3, .grid.cols-4 { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
  .grid.cols-2, .grid.cols-3, .grid.cols-4 { grid-template-columns: 1fr; }
}

h1, h2, h3 { margin: 0 0 8px 0; }
h1 { font-size: var(--fs-xl); }
h2 { font-size: var(--fs-lg); }
h3 { font-size: var(--fs-md); }
.muted { color: var(--cinza-500); }
.small { font-size: var(--fs-sm); }

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  border: none;
  border-radius: 11px;
  padding: clamp(10px, 2.5vw, 12px) clamp(14px, 3vw, 20px);
  font-weight: 700;
  font-size: clamp(0.85rem, 2.5vw, 0.95rem);
  min-height: 44px;    /* área de toque mínima recomendada */
  transition: transform .15s, box-shadow .15s, background .15s;
}
.btn:active { transform: scale(0.98); }
.btn-primary { background: var(--preto); color: #fff; box-shadow: 0 4px 14px rgba(0,0,0,0.25); }
.btn-primary:hover { background: var(--preto-esc); box-shadow: 0 6px 18px rgba(0,0,0,0.35); }
.btn-success { background: var(--verde); color: #fff; box-shadow: 0 4px 14px rgba(22,163,74,0.25); }
.btn-success:hover { filter: brightness(0.95); }
.btn-danger { background: var(--vermelho); color: #fff; }
.btn-outline { background: #fff; border: 1.5px solid var(--cinza-200); color: var(--texto); }
.btn-outline:hover { border-color: var(--azul); color: var(--azul); }
.btn-laranja { background: var(--laranja); color: #fff; box-shadow: 0 4px 14px rgba(249, 115, 22, 0.3); }
.btn-laranja:hover { background: var(--laranja-esc); }
.btn:disabled { opacity: .5; cursor: not-allowed; box-shadow: none; }
.btn-sm { padding: 7px 11px; font-size: 0.8rem; border-radius: 8px; }

/* Campos de digitação ocupam a linha inteira. Caixas de marcação ficam de
   fora da regra de propósito — veja o bloco logo abaixo. */
input:not([type="checkbox"]):not([type="radio"]), select, textarea {
  width: 100%;
  padding: clamp(9px, 2vw, 11px) clamp(10px, 2vw, 13px);
  border: 1.5px solid var(--cinza-200);
  border-radius: 10px;
  font-size: clamp(0.88rem, 2.5vw, 0.95rem);
  font-family: inherit;
  background: #fff;
  color: var(--texto);
  min-height: 44px;    /* área de toque ampla em celulares */
  transition: border-color .15s, box-shadow .15s;
}

/* ── Caixas de marcação (checkbox / radio) ──────────────────────────────────
   Um checkbox NÃO é um campo de texto: esticá-lo para width:100% e 44px de
   altura fazia a caixa engolir a linha inteira e empurrar o rótulo para fora
   do cartão — era o que cortava os nomes dos recursos na tabela de planos
   ("Bo:ide", "Ch:ckout"). Aqui ele volta a ter tamanho próprio e fixo.
   A área de toque confortável no celular fica por conta do <label>, que é
   clicável junto com o texto (.chk / label:has(input[type="checkbox"])). */
input[type="checkbox"], input[type="radio"] {
  width: 18px;
  height: 18px;
  min-height: 0;
  flex: 0 0 auto;      /* nunca estica nem encolhe dentro de um flex */
  margin: 0;
  padding: 0;
  accent-color: var(--azul);
  cursor: pointer;
}
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--azul); box-shadow: 0 0 0 3px var(--foco-sombra); }
input[type="checkbox"]:focus-visible, input[type="radio"]:focus-visible {
  outline: 2px solid var(--azul);
  outline-offset: 2px;
  box-shadow: none;
}
label { font-size: 0.82rem; font-weight: 600; color: var(--cinza-700); display: block; margin-bottom: 4px; }
.field { margin-bottom: 12px; }

table { width: 100%; border-collapse: collapse; }
th, td { text-align: left; padding: 10px 8px; border-bottom: 1px solid var(--cinza-200); font-size: 0.9rem; }
th { color: var(--cinza-500); font-weight: 700; font-size: 0.78rem; text-transform: uppercase; letter-spacing: .04em; }
tr:hover td { background: var(--azul-claro); }

.pill {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 700;
}
.pill-verde { background: #dcfce7; color: #166534; }
.pill-amarelo { background: #fef3c7; color: #92400e; }
.pill-azul { background: var(--azul-claro); color: var(--azul-esc); }
.pill-vermelho { background: #fee2e2; color: #991b1b; }
.pill-cinza { background: #eef0f4; color: var(--cinza-700); }

.kpi { display: flex; flex-direction: column; gap: 4px; }
.kpi .valor { font-size: 1.7rem; font-weight: 800; }
.kpi .rotulo { font-size: 0.8rem; color: var(--cinza-500); font-weight: 600; }

@keyframes modalIn { from { opacity: 0; transform: translateY(10px) scale(.98); } to { opacity: 1; transform: none; } }
.modal-bg {
  display: none;
  position: fixed; inset: 0;
  background: rgba(10, 15, 40, 0.55);
  backdrop-filter: blur(2px);
  align-items: center; justify-content: center;
  /* Fica acima da topbar fixa/sticky (z-index 1000), evitando que o
     cabeçalho cubra o topo dos modais no celular, como no campo Cliente da OS. */
  z-index: 2500;
  padding: 20px;
}
.modal-bg.show { display: flex; }
.modal {
  background: #fff;
  border-radius: 18px;
  padding: 24px;
  width: 100%;
  max-width: 480px;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: 0 25px 70px rgba(0,0,0,0.3);
  animation: modalIn .2s ease-out;
}
.modal.wide { max-width: 720px; }
.modal-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.modal-close { background: none; border: none; font-size: 1.3rem; color: var(--cinza-500); }

.footer-app {
  text-align: center;
  background: linear-gradient(120deg, var(--preto-esc), var(--preto) 60%, var(--preto-claro));
  color: #fff;
  font-size: 0.85rem;
  padding: 30px 16px;
  margin-top: 40px;
  box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.2);
}

/* Rodapé de identificação e políticas da loja. As informações são visíveis
   antes do checkout em todas as páginas públicas, sem exigir login. */
.footer-institucional { text-align:left; padding:30px max(18px, calc((100vw - 1180px) / 2)); }
.footer-institucional-grid { max-width:1180px; margin:0 auto; display:grid; grid-template-columns:1fr 1.6fr 1.25fr; gap:24px; }
.footer-institucional-grid section, .footer-institucional-grid nav { min-width:0; }
.footer-institucional-grid strong { display:block; color:#fff; font-family:var(--fonte-display); font-size:.92rem; margin-bottom:7px; }
.footer-institucional-grid p { margin:0; color:rgba(255,255,255,.78); font-size:.78rem; line-height:1.65; }
.footer-institucional-grid a { color:#fff; text-decoration:underline; text-underline-offset:3px; }
.footer-direitos { max-width:1180px; margin:20px auto 0 !important; padding-top:15px; border-top:1px solid rgba(255,255,255,.16); color:rgba(255,255,255,.65) !important; font-size:.72rem !important; text-align:center; }
@media (max-width:800px) { .footer-institucional-grid { grid-template-columns:1fr 1fr; } .footer-institucional-grid nav { grid-column:1 / -1; } }
@media (max-width:520px) { .footer-institucional-grid { grid-template-columns:1fr; gap:17px; } .footer-institucional-grid nav { grid-column:auto; } }

.toast {
  position: fixed;
  bottom: 24px; right: 24px;
  background: var(--texto);
  color: #fff;
  padding: 12px 18px;
  border-radius: 10px;
  font-size: 0.9rem;
  box-shadow: 0 10px 30px rgba(0,0,0,0.25);
  z-index: 999;
  opacity: 0;
  transform: translateY(10px);
  transition: all .25s;
  pointer-events: none;
}
.toast.show { opacity: 1; transform: translateY(0); }
.toast.ok { background: #14532d; }
.toast.err { background: #7f1d1d; }

.empty {
  text-align: center;
  padding: 40px 20px;
  color: var(--cinza-500);
}
.empty .emoji { font-size: 2.4rem; margin-bottom: 6px; }

::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: #c8d0e0; border-radius: 6px; }

/* ══════════════════════════════════════════════════════════
   MOBILE-FIRST — ajustes responsivos globais  (FIX 6)
══════════════════════════════════════════════════════════ */

/* Tabelas: scroll horizontal contido, nunca estourar */
.card { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.card table { min-width: 480px; }

/* Filtros e busca: empilham em 1 coluna no celular */
@media (max-width: 640px) {
  /* Grids de filtros viram 1 coluna */
  .card > div[style*="display:flex"] { flex-direction: column !important; }

  /* Modais ocupam quase toda a tela */
  .modal { padding: 16px; max-height: 95vh; border-radius: 14px; }
  .modal.wide { max-width: 100%; }

  /* Botões de ação lado a lado ficam maiores */
  .btn { min-height: 48px; }

  /* Toast embaixo do centro em celular */
  .toast { left: 12px; right: 12px; bottom: 16px; text-align: center; }

  /* Grid de cards KPI: 1 coluna */
  .kpi-row { grid-template-columns: 1fr 1fr !important; }

  /* Top-toolbar: empilha título e botões */
  .top-toolbar { flex-direction: column; align-items: stretch; }
  .top-toolbar h1 { font-size: var(--fs-lg); }
  .top-toolbar > div { justify-content: stretch; }
  .top-toolbar button { flex: 1; }

  /* FIX extra: evita botões saindo do quadro no mobile */
  .top-toolbar,
  .top-toolbar > div {
    max-width: 100%;
    box-sizing: border-box;
    min-width: 0;
  }
  .top-toolbar .btn,
  .top-toolbar button {
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
  }
}

@media (max-width: 400px) {
  .kpi-row { grid-template-columns: 1fr !important; }
  .grid.cols-2 { grid-template-columns: 1fr; }
}

/* ============================================================
   TEMA MAGAZINE — cara de catálogo/grande vitrine.
   Aplicado quando o dono escolhe "Magazines" no Admin. Reorganiza
   o DOM via JS (mesma técnica do tema "enxuta") para mover o bloco
   "Por que comprar aqui" para depois do grid; este CSS cuida do
   visual: hero cheio (sem card lateral), grade mais larga e
   estilos do novo bloco "🔥 Mais procurados".

   GENÉRICO: não tem marca/contato/produto fixo. O JS puxa do banco
   via /api/publico/produtos?destaque=1 e o servidor preenche
   config.nome, config.whatsapp etc. via injetarSeoServidorNaVitrine.
   ============================================================ */
body.tema-magazine {
  /* Cores do tema: continuamos usando a paleta padrão (preto + laranja)
     porque customização visual por loja vai no Admin, não no tema. Se um
     dia o dono quiser trocar a cor de toda a Magazines do SaaS, é só
     mudar aqui. */
}

/* --- Hero cheio (sem card lateral, com kicker maior) --- */
body.tema-magazine .hero-loja {
  padding: clamp(48px, 8vw, 88px) 22px clamp(40px, 6vw, 68px);
}
body.tema-magazine .hero-card-preview { display: none !important; }
body.tema-magazine .hero-inner { grid-template-columns: 1fr; }
body.tema-magazine .hero-loja h1 {
  font-size: clamp(2.2rem, 6vw, 4.6rem);
  max-width: 900px;
}
body.tema-magazine .hero-loja .hero-subcopy {
  font-size: clamp(1.05rem, 2.2vw, 1.4rem);
  max-width: 760px;
}
body.tema-magazine .hero-kicker {
  font-size: 0.85rem;
  padding: 10px 18px;
}
body.tema-magazine .selo-confianca { margin-top: 22px; }
body.tema-magazine .selo-confianca span { padding: 9px 14px; font-size: 0.9rem; }

/* --- Grade de produtos mais larga (5 colunas no desktop) --- */
body.tema-magazine .produtos-grid {
  --colunas-grade: 5;
  gap: 22px;
}
@media (max-width: 1200px) {
  body.tema-magazine .produtos-grid { --colunas-grade: 4; }
}
@media (max-width: 900px) {
  body.tema-magazine .produtos-grid { --colunas-grade: 3; }
}
@media (max-width: 560px) {
  body.tema-magazine .produtos-grid { --colunas-grade: 2; gap: 12px; }
}
/* No Magazines os cards ficam um pouco mais altos (thumbnail maior) para
   a vitrine "respirar" como catálogo de revista. */
body.tema-magazine .prod-card .thumb { min-height: 140px; padding: 10px; }
body.tema-magazine .prod-card h3, .prod-card h4 { font-size: 1.02rem; }

/* --- Filtros mais destacados (fundo branco, borda leve) --- */
body.tema-magazine .filtros {
  margin-top: 8px;
  box-shadow: var(--sombra-forte);
}

/* --- Bloco NOVO: "🔥 Mais procurados" (criado pelo JS) --- */
.vitrine-mais-procurados {
  max-width: 1180px;
  margin: 14px auto 6px;
  padding: 0 22px;
}
.vitrine-mais-procurados .vmp-cabecalho {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin: 0 0 12px;
}
.vitrine-mais-procurados .vmp-cabecalho h2 {
  margin: 2px 0 2px;
  font-size: clamp(1.2rem, 2.6vw, 1.6rem);
}
.vitrine-mais-procurados .vmp-cabecalho p {
  margin: 0;
  color: var(--cinza-500);
  font-size: 0.85rem;
}
.vitrine-mais-procurados .vmp-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 18px;
}
@media (max-width: 1200px) { .vitrine-mais-procurados .vmp-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 900px)  { .vitrine-mais-procurados .vmp-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 560px)  { .vitrine-mais-procurados .vmp-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } }
.vitrine-mais-procurados .vmp-grid > .prod-card {
  /* O card é o mesmo .prod-card do grid principal — só garantimos que
     caiba no bloco sem estourar. */
  min-width: 0;
}
.vitrine-mais-procurados .vmp-vazio {
  background: #fff;
  border: 1.5px dashed var(--cinza-200);
  border-radius: 14px;
  padding: 18px;
  color: var(--cinza-500);
  font-size: 0.88rem;
  text-align: center;
}

/* --- "Por que comprar aqui": movido para DEPOIS do grid de produtos.
     A regra visual é a MESMA do .vitrine-conversao original — só
     adicionamos espaçamento porque agora ele aparece mais embaixo. --- */
body.tema-magazine .vitrine-conversao {
  margin-top: 36px;
}

/* --- No Magazine, esconde "Serviços de assistência técnica" e atalhos
     do topo (não combinam com cara de catálogo). Quem precisar mantém
     pela rota /servicos, mas a vitrine de Magazine não empurra. --- */
body.tema-magazine .atalhos-servicos { display: none !important; }

/* ============================================================
   BARRA LATERAL DE REDES SOCIAIS — TEMA MAGAZINES

   Fica fixa à direita da tela, com 4 botões verticais (TikTok,
   Instagram, Facebook, YouTube). Cada botão só aparece se a
   respectiva URL estiver preenchida no config. Tem auto-hide no
   scroll (esconde ao rolar pra baixo, mostra ao parar) — entrada
   e saída pela direita (slide horizontal).

   É exclusiva do tema Magazine: se o body não tiver .tema-magazine,
   a barra nem é renderizada pelo JS. Sem hardcode de link: tudo
   vem de config.instagram / tiktok / facebook / youtube.
   ============================================================ */
.vitrine-social-rail {
  position: fixed;
  top: 50%;
  right: 0;
  transform: translateY(-50%);
  z-index: 90;                  /* abaixo do modal (2500) e do .cart-fab (60 + 30 de respiro), mas acima do conteúdo */
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 10px 7px;
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(6px);
  border-radius: 14px 0 0 14px;
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.18);
  /* Estado inicial: ENTRAR pela direita. JS adiciona .mostrar pra revelar. */
  opacity: 0;
  transform: translate(120%, -50%);
  transition: transform .35s cubic-bezier(.22,.9,.32,1), opacity .25s ease;
  pointer-events: none;
  max-width: 56px;
}
.vitrine-social-rail.mostrar {
  opacity: 1;
  transform: translate(0, -50%);
  pointer-events: auto;
}
/* No mobile, a barra fica mais fina e mais perto do canto — não cobre o
   conteúdo do catálogo. Também afasta do fundo pra não colidir com o
   botão de WhatsApp do tema (se um dia adicionar). */
@media (max-width: 720px) {
  .vitrine-social-rail { gap: 6px; padding: 8px 6px; max-width: 50px; }
}

/* Botão individual. Mantém a cor oficial da rede só no hover (estado
   padrão é neutro, pra não virar um arco-íris competindo com o conteúdo). */
.vitrine-social-rail a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 10px;
  background: #f3f4f6;
  color: #1f2937;
  transition: transform .15s ease, background .2s ease, color .2s ease;
  text-decoration: none;
}
.vitrine-social-rail a:hover { transform: translateY(-1px) scale(1.06); }
.vitrine-social-rail a svg { width: 20px; height: 20px; display: block; }

/* Cores oficiais por rede (só no hover, pra dar o "sou dessa rede" sem
   poluir a barra inteira no estado neutro). */
.vitrine-social-rail a[data-rede="instagram"]:hover { background: linear-gradient(135deg,#feda77 0%,#f58529 25%,#dd2a7b 50%,#8134af 75%,#515bd4 100%); color: #fff; }
.vitrine-social-rail a[data-rede="tiktok"]:hover   { background: #111; color: #25F4EE; }
.vitrine-social-rail a[data-rede="facebook"]:hover  { background: #1877F2; color: #fff; }
.vitrine-social-rail a[data-rede="youtube"]:hover   { background: #FF0000; color: #fff; }

/* ============================================================
   FAB DO WHATSAPP — TEMA MAGAZINES (canto inferior direito)
   O carrinho do Magazine já fica no header, então o botão verde pode
   ocupar o canto inferior sem competir com outro botão flutuante.
   ============================================================ */
/* O botão de carrinho inferior pertence aos outros temas. No Magazine ele
   seria uma ação duplicada do carrinho que já existe no cabeçalho.
   Regra reforçada para garantir que nunca apareça, mesmo antes do JS
   terminar de montar o tema ou com cache antigo. */
body.tema-magazine .cart-fab,
body.tema-magazine .cart-fab.cart-fab,
html body.tema-magazine .cart-fab {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
  transform: translateY(300px) !important;
  height: 0 !important;
  width: 0 !important;
  overflow: hidden !important;
  clip: rect(0,0,0,0) !important;
}

.vitrine-whatsapp-fab {
  position: fixed;
  bottom: 24px;
  right: 20px;
  z-index: 95;                     /* abaixo dos modais (2500), acima do conteúdo */
  width: 58px;
  height: 58px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #25D366;
  color: #fff;
  border-radius: 50%;
  text-decoration: none;
  box-shadow: 0 10px 24px rgba(37, 211, 102, 0.45);
  /* Pulse: igual ao btn-pix-pulsante, só transform (composta, não
     força repaint) e respeita prefers-reduced-motion. */
  will-change: transform;
  animation: whatsappFabPulse 1.8s ease-in-out infinite;
  transition: transform .15s, background .15s;
}
.vitrine-whatsapp-fab:hover {
  background: #1ebd59;
  transform: scale(1.06);
  animation-play-state: paused;
}
.vitrine-whatsapp-fab svg { width: 30px; height: 30px; display: block; }
.vitrine-whatsapp-fab.escondido {
  /* Auto-hide: mesma lógica da barra de redes. JS adiciona essa
     classe ao rolar pra baixo, remove ao parar. */
  transform: translateY(20px) scale(.85);
  opacity: 0;
  pointer-events: none;
}
@keyframes whatsappFabPulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.06); }
}
@media (prefers-reduced-motion: reduce) {
  .vitrine-whatsapp-fab { animation: none; }
}
/* No celular, fica menor e mais perto do canto pra não cobrir o
   produto quando o cliente tá vendo o catálogo. */
@media (max-width: 720px) {
  .vitrine-whatsapp-fab { width: 52px; height: 52px; bottom: 18px; right: 14px; }
  .vitrine-whatsapp-fab svg { width: 26px; height: 26px; }
}

/* ============================================================
   TEMA MATCH TURBO — MAGAZINE (demo-matchturbo-magazine style)
   ============================================================ */

/* O topo inteiro do Magazine fica FIXO no topo ao rolar, em desktop,
   tablet e celular. O espaçador, medido pelo JS, preserva o fluxo e evita
   que o primeiro banner seja coberto pelo header fixed. */
.magazine-header-fixo {
  position: fixed !important;
  inset: 0 0 auto 0 !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  width: 100% !important;
  z-index: 1200 !important;
  background: var(--preto-esc, #090d16);
  box-shadow: 0 8px 24px rgba(0, 0, 0, .22);
  /* Garante que o header fique sempre no topo, sem tremedeira no iOS */
  -webkit-transform: translateZ(0);
  transform: translateZ(0);
  will-change: transform;
}
.magazine-header-espaco {
  display: block !important;
  width: 100% !important;
  min-height: 1px !important;
  /* A altura real é injetada via JS (getBoundingClientRect do topo) */
  pointer-events: none;
}
body.tema-magazine .magazine-header-fixo .topbar-magazine,
body.tema-magazine .magazine-header-fixo .magazine-nav-categorias,
body.tema-magazine .magazine-header-fixo .magazine-utility-row,
body.tema-magazine .magazine-header-fixo .magazine-top-ticker {
  position: relative !important;
  top: auto !important;
  z-index: auto !important;
}
/* Fallback caso o JS ainda não tenha agrupado o header: cada faixa
   também tenta ficar grudada, mas o agrupado acima tem prioridade. */
body.tema-magazine .magazine-top-ticker {
  position: sticky !important;
  top: 0 !important;
}
body.tema-magazine #magazineHeaderFixo .magazine-top-ticker {
  position: relative !important;
  top: auto !important;
}

/* Utility Top Contacts Bar */
.magazine-utility-row {
  background: var(--preto-esc, #090d16);
  color: #94a3b8;
  font-size: 0.78rem;
  padding: 6px 20px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
}
.magazine-utility-inner {
  max-width: 1280px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}
.magazine-utility-contacts {
  display: flex;
  align-items: center;
  gap: 18px;
  flex-wrap: wrap;
}
.magazine-utility-contacts a, .magazine-utility-account a {
  color: #cbd5e1;
  text-decoration: none;
  font-weight: 600;
  transition: color 0.15s;
}
.magazine-utility-contacts a:hover, .magazine-utility-account a:hover {
  color: #ffffff;
}

/* Magazine Main Header (.topbar-magazine) */
body.tema-magazine .topbar-magazine {
  position: sticky !important;
  top: 0 !important;
  z-index: 1000 !important;
  background: var(--cor-primaria, var(--preto-esc, #0f172a)) !important;
  padding: 12px 24px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 20px !important;
  flex-direction: row !important;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25) !important;
}

/* LEFT: Cart Widget */
body.tema-magazine .magazine-cart-widget {
  order: 1 !important;
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  flex-shrink: 0 !important;
}

/* CENTER: Search Box */
body.tema-magazine .magazine-search-box {
  order: 2 !important;
  flex: 1 !important;
  max-width: 580px !important;
  margin: 0 auto !important;
  display: flex !important;
  align-items: center !important;
  background: #ffffff !important;
  border-radius: 999px !important;
  padding: 4px 6px 4px 18px !important;
  box-shadow: 0 2px 10px rgba(0,0,0,0.2) !important;
}
.magazine-search-box input {
  border: none !important;
  outline: none !important;
  box-shadow: none !important;
  width: 100%;
  font-size: 0.92rem;
  color: #1e293b;
  background: transparent;
  min-height: 38px !important;
  text-align: left;
}
.magazine-search-box .btn-search-mag {
  background: var(--cor-secundaria, var(--laranja, #2563eb));
  color: #ffffff;
  border: none;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  flex-shrink: 0;
  transition: background 0.15s, transform 0.15s;
}
.magazine-search-box .btn-search-mag:hover {
  background: var(--laranja-esc, #1d4ed8);
  transform: scale(1.04);
}

/* RIGHT: Account + Brand Logo Box */
body.tema-magazine .magazine-right-account-box {
  order: 3 !important;
  display: flex !important;
  align-items: center !important;
  gap: 16px !important;
  flex-shrink: 0 !important;
  margin-left: auto !important;
}
body.tema-magazine .magazine-account-btn {
  display: flex;
  align-items: center;
  gap: 8px;
  color: #ffffff;
  text-decoration: none;
  font-size: 0.85rem;
  line-height: 1.2;
}
body.tema-magazine .magazine-account-btn .ico-user {
  font-size: 1.3rem;
}
body.tema-magazine .magazine-account-btn .txt-acc {
  display: flex;
  flex-direction: column;
}
body.tema-magazine .magazine-account-btn .small-sub {
  font-size: 0.72rem;
  color: #cbd5e1;
}
/* O layout Magazine remove o nav tradicional da topbar, portanto o atalho
   do painel é movido para o bloco de ações à direita e recebe estilo próprio. */
body.tema-magazine .topbar-magazine a.nav-painel {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  min-height: 38px;
  padding: 8px 13px;
  border: 1px solid rgba(255,255,255,0.58);
  border-radius: 999px;
  background: transparent;
  color: #ffffff;
  font-size: 0.82rem;
  font-weight: 700;
  line-height: 1;
  text-decoration: none;
  transition: background .18s, border-color .18s, transform .18s;
}
body.tema-magazine .topbar-magazine a.nav-painel:hover {
  background: rgba(255,255,255,0.16);
  border-color: #ffffff;
  transform: translateY(-1px);
}
body.tema-magazine .topbar-magazine a.nav-painel:focus-visible {
  outline: 3px solid rgba(255,255,255,0.7);
  outline-offset: 2px;
}
body.tema-magazine .topbar-magazine .brand {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  flex-shrink: 0 !important;
}

/* Magazine Cart & Free Shipping Widget */
.magazine-frete-meter {
  background: rgba(255,255,255,0.12);
  border: 1px solid rgba(255,255,255,0.2);
  color: #ffffff;
  font-size: 0.78rem;
  padding: 8px 14px;
  border-radius: 12px;
  line-height: 1.3;
}
.magazine-frete-meter strong {
  color: #fde047;
}
.btn-cart-mag {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: var(--cor-secundaria, var(--laranja, #2563eb));
  color: #ffffff;
  border: none;
  padding: 10px 18px;
  border-radius: 999px;
  font-weight: 800;
  font-size: 0.9rem;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.25);
  transition: background 0.15s, transform 0.15s;
}
.btn-cart-mag:hover {
  background: var(--laranja-esc, #1d4ed8);
  transform: translateY(-1px);
}

/* Category Navigation Bar */
.magazine-nav-categorias {
  position: sticky !important;
  top: 68px !important;
  z-index: 999 !important;
  background: var(--preto-claro, #1e293b);
  border-top: 1px solid rgba(255,255,255,0.08);
  border-bottom: 1px solid rgba(0,0,0,0.15);
  padding: 10px 20px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.magazine-nav-cat-inner {
  max-width: 1280px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: 12px;
  overflow-x: auto;
  white-space: nowrap;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.magazine-nav-cat-inner::-webkit-scrollbar { display: none; }
.nav-cat-item {
  color: #e2e8f0;
  text-decoration: none;
  font-size: 0.88rem;
  font-weight: 700;
  padding: 6px 14px;
  border-radius: 999px;
  transition: background 0.15s, color 0.15s;
}
.nav-cat-item:hover, .nav-cat-item.ativo {
  background: var(--cor-secundaria, var(--laranja, #2563eb));
  color: #ffffff;
}

@media (max-width: 860px) {
  .magazine-frete-meter { display: none; }
  .magazine-utility-contacts { display: none; }
  .magazine-account-btn .small-sub { display: none; }
  
  .magazine-utility-row { display: none; }
  .magazine-top-ticker-inner { flex-wrap: nowrap; }
  .magazine-top-ticker-item:nth-child(n+2) { display: none; }

  body.tema-magazine .topbar-magazine {
    position: relative !important;
    top: auto !important;
    z-index: 1000 !important;
    flex-wrap: wrap !important;
    padding: 10px 14px !important;
    gap: 8px !important;
    justify-content: space-between !important;
  }
  /* No mobile/tablet a marca ganha uma linha própria e fica realmente
     centralizada. display:contents faz Conta, Painel e Marca participarem do
     flex da topbar sem alterar o HTML usado no desktop. */
  body.tema-magazine .magazine-right-account-box {
    display: contents !important;
  }
  body.tema-magazine .topbar-magazine .brand {
    order: 1 !important;
    flex: 0 0 100% !important;
    width: 100% !important;
    justify-content: center !important;
    margin: 0 auto 2px !important;
    text-align: center;
  }
  body.tema-magazine .magazine-cart-widget {
    order: 4 !important;
    margin-left: 0 !important;
  }
  body.tema-magazine .magazine-cart-widget .btn-cart-mag {
    min-height: 34px;
    padding: 7px 10px;
    gap: 5px;
    font-size: 0.78rem;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
  }
  body.tema-magazine .magazine-account-btn {
    order: 2 !important;
    margin-left: auto !important;
  }
  body.tema-magazine .topbar-magazine a.nav-painel {
    order: 3 !important;
    min-height: 34px;
    padding: 7px 10px;
  }
  body.tema-magazine .magazine-search-box {
    order: 5 !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 4px auto 0 !important;
  }
  .magazine-nav-categorias {
    position: relative !important;
    top: 0 !important;
    z-index: 998 !important;
    padding: 6px 12px !important;
  }
}

@media (max-width: 520px) {
  body.tema-magazine .magazine-account-btn .txt-acc { display: none !important; }
  body.tema-magazine .topbar-magazine .brand .marca-texto {
    display: inline-flex !important;
    max-width: calc(100vw - 80px);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
}

/* Top Ticker Bar */
.magazine-top-ticker {
  background: var(--cor-primaria, var(--preto-esc, #0f172a));
  color: #ffffff;
  font-size: 0.82rem;
  font-weight: 600;
  padding: 8px 16px;
  text-align: center;
  overflow: hidden;
  position: relative;
  z-index: 1001;
  border-bottom: 1px solid rgba(255,255,255,0.1);
}
.magazine-top-ticker-inner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 28px;
  flex-wrap: wrap;
  max-width: 1280px;
  margin: 0 auto;
}
.magazine-top-ticker-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
}

/* Coupon Strip Bar */
/* 5-Icon Benefit Ruler */
.magazine-benefit-ruler {
  max-width: 1280px;
  margin: 14px auto 22px;
  padding: 0 22px;
}
.magazine-benefit-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 12px;
  background: #ffffff;
  border: 1px solid #e2e8f0;
  border-radius: 16px;
  padding: 16px 20px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.04);
}
.magazine-benefit-item {
  display: flex;
  align-items: center;
  gap: 10px;
}
.magazine-benefit-icon {
  font-size: 1.6rem;
  line-height: 1;
  flex-shrink: 0;
}
.magazine-benefit-info {
  display: flex;
  flex-direction: column;
}
.magazine-benefit-title {
  font-size: 0.85rem;
  font-weight: 800;
  color: #0f172a;
  line-height: 1.2;
}
.magazine-benefit-sub {
  font-size: 0.74rem;
  color: #64748b;
  line-height: 1.2;
  margin-top: 2px;
}
@media (max-width: 1024px) {
  .magazine-benefit-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 640px) {
  .magazine-benefit-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; padding: 12px; }
}

/* Category Circles / Cards */
.magazine-categorias-secao {
  max-width: 1280px;
  margin: 24px auto;
  padding: 0 22px;
}
.magazine-secao-titulo {
  font-size: clamp(1.2rem, 2.8vw, 1.6rem);
  font-weight: 800;
  color: #0f172a;
  margin: 0 0 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.magazine-categorias-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
  gap: 16px;
}
.magazine-cat-card {
  background: #ffffff;
  border: 1px solid #e2e8f0;
  border-radius: 18px;
  padding: 16px 12px;
  text-align: center;
  cursor: pointer;
  transition: transform 0.18s, border-color 0.18s, box-shadow 0.18s;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}
.magazine-cat-card:hover {
  transform: translateY(-4px);
  border-color: #2563eb;
  box-shadow: 0 8px 24px rgba(37, 99, 235, 0.12);
}
.magazine-cat-thumb {
  width: 68px;
  height: 68px;
  border-radius: 50%;
  background: #f1f5f9;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2.2rem;
  overflow: hidden;
  border: 2px solid #e2e8f0;
}
.magazine-cat-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.magazine-cat-nome {
  font-size: 0.85rem;
  font-weight: 700;
  color: #1e293b;
  line-height: 1.2;
}

/* Offers of the week + Countdown Timer */
.magazine-ofertas-secao {
  max-width: 1280px;
  margin: 28px auto;
  padding: 0 22px;
}
.magazine-ofertas-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 16px;
}
.magazine-ofertas-titulos h2 {
  font-size: clamp(1.2rem, 2.8vw, 1.6rem);
  font-weight: 800;
  color: #0f172a;
  margin: 0;
}
.magazine-ofertas-titulos p {
  font-size: 0.88rem;
  color: #64748b;
  margin: 4px 0 0;
}
.magazine-countdown-wrap {
  display: flex;
  align-items: center;
  gap: 14px;
}
.magazine-timer-boxes {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-weight: 800;
  color: #0f172a;
  font-size: 0.9rem;
}
.magazine-timer-box {
  background: #0f172a;
  color: #ffffff;
  padding: 6px 10px;
  border-radius: 8px;
  font-size: 0.95rem;
  font-weight: 800;
  min-width: 38px;
  text-align: center;
}

/* Videos / Reels Grid ("O que está rolando nas redes") */
.magazine-redes-secao {
  max-width: 1280px;
  margin: 28px auto;
  padding: 0 22px;
}
.magazine-social-profile {
  --rede-cor: #2563eb;
  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 20px;
  min-height: 150px;
  padding: 26px 30px;
  overflow: hidden;
  color: #fff;
  background: linear-gradient(125deg, #111827, #1f2937);
  border-radius: 20px;
  box-shadow: 0 10px 30px rgba(15, 23, 42, .18);
  transition: transform .2s ease, box-shadow .2s ease;
}
.magazine-social-profile::after {
  content: "";
  position: absolute;
  z-index: -1;
  width: 260px;
  height: 260px;
  right: -70px;
  top: -100px;
  border-radius: 50%;
  background: var(--rede-cor);
  opacity: .3;
}
.magazine-social-profile:hover {
  transform: translateY(-3px);
  box-shadow: 0 16px 38px rgba(15, 23, 42, .25);
}
.magazine-social-profile--instagram { --rede-cor: #e1306c; background: linear-gradient(125deg, #4c1d95, #be185d 60%, #f97316); }
.magazine-social-profile--tiktok { --rede-cor: #25f4ee; background: linear-gradient(125deg, #050505, #1f2937); }
.magazine-social-profile--youtube { --rede-cor: #ff0000; background: linear-gradient(125deg, #450a0a, #991b1b 62%, #dc2626); }
.magazine-social-profile-icon {
  display: grid;
  place-items: center;
  width: 78px;
  height: 78px;
  border-radius: 22px;
  background: rgba(255,255,255,.16);
  border: 1px solid rgba(255,255,255,.25);
  font-size: 2.2rem;
  font-weight: 900;
  backdrop-filter: blur(5px);
}
.magazine-social-profile-copy { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.magazine-social-profile-copy small { opacity: .8; font-weight: 700; }
.magazine-social-profile-copy strong { font-size: clamp(1.35rem, 3vw, 2rem); overflow-wrap: anywhere; }
.magazine-social-profile-copy span { max-width: 660px; opacity: .9; line-height: 1.45; }
.magazine-social-profile-action {
  padding: 12px 18px;
  border-radius: 999px;
  background: #fff;
  color: #111827;
  font-weight: 850;
  white-space: nowrap;
}
@media (max-width: 720px) {
  .magazine-social-profile { grid-template-columns: auto 1fr; gap: 14px; padding: 20px; }
  .magazine-social-profile-icon { width: 58px; height: 58px; border-radius: 17px; font-size: 1.6rem; }
  .magazine-social-profile-action { grid-column: 1 / -1; text-align: center; }
}
/* Testimonials / Avaliações dos Clientes */
.magazine-avaliacoes-secao {
  max-width: 1280px;
  margin: 28px auto;
  padding: 0 22px;
}
.magazine-avaliacoes-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 16px;
}
.magazine-review-card {
  background: #ffffff;
  border: 1px solid #e2e8f0;
  border-radius: 16px;
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  box-shadow: 0 4px 14px rgba(0,0,0,0.04);
}
.magazine-review-user {
  display: flex;
  align-items: center;
  gap: 12px;
}
.magazine-review-avatar {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #e2e8f0;
  object-fit: cover;
  flex-shrink: 0;
}
.magazine-review-name {
  font-size: 0.9rem;
  font-weight: 800;
  color: #0f172a;
}
.magazine-review-verified {
  font-size: 0.72rem;
  color: #16a34a;
  font-weight: 700;
}
.magazine-review-stars {
  color: #f59e0b;
  font-size: 0.9rem;
  letter-spacing: 2px;
}
.magazine-review-text {
  font-size: 0.85rem;
  color: #475569;
  line-height: 1.4;
  margin: 0;
}

/* Match Turbo Product Card (body.tema-magazine .prod-card) */
body.tema-magazine .prod-card {
  background: #ffffff;
  border: 1px solid #e2e8f0;
  border-radius: 16px;
  padding: 14px;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.04);
  position: relative;
  display: flex;
  flex-direction: column;
  transition: transform 0.18s, box-shadow 0.18s, border-color 0.18s;
}
body.tema-magazine .prod-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.09);
  border-color: #cbd5e1;
}
body.tema-magazine .prod-card .badge-off {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 3;
  background: #e11d48;
  color: #ffffff;
  font-size: 0.72rem;
  font-weight: 800;
  padding: 3px 8px;
  border-radius: 999px;
  box-shadow: 0 2px 8px rgba(225, 29, 72, 0.3);
}
body.tema-magazine .prod-card .badge-tag {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 3;
  background: #0f172a;
  color: #ffffff;
  font-size: 0.68rem;
  font-weight: 800;
  padding: 3px 8px;
  border-radius: 999px;
}
body.tema-magazine .prod-card .thumb {
  width: 100%;
  aspect-ratio: 1 / 1;
  border-radius: 12px;
  background: #ffffff;
  border: 1px solid #f1f5f9;
  margin-bottom: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
body.tema-magazine .prod-card .thumb img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  transition: transform 0.25s ease;
}
body.tema-magazine .prod-card:hover .thumb img {
  transform: scale(1.05);
}
body.tema-magazine .prod-card h3, .prod-card h4 {
  font-size: 0.92rem;
  font-weight: 700;
  color: #0f172a;
  line-height: 1.3;
  margin: 0 0 6px;
  min-height: 38px;
}
body.tema-magazine .prod-card .preco-de {
  font-size: 0.78rem;
  color: #64748b; /* #94a3b8 falhava contraste AA no PageSpeed */
  text-decoration: line-through;
  margin: 0;
}
body.tema-magazine .prod-card .preco-por {
  font-size: 1.15rem;
  font-weight: 800;
  color: #0f172a;
  margin: 2px 0 2px;
  line-height: 1.1;
}
body.tema-magazine .prod-card .preco-pix {
  font-size: 0.75rem;
  font-weight: 700;
  color: #059669;
  margin: 2px 0;
}
body.tema-magazine .prod-card .parcelamento-line {
  font-size: 0.72rem;
  color: #64748b;
  margin: 2px 0 8px;
}
body.tema-magazine .prod-card .qtd-buy-row {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: auto;
}
body.tema-magazine .prod-card .qtd-selector {
  display: flex;
  align-items: center;
  border: 1px solid #cbd5e1;
  border-radius: 8px;
  overflow: hidden;
  height: 36px;
}
body.tema-magazine .prod-card .qtd-selector button {
  width: 26px;
  height: 100%;
  border: none;
  background: #f1f5f9;
  font-weight: 800;
  color: #334155;
  cursor: pointer;
}
body.tema-magazine .prod-card .qtd-selector input {
  width: 28px;
  height: 100%;
  border: none;
  text-align: center;
  font-weight: 700;
  font-size: 0.85rem;
  padding: 0;
  min-height: 0;
}
body.tema-magazine .prod-card .btn-comprar-mag {
  flex: 1;
  background: var(--cor-primaria, var(--preto-esc, #0f172a));
  color: #ffffff;
  border: none;
  height: 36px;
  border-radius: 8px;
  font-weight: 800;
  font-size: 0.85rem;
  cursor: pointer;
  transition: background 0.15s, filter 0.15s;
}
body.tema-magazine .prod-card .btn-comprar-mag:hover {
  filter: brightness(1.2);
}
body.tema-magazine .prod-card .btn-whats-mag {
  margin-top: 6px;
  width: 100%;
  background: #25d366;
  color: #ffffff;
  border: none;
  height: 34px;
  border-radius: 8px;
  font-weight: 700;
  font-size: 0.78rem;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  text-decoration: none;
  transition: background 0.15s;
}
body.tema-magazine .prod-card .btn-whats-mag:hover {
  background: #1ebd59;
}

/* ============================================================
   TEMA LINK BIO ULTRA — visual mobile-first / hub de links e catálogo
   ============================================================ */
body.tema-link-bio {
  background: #f8fafc;
  color: #1e293b;
  font-family: inherit;
  margin: 0;
  padding: 0;
  padding-bottom: 70px;
}

/* Oculta elementos pesados de desktop no tema Link Bio Ultra */
body.tema-link-bio .topbar,
body.tema-link-bio .magazine-header-fixo,
body.tema-link-bio .magazine-top-ticker,
body.tema-link-bio .magazine-utility-row,
body.tema-link-bio .magazine-social-sidebar,
body.tema-link-bio .magazine-benefit-ruler,
body.tema-link-bio .magazine-triple-banners,
body.tema-link-bio .magazine-double-banners,
body.tema-link-bio .magazine-full-banner,
body.tema-link-bio .magazine-coupon-bar,
body.tema-link-bio .magazine-floating-coupon-btn,
body.tema-link-bio .magazine-wpp-fab,
body.tema-link-bio .cart-fab,
body.tema-link-bio .hero-loja,
body.tema-link-bio .hero-card-preview,
body.tema-link-bio .atalhos-servicos {
  display: none !important;
}

/* Container do App Link Bio Ultra */
.bio-ultra-wrapper {
  max-width: 620px;
  margin: 0 auto;
  padding: 16px 14px 24px;
  box-sizing: border-box;
}

/* 1. Header do Perfil */
.bio-ultra-header {
  text-align: center;
  padding: 18px 12px 14px;
  background: #ffffff;
  border-radius: 20px;
  box-shadow: 0 4px 16px rgba(15, 23, 42, 0.05);
  border: 1px solid #f1f5f9;
  margin-bottom: 14px;
  position: relative;
  overflow: hidden;
}
.bio-ultra-header::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 60px;
  background: linear-gradient(135deg, var(--cor-primaria, #3b82f6), var(--cor-secundaria, #8b5cf6));
  opacity: 0.15;
}
.bio-ultra-avatar-box {
  position: relative;
  display: inline-block;
  margin-top: 6px;
  margin-bottom: 8px;
}
.bio-ultra-avatar {
  width: 80px;
  height: 80px;
  border-radius: 50%;
  object-fit: cover;
  background: #ffffff;
  padding: 3px;
  border: 3px solid transparent;
  background-image: linear-gradient(#fff, #fff), linear-gradient(135deg, #f59e0b, #ec4899, #8b5cf6, #3b82f6);
  background-origin: border-box;
  background-clip: content-box, border-box;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.1);
  display: grid;
  place-items: center;
  font-size: 2.2rem;
}
.bio-ultra-avatar img {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  object-fit: cover;
}
.bio-verified-badge {
  position: absolute;
  bottom: 2px;
  right: 2px;
  background: #2563eb;
  color: #ffffff;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 0.72rem;
  border: 2px solid #ffffff;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
}
.bio-ultra-nome {
  font-size: 1.35rem;
  font-weight: 800;
  color: #0f172a;
  margin: 4px 0 2px;
  letter-spacing: -0.3px;
}
.bio-ultra-slogan {
  font-size: 0.88rem;
  color: #64748b;
  margin: 2px 0 10px;
  line-height: 1.35;
}
.bio-ultra-status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
  background: #ecfdf5;
  border: 1px solid #a7f3d0;
  color: #065f46;
  font-size: 0.78rem;
  font-weight: 700;
  border-radius: 999px;
  margin-bottom: 12px;
}
.bio-status-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #10b981;
  box-shadow: 0 0 0 2px rgba(16, 185, 129, 0.2);
  animation: pulse-dot 1.8s infinite;
}
@keyframes pulse-dot {
  0%, 100% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.3); opacity: 0.7; }
}
.bio-ultra-socials {
  display: flex;
  justify-content: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 4px;
}
.bio-social-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  color: #334155;
  font-size: 1.1rem;
  text-decoration: none;
  transition: transform 0.15s, background 0.15s;
}
.bio-social-icon:hover {
  transform: translateY(-2px);
  background: #ffffff;
  border-color: #cbd5e1;
}

/* 2. Hub de Ações Rápidas */
.bio-ultra-hub {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 18px;
}
.bio-hub-btn {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  background: #ffffff;
  border: 1px solid #e2e8f0;
  border-radius: 14px;
  text-decoration: none;
  color: #0f172a;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.03);
  transition: transform 0.15s, box-shadow 0.15s, border-color 0.15s;
  cursor: pointer;
}
.bio-hub-btn:hover, .bio-hub-btn:active {
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.07);
  border-color: #cbd5e1;
}
.bio-hub-btn.btn-wpp-master {
  background: linear-gradient(135deg, #10b981 0%, #059669 100%);
  color: #ffffff;
  border: none;
  box-shadow: 0 4px 14px rgba(16, 185, 129, 0.28);
}
.bio-hub-btn.btn-wpp-master .bio-hub-ico {
  background: rgba(255, 255, 255, 0.22);
  color: #ffffff;
}
.bio-hub-btn.btn-wpp-master .bio-hub-sub {
  color: rgba(255, 255, 255, 0.9);
}
.bio-hub-ico {
  width: 40px;
  height: 40px;
  border-radius: 10px;
  background: #f1f5f9;
  display: grid;
  place-items: center;
  font-size: 1.25rem;
  flex-shrink: 0;
}
.bio-hub-texts {
  flex: 1;
  text-align: left;
  min-width: 0;
}
.bio-hub-title {
  font-size: 0.92rem;
  font-weight: 800;
  line-height: 1.2;
}
.bio-hub-sub {
  font-size: 0.78rem;
  color: #64748b;
  margin-top: 2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.bio-hub-arrow {
  font-size: 0.9rem;
  opacity: 0.5;
}

/* 3. Seção do Catálogo no Link Bio */
.bio-ultra-catalogo-secao {
  background: #ffffff;
  border-radius: 20px;
  padding: 16px 14px;
  box-shadow: 0 4px 16px rgba(15, 23, 42, 0.05);
  border: 1px solid #f1f5f9;
}
.bio-catalogo-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}
.bio-catalogo-title {
  font-size: 1.1rem;
  font-weight: 800;
  color: #0f172a;
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 0;
}
.bio-search-box {
  display: flex;
  align-items: center;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  padding: 8px 12px;
  gap: 8px;
  margin-bottom: 12px;
}
.bio-search-box input {
  flex: 1;
  border: none;
  background: transparent;
  font-size: 0.9rem;
  outline: none;
  color: #0f172a;
  min-height: 0;
  padding: 0;
}
.bio-search-box .btn-bio-clear {
  border: none;
  background: transparent;
  color: #94a3b8;
  cursor: pointer;
  padding: 0;
  font-size: 0.95rem;
}
.bio-cat-chips {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  padding-bottom: 10px;
  margin-bottom: 12px;
  scrollbar-width: none;
}
.bio-cat-chips::-webkit-scrollbar {
  display: none;
}
.bio-cat-chip {
  padding: 6px 13px;
  background: #f1f5f9;
  border: 1px solid #e2e8f0;
  border-radius: 999px;
  font-size: 0.8rem;
  font-weight: 700;
  color: #475569;
  white-space: nowrap;
  cursor: pointer;
  transition: all 0.15s;
}
.bio-cat-chip.ativo, .bio-cat-chip:hover {
  background: var(--cor-primaria, #0f172a);
  color: #ffffff;
  border-color: var(--cor-primaria, #0f172a);
}

/* Grade de Produtos do Link Bio Ultra */
body.tema-link-bio .produtos-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}
@media (max-width: 380px) {
  body.tema-link-bio .produtos-grid {
    grid-template-columns: 1fr;
  }
}

/* Card de Produto no Link Bio */
body.tema-link-bio .prod-card {
  background: #ffffff;
  border: 1px solid #e2e8f0;
  border-radius: 14px;
  padding: 10px;
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.03);
  transition: transform 0.15s, box-shadow 0.15s;
}
body.tema-link-bio .prod-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 14px rgba(0, 0, 0, 0.07);
}
body.tema-link-bio .prod-card .badge-off {
  position: absolute;
  top: 8px;
  left: 8px;
  background: #ef4444;
  color: #ffffff;
  font-size: 0.68rem;
  font-weight: 800;
  padding: 2px 6px;
  border-radius: 6px;
  z-index: 2;
}
body.tema-link-bio .prod-card .thumb {
  min-height: 120px;
  max-height: 130px;
  display: grid;
  place-items: center;
  margin-bottom: 8px;
  background: #f8fafc;
  border-radius: 10px;
  overflow: hidden;
  font-size: 2.2rem;
}
body.tema-link-bio .prod-card .thumb img {
  max-height: 120px;
  width: 100%;
  object-fit: contain;
}
body.tema-link-bio .prod-card h3, .prod-card h4 {
  font-size: 0.88rem;
  font-weight: 700;
  color: #0f172a;
  line-height: 1.25;
  margin: 0 0 6px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  min-height: 2.2em;
}
body.tema-link-bio .prod-card .preco-de {
  font-size: 0.75rem;
  color: #94a3b8;
  text-decoration: line-through;
  margin: 0;
}
body.tema-link-bio .prod-card .preco-por {
  font-size: 1.05rem;
  font-weight: 800;
  color: #0f172a;
  margin: 2px 0 0;
}
body.tema-link-bio .prod-card .preco-pix {
  font-size: 0.78rem;
  font-weight: 700;
  color: #10b981;
  margin: 1px 0 4px;
}
body.tema-link-bio .prod-card .parcelamento-line {
  font-size: 0.72rem;
  color: #64748b;
  margin-bottom: 8px;
}
body.tema-link-bio .prod-card .bio-btn-buy {
  width: 100%;
  background: var(--cor-primaria, #0f172a);
  color: #ffffff;
  border: none;
  height: 36px;
  border-radius: 9px;
  font-weight: 800;
  font-size: 0.82rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  transition: filter 0.15s;
}
body.tema-link-bio .prod-card .bio-btn-buy:hover {
  filter: brightness(1.15);
}
body.tema-link-bio .prod-card .bio-btn-wpp {
  width: 100%;
  background: #25d366;
  color: #ffffff;
  border: none;
  height: 32px;
  border-radius: 9px;
  font-weight: 700;
  font-size: 0.76rem;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  text-decoration: none;
  margin-top: 5px;
}

/* 4. Barra Fixa Inferior Mobile do Link Bio Ultra */
.bio-bottom-nav {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background: rgba(255, 255, 255, 0.96);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-top: 1px solid #e2e8f0;
  display: flex;
  justify-content: space-around;
  padding: 6px 0 8px;
  z-index: 9999;
  box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.05);
}
.bio-nav-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  color: #64748b;
  text-decoration: none;
  font-size: 0.72rem;
  font-weight: 700;
  position: relative;
  padding: 2px 10px;
  border: none;
  background: transparent;
  cursor: pointer;
}
.bio-nav-item .bio-nav-ico {
  font-size: 1.25rem;
  line-height: 1;
  margin-bottom: 2px;
}
.bio-nav-item.ativo, .bio-nav-item:hover {
  color: var(--cor-primaria, #0f172a);
}
.bio-cart-badge {
  position: absolute;
  top: 0px;
  right: 6px;
  background: #ef4444;
  color: #ffffff;
  font-size: 0.65rem;
  font-weight: 800;
  padding: 1px 5px;
  border-radius: 999px;
  min-width: 16px;
  text-align: center;
}

/* Botão de Toggle Claro / Escuro no Link Bio */
.bio-theme-toggle {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 10;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 10px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.9);
  border: 1px solid #e2e8f0;
  color: #334155;
  font-size: 0.75rem;
  font-weight: 700;
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
  transition: all 0.2s ease;
  backdrop-filter: blur(8px);
}
.bio-theme-toggle:hover {
  transform: scale(1.05);
  background: #ffffff;
  border-color: #cbd5e1;
}
.bio-theme-toggle .toggle-icon {
  font-size: 0.9rem;
}

/* ============================================================
   MODO ESCURO — LINK BIO ULTRA (bio-dark-mode)
   ============================================================ */
body.tema-link-bio.bio-dark-mode {
  background: #090d16;
  color: #e2e8f0;
}
body.tema-link-bio.bio-dark-mode .bio-ultra-header {
  background: #111827;
  border-color: #1f2937;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
}
body.tema-link-bio.bio-dark-mode .bio-ultra-nome {
  color: #ffffff;
}
body.tema-link-bio.bio-dark-mode .bio-ultra-slogan {
  color: #94a3b8;
}
body.tema-link-bio.bio-dark-mode .bio-social-icon {
  background: #1f2937;
  border-color: #374151;
  color: #e2e8f0;
}
body.tema-link-bio.bio-dark-mode .bio-social-icon:hover {
  background: #374151;
}
body.tema-link-bio.bio-dark-mode .bio-theme-toggle {
  background: rgba(31, 41, 55, 0.9);
  border-color: #374151;
  color: #f3f4f6;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.4);
}
body.tema-link-bio.bio-dark-mode .bio-theme-toggle:hover {
  background: #374151;
}
body.tema-link-bio.bio-dark-mode .bio-hub-btn {
  background: #111827;
  border-color: #1f2937;
  color: #ffffff;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}
body.tema-link-bio.bio-dark-mode .bio-hub-btn:hover,
body.tema-link-bio.bio-dark-mode .bio-hub-btn:active {
  border-color: #374151;
  background: #162032;
}
body.tema-link-bio.bio-dark-mode .bio-hub-ico {
  background: #1f2937;
  color: #f3f4f6;
}
body.tema-link-bio.bio-dark-mode .bio-hub-sub {
  color: #94a3b8;
}
body.tema-link-bio.bio-dark-mode .bio-ultra-catalogo-secao {
  background: #111827;
  border-color: #1f2937;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
}
body.tema-link-bio.bio-dark-mode .bio-catalogo-title {
  color: #ffffff;
}
body.tema-link-bio.bio-dark-mode .bio-search-box {
  background: #090d16;
  border-color: #1f2937;
}
body.tema-link-bio.bio-dark-mode .bio-search-box input {
  color: #ffffff;
}
body.tema-link-bio.bio-dark-mode .bio-cat-chip {
  background: #1f2937;
  border-color: #374151;
  color: #cbd5e1;
}
body.tema-link-bio.bio-dark-mode .bio-cat-chip.ativo {
  background: var(--cor-primaria, #3b82f6);
  border-color: var(--cor-primaria, #3b82f6);
  color: #ffffff;
}
body.tema-link-bio.bio-dark-mode .prod-card {
  background: #111827;
  border-color: #1f2937;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
}
body.tema-link-bio.bio-dark-mode .prod-card:hover {
  border-color: #374151;
}
body.tema-link-bio.bio-dark-mode .prod-card .thumb {
  background: #090d16;
}
body.tema-link-bio.bio-dark-mode .prod-card h3, .prod-card h4 {
  color: #f3f4f6;
}
body.tema-link-bio.bio-dark-mode .prod-card .preco-por {
  color: #ffffff;
}
body.tema-link-bio.bio-dark-mode .prod-card .parcelamento-line {
  color: #94a3b8;
}
body.tema-link-bio.bio-dark-mode .bio-bottom-nav {
  background: rgba(17, 24, 39, 0.96);
  border-color: #1f2937;
  box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.4);
}
body.tema-link-bio.bio-dark-mode .bio-nav-item {
  color: #94a3b8;
}
body.tema-link-bio.bio-dark-mode .bio-nav-item.ativo,
body.tema-link-bio.bio-dark-mode .bio-nav-item:hover {
  color: #ffffff;
}

   A versão móvel prioriza a mesma ordem de decisão da bio Ultra:
   marca → ação rápida → produtos. O desktop preserva o Magazine completo.
   ============================================================ */
.magazine-mobile-ultra { display: none; }

@media (max-width: 860px) {
  body.tema-magazine { background: #f6f7fb; }

  /* Barra enxuta: marca e carrinho continuam acessíveis sem ocupar a dobra. */
  .magazine-header-fixo { background: #fff; box-shadow: 0 1px 10px rgba(15, 23, 42, .10); }
  .magazine-header-fixo .magazine-top-ticker,
  .magazine-header-fixo .magazine-utility-row,
  .magazine-header-fixo .magazine-nav-categorias { display: none !important; }
  body.tema-magazine .topbar-magazine {
    min-height: 56px;
    flex-wrap: nowrap !important;
    padding: 8px 14px !important;
    background: #fff !important;
    box-shadow: none !important;
  }
  body.tema-magazine .magazine-search-box,
  body.tema-magazine .magazine-account-btn { display: none !important; }
  body.tema-magazine .magazine-right-account-box {
    order: 1 !important;
    margin: 0 !important;
    min-width: 0;
  }
  body.tema-magazine .topbar-magazine .brand { gap: 8px !important; }
  body.tema-magazine .topbar-magazine .brand .logo img { width: 30px; height: 30px; }
  body.tema-magazine .topbar-magazine .brand .marca-texto {
    color: #172033;
    font-size: .92rem;
    max-width: 175px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  body.tema-magazine .magazine-cart-widget { order: 2 !important; margin-left: auto; }
  .btn-cart-mag { padding: 8px 11px; font-size: 0; box-shadow: none; background: #172033; }
  .btn-cart-mag > span:first-child::before { content: "🛒"; font-size: 1rem; }
  .btn-cart-mag .cart-count { font-size: .72rem; min-width: 15px; text-align: center; }

  /* O hero grande e os blocos promocionais de desktop saem da primeira dobra. */
  body.tema-magazine .hero-loja,
  body.tema-magazine .banner-carrossel,
  body.tema-magazine .compra-transparente,
  body.tema-magazine .vitrine-conversao,
  body.tema-magazine .atalhos-servicos,
  body.tema-magazine .magazine-coupon-bar,
  body.tema-magazine .magazine-benefit-ruler,
  body.tema-magazine .magazine-categorias-secao,
  body.tema-magazine .magazine-ofertas-secao,
  body.tema-magazine .magazine-triple-banners,
  body.tema-magazine .magazine-double-banners,
  body.tema-magazine .magazine-full-banner,
  body.tema-magazine .magazine-marcas-secao,
  body.tema-magazine .magazine-redes-secao,
  body.tema-magazine .magazine-avaliacoes-secao,
  body.tema-magazine .magazine-whatsapp-opiniao-secao,
  body.tema-magazine .magazine-instagram-secao,
  body.tema-magazine .magazine-faq-secao,
  body.tema-magazine .magazine-floating-coupon-btn,
  body.tema-magazine .vitrine-social-rail { display: none !important; }

  .magazine-mobile-ultra {
    display: block;
    margin: 0;
    padding: 20px 16px 14px;
    background: linear-gradient(160deg, #111b30 0%, #202e4d 100%);
    color: #fff;
  }
  .magazine-mobile-ultra__perfil { display: flex; align-items: center; gap: 14px; }
  .magazine-mobile-ultra__perfil img {
    width: 76px; height: 76px; border-radius: 50%; object-fit: cover;
    background: #fff; border: 3px solid rgba(255,255,255,.92); box-shadow: 0 5px 16px rgba(0,0,0,.2);
  }
  .magazine-mobile-ultra__perfil > div { min-width: 0; }
  .magazine-mobile-ultra__eyebrow { margin: 0 0 3px; font-size: .65rem; letter-spacing: .11em; font-weight: 800; opacity: .72; }
  .magazine-mobile-ultra h1 { margin: 0; color: #fff; font-size: 1.2rem; line-height: 1.2; letter-spacing: -.02em; }
  .magazine-mobile-ultra__perfil p:not(.magazine-mobile-ultra__eyebrow):not(.magazine-mobile-ultra__nome) { margin: 4px 0; font-size: .82rem; line-height: 1.35; color: rgba(255,255,255,.82); }
  .magazine-mobile-ultra small { color: #b8f4ce; font-weight: 700; font-size: .72rem; }
  .magazine-mobile-ultra__acoes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-top: 18px; }
  .magazine-mobile-ultra__acoes a,
  .magazine-mobile-ultra__acoes button {
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px;
    min-height: 64px; padding: 8px 4px; border: 1px solid rgba(255,255,255,.16); border-radius: 12px;
    background: rgba(255,255,255,.1); color: #fff; font: inherit; font-size: .74rem; font-weight: 800;
    text-decoration: none; cursor: pointer;
  }
  .magazine-mobile-ultra__acoes a:first-child { background: rgba(37, 211, 102, .18); }
  .magazine-mobile-ultra__acoes span { font-size: 1.25rem; }
  .magazine-mobile-ultra__trust { margin-top: 13px; text-align: center; color: rgba(255,255,255,.84); font-size: .72rem; }
  .magazine-mobile-ultra__trust > span { color: #fbbf24; margin-right: 3px; }
  .magazine-mobile-ultra__trust b { color: rgba(255,255,255,.4); padding: 0 2px; }

  body.tema-magazine .wrap { padding: 16px 12px 28px; }
  body.tema-magazine .filtros { margin: 0 0 14px; padding: 0; box-shadow: none; background: transparent; }
  body.tema-magazine .filtros select { min-width: 0; width: 100%; min-height: 44px; border-radius: 11px; background: #fff; }
  body.tema-magazine .loja-cabecalho-produtos { margin: 4px 0 13px; align-items: end; }
  body.tema-magazine .loja-cabecalho-produtos .loja-kicker { margin: 0 0 2px; font-size: .68rem; }
  body.tema-magazine .loja-cabecalho-produtos h2 { font-size: 1.12rem; line-height: 1.2; }
  body.tema-magazine .loja-cabecalho-produtos p { display: none; }
  body.tema-magazine .produtos-grid { --colunas-grade: 2; gap: 10px; }
  body.tema-magazine .prod-card { border-radius: 12px; padding: 9px; }
  body.tema-magazine .prod-card .thumb { min-height: 0; margin-bottom: 8px; border-radius: 9px; }
  body.tema-magazine .prod-card .badge-off,
  body.tema-magazine .prod-card .badge-tag { top: 6px; font-size: .59rem; padding: 2px 5px; }
  body.tema-magazine .prod-card .badge-off { left: 6px; }
  body.tema-magazine .prod-card .badge-tag { right: 6px; }
  body.tema-magazine .prod-card h3, .prod-card h4 { min-height: 2.55em; font-size: .79rem; }
  body.tema-magazine .prod-card .preco-pix,
  body.tema-magazine .prod-card .parcelamento-line,
  body.tema-magazine .prod-card .qtd-selector,
  body.tema-magazine .prod-card .btn-whats-mag { display: none; }
  body.tema-magazine .prod-card .preco-por { font-size: 1rem; }
  body.tema-magazine .prod-card .qtd-buy-row { margin-top: auto; }
  body.tema-magazine .prod-card .btn-comprar-mag { height: 34px; font-size: .78rem; }
  body.tema-magazine .secao-avaliacoes { margin-top: 22px !important; }
  body.tema-magazine .vitrine-whatsapp-fab { bottom: 16px; right: 14px; }
}




/* ============================================================
   MAGAZINES — EXPERIÊNCIA ULTRA NO CELULAR
   A versão móvel prioriza a mesma ordem de decisão da bio Ultra:
   marca → ação rápida → produtos. O desktop preserva o Magazine completo.
   ============================================================ */
.magazine-mobile-ultra { display: none; }

@media (max-width: 860px) {
  body.tema-magazine { background: #f6f7fb; }

  /* Barra enxuta: marca e carrinho continuam acessíveis sem ocupar a dobra. */
  .magazine-header-fixo { background: #fff; box-shadow: 0 1px 10px rgba(15, 23, 42, .10); }
  .magazine-header-fixo .magazine-top-ticker,
  .magazine-header-fixo .magazine-utility-row,
  .magazine-header-fixo .magazine-nav-categorias { display: none !important; }
  body.tema-magazine .topbar-magazine {
    min-height: 56px;
    flex-wrap: nowrap !important;
    padding: 8px 14px !important;
    background: #fff !important;
    box-shadow: none !important;
  }
  body.tema-magazine .magazine-search-box,
  body.tema-magazine .magazine-account-btn { display: none !important; }
  body.tema-magazine .magazine-right-account-box {
    order: 1 !important;
    margin: 0 !important;
    min-width: 0;
  }
  body.tema-magazine .topbar-magazine .brand { gap: 8px !important; }
  body.tema-magazine .topbar-magazine .brand .logo img { width: 30px; height: 30px; }
  body.tema-magazine .topbar-magazine .brand .marca-texto {
    color: #172033;
    font-size: .92rem;
    max-width: 175px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  body.tema-magazine .magazine-cart-widget { order: 2 !important; margin-left: auto; }
  .btn-cart-mag { padding: 8px 11px; font-size: 0; box-shadow: none; background: #172033; }
  .btn-cart-mag > span:first-child::before { content: "🛒"; font-size: 1rem; }
  .btn-cart-mag .cart-count { font-size: .72rem; min-width: 15px; text-align: center; }

  /* O hero grande e os blocos promocionais de desktop saem da primeira dobra. */
  body.tema-magazine .hero-loja,
  body.tema-magazine .banner-carrossel,
  body.tema-magazine .compra-transparente,
  body.tema-magazine .vitrine-conversao,
  body.tema-magazine .atalhos-servicos,
  body.tema-magazine .magazine-coupon-bar,
  body.tema-magazine .magazine-benefit-ruler,
  body.tema-magazine .magazine-categorias-secao,
  body.tema-magazine .magazine-ofertas-secao,
  body.tema-magazine .magazine-triple-banners,
  body.tema-magazine .magazine-double-banners,
  body.tema-magazine .magazine-full-banner,
  body.tema-magazine .magazine-marcas-secao,
  body.tema-magazine .magazine-redes-secao,
  body.tema-magazine .magazine-avaliacoes-secao,
  body.tema-magazine .magazine-whatsapp-opiniao-secao,
  body.tema-magazine .magazine-instagram-secao,
  body.tema-magazine .magazine-faq-secao,
  body.tema-magazine .magazine-floating-coupon-btn,
  body.tema-magazine .vitrine-social-rail { display: none !important; }

  .magazine-mobile-ultra {
    display: block;
    margin: 0;
    padding: 20px 16px 14px;
    background: linear-gradient(160deg, #111b30 0%, #202e4d 100%);
    color: #fff;
  }
  .magazine-mobile-ultra__perfil { display: flex; align-items: center; gap: 14px; }
  .magazine-mobile-ultra__perfil img {
    width: 76px; height: 76px; border-radius: 50%; object-fit: cover;
    background: #fff; border: 3px solid rgba(255,255,255,.92); box-shadow: 0 5px 16px rgba(0,0,0,.2);
  }
  .magazine-mobile-ultra__perfil > div { min-width: 0; }
  .magazine-mobile-ultra__eyebrow { margin: 0 0 3px; font-size: .65rem; letter-spacing: .11em; font-weight: 800; opacity: .72; }
  .magazine-mobile-ultra h1 { margin: 0; color: #fff; font-size: 1.2rem; line-height: 1.2; letter-spacing: -.02em; }
  .magazine-mobile-ultra__perfil p:not(.magazine-mobile-ultra__eyebrow):not(.magazine-mobile-ultra__nome) { margin: 4px 0; font-size: .82rem; line-height: 1.35; color: rgba(255,255,255,.82); }
  .magazine-mobile-ultra small { color: #b8f4ce; font-weight: 700; font-size: .72rem; }
  .magazine-mobile-ultra__acoes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-top: 18px; }
  .magazine-mobile-ultra__acoes a,
  .magazine-mobile-ultra__acoes button {
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px;
    min-height: 64px; padding: 8px 4px; border: 1px solid rgba(255,255,255,.16); border-radius: 12px;
    background: rgba(255,255,255,.1); color: #fff; font: inherit; font-size: .74rem; font-weight: 800;
    text-decoration: none; cursor: pointer;
  }
  .magazine-mobile-ultra__acoes a:first-child { background: rgba(37, 211, 102, .18); }
  .magazine-mobile-ultra__acoes span { font-size: 1.25rem; }
  .magazine-mobile-ultra__trust { margin-top: 13px; text-align: center; color: rgba(255,255,255,.84); font-size: .72rem; }
  .magazine-mobile-ultra__trust > span { color: #fbbf24; margin-right: 3px; }
  .magazine-mobile-ultra__trust b { color: rgba(255,255,255,.4); padding: 0 2px; }

  body.tema-magazine .wrap { padding: 16px 12px 28px; }
  body.tema-magazine .filtros { margin: 0 0 14px; padding: 0; box-shadow: none; background: transparent; }
  body.tema-magazine .filtros select { min-width: 0; width: 100%; min-height: 44px; border-radius: 11px; background: #fff; }
  body.tema-magazine .loja-cabecalho-produtos { margin: 4px 0 13px; align-items: end; }
  body.tema-magazine .loja-cabecalho-produtos .loja-kicker { margin: 0 0 2px; font-size: .68rem; }
  body.tema-magazine .loja-cabecalho-produtos h2 { font-size: 1.12rem; line-height: 1.2; }
  body.tema-magazine .loja-cabecalho-produtos p { display: none; }
  body.tema-magazine .produtos-grid { --colunas-grade: 2; gap: 10px; }
  body.tema-magazine .prod-card { border-radius: 12px; padding: 9px; }
  body.tema-magazine .prod-card .thumb { min-height: 0; margin-bottom: 8px; border-radius: 9px; }
  body.tema-magazine .prod-card .badge-off,
  body.tema-magazine .prod-card .badge-tag { top: 6px; font-size: .59rem; padding: 2px 5px; }
  body.tema-magazine .prod-card .badge-off { left: 6px; }
  body.tema-magazine .prod-card .badge-tag { right: 6px; }
  body.tema-magazine .prod-card h3, .prod-card h4 { min-height: 2.55em; font-size: .79rem; }
  body.tema-magazine .prod-card .preco-pix,
  body.tema-magazine .prod-card .parcelamento-line,
  body.tema-magazine .prod-card .qtd-selector,
  body.tema-magazine .prod-card .btn-whats-mag { display: none; }
  body.tema-magazine .prod-card .preco-por { font-size: 1rem; }
  body.tema-magazine .prod-card .qtd-buy-row { margin-top: auto; }
  body.tema-magazine .prod-card .btn-comprar-mag { height: 34px; font-size: .78rem; }
  body.tema-magazine .secao-avaliacoes { margin-top: 22px !important; }
  body.tema-magazine .vitrine-whatsapp-fab { bottom: 16px; right: 14px; }
}

/* ============================================================
   MAGAZINES — REFINAMENTO MOBILE estilo bio/ultra
   ------------------------------------------------------------
   Complemento da "Experiência Ultra no celular": no mobile o bloco
   "🔥 Mais procurados" (destaques) volta a aparecer logo após o
   perfil/ações e vira um carrossel horizontal com scroll-snap —
   o mesmo padrão dos cards "TOP" da página /bio. A nota real das
   avaliações entra na linha de confiança do perfil via JS.
   ============================================================ */
@media (max-width: 860px) {
  body.tema-magazine #magazineDestaquesSecao {
    display: block !important;
    margin: 18px auto 6px;
    padding: 0 16px;
  }
  body.tema-magazine #magazineDestaquesSecao .magazine-secao-titulo {
    font-size: 1.1rem;
    margin-bottom: 10px;
  }
  body.tema-magazine #magazineDestaquesGrid {
    display: flex !important;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x mandatory;
    gap: 10px;
    margin: 0 -16px;
    padding: 2px 16px 10px;
    scrollbar-width: none;
  }
  body.tema-magazine #magazineDestaquesGrid::-webkit-scrollbar { display: none; }
  body.tema-magazine #magazineDestaquesGrid > .prod-card {
    flex: 0 0 min(52vw, 200px);
    scroll-snap-align: start;
    min-width: 0;
  }
  body.tema-magazine #magazineDestaquesGrid .empty { flex: 0 0 100%; }
  /* A nota real das avaliações (span inserido pelo JS) ganha o mesmo
     destaque amarelo da estrela da linha de confiança. */
  .magazine-mobile-ultra__nota {
    color: #fbbf24;
    font-weight: 800;
  }
}

/* Slot estático do Magazine: no desktop o JS move a seção para o fluxo
   completo e tira esta classe. No celular ela já nasce no lugar certo. */
.magazine-destaques-slot { display: none; }

/* ============================================================
   CLS do Magazine no celular (PageSpeed 74 → filtro saltava 0,70)
   O servidor já coloca .tema-magazine no <body>. Reservamos a altura
   do header compacto, do perfil ultra e dos destaques ANTES do JS.
   ============================================================ */
@media (max-width: 860px) {
  body.tema-magazine .topbar:not(.topbar-magazine) {
    flex-direction: row !important;
    align-items: center !important;
    min-height: 56px;
    padding: 8px 14px !important;
    gap: 8px !important;
  }
  body.tema-magazine .topbar:not(.topbar-magazine) nav {
    display: none !important;
  }
  body.tema-magazine .topbar:not(.topbar-magazine) .brand {
    justify-content: flex-start !important;
    order: 0;
  }
  body.tema-magazine #magazineMobileUltra {
    display: block;
    min-height: 228px;
  }
  body.tema-magazine #magazineDestaquesSecao,
  body.tema-magazine .magazine-destaques-slot {
    display: block !important;
    min-height: 260px;
  }
  .magazine-mobile-ultra__nome {
    margin: 0 !important;
    color: #fff !important;
    font-size: 1.2rem !important;
    font-weight: 800;
    line-height: 1.2;
    letter-spacing: -.02em;
    font-family: var(--fonte-display);
  }
}
