/**
 * ============================================================================
 * ALÔ VENDAS PRO — CSS MOBILE OFICIAL (ESCALA COMPACTA MERCADO LIVRE)
 * Arquivo: assets/css/catalogo-mobile.css
 * Aplicado exclusivamente em telas móveis (max-width: 768px)
 * ============================================================================
 */

@media (max-width: 768px) {

  /* ── 0. Base & Reset Mobile ──────────────────────────────────────────────── */
  body {
    background-color: var(--fundo-body, #f4f4f4) !important;
    font-family: Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif !important;
    -webkit-font-smoothing: antialiased !important;
    overflow-x: hidden !important;
  }

  .container {
    padding: 0 10px !important;
    width: 100% !important;
    max-width: 100% !important;
  }

  /* ── 1. Barra de Avisos do Topo ─────────────────────────────────────────── */
  .top-bar {
    display: none !important;
  }

  /* ── 2. Cabeçalho Compacto (Navigation Mobile ML) ───────────────────────── */
  .main-header {
    background: var(--primary) !important;
    padding: 6px 0 0 0 !important;
    position: sticky !important;
    top: 0 !important;
    z-index: 100 !important;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;
  }

  .header-grid {
    display: flex !important;
    flex-direction: column !important;
    gap: 6px !important;
    padding: 0 10px !important;
  }

  /* Linha 1 do Header: Menu Sanduíche (38px) + Logo (46px) + Sacola (38px).
     Os botões ficam em 38px de propósito: é o alvo de toque confortável, e
     crescê-los junto com a logo roubaria a largura dela no meio. */
  .header-top-row {
    display: grid !important;
    grid-template-columns: 44px 1fr 44px !important;
    align-items: center !important;
    justify-content: space-between !important;
    /* ⚠️ 52px, e não 44: a logo cresceu 20% (pedido do dono, 17/08/2026) e
       aumentar SÓ a imagem não teria efeito — ela ficaria presa por esta altura
       e pelo `max-height` do `.logo-box`. Os três limites sobem juntos, senão a
       logo é comprimida e parece de baixa qualidade em vez de maior. */
    height: 52px !important;
    width: 100% !important;
    gap: 6px !important;
  }

  /* Menu Sanduíche Moderno com Micro-Efeito */
  .modern-hamburger {
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 4px !important;
    width: 38px !important;
    height: 38px !important;
    background: rgba(255, 255, 255, 0.12) !important;
    border: 1px solid rgba(255, 255, 255, 0.25) !important;
    border-radius: 6px !important;
    cursor: pointer !important;
    padding: 0 !important;
    flex-shrink: 0 !important;
    justify-self: start !important;
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1) !important;
    backdrop-filter: blur(4px) !important;
  }

  .modern-hamburger:active {
    transform: scale(0.92) !important;
    background: rgba(255, 255, 255, 0.22) !important;
    border-color: rgba(255, 255, 255, 0.4) !important;
  }

  .modern-hamburger .ham-line {
    display: block !important;
    height: 2px !important;
    border-radius: 2px !important;
    background: #ffffff !important;
    transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1) !important;
  }

  .modern-hamburger .ham-top {
    width: 18px !important;
  }

  .modern-hamburger .ham-mid {
    width: 13px !important;
    align-self: flex-start !important;
    margin-left: 10px !important;
  }

  .modern-hamburger .ham-bot {
    width: 18px !important;
  }

  .modern-hamburger:hover .ham-mid {
    width: 18px !important;
    margin-left: 0 !important;
    align-self: center !important;
  }

  /* Logo: 100% Centralizado no Meio Exato entre os Dois Botões */
  .logo-area {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    width: 100% !important;
    height: 100% !important;
    justify-self: center !important;
  }

  .logo-box {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    max-height: 50px !important;
  }

  /* A logo do lojista no cabeçalho. Já cresceu duas vezes a pedido do dono:
     +25% antes, e +20% em 17/08/2026 — 38px passou a 46px.

     ⚠️ O `max-width` sobe na MESMA proporção (175 → 210px). Logo deitada — que
     é a maioria, com o nome ao lado do símbolo — bate no limite horizontal antes
     de chegar na altura, e aí o aumento não aparece. */
  .header-logo-img {
    height: 46px !important;
    max-height: 46px !important;
    max-width: 210px !important;
    width: auto !important;
    object-fit: contain !important;
    filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.18)) !important;
    display: block !important;
    margin: 0 auto !important;
  }

  .header-logo-texto {
    font-size: 19px !important;
    color: #ffffff !important;
    font-weight: 700 !important;
    text-align: center !important;
    white-space: nowrap !important;
  }

  /* Botão da Sacola no Topo Mobile: Simetria Perfeita com o Menu Sanduíche */
  .header-sacola-btn {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 38px !important;
    height: 38px !important;
    padding: 0 !important;
    border-radius: 6px !important;
    background: rgba(255, 255, 255, 0.12) !important;
    border: 1px solid rgba(255, 255, 255, 0.25) !important;
    color: #ffffff !important;
    position: relative !important;
    justify-self: end !important;
    font-size: 18px !important;
    flex-shrink: 0 !important;
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1) !important;
    backdrop-filter: blur(4px) !important;
  }

  .header-sacola-btn:active {
    transform: scale(0.92) !important;
  }

  .header-sacola-btn .header-sacola-texto {
    display: none !important;
  }

  .header-sacola-btn .sacola-badge-count {
    position: absolute !important;
    top: -4px !important;
    right: -4px !important;
    font-size: 10px !important;
    min-width: 17px !important;
    height: 17px !important;
    padding: 0 4px !important;
    background: #ff3b30 !important;
    border: 1.5px solid #ffffff !important;
  }

  /* Linha 2 do Header: Busca Compacta (36px altura + 16px font anti-zoom) */
  .search-box {
    width: 100% !important;
    padding-bottom: 6px !important;
  }

  .search-box form {
    display: flex !important;
    height: 36px !important;
    background: #ffffff !important;
    border-radius: 6px !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12) !important;
    overflow: hidden !important;
    align-items: center !important;
    border: none !important;
  }

  .search-box input {
    flex: 1 !important;
    height: 100% !important;
    border: none !important;
    padding: 0 12px !important;
    font-size: 16px !important;
    color: #333333 !important;
    background: transparent !important;
    outline: none !important;
  }

  .search-box input::placeholder {
    color: #888888 !important;
    font-size: 13px !important;
  }

  .search-clear-btn {
    background: transparent !important;
    border: none !important;
    font-size: 19px !important;
    color: #999999 !important;
    cursor: pointer !important;
    padding: 0 6px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    line-height: 1 !important;
    height: 100% !important;
  }

  .search-clear-btn.hidden {
    display: none !important;
  }

  .search-red-btn {
    width: 38px !important;
    height: 100% !important;
    background: transparent !important;
    border: none !important;
    color: #666666 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    cursor: pointer !important;
  }

  /* Linha 3 do Header: Faixa de Localização / Frete Compacta (24px) */
  .mobile-sub-bar {
    display: flex !important;
    align-items: center !important;
    gap: 6px !important;
    padding: 4px 10px !important;
    background: rgba(0, 0, 0, 0.12) !important;
    color: #ffffff !important;
    font-size: 11px !important;
    overflow: hidden !important;
    white-space: nowrap !important;
  }

  .sub-bar-icon {
    font-size: 11px !important;
    flex-shrink: 0 !important;
  }

  .sub-bar-text {
    flex: 1 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    font-weight: 500 !important;
  }

  .sub-bar-chevron {
    font-size: 12px !important;
    opacity: 0.8 !important;
    flex-shrink: 0 !important;
  }

  /* ── 3. Menu Sanduíche Drawer Lateral Moderno ───────────────────────────── */
  .mobile-drawer-overlay {
    display: block !important;
    position: fixed !important;
    inset: 0 !important;
    background: rgba(15, 10, 13, 0.65) !important;
    z-index: 1000 !important;
    opacity: 0 !important;
    pointer-events: none !important;
    transition: opacity 0.28s ease !important;
    backdrop-filter: blur(6px) !important;
  }

  .mobile-drawer-overlay.active {
    opacity: 1 !important;
    pointer-events: auto !important;
  }

  .mobile-drawer {
    display: flex !important;
    flex-direction: column !important;
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    bottom: 0 !important;
    width: 82% !important;
    max-width: 310px !important;
    background: #ffffff !important;
    z-index: 1001 !important;
    transform: translateX(-100%) !important;
    transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1) !important;
    box-shadow: 6px 0 28px rgba(0, 0, 0, 0.25) !important;
    overflow-y: auto !important;
  }

  .mobile-drawer.active {
    transform: translateX(0) !important;
  }

  .drawer-header {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    padding: 14px 16px !important;
    background: var(--primary) !important;
    color: #ffffff !important;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1) !important;
  }

  .drawer-logo-img {
    height: 32px !important;
    max-width: 130px !important;
    object-fit: contain !important;
  }

  .drawer-logo-text {
    font-size: 17px !important;
    color: #ffffff !important;
    font-weight: 700 !important;
  }

  .drawer-close-btn {
    width: 32px !important;
    height: 32px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    background: rgba(255, 255, 255, 0.18) !important;
    border: 1px solid rgba(255, 255, 255, 0.3) !important;
    color: #ffffff !important;
    border-radius: 50% !important;
    cursor: pointer !important;
    transition: transform 0.2s ease !important;
  }

  .drawer-close-btn:active {
    transform: scale(0.9) !important;
  }

  .drawer-greeting {
    padding: 12px 16px !important;
    background: color-mix(in srgb, var(--primary, #2F5D8A) 7%, #ffffff) !important;
    border-bottom: 1px solid #f1e6ec !important;
  }

  .drawer-greeting p {
    font-size: 13px !important;
    margin-bottom: 2px !important;
    color: var(--texto-1) !important;
  }

  .drawer-greeting span {
    font-size: 11px !important;
    color: var(--texto-2) !important;
  }

  .drawer-nav-list {
    padding: 8px 0 !important;
    display: flex !important;
    flex-direction: column !important;
  }

  .drawer-link {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    padding: 11px 18px !important;
    font-size: 13.5px !important;
    font-weight: 500 !important;
    color: #333333 !important;
    text-decoration: none !important;
    border-left: 3px solid transparent !important;
    transition: all 0.15s ease !important;
  }

  .drawer-link:active,
  .drawer-link:hover {
    background: #f8fafc !important;
    color: var(--primary) !important;
  }

  .drawer-link.active {
    color: var(--primary) !important;
    font-weight: 700 !important;
    border-left-color: var(--primary) !important;
    background: color-mix(in srgb, var(--primary, #2F5D8A) 7%, #ffffff) !important;
  }

  .drawer-link-icon {
    color: var(--primary) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 20px !important;
  }

  .drawer-bullet {
    color: var(--primary) !important;
    font-size: 14px !important;
    width: 20px !important;
    text-align: center !important;
  }

  .drawer-divider-label {
    font-size: 10.5px !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
    color: #888888 !important;
    padding: 12px 18px 4px 18px !important;
    border-top: 1px solid #ededed !important;
    margin-top: 4px !important;
  }

  .drawer-link-zap {
    color: #128C7E !important;
    font-weight: 600 !important;
  }

  .drawer-link-zap .drawer-link-icon {
    color: #25D366 !important;
  }

  /* ── 4. Pílulas de Departamentos (Chips Horizontais ML) ─────────────────── */
  .dept-nav-bar {
    background: #ffffff !important;
    border-bottom: 1px solid #ededed !important;
    padding: 6px 0 !important;
  }

  .dept-nav-container {
    display: flex !important;
    gap: 6px !important;
    overflow-x: auto !important;
    padding: 0 10px !important;
    scrollbar-width: none !important;
    -webkit-overflow-scrolling: touch !important;
  }

  .dept-nav-container::-webkit-scrollbar {
    display: none !important;
  }

  .dept-item {
    flex-shrink: 0 !important;
    padding: 5px 12px !important;
    border-radius: 999px !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    background: #f5f5f5 !important;
    color: #333333 !important;
    border: 1px solid #e2e2e2 !important;
    text-decoration: none !important;
    white-space: nowrap !important;
  }

  .dept-item strong {
    font-weight: 500 !important;
  }

  .dept-item.active {
    background: var(--primary) !important;
    color: #ffffff !important;
    border-color: var(--primary) !important;
  }

  .dept-item.active strong {
    font-weight: 700 !important;
  }

  /* ── 5. Banner Carrossel & 2 Cards de Ofertas Lado a Lado ───────────────── */
  .hero-stitch-section {
    padding: 8px 0 10px 0 !important;
    margin-top: 8px !important;
  }

  .hero-stitch-grid {
    display: flex !important;
    flex-direction: column !important;
    gap: 8px !important;
    padding: 0 10px !important;
    height: auto !important;
    min-height: unset !important;
  }

  .hero-stitch-main-hd {
    width: 100% !important;
    aspect-ratio: 16/9 !important;
    height: auto !important;
    min-height: 150px !important;
    max-height: 190px !important;
    border-radius: 6px !important;
    overflow: hidden !important;
    position: relative !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08) !important;
  }

  .banner-hd-img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
  }

  .banner-overlay-content {
    padding: 8px !important;
  }

  .link-cotar-zap-overlay {
    padding: 5px 10px !important;
    font-size: 11px !important;
    height: 30px !important;
    border-radius: 999px !important;
  }

  .banner-nav-btn {
    width: 26px !important;
    height: 26px !important;
    font-size: 14px !important;
  }

  /* 2 CARDS DE DESTAQUE LADO A LADO */
  /* ══ OS DOIS CARDS DO TOPO NÃO APARECEM NO CELULAR ═════════════════════════
   *
   * Decisão do dono, 16/08/2026: "oculta esses 2 banners no mobile, deixa só no
   * desktop."
   *
   * Faz sentido no espaço de que se dispõe. Lado a lado num aparelho de 375px
   * cada card fica com ~150px úteis: título espremido em duas linhas, botão no
   * limite, arte cortada. Eles empurram o catálogo — que é o que a cliente veio
   * ver — para baixo da dobra, e entregam pouco em troca.
   *
   * No DESKTOP continuam inteiros, com a arte ao lado do texto: lá há espaço.
   * É a mesma razão de o CSS estar separado em duas folhas.
   *
   * ⚠️ As regras que desenhavam estes cards no celular FORAM REMOVIDAS, não
   * comentadas — com `display: none` elas não pintam nada, e regra que não
   * pinta é entulho que o próximo vai tentar entender. Elas existem no
   * histórico: `git show 9469e8f` e os commits seguintes trazem de volta a
   * versão em que a arte virava o fundo do card, se um dia isto voltar.
   *
   * O banner principal (o carrossel) NÃO é afetado: ele continua no celular. */
  .hero-stitch-side {
    display: none !important;
  }

  .btn-stitch-white {
    /* ⚠️ O texto do botão vem da PALETA, não é branco fixo.
     *
     * Era `#ffffff`, e com a marca amarela o botão ficou amarelo com texto
     * branco — ilegível, e foi assim que o dono viu no celular. A paleta já
     * calcula esse texto: `--cor-texto-botao` nasce preto quando o botão é
     * claro e branco quando é escuro. Escrever a cor à mão aqui é decidir por
     * uma marca só, e a próxima loja escolhe outra. */
    background: var(--primary) !important;
    color: var(--cor-texto-botao, #ffffff) !important;
    font-size: 9.5px !important;
    font-weight: 600 !important;
    border-radius: 4px !important;
    text-decoration: none !important;
    margin-top: 2px !important;
    line-height: 1.2 !important;

    /* ⚠️ OS DOIS BOTÕES DO MESMO TAMANHO — pedido do dono, 16/08/2026.
     *
     * Era `width: fit-content`: cada botão ficava do tamanho do próprio texto,
     * então "Confira os modelos" quebrava em DUAS linhas e "Solicitar cotação"
     * ficava numa só. Um alto e largo, outro baixo e estreito, um embaixo do
     * outro na coluna — e é assim que se lê "desalinhado".
     *
     * `nowrap` acaba com a quebra; `min-width` iguala a largura pelo maior dos
     * dois rótulos comuns. Não é largura FIXA de propósito: o texto é do
     * lojista (Configurações › Vitrine › Texto do Botão), e travar a largura
     * cortaria o que ele escrevesse maior. Com `min-width`, rótulo curto cresce
     * até o padrão e rótulo longo continua legível.
     *
     * `max-width: 100%` é a rede: dentro do card, o botão nunca vaza. */
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    white-space: nowrap !important;
    min-width: 108px !important;
    max-width: 100% !important;
    padding: 5px 9px !important;
    text-align: center !important;
    /* Rótulo que o lojista escreva muito grande encolhe com reticências em vez
       de vazar do card — degradar é melhor que quebrar. */
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }

  /* ── 6. Diferenciais / Benefícios (Faixa Horizontal Deslizante) ─────────── */
  .stitch-features-section {
    padding: 2px 0 10px 0 !important;
  }

  .stitch-features-grid {
    display: flex !important;
    flex-direction: row !important;
    /* ⚠️ `nowrap` é o que faz esta faixa ser uma FAIXA.
       O `catalogo-base.css` declara `flex-wrap: wrap` para a mesma classe, e
       esta folha herdava isso calada: os cartões travavam em 180px, dois não
       cabiam nos ~355px úteis do celular, e cada um caía numa linha — a coluna
       que o dono viu na tela, ocupando meia largura e deixando o resto vazio.
       O `flex-direction: row` daqui estava certo e não bastava: quem quebrava
       era o wrap, não a direção. */
    flex-wrap: nowrap !important;
    gap: 6px !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
    scrollbar-width: none !important;
    padding: 0 10px !important;
    margin: 0 !important;
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    height: auto !important;
  }

  .stitch-features-grid::-webkit-scrollbar {
    display: none !important;
  }

  .stitch-feature-card {
    /* DOIS por tela, sempre — e o resto se alcança arrastando.
       Era `min-width: 130px; max-width: 180px` com largura automática: a conta
       dependia de quantos cartões a loja tinha e da largura do aparelho, então
       o mesmo código dava faixa numa loja e coluna na outra. Meia tela menos
       metade do vão não depende de nada disso. */
    flex: 0 0 calc(50% - 3px) !important;
    flex-shrink: 0 !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    background: var(--fundo-card, #ffffff) !important;
    border: 1px solid var(--divisor, #ededed) !important;
    border-radius: 6px !important;
    padding: 6px 8px !important;
    display: flex !important;
    align-items: center !important;
    gap: 6px !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03) !important;
    height: auto !important;
  }

  .feat-icon-box {
    width: 24px !important;
    height: 24px !important;
    border-radius: 4px !important;
    background: color-mix(in srgb, var(--primary, #2F5D8A) 7%, #ffffff) !important;
    color: var(--primary) !important;
    flex-shrink: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
  }

  .feat-icon-box svg {
    width: 14px !important;
    height: 14px !important;
  }

  .feat-info {
    overflow: hidden !important;
  }

  .feat-info h4 {
    font-size: 10.5px !important;
    font-weight: 700 !important;
    color: var(--dark-slate, #1e293b) !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    margin: 0 !important;
  }

  .feat-info p {
    font-size: 9.5px !important;
    color: #777777 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    margin: 0 !important;
  }

  /* ── 7. Vitrine de Produtos (Polycard Mobile 2 Colunas ML) ────────────────── */
  .stitch-products-section {
    padding: 0 0 20px 0 !important;
  }

  .stitch-section-title-wrap {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    padding: 0 10px !important;
    margin-bottom: 8px !important;
    gap: 8px !important;
  }

  .stitch-section-title-wrap .stitch-section-title {
    padding: 0 !important;
    margin: 0 !important;
    font-size: 14px !important;
  }

  .link-limpar-filtro {
    font-size: 11px !important;
    color: var(--primary) !important;
    text-decoration: none !important;
    font-weight: 600 !important;
    padding: 3px 8px !important;
    background: color-mix(in srgb, var(--primary, #2F5D8A) 7%, #ffffff) !important;
    border: 1px solid rgba(137, 100, 110, 0.2) !important;
    border-radius: 4px !important;
    white-space: nowrap !important;
  }

  .catalogo-vazio {
    grid-column: 1 / -1 !important;
    text-align: center !important;
    padding: 30px 14px !important;
    background: var(--fundo-card, #ffffff) !important;
    border-radius: 6px !important;
    border: 1px solid var(--divisor, #ededed) !important;
    margin: 8px 0 !important;
  }

  .catalogo-vazio-icon {
    font-size: 30px !important;
    margin-bottom: 8px !important;
    opacity: 0.6 !important;
  }

  .catalogo-vazio h3 {
    font-size: 14px !important;
    color: var(--dark-slate, #1e293b) !important;
    margin-bottom: 4px !important;
    font-weight: 700 !important;
  }

  .catalogo-vazio p {
    font-size: 12px !important;
    color: #64748b !important;
    margin-bottom: 12px !important;
  }

  .btn-reset-catalogo {
    display: inline-block !important;
    padding: 7px 14px !important;
    border-radius: 4px !important;
    background: var(--cor-botao, var(--primary)) !important;
    color: var(--cor-texto-botao, #ffffff) !important;
    font-weight: 600 !important;
    font-size: 12px !important;
    text-decoration: none !important;
    border: none !important;
    cursor: pointer !important;
  }

  .stitch-products-grid {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 6px !important;
    padding: 0 10px !important;
  }

  .product-card {
    background: var(--fundo-card, #ffffff) !important;
    border-radius: 6px !important;
    border: 1px solid var(--divisor, #ededed) !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04) !important;
    overflow: hidden !important;
    display: flex !important;
    flex-direction: column !important;
    position: relative !important;
  }

  .product-badge {
    position: absolute !important;
    top: 4px !important;
    left: 4px !important;
    background: #ff6000 !important;
    color: #ffffff !important;
    font-size: 9.5px !important;
    font-weight: 700 !important;
    padding: 2px 6px !important;
    border-radius: 3px !important;
    z-index: 2 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.3px !important;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.18) !important;
  }

  /* ⚠️ A CAIXA SEGUE A FOTO — nem corta, nem deixa faixa branca.
     Quadrado fixo só dá duas saídas ruins: `cover` corta a foto retrato em 36%
     (levava junto a etiqueta "Ref:001"), e `contain` mostra tudo mas sobra
     faixa branca dos lados. O dono viu as duas: "ficou muito estranha aquelas
     imagens cortada" e depois "não estão preenchendo automática".
     Sem `aspect-ratio`, a altura vem da própria imagem: ela ocupa a largura
     toda do card e a caixa se ajusta. Automático para qualquer foto, retrato ou
     deitada — "não dá pra ficar editando imagem por imagem". */
  .product-img-wrap {
    width: 100% !important;
    aspect-ratio: auto !important;
    background: #fafafa !important;
    position: relative !important;
    overflow: hidden !important;
    border-bottom: 1px solid #f0f0f0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-decoration: none !important;
    cursor: pointer !important;
    -webkit-tap-highlight-color: rgba(0,0,0,0.05) !important;
  }

  /* ⚠️ `contain`, NUNCA `cover` — a foto do produto não pode ser cortada.
     Era `cover` dentro de um quadrado: as fotos do fornecedor são retrato
     (720x1116), então o celular comia ~35% da altura e levava junto a etiqueta
     com a referência ("Ref:001"), que é o que identifica a peça. O dono viu na
     tela em 17/08/2026: "ficou muito estranha aquelas imagens cortada".
     O desktop já usava `contain`; o mobile é que divergia. */
  .product-img-wrap img {
    width: 100% !important;
    /* `auto`, e é ele que faz a foto preencher sem cortar: a altura vem da
       proporção real do arquivo. `object-fit` deixa de ter o que fazer. */
    height: auto !important;
    object-fit: initial !important;
    display: block !important;
  }

  .product-img-wrap {
    padding: 0 !important;
    background: #fff !important;
  }

  /* Numa linha de dois cards, as fotos podem ter alturas diferentes. Isto
     alinha o texto de baixo, para os cartões não ficarem em degrau. */
  .stitch-products-grid .product-card {
    display: flex !important;
    flex-direction: column !important;
  }
  .stitch-products-grid .product-info {
    flex: 1 !important;
  }


  .product-info {
    padding: 6px 8px 8px 8px !important;
    display: flex !important;
    flex-direction: column !important;
    flex: 1 !important;
    background: var(--fundo-card, #ffffff) !important;
  }

  .product-category {
    font-size: 9.5px !important;
    color: #999999 !important;
    text-transform: uppercase !important;
    font-weight: 600 !important;
    margin-bottom: 1px !important;
  }

  .product-title {
    font-size: 11.5px !important;
    line-height: 1.25 !important;
    font-weight: 400 !important;
    color: #333333 !important;
    margin: 0 0 4px 0 !important;
    min-height: 29px !important;
    -webkit-line-clamp: 2 !important;
    display: -webkit-box !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
  }

  .product-title a,
  .product-title-link {
    color: inherit !important;
    text-decoration: none !important;
    display: inline !important;
  }

  .variant-options {
    display: flex !important;
    gap: 3px !important;
    margin-bottom: 3px !important;
  }

  .variant-thumb {
    width: 16px !important;
    height: 16px !important;
    border-radius: 2px !important;
    border: 1px solid #dddddd !important;
  }

  .product-pricing {
    margin-top: auto !important;
    padding-top: 2px !important;
  }

  .price-old {
    font-size: 10px !important;
    color: #999999 !important;
    text-decoration: line-through !important;
    min-height: 12px !important;
  }

  .price-current-wrap {
    display: flex !important;
    align-items: baseline !important;
    gap: 3px !important;
    flex-wrap: wrap !important;
  }

  .price-current {
    font-size: 15.5px !important;
    font-weight: 600 !important;
    color: #333333 !important;
  }

  .price-off {
    font-size: 9.5px !important;
    font-weight: 600 !important;
    color: #00a650 !important;
  }

  .price-installments {
    font-size: 10px !important;
    color: #00a650 !important;
    margin-top: 1px !important;
  }

  .btn-add-cart {
    width: 100% !important;
    height: 34px !important;
    margin-top: 6px !important;
    border-radius: 4px !important;
    background: var(--cor-botao, var(--primary)) !important;
    color: var(--cor-texto-botao, #ffffff) !important;
    font-size: 11.5px !important;
    font-weight: 600 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 4px !important;
    text-decoration: none !important;
  }

  /* ── 8. Seção Loja Física (Mobile Compacto) ─────────────────────────────── */
  .stitch-store-section {
    padding: 16px 0 !important;
    background: var(--fundo-card, #ffffff) !important;
    border-top: 1px solid #ededed !important;
  }

  .stitch-store-grid {
    display: flex !important;
    flex-direction: column !important;
    gap: 12px !important;
    padding: 0 10px !important;
  }

  .stitch-store-img {
    width: 100% !important;
    height: 140px !important;
    border-radius: 6px !important;
    overflow: hidden !important;
  }

  .stitch-store-info h3 {
    font-size: 15px !important;
    font-weight: 700 !important;
    color: #333333 !important;
    margin-bottom: 3px !important;
  }

  .store-address,
  .store-phone {
    font-size: 12px !important;
    color: #666666 !important;
    margin-bottom: 2px !important;
  }

  .opening-hours-box {
    background: #f8fafc !important;
    padding: 6px 10px !important;
    border-radius: 4px !important;
    border-left: 3px solid var(--primary) !important;
    margin: 6px 0 !important;
  }

  .opening-hours-box h4 {
    font-size: 10.5px !important;
    color: #777777 !important;
  }

  .opening-hours-box ul li {
    font-size: 11px !important;
    color: #333333 !important;
  }

  .store-btn-group {
    display: flex !important;
    gap: 6px !important;
    width: 100% !important;
    margin-top: 8px !important;
  }

  .btn-stitch-dark,
  .btn-stitch-outline {
    flex: 1 !important;
    height: 38px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    border-radius: 4px !important;
    text-align: center !important;
    text-decoration: none !important;
  }

  .btn-stitch-dark {
    background: var(--cor-botao, var(--primary)) !important;
    color: var(--cor-texto-botao, #ffffff) !important;
  }

  .btn-stitch-outline {
    background: transparent !important;
    border: 1px solid var(--cor-botao, var(--primary)) !important;
    color: var(--cor-link, var(--primary)) !important;
  }

  .stitch-zap-cards {
    width: 100% !important;
    padding-top: 2px !important;
  }

  .zap-consultant-card {
    width: 100% !important;
    max-width: 100% !important;
    margin-top: 0 !important;
    padding: 10px 12px !important;
    border-radius: 6px !important;
    border: 1px solid var(--divisor, #ededed) !important;
    background: var(--fundo-card, #ffffff) !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04) !important;
  }

  /* ── 9. Rodapé Mobile (Dividido em 3 Colunas com Quebra de Linha) ────────── */
  .stitch-footer {
    padding: 16px 0 0 0 !important;
    background: #ffffff !important;
    border-top: 1px solid #ededed !important;
  }

  /* ⚠️ O RODAPÉ NÃO PODE CONTAR AS COLUNAS — elas variam por loja.
   *
   * Aqui havia `grid-template-columns: repeat(3, 1fr)` mais uma reordenação
   * escrita com `nth-of-type(1)` até `(5)`, cada uma com o seu `order`. Isso
   * pressupõe cinco colunas, sempre, na mesma ordem.
   *
   * Só que as colunas são CONDICIONAIS: a de categorias some se a loja não tem
   * categoria, a de pagamentos some se ele não cadastrou as formas, a da loja
   * some se não há nome nem endereço. Numa loja recém-instalada sobraram três —
   * e as regras de `order` embaralharam o que existia, deixando um buraco onde
   * a quarta deveria estar. O dono viu no celular: "o rodapé está todo zoado".
   *
   * Agora são duas colunas que FLUEM na ordem do HTML, sem numeração. Funciona
   * com duas, três, quatro ou cinco — e a de pagamentos, que precisa da linha
   * inteira, é reconhecida pela CLASSE, não pela posição.
   *
   * Duas e não três: em 375px, três colunas espremiam os nomes das categorias a
   * ponto de "Ferramentas" virar "Ferrame…". */
  .stitch-footer-grid {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 16px 14px !important;
    padding: 0 12px !important;
    margin-bottom: 12px !important;
  }

  .footer-col {
    border-bottom: none !important;
    padding-bottom: 0 !important;
    min-width: 0 !important;
  }

  /* Pagamentos ocupa a linha inteira: são bandeirinhas, e cortadas ao meio não
     se reconhece nenhuma. Pela CLASSE — a posição dela muda de loja para loja. */
  .stitch-footer-grid > .footer-col-pagamentos {
    grid-column: 1 / -1 !important;
    border-top: 1px solid var(--divisor, #ededed) !important;
    padding-top: 12px !important;
  }

  .footer-col h3 {
    font-size: 12.5px !important;
    font-weight: 700 !important;
    color: var(--dark-slate, #1e293b) !important;
    margin-bottom: 7px !important;
  }

  .footer-col ul {
    list-style: none !important;
    padding: 0 !important;
    margin: 0 !important;
  }

  .footer-col ul li {
    margin-bottom: 6px !important;
  }

  .footer-col ul li a {
    /* ⚠️ SEM `nowrap` + reticências: com três colunas o nome da categoria era
       cortado ("Ferramentas" virava "Ferrame…") e o cliente não reconhecia o
       que a loja vende. Com duas colunas cabe inteiro, e o que não couber
       quebra a linha — ler em duas linhas é melhor que não ler. */
    font-size: 11.5px !important;
    color: var(--texto-2, #64748b) !important;
    text-decoration: none !important;
    display: block !important;
    line-height: 1.4 !important;
  }

  .pay-flags-grid {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 4px !important;
    margin-bottom: 6px !important;
  }

  .pay-flag-item {
    padding: 2px 4px !important;
    font-size: 8.5px !important;
    background: #f8fafc !important;
    border: 1px solid var(--divisor, #ededed) !important;
    border-radius: 3px !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 3px !important;
  }

  .pay-icon-svg {
    width: 22px !important;
    height: 15px !important;
  }

  .payment-cards-row {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 4px !important;
  }

  .pay-badge {
    font-size: 8px !important;
    padding: 2px 5px !important;
    background: #f1f5f9 !important;
    color: #475569 !important;
    border-radius: 3px !important;
  }

  .footer-bottom-flex {
    flex-direction: column !important;
    gap: 6px !important;
    text-align: center !important;
    padding: 10px !important;
    font-size: 10px !important;
    color: #888888 !important;
    border-top: 1px solid #ededed !important;
  }

  /* ── 10. Botão Flutuante do WhatsApp Mobile (Compacto) ──────────────────── */
  /* ══ O BOTÃO FLUTUANTE NÃO APARECE NO CELULAR ══════════════════════════════
   *
   * Decisão do dono, 17/08/2026: "para que esse botão de WhatsApp no canto
   * esquerdo do rodapé? Isso deve ser do desktop. Oculta."
   *
   * Ele viu o botão DESMONTADO — sem `position: fixed`, sem cor, caído no
   * fluxo do rodapé. Essa causa foi corrigida (as regras voltaram para
   * `catalogo-base.css`), mas a decisão de escondê-lo no celular é dele e
   * continua valendo: na tela pequena o botão cobre o conteúdo, e o cliente já
   * tem "Falar no WhatsApp" no cabeçalho e no rodapé — três caminhos para a
   * mesma conversa, um deles por cima do que ela está lendo.
   *
   * No DESKTOP ele fica: lá sobra margem, e o botão não tapa nada. */
  .floating-whatsapp {
    display: none !important;
  }
}

@media (max-width: 768px) {

  /* ══ CATEGORIAS SAI DO RODAPÉ NO CELULAR ═══════════════════════════════════
     Decisão do dono, 17/08/2026. Elas já estão na barra de navegação do topo,
     que fica grudada na tela enquanto a cliente rola — repetir a lista no fim
     alonga o rodapé para dizer o que já foi dito.

     Escondida pela CLASSE `footer-col-categorias`, nunca pela posição: foi
     contando posição que este rodapé quebrou ontem. O endereço e o telefone
     FICAM — é o que a cliente procura no rodapé de uma loja física. */
  .footer-col-categorias {
    display: none !important;
  }

  /* ══ VOLTAR AO TOPO ════════════════════════════════════════════════════════
     Link no rodapé, e não botão flutuante: o flutuante foi escondido no celular
     justamente por cobrir o que a cliente está lendo. Aqui ele espera no fim,
     onde a rolagem termina. */

}

@media (max-width: 768px) {

  /* ══ A BARRA DE NAVEGAÇÃO DO RODAPÉ ════════════════════════════════════════
     Pedido do dono, com o print de um aplicativo grande como referência.

     ⚠️ Ela é FIXA e cobre a base da tela, então o corpo precisa terminar acima
     dela — senão o último produto e o "Acesso da equipe" ficam por baixo, e
     ninguém alcança. É o erro clássico deste padrão, e a linha do `body` abaixo
     é o que o evita. `env(safe-area-inset-bottom)` respeita a faixa do gesto
     nos aparelhos sem botão físico. */
  body {
    padding-bottom: calc(62px + env(safe-area-inset-bottom, 0px)) !important;
  }

  .barra-inferior {
    display: grid !important;
    grid-auto-flow: column !important;
    grid-auto-columns: 1fr !important;
    position: fixed !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    z-index: 1000 !important;
    padding: 6px 4px calc(6px + env(safe-area-inset-bottom, 0px)) !important;
    background: var(--fundo-card, #ffffff) !important;
    border-top: 1px solid var(--divisor, #ededed) !important;
    box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.06) !important;
  }

  .barra-inferior-item {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 3px !important;
    /* 48px de alvo: é uma barra que se usa com o polegar, em movimento. */
    min-height: 48px !important;
    padding: 2px 0 !important;
    color: var(--texto-2, #64748b) !important;
    text-decoration: none !important;
    -webkit-tap-highlight-color: transparent !important;
  }

  .barra-inferior-item:active {
    color: var(--primary) !important;
  }

  .barra-inferior-icone {
    position: relative !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 24px !important;
    height: 24px !important;
  }

  .barra-inferior-icone svg {
    width: 22px !important;
    height: 22px !important;
  }

  .barra-inferior-rotulo {
    font-size: 10.5px !important;
    font-weight: 600 !important;
    line-height: 1 !important;
    /* O rótulo não quebra: "Categorias" em duas linhas desalinha a barra toda. */
    white-space: nowrap !important;
  }

  /* O contador da sacola. Mesma classe do contador do topo — o `sacola.js`
     atualiza os dois de uma vez, e não há segunda contagem para divergir. */
  .barra-inferior-selo {
    position: absolute !important;
    top: -5px !important;
    right: -7px !important;
    min-width: 16px !important;
    height: 16px !important;
    padding: 0 4px !important;
    border-radius: 999px !important;
    background: var(--primary) !important;
    color: var(--cor-texto-botao, #ffffff) !important;
    font-size: 9.5px !important;
    font-weight: 700 !important;
    line-height: 16px !important;
    text-align: center !important;
  }
}
