/* Cardápio v3 — extraído do inline de cardapio_v3.php (cache 1 ano via asset_v). */
  /* ═══════════════════════════════════════════════════════════════
     Cardápio v3 — Estilo "checkout transparente" inspirado no /encomendar/natal-2026
     Multi-step single-page: Escolher → Entrega → Pagamento
     ═══════════════════════════════════════════════════════════════ */

  /* (CSS do hero antigo e do step-indicator .v3-steps removidos 2026-06-09 —
     HTML não existe mais; a Jornada do Pedido substituiu o indicator) */

  /* ─── Jornada do Pedido — só aparece quando cliente começa a comprar ──── */
  /* Default: escondida. Aparece quando body tem .has-cta-finalizar (=carrinho com item)
     OU quando body.v3-checkout-mode (=cliente já está no checkout) */
  .v3-jornada { display: none; }
  body.has-cta-finalizar .v3-jornada,
  body.v3-checkout-mode .v3-jornada {
    display: flex;                          /* FLEX em vez de grid — mais robusto pra mobile */
    justify-content: space-between;         /* distribui igual com bordas no centro dos círculos extremos */
    align-items: flex-start;
    position: sticky; top: 56px; z-index: 999;
    padding: 14px 20px 12px;
    background: #fff;
    border-bottom: 1px solid #f0ece5;
    box-shadow: 0 2px 8px rgba(0,0,0,.04);
    max-width: 560px; margin: 0 auto;
    box-sizing: border-box; width: 100%;
    overflow: hidden;                       /* recorta qualquer scale que vaze */
  }
  /* Mobile: NÃO-sticky + padding lateral seguro pros círculos das pontas */
  @media (max-width: 700px) {
    .v3-jornada { position: relative; top: auto; padding: 10px 18px 8px; }
  }
  /* 4 etapas — flex já distribui automaticamente */
  body.has-cta-finalizar .v3-jornada.v3-jornada-4,
  body.v3-checkout-mode .v3-jornada.v3-jornada-4 {
    max-width: 640px;
  }
  /* Cada step ocupa fração equivalente (1/3 ou 1/4 da largura) */
  .v3-jornada .jr-step { flex: 1 1 0; }
  /* Em mobile 4 dots ficam apertados — refinamento já feito no breakpoint 480px abaixo. */
  @media (max-width: 360px) {
    .v3-jornada.v3-jornada-4 .jr-step .jr-label { font-size: .58rem; letter-spacing: -.3px; }
  }
  /* Trilho de progresso — left/right = 1/(2*colunas) pra alinhar com centro dos círculos
     extremos. Para 3 colunas: 16.67%. Para 4 colunas: 12.5% (sobrescrito abaixo). */
  .v3-jornada .jr-track {
    position: absolute; top: 36px; left: 16.67%; right: 16.67%;
    height: 3px; background: #f1ead8; border-radius: 2px;
    overflow: hidden;
  }
  /* Track de 4 etapas: centro do 1º círculo em 12.5%, centro do 4º em 87.5% */
  .v3-jornada.v3-jornada-4 .jr-track { left: 12.5%; right: 12.5%; }
  .v3-jornada .jr-fill {
    height: 100%; width: 0%;
    background: linear-gradient(90deg, var(--sg-red, #C41A1A), var(--sg-gold, #f7c34a));
    transition: width .4s ease;
    border-radius: 2px;
  }
  .v3-jornada .jr-step {
    position: relative;
    display: flex; flex-direction: column; align-items: center; gap: 4px;
    text-align: center;
    transition: all .25s;
    min-width: 0;                       /* permite shrink em grid 1fr sem estouro */
    overflow: hidden;                   /* trunca label se ficar muito longo */
  }
  .v3-jornada .jr-step .jr-label {
    white-space: nowrap; max-width: 100%;
    overflow: hidden; text-overflow: ellipsis;
  }
  .v3-jornada .jr-step .jr-circle {
    width: 38px; height: 38px; border-radius: 50%;
    background: #f3f4f6; border: 2px solid #e5e7eb;
    display: flex; align-items: center; justify-content: center;
    transition: all .25s;
    position: relative; z-index: 2;
  }
  .v3-jornada .jr-step .jr-emo {
    font-size: 1.05rem; line-height: 1;
    filter: grayscale(1); opacity: .55;
    transition: all .25s;
  }
  .v3-jornada .jr-step .jr-label {
    font-size: .75rem; font-weight: 700; color: #9ca3af;
    transition: color .25s;
  }
  /* Etapa concluída — verde com check */
  .v3-jornada .jr-step.done .jr-circle {
    background: #10b981; border-color: #10b981;
  }
  .v3-jornada .jr-step.done .jr-emo {
    filter: none; opacity: 1; transform: scale(1.05);
  }
  .v3-jornada .jr-step.done .jr-label { color: #065f46; }
  /* Etapa ativa — vermelho com pulse */
  .v3-jornada .jr-step.active .jr-circle {
    background: linear-gradient(135deg, var(--sg-red, #C41A1A), #FF6F00);
    border-color: var(--sg-red, #C41A1A);
    transform: scale(1.1);
    box-shadow: 0 4px 14px rgba(196,26,26,.35);
    /* animation jrPulse DESLIGADA 2026-07-02 — box-shadow animado em loop numa
       barra sticky força repaint contínuo e derruba o FPS do scroll no mobile */
  }
  .v3-jornada .jr-step.active .jr-emo {
    filter: none; opacity: 1; transform: scale(1.15);
  }
  .v3-jornada .jr-step.active .jr-label {
    color: var(--sg-red, #C41A1A); font-weight: 800;
  }
  @keyframes jrPulse {
    0%, 100% { box-shadow: 0 4px 14px rgba(196,26,26,.35); }
    50%      { box-shadow: 0 4px 22px rgba(196,26,26,.55); }
  }
  @media (max-width: 480px) {
    .v3-jornada { padding: 12px 28px 10px; }     /* lateral 28px no mobile médio */
    .v3-jornada .jr-track { top: 28px; }
    .v3-jornada .jr-step .jr-circle { width: 28px; height: 28px; }
    .v3-jornada .jr-step .jr-emo { font-size: .85rem; }
    .v3-jornada .jr-step .jr-label { font-size: .64rem; }
    /* Active scale REDUZIDO pra 1.0 no mobile — qualquer scale extrapola em tela pequena */
    .v3-jornada .jr-step.active .jr-circle { transform: none; }
    .v3-jornada .jr-step.active .jr-emo { transform: none; }
  }
  @media (max-width: 360px) {
    .v3-jornada { padding: 10px 24px 8px; }      /* lateral 24px nas telas minúsculas */
    .v3-jornada .jr-step .jr-circle { width: 24px; height: 24px; }
    .v3-jornada .jr-step .jr-emo { font-size: .7rem; }
    .v3-jornada .jr-step .jr-label { font-size: .58rem; letter-spacing: -.3px; }
  }

  /* Steps (single-page).
     padding-left/right considera safe-area-inset (iPhone X+ notch / landscape) */
  .v3-step {
    display: none;
    padding-top: 18px;
    padding-bottom: 120px;
    padding-left: max(16px, env(safe-area-inset-left));
    padding-right: max(16px, env(safe-area-inset-right));
    max-width: 980px; margin: 0 auto;
    box-sizing: border-box;
  }
  .v3-step.active { display: block; }
  /* GARANTE que nada saia pra esquerda da tela em mobile (causa do "OLHOS" e "EBIDAS" cortados) */
  html, body { overflow-x: hidden !important; max-width: 100%; }
  .v3-section, .v3-section-title, .v3-grid, .v3-prod {
    max-width: 100%; word-wrap: break-word; overflow-wrap: break-word;
  }
  .v3-step h2 {
    font-size: 1.15rem; font-weight: 800; color: var(--sg-dark);
    margin: 0 0 12px; display: flex; align-items: center; gap: 8px;
  }
  .v3-step h2 i { color: var(--sg-red); }

  /* Categorias scroll horizontal (filter pills) — sticky no topo, atualiza com scroll-spy */
  .v3-cats {
    display: flex; gap: 8px; overflow-x: auto; padding: 8px 16px 10px;
    margin: 0 -16px 14px;
    scrollbar-width: none;
    position: sticky; top: 0; z-index: 30;
    /* Fundo SÓLIDO (era rgba+backdrop-filter blur(8px) — re-blur a cada frame
       de scroll numa barra sticky derruba o FPS no mobile; visual idêntico) */
    background: #fff;
    border-bottom: 1px solid #f0ece5;
    scroll-behavior: smooth;
  }
  .v3-cats::-webkit-scrollbar { display: none; }
  .v3-cats .pill {
    background: #fff; border: 1.5px solid #ece8e3; padding: 8px 16px;
    border-radius: 24px; font-size: .85rem; font-weight: 700; color: #4b5563;
    text-decoration: none; white-space: nowrap; flex-shrink: 0; cursor: pointer;
    transition: all .18s;
  }
  .v3-cats .pill:hover {
    border-color: var(--sg-red); color: var(--sg-red);
  }
  .v3-cats .pill.active {
    background: var(--sg-red); color: #fff; border-color: var(--sg-red);
    box-shadow: 0 2px 8px rgba(139,26,26,.25);
  }

  /* Search */
  .v3-search {
    background: #fff; border: 2px solid #ece8e3; border-radius: 14px;
    padding: 4px 6px 4px 16px; display: flex; align-items: center; gap: 8px;
    margin: 0 0 18px;
    transition: border-color .15s, box-shadow .15s;
  }
  .v3-search:focus-within {
    border-color: var(--sg-red);
    box-shadow: 0 0 0 4px rgba(139,26,26,.1);
  }
  .v3-search i { color: #888; font-size: 1.15rem; }
  .v3-search input {
    flex: 1; border: none; outline: none;
    font-size: 1rem; padding: 12px 0; background: transparent;
    color: var(--sg-dark);
  }
  .v3-search input::placeholder { color: #aaa; }
  /* Botão "×" limpa a busca direto no campo (2026-07-02) */
  .v3-search .v3-search-clear {
    display: none; border: 0; background: #ece8e3; color: #555;
    width: 28px; height: 28px; border-radius: 50%; cursor: pointer;
    font-size: 1rem; line-height: 1; flex: 0 0 auto;
    align-items: center; justify-content: center;
  }
  .v3-search.tem-busca .v3-search-clear { display: inline-flex; }
  /* Contador discreto "N encontrados" abaixo da busca (2026-07-02) */
  .v3-search-count {
    display: none; font-size: .78rem; color: #6b7280;
    margin: -12px 2px 12px; font-weight: 600;
  }

  /* Grid produtos */
  .v3-grid {
    display: grid; gap: 12px;
    grid-template-columns: repeat(2, 1fr);
  }
  @media (min-width: 576px) { .v3-grid { grid-template-columns: repeat(3, 1fr); } }
  @media (min-width: 992px) { .v3-grid { grid-template-columns: repeat(4, 1fr); gap: 16px; } }

  /* Card de produto */
  .v3-prod {
    background: #fff; border: 1.5px solid #e5e7eb; border-radius: 16px;
    overflow: hidden; cursor: pointer;
    transition: transform .18s, box-shadow .2s, border-color .15s;
    display: flex; flex-direction: column; position: relative;
  }
  .v3-prod:hover {
    border-color: var(--sg-red); transform: translateY(-3px);
    box-shadow: 0 12px 28px rgba(0,0,0,.1);
  }
  /* SELECIONADO — bem visível: borda verde, fundo levemente verde, glow sutil */
  .v3-prod.in-cart {
    border-color: #10b981; border-width: 2px;
    background: #f0fdf4;
    box-shadow: 0 0 0 3px rgba(16,185,129,.15), 0 8px 24px rgba(16,185,129,.18);
  }
  .v3-prod.in-cart:hover {
    box-shadow: 0 0 0 3px rgba(16,185,129,.25), 0 12px 32px rgba(16,185,129,.25);
  }
  .v3-prod.in-cart .nm { color: #065f46; }

  /* ─── Destaque FIXO — Combo do Jogo 100 salgados (R$59,90) ──────────────
     Era animação piscante (sgPiscaDestaque), DESLIGADA 2026-07-02: o loop
     infinito de box-shadow+scale forçava repaint contínuo e derrubava o FPS
     do scroll no mobile. Destaque agora é estático (borda + glow fixos).
     Alvo pelo data-nome (único com "100 salgados"). Não destaca quando já
     está no carrinho (aí o estado verde de "selecionado" assume). */
  .v3-prod[data-nome*="100 salgados"]:not(.in-cart) {
    border-width: 2px;
    border-color: var(--sg-red, #C41A1A);
    box-shadow: 0 0 0 3px rgba(247,195,74,.45), 0 6px 18px rgba(196,26,26,.18);
    z-index: 3;
  }

  /* Estampa "✓ N" no canto superior direito */
  .v3-prod .qty-stamp {
    display: none;
    position: absolute; top: 10px; right: 10px;
    background: #10b981; color: #fff;
    min-width: 38px; height: 38px; padding: 0 12px;
    border-radius: 19px;
    font-weight: 900; font-size: 1.05rem;
    align-items: center; justify-content: center; gap: 4px;
    box-shadow: 0 6px 14px rgba(16,185,129,.45);
    z-index: 5; pointer-events: none;
    animation: v3PopIn .3s cubic-bezier(.2,1.5,.4,1);
    border: 2px solid #fff;
  }
  .v3-prod .qty-stamp i { font-size: 1rem; }
  .v3-prod.in-cart .qty-stamp { display: inline-flex; }
  .v3-prod.in-cart .b-pop { display: none; } /* esconde "+ vendido" pra não conflitar com o stamp */
  @keyframes v3PopIn {
    0%   { transform: scale(0); opacity: 0; }
    70%  { transform: scale(1.2); opacity: 1; }
    100% { transform: scale(1); }
  }
  /* Animação suave ao mudar quantidade (estampa pulsa) */
  .v3-prod .qty-stamp.bump { animation: v3Bump .35s ease; }
  @keyframes v3Bump {
    0%   { transform: scale(1); }
    50%  { transform: scale(1.25); background: #059669; }
    100% { transform: scale(1); }
  }
  .v3-prod .img {
    aspect-ratio: 1/1; background: #f5f3f0;
    display: flex; align-items: center; justify-content: center;
    overflow: hidden; position: relative;
  }
  .v3-prod .img picture, .v3-prod .img img { width: 100%; height: 100%; }
  .v3-prod .img img { object-fit: cover; transition: transform .25s; }
  .v3-prod:hover .img img { transform: scale(1.05); }
  .v3-prod .img .no-img { color: #ddd; font-size: 2.2rem; }
  .v3-prod .body {
    padding: 12px 14px 14px; flex: 1;
    display: flex; flex-direction: column; gap: 6px;
  }
  /* Link discreto da tabela nutricional no card */
  .v3-prod .nut-link {
    display: inline-block;
    font-size: .68rem; color: #9ca3af;
    text-decoration: none; margin: 1px 0 2px;
  }
  .v3-prod .nut-link:hover { color: var(--sg-red, #C41A1A); text-decoration: underline; }
  .v3-prod .nm {
    font-weight: 800; font-size: .98rem; color: var(--sg-dark);
    line-height: 1.3; min-height: 2.6em;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  }
  .v3-prod .pr {
    font-size: 1.1rem; font-weight: 900; color: #1f2937;
    margin-top: auto; padding-top: 8px;
    display: flex; align-items: baseline; gap: 6px;
  }
  .v3-prod .pr.has-promo { color: var(--sg-red); }
  .v3-prod .pr .old { font-size: .8rem; color: #aaa; text-decoration: line-through; font-weight: 600; }
  .v3-prod .pr .unit { font-size: .68rem; font-weight: 600; color: #6b7280; padding-left: 4px; }

  /* Banner "Estamos fechados" — só aparece fora do horário de funcionamento */
  .v3-fechado-banner {
    display: flex; align-items: center; gap: 12px;
    background: linear-gradient(135deg, #1e293b 0%, #334155 100%);
    color: #fff; padding: 12px 16px; border-radius: 12px;
    margin: 10px 16px 0; box-shadow: 0 4px 14px rgba(0,0,0,.18);
  }
  .v3-fechado-banner .fb-ico {
    font-size: 1.6rem; color: #fbbf24;
    flex-shrink: 0;
  }
  .v3-fechado-banner .fb-txt { flex: 1; line-height: 1.3; }
  .v3-fechado-banner .fb-txt b {
    display: block; font-size: 1rem; font-weight: 800; color: #fff;
    margin-bottom: 2px;
  }
  .v3-fechado-banner .fb-txt span {
    font-size: .82rem; color: #cbd5e1; display: block;
  }
  /* Status (linha) "Aceitamos pedidos agendados!" — VERMELHO/LARANJA piscando */
  .v3-status-agendar {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 14px; border-radius: 18px;
    background: linear-gradient(135deg, #dc2626 0%, #ea580c 100%);
    color: #fff; font-weight: 800; font-size: .88rem;
    box-shadow: 0 3px 10px rgba(220,38,38,.4);
    /* animation v3StatusPulse DESLIGADA 2026-07-02 — pulse infinito = repaint contínuo no mobile */
  }
  .v3-status-agendar i { font-size: 1rem; color: #fde047; }
  @keyframes v3StatusPulse {
    0%, 100% { box-shadow: 0 3px 10px rgba(220,38,38,.4); transform: scale(1); }
    50%      { box-shadow: 0 5px 18px rgba(220,38,38,.65); transform: scale(1.025); }
  }
  @media (max-width: 480px) {
    .v3-status-agendar { font-size: .8rem; padding: 5px 11px; gap: 4px; }
    .v3-status-agendar i { font-size: .9rem; }
  }

  /* "Fechado · Abre amanhã às X" no banner — AMARELO piscando */
  .v3-fechado-banner .fb-fechado {
    display: inline-flex !important; align-items: center; gap: 5px;
    margin-top: 4px; padding: 4px 10px;
    background: linear-gradient(135deg, #f59e0b 0%, #fbbf24 100%);
    color: #78350f !important;
    border-radius: 12px; font-weight: 800; font-size: .82rem !important;
    box-shadow: 0 2px 8px rgba(245,158,11,.4);
    /* animation fbFechadoPulse DESLIGADA 2026-07-02 — pulse infinito = repaint contínuo no mobile */
  }
  .v3-fechado-banner .fb-fechado i { font-size: 1rem; color: #78350f; }
  .v3-fechado-banner .fb-fechado .sep { opacity: .5; margin: 0 2px; }
  .v3-fechado-banner .fb-fechado .abre {
    background: rgba(120,53,15,.15); padding: 1px 7px; border-radius: 10px;
    font-weight: 900;
  }
  @keyframes fbFechadoPulse {
    0%, 100% { transform: scale(1); box-shadow: 0 2px 8px rgba(245,158,11,.4); }
    50%      { transform: scale(1.04); box-shadow: 0 4px 14px rgba(245,158,11,.65); }
  }
  @media (max-width: 480px) {
    .v3-fechado-banner { margin: 8px 10px 0; padding: 10px 12px; gap: 10px; }
    .v3-fechado-banner .fb-ico { font-size: 1.4rem; }
    .v3-fechado-banner .fb-txt b { font-size: .92rem; }
    .v3-fechado-banner .fb-txt span { font-size: .76rem; }
  }

  /* Pílula +/- (substitui visual quando produto está no carrinho) */
  .v3-prod .qty-pill {
    display: none;
    background: linear-gradient(180deg, var(--sg-red) 0%, #6b1414 100%);
    color: #fff;
    align-items: center; justify-content: space-between;
    padding: 8px 10px;
  }
  .v3-prod.in-cart .qty-pill { display: flex; }
  .v3-prod .qty-pill button {
    width: 36px; height: 36px; border: none; border-radius: 10px;
    background: rgba(255,255,255,.22); color: #fff;
    font-size: 1.3rem; font-weight: 800; cursor: pointer;
    transition: all .12s;
    display: flex; align-items: center; justify-content: center;
  }
  .v3-prod .qty-pill button:hover { background: rgba(255,255,255,.4); transform: scale(1.06); }
  .v3-prod .qty-pill button:active { transform: scale(.94); }
  .v3-prod .qty-pill .val { font-weight: 900; font-size: 1.1rem; color: #fff; }

  /* Badges */
  .v3-prod .b-disc { position: absolute; top: 6px; left: 6px; background: #ef4444; color: #fff; padding: 2px 7px; border-radius: 14px; font-size: .65rem; font-weight: 800; }
  .v3-prod .b-pop  { position: absolute; top: 6px; right: 6px; background: var(--sg-gold); color: #fff; padding: 2px 7px; border-radius: 14px; font-size: .62rem; font-weight: 800; display: flex; gap: 3px; align-items: center; }
  .v3-prod .b-new  { position: absolute; bottom: 6px; left: 6px; background: #10b981; color: #fff; padding: 2px 7px; border-radius: 14px; font-size: .62rem; font-weight: 800; }
  .v3-prod .b-trd  { position: absolute; bottom: 6px; right: 6px; background: rgba(0,0,0,.7); color: #fff; padding: 2px 7px; border-radius: 14px; font-size: .62rem; font-weight: 800; backdrop-filter: blur(4px); }
  /* Timer regressivo "Termina em" pra promoção temporizada */
  .v3-prod .b-timer {
    position: absolute; bottom: 6px; left: 6px;
    background: #fef3c7; color: #92400e;
    border: 1px solid #fde68a;
    padding: 2px 7px; border-radius: 12px;
    font-size: .62rem; font-weight: 800; letter-spacing: .2px;
    display: flex; align-items: center; gap: 3px;
    z-index: 4;
  }
  .v3-prod .b-timer i { font-size: .72rem; }
  .v3-prod .b-timer.urgente {
    background: #fee2e2; color: #991b1b; border-color: #fca5a5;
    box-shadow: 0 2px 6px rgba(220,38,38,.18);
  }

  /* Bombando — pico de demanda hoje (>=10 pediram) */
  .v3-prod .b-bomba {
    position: absolute; top: 8px; right: 8px;
    background: linear-gradient(90deg, #dc2626 0%, #f97316 100%);
    color: #fff; padding: 3px 9px; border-radius: 14px;
    font-size: .62rem; font-weight: 900; letter-spacing: .3px;
    box-shadow: 0 4px 10px rgba(220,38,38,.32);
    display: flex; align-items: center; gap: 3px;
    z-index: 4;
  }
  .v3-prod.in-cart .b-bomba { display: none; }
  .v3-prod .b-combo { position: absolute; bottom: 38px; right: 6px; background: var(--sg-dark); color: var(--sg-gold); padding: 2px 7px; border-radius: 14px; font-size: .6rem; font-weight: 800; letter-spacing: .3px; }

  /* ── Engenharia de cardápio (Stars / Plowhorses / Puzzles / Dogs) ── */
  /* Badges Estrela/Chef ficam no body (não na imagem) — não conflita com estampa "✓ N" */
  .v3-prod .eng-tag {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 3px 9px; border-radius: 12px;
    font-size: .65rem; font-weight: 900; letter-spacing: .3px;
    align-self: flex-start; margin-bottom: 4px;
  }
  .v3-prod .eng-tag i { font-size: .8rem; }
  .v3-prod[data-engclass="star"] {
    border-color: var(--sg-gold);
    box-shadow: 0 6px 20px rgba(200,134,10,.18);
  }
  .v3-prod[data-engclass="star"]:hover { box-shadow: 0 10px 28px rgba(200,134,10,.32); }
  .v3-prod .eng-tag.star {
    background: linear-gradient(90deg, var(--sg-gold) 0%, #f0a830 100%);
    color: #fff; box-shadow: 0 2px 6px rgba(200,134,10,.4);
  }
  .v3-prod[data-engclass="puzzle"] {
    border-color: #c084fc;
  }
  .v3-prod .eng-tag.chef {
    background: linear-gradient(90deg, #a855f7 0%, #c084fc 100%);
    color: #fff; box-shadow: 0 2px 6px rgba(168,85,247,.35);
  }
  /* Badge "Combo/Kit" pro tipo de produto especial */
  .v3-prod .eng-tag.combo-tag {
    background: linear-gradient(90deg, #1f2937 0%, #374151 100%);
    color: var(--sg-gold);
    box-shadow: 0 2px 6px rgba(0,0,0,.2);
  }
  /* Subtítulo do produto (descricao_curta) */
  .v3-prod .sub {
    font-size: .76rem; color: #888; line-height: 1.3; font-weight: 500;
    display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden;
  }
  /* Dogs (abacaxis) — escondidos no listing principal, mas se aparecerem (filtro de categoria) ficam visualmente neutros */
  .v3-prod[data-engclass="dog"] { opacity: .92; }

  /* (CSS da .v3-bar legada, .v3-pickbar, .v3-go-bottom e .v3-soon removidos
     2026-06-09 — HTML correspondente não existe mais) */
  /* Padding-bottom no body pra não esconder conteúdo atrás da barra/nav.
     Valores dinâmicos: 80px sem CTA (só nav inferior), 150px com CTA flutuante.
     A classe `has-cta-finalizar` é setada pelo JS quando CTA aparece. */
  body { padding-bottom: 80px; }
  body.has-cta-finalizar { padding-bottom: 150px; }
  @media (min-width: 768px) { body { padding-bottom: 24px; } body.has-cta-finalizar { padding-bottom: 100px; } }
  /* Esconde WhatsApp flutuante e mobile-nav pra não bater com a barra */
  .sg-wa-float, .mobile-nav { display: none !important; }

  /* Loader / empty / error */
  .v3-empty {
    text-align: center; padding: 40px 20px; color: #888;
    background: #fff; border-radius: 12px; border: 1px solid #ece8e3;
  }
  .v3-empty i { font-size: 2.5rem; color: #ddd; display: block; margin-bottom: 8px; }

  /* Empty state da busca — mais útil: botão limpar + sugestões clicáveis */
  .v3-empty-search { padding: 28px 16px 22px; }
  .v3-empty-search p { margin: 4px 0 14px; font-weight: 600; color: #4b5563; }
  .v3-empty-actions { margin: 0 0 14px; }
  .v3-empty-actions .btn-sg-ghost {
    background: #fff; border: 1.5px solid var(--sg-red, #C41A1A);
    color: var(--sg-red, #C41A1A); font-weight: 700;
    padding: 8px 16px; border-radius: 22px; font-size: .86rem;
    cursor: pointer; display: inline-flex; align-items: center; gap: 6px;
    transition: all .15s;
  }
  .v3-empty-actions .btn-sg-ghost:hover {
    background: var(--sg-red, #C41A1A); color: #fff;
  }
  .v3-empty-sugest {
    display: flex; flex-wrap: wrap; justify-content: center; gap: 6px;
    margin-top: 4px;
  }
  .v3-empty-sugest .sg-lbl {
    align-self: center; font-size: .78rem; color: #6b7280; margin-right: 4px;
  }
  .v3-empty-sugest button {
    background: #fff; border: 1px solid #ddd6c8; color: #6b4f1c;
    font-weight: 700; font-size: .78rem;
    padding: 6px 12px; border-radius: 14px;
    cursor: pointer; transition: all .15s;
  }
  .v3-empty-sugest button:hover {
    background: var(--sg-gold, #f7c34a); border-color: var(--sg-gold, #f7c34a);
    color: #1a1a1a;
  }

  /* Subtítulo dos blocos do Step 2 */
  .v3-h3 {
    font-size: 1rem; font-weight: 800; color: var(--sg-dark);
    margin: 0 0 10px; display: flex; align-items: center; gap: 6px;
  }
  .v3-h3 i { color: var(--sg-red); font-size: 1.1rem; }

  /* Blocos brancos do Step 2 (separação visual entre Entrega/Dados/Pagamento) */
  .v3-block {
    background: #fff; border: 1px solid #ece8e3; border-radius: 14px;
    padding: 16px 16px;
    margin-bottom: 14px;
    box-shadow: 0 2px 8px rgba(0,0,0,.04);
  }
  .v3-block h2 {
    font-size: 1.05rem; font-weight: 800; color: var(--sg-dark);
    margin: 0 0 12px; display: flex; align-items: center; gap: 8px;
  }
  .v3-block h2 i { color: var(--sg-red); font-size: 1.2rem; }
  .v3-block .form-control {
    border: 1.5px solid #e5e7eb; border-radius: 9px;
    padding: 11px 12px; font-size: 16px; /* 16px trava o zoom automático do iOS ao focar input */
    transition: border-color .12s, box-shadow .12s;
  }
  .v3-block .form-control:focus {
    border-color: var(--sg-red);
    box-shadow: 0 0 0 3px rgba(139,26,26,.08);
    outline: none;
  }

  /* Cards de modo de entrega */
  .v3-modes {
    display: flex; gap: 10px; margin-bottom: 18px; flex-wrap: wrap;
  }
  .v3-mode {
    flex: 1; min-width: 140px;
    background: #fff; border: 2px solid #e5e7eb; border-radius: 12px;
    padding: 16px 12px; text-align: center; cursor: pointer; transition: all .15s;
  }
  .v3-mode:hover { border-color: var(--sg-red); }
  .v3-mode.selected { border-color: var(--sg-red); background: #fef2f2; }
  .v3-mode i { font-size: 1.6rem; color: var(--sg-gold); display: block; margin-bottom: 4px; }
  .v3-mode.selected i { color: var(--sg-red); }
  .v3-mode .ttl { font-weight: 800; font-size: .92rem; color: var(--sg-dark); }
  .v3-mode .sub { font-size: .75rem; color: #888; margin-top: 2px; }

  /* ─── Bloco Identifique-se (Step 2) — visual limpo estilo Anota AI ──── */
  .v3-id-block { padding: 22px 20px 18px; }
  .v3-id-block h2 {
    color: var(--sg-red, #C41A1A);
    margin-bottom: 6px;
  }
  .v3-id-sub {
    font-size: .85rem; color: #6b7280;
    margin: 0 0 16px; line-height: 1.4;
  }
  .v3-id-grid {
    display: flex; flex-direction: column; gap: 14px;
  }
  .v3-id-field label {
    display: flex; align-items: center; gap: 6px;
    font-size: .85rem; font-weight: 700; color: #1a1a1a;
    margin-bottom: 6px;
  }
  .v3-id-field label i { color: var(--sg-red, #C41A1A); }
  .v3-id-input {
    width: 100%;
    padding: 13px 14px;
    font-size: 1rem; font-weight: 600;
    border: 2px solid #e5e7eb; border-radius: 10px;
    transition: border-color .15s, box-shadow .15s;
  }
  .v3-id-input:focus {
    border-color: var(--sg-red, #C41A1A); outline: none;
    box-shadow: 0 0 0 3px rgba(196,26,26,.12);
  }
  .v3-id-hint {
    display: block; margin-top: 4px;
    font-size: .75rem; color: #6b7280;
  }
  .v3-id-hint.success { color: #10b981; font-weight: 600; }

  /* Resumo compacto (header do Step 2) */
  .v3-resumo-compacto {
    padding: 10px 14px;
    margin-bottom: 14px;
    background: #fffaf2;
    border: 1px solid #f1ead8;
  }
  .v3-resumo-compacto .rh { font-size: .88rem; }

  /* Mini-card de identificação no Step 3 — "Pedido será entregue a: Nome / Tel · Trocar" */
  .v3-id-mini {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    background: #fff; border: 1px solid #e5e7eb; border-radius: 10px;
    padding: 12px 14px; margin-bottom: 12px;
  }
  .v3-id-mini-info { min-width: 0; flex: 1; }
  .v3-id-mini-info .lbl { font-size: .75rem; color: #6b7280; }
  .v3-id-mini-info .nm  { font-size: 1rem; font-weight: 800; color: #1a1a1a; line-height: 1.2; }
  .v3-id-mini-info .tl  { font-size: .85rem; color: #4b5563; }
  .v3-id-mini .btn-trocar {
    background: #fff; border: 1.5px solid var(--sg-red, #C41A1A);
    color: var(--sg-red, #C41A1A); font-weight: 700;
    padding: 8px 18px; border-radius: 8px; cursor: pointer;
    font-size: .85rem; transition: all .15s;
    flex-shrink: 0;
  }
  .v3-id-mini .btn-trocar:hover {
    background: var(--sg-red, #C41A1A); color: #fff;
  }

  /* Cupom colapsado — botão de expansão */
  .v3-cupom-toggle {
    width: 100%; display: flex; justify-content: space-between; align-items: center;
    background: transparent; border: 0; padding: 0; cursor: pointer;
    font-family: inherit; color: #1a1a1a; font-size: 1.05rem; font-weight: 800;
  }
  .v3-cupom-toggle .left { display: flex; align-items: center; gap: 10px; }
  .v3-cupom-toggle .v3-cupom-chev {
    color: #9ca3af; font-size: 1.2rem; transition: transform .25s;
  }
  .v3-cupom-toggle.open .v3-cupom-chev { transform: rotate(180deg); }
  .v3-cupom-collapse h2 { display: none; } /* esconde h2 antigo se ainda houver */

  /* Toggle Observação (collapse igual ao do cupom) */
  .v3-obs-toggle {
    width: 100%; display: flex; justify-content: space-between; align-items: center;
    background: transparent; border: 0; padding: 8px 0; cursor: pointer;
    font-family: inherit; color: #4b5563; font-size: .92rem; font-weight: 700;
    border-top: 1px solid #ece8e3;
  }
  .v3-obs-toggle .left { display: flex; align-items: center; gap: 8px; }
  .v3-obs-toggle .v3-obs-chev { color: #9ca3af; transition: transform .25s; }
  .v3-obs-toggle.open .v3-obs-chev { transform: rotate(180deg); }

  /* Grid de agendamento — Dia e Horário lado a lado */
  .v3-agendar-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 10px;
    margin-bottom: 8px;
  }
  .v3-agendar-field label {
    font-size: .8rem; font-weight: 800; color: #1a1a1a;
    margin-bottom: 6px; display: flex; align-items: center; gap: 6px;
  }
  .v3-agendar-field label i { color: var(--sg-red); font-size: 1rem; }
  .v3-agendar-field .form-control {
    font-size: 1.05rem; font-weight: 700;
    padding: 12px 12px;
    border: 2px solid #e5e7eb; border-radius: 10px;
    width: 100%;
    background: #fff;
    transition: border-color .15s, box-shadow .15s;
  }
  .v3-agendar-field .form-control:focus {
    border-color: var(--sg-red); outline: none;
    box-shadow: 0 0 0 3px rgba(196,26,26,.12);
  }
  .v3-agendar-hint {
    display: block; margin-top: 4px;
    font-size: .7rem; color: #6b7280; font-weight: 500;
  }
  @media (max-width: 480px) {
    .v3-agendar-grid { grid-template-columns: 1fr 1fr; gap: 8px; }
    .v3-agendar-field .form-control { font-size: 1rem; padding: 11px 10px; }
    .v3-agendar-hint { font-size: .66rem; }
  }

  /* Cards de pagamento */
  .v3-pays {
    display: flex; gap: 10px; margin-top: 14px; flex-wrap: wrap;
  }
  .v3-pay {
    flex: 1; min-width: 110px;
    background: #fff; border: 2px solid #e5e7eb; border-radius: 12px;
    padding: 14px 10px; text-align: center; cursor: pointer; transition: all .15s;
  }
  .v3-pay:hover { border-color: var(--sg-red); }
  .v3-pay.selected { border-color: var(--sg-red); background: #fef2f2; }
  .v3-pay i { font-size: 1.5rem; color: var(--sg-gold); display: block; margin-bottom: 4px; }
  .v3-pay.selected i { color: var(--sg-red); }
  .v3-pay .ttl { font-weight: 800; font-size: .9rem; color: var(--sg-dark); }
  .v3-pay .sub { font-size: .72rem; color: #888; margin-top: 2px; }

  /* Resumo do pedido (Step 3) */
  .v3-resumo {
    background: #fff; border: 1px solid #ece8e3; border-radius: 12px;
    padding: 14px 16px; margin-bottom: 16px;
  }
  .v3-resumo .rh { font-weight: 800; font-size: .9rem; color: var(--sg-dark); margin-bottom: 8px; padding-bottom: 8px; border-bottom: 1px solid #f0ede8; }
  .v3-resumo .item { display: flex; justify-content: space-between; padding: 6px 0; font-size: .88rem; }
  .v3-resumo .item .qq { font-weight: 700; color: var(--sg-red); margin-right: 4px; }
  .v3-resumo .rt { padding-top: 10px; margin-top: 6px; border-top: 1px dashed #ddd; }
  .v3-resumo .rt .line { display: flex; justify-content: space-between; font-size: .88rem; padding: 3px 0; color: #555; }
  .v3-resumo .rt .line.desconto { color: #15803d; }
  .v3-resumo .rt .line.tot { font-size: 1.15rem; font-weight: 900; color: var(--sg-red); padding-top: 6px; margin-top: 4px; border-top: 1px solid #ddd; }

  /* Footer dos steps (botões Voltar / Continuar) */
  .v3-step-footer {
    display: flex; gap: 10px; margin-top: 20px;
  }
  .v3-step-footer .btn-outline-sg {
    background: transparent; color: var(--sg-red);
    border: 2px solid var(--sg-red); font-weight: 700;
    padding: 12px 20px; border-radius: 10px; cursor: pointer;
    display: flex; align-items: center; gap: 6px;
  }
  .v3-step-footer .btn-outline-sg:hover { background: var(--sg-red); color: #fff; }
  .v3-step-footer .btn-sg {
    flex: 1; background: var(--sg-red); color: #fff; border: none;
    padding: 14px 20px; border-radius: 10px; font-weight: 800; font-size: 1rem;
    cursor: pointer;
    display: flex; align-items: center; justify-content: center; gap: 8px;
    box-shadow: 0 4px 14px rgba(139,26,26,.3);
  }
  .v3-step-footer .btn-sg:hover { background: var(--sg-red-light); }
  .v3-step-footer .btn-sg:disabled { background: #ccc; box-shadow: none; cursor: not-allowed; }

  /* Resultado de pagamento (PIX QR / Bricks / dinheiro) */
  .v3-pix {
    background: #f0fdf4; border: 2px solid #86efac; border-radius: 14px;
    padding: 22px 20px; text-align: center;
  }
  .v3-pix h3 { color: #16a34a; font-weight: 800; font-size: 1.1rem; margin: 0 0 8px; }
  .v3-pix p  { color: #555; font-size: .88rem; }
  .v3-pix img { max-width: 240px; margin: 12px auto; border-radius: 10px; }
  .v3-pix .copia { margin: 12px 0; }
  .v3-pix .copia input { width: 100%; padding: 10px; border-radius: 8px; border: 1px solid #c4ebc4; font-size: .72rem; text-align: center; background: #fff; }
  .v3-pix .copia button { margin-top: 6px; padding: 8px 18px; border-radius: 8px; border: 1.5px solid #16a34a; background: #fff; color: #16a34a; font-weight: 700; cursor: pointer; }
  .v3-pix .total { font-size: 1.4rem; font-weight: 900; color: var(--sg-red); margin: 12px 0; }
  .v3-pix .status { font-size: .9rem; color: #888; margin-top: 8px; }
  .v3-pix.aprovado { background: #ecfdf5; }
  .v3-pix.aprovado .status { color: #16a34a; font-weight: 700; }
  /* PIX convertido pra "pague na loja" — ÂMBAR próprio (2026-07-02): antes usava
     o verde de aprovado e parecia pagamento confirmado; não foi pago ainda. */
  .v3-pix.convertido-loja { background: #fffbeb; border-color: #fcd34d; }
  .v3-pix.convertido-loja .status { color: #92400e; font-weight: 700; }

  .v3-cash {
    background: #fefce8; border: 2px solid #fde047; border-radius: 14px;
    padding: 22px 20px; text-align: center;
  }
  .v3-cash h3 { color: #a16207; font-weight: 800; font-size: 1.1rem; margin: 0 0 8px; }
  .v3-cash p { color: #555; font-size: .88rem; }
  .v3-cash .total { font-size: 1.4rem; font-weight: 900; color: var(--sg-red); margin: 12px 0; }

  /* (CSS do modo Pacote — toggle, qtd-cards, counter-bar, sabores — e do banner
     Natal removidos 2026-06-09; HTML correspondente deletado) */

  /* Address autocomplete results (Step 2) */
  #v3AddrResults .item {
    padding: 10px 14px; cursor: pointer; border-bottom: 1px solid #f0ede8;
    font-size: .88rem;
  }
  #v3AddrResults .item:hover { background: #fef2f2; }
  #v3AddrResults .item:last-child { border-bottom: none; }
  #v3AddrResults .item .lbl { font-weight: 700; color: var(--sg-dark); }
  #v3AddrResults .item .det { font-size: .76rem; color: #888; }

  /* ═══════════════════════════════════════════════════════════════
     MOBILE: ajustes finos pra tela pequena (≤480px)
     ═══════════════════════════════════════════════════════════════ */
  @media (max-width: 480px) {
    /* Mobile: padding lateral 22px + safe-area (iPhone X+ notch) */
    .v3-step {
      padding-top: 12px;
      padding-bottom: 130px;
      padding-left: max(22px, env(safe-area-inset-left));
      padding-right: max(22px, env(safe-area-inset-right));
    }
    .v3-cats { gap: 6px; padding-left: 22px; padding-right: 22px; margin: 0 -22px 14px; }
    .v3-cats .pill { padding: 8px 14px; font-size: .82rem; }
    .v3-search { padding: 4px 4px 4px 14px; }
    .v3-search input { font-size: 16px; padding: 11px 0; } /* 16px = sem zoom iOS */

    .v3-grid { gap: 10px; }
    .v3-prod { border-radius: 14px; }
    .v3-prod .body { padding: 10px 11px 11px; gap: 4px; }
    .v3-prod .nm { font-size: .9rem; min-height: 2.4em; }
    .v3-prod .pr { font-size: 1.02rem; padding-top: 6px; }
    .v3-prod .pr .old { font-size: .72rem; }
    .v3-prod .qty-stamp {
      top: 6px; right: 6px; min-width: 32px; height: 32px;
      padding: 0 8px; font-size: .92rem;
    }
    .v3-prod .qty-stamp i { font-size: .9rem; }
    .v3-prod .qty-pill { padding: 6px 8px; }
    .v3-prod .qty-pill button { width: 36px; height: 36px; font-size: 1.2rem; }
    .v3-prod .qty-pill .val { font-size: 1rem; }
    .v3-prod .eng-tag { padding: 2px 7px; font-size: .6rem; }

    /* Step 2 unificado */
    .v3-block { padding: 14px 13px; margin-bottom: 12px; }
    .v3-block h2 { font-size: 1rem; margin-bottom: 10px; }
    .v3-block h2 i { font-size: 1.1rem; }
    .v3-modes { gap: 8px; }
    .v3-mode { min-width: 0; padding: 12px 8px; }
    .v3-mode i { font-size: 1.4rem; }
    .v3-mode .ttl { font-size: .85rem; }
    .v3-mode .sub { font-size: .68rem; }
    .v3-pays { gap: 8px; }
    .v3-pay { min-width: 0; padding: 12px 6px; }
    .v3-pay i { font-size: 1.3rem; }
    .v3-pay .ttl { font-size: .82rem; }
    .v3-pay .sub { font-size: .66rem; }

    .v3-resumo { padding: 12px 14px; }
    .v3-resumo .rh { font-size: .88rem; }
    .v3-resumo .item { font-size: .85rem; padding: 5px 0; }
    .v3-resumo .rt .line { font-size: .85rem; }
    .v3-resumo .rt .line.tot { font-size: 1.1rem; }

    /* Step footer mobile: botões LADO A LADO compactos (não mais empilhados) */
    /* padding lateral 4px + width controlado pra NÃO estourar borda */
    .v3-step-footer {
      gap: 8px; flex-direction: row;
      padding: 10px 4px;
      width: 100%; box-sizing: border-box;
    }
    .v3-step-footer .btn-outline-sg {
      flex: 0 1 110px; min-width: 0;          /* shrink permitido */
      justify-content: center; padding: 12px 8px;
      font-size: .9rem;
    }
    .v3-step-footer .btn-sg {
      flex: 1 1 auto; min-width: 0;
      padding: 13px 10px; font-size: 1rem;
    }

    /* ── Bloco Identifique-se MAIS compacto no mobile ── */
    .v3-id-block { padding: 12px 12px 10px; }
    .v3-id-block h2 { font-size: 1rem; margin-bottom: 2px; }
    .v3-id-sub { font-size: .74rem; margin-bottom: 8px; line-height: 1.3; }
    .v3-id-grid { gap: 8px; }
    .v3-id-field label { font-size: .78rem; margin-bottom: 3px; }
    .v3-id-input { padding: 10px 11px; font-size: 16px; } /* 16px = sem zoom iOS */
    /* Greeting cliente reconhecido — mais compacto */
    #v3ClienteEncontrado { padding: 7px 10px !important; margin-top: 8px !important; font-size: .82rem; }

    /* Jornada compacta no mobile — não rouba tanto espaço vertical
       Padding lateral controlado em @media (max-width: 480px) acima — não duplicar aqui. */
    .v3-jornada .jr-track { top: 26px; }
    .v3-jornada .jr-step .jr-circle { border-width: 1.5px; }

    /* Resumo compacto Step 2 — menor */
    .v3-resumo-compacto { padding: 8px 12px; margin-bottom: 10px; }

    /* Mini-card identificação (Step 3) — compacto */
    .v3-id-mini { padding: 10px 12px; margin-bottom: 10px; }
    .v3-id-mini-info .nm { font-size: .92rem; }
    .v3-id-mini-info .tl { font-size: .78rem; }
    .v3-id-mini .btn-trocar { padding: 6px 12px; font-size: .78rem; }

    /* Cards "Quando pagar" — compactos no mobile */
    .v3-pay-quando-card { padding: 12px 12px; gap: 10px; }
    .v3-pay-quando-card .ico { width: 40px; height: 40px; }
    .v3-pay-quando-card .ico i { font-size: 1.3rem; }
    .v3-pay-quando-card .info b { font-size: .95rem; }
    .v3-pay-quando-card .info span { font-size: .72rem; }

    /* Step padding mobile — safe-area pra iPhone X+ */
    .v3-step {
      padding-top: 12px;
      padding-bottom: 100px;
      padding-left: max(22px, env(safe-area-inset-left));
      padding-right: max(22px, env(safe-area-inset-right));
    }
    /* Título de seção menor no mobile pra "MAIS PEDIDOS HOJE — COMBOS COM DESCONTO" caber sem cortar */
    .v3-section-title { font-size: .95rem !important; letter-spacing: 0 !important; line-height: 1.3; }
    .v3-section { margin: 18px 0 6px 0; }
  }

  /* ─── CTA "Finalizar pedido" — agora SUBSTITUI o bottom nav quando há itens ─── */
  /* Some o nav-bottom (Início/Pedidos/Cardápio/Carrinho) e mostra CTA grande no lugar */
  body.has-cta-finalizar .v3-nav-bottom { display: none !important; }
  /* Reposiciona CTA pra ocupar exatamente o lugar do nav-bottom (bottom 0, full width) */
  .v3-cta-finalizar {
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    border-radius: 0 !important;
    padding: 14px 18px !important;
    box-shadow: 0 -4px 18px rgba(22,163,74,.35) !important;
    /* mantém safe-area iOS pra não cair atrás do home indicator */
    padding-bottom: calc(14px + env(safe-area-inset-bottom, 0px)) !important;
  }
  /* Como agora o CTA está no fundo, WA FAB e back-top sobem só o suficiente */
  body.has-cta-finalizar .v3-wa-fab,
  body.has-cta-finalizar .v3-back-top { bottom: 84px !important; }
  @media (max-width: 480px) {
    body.has-cta-finalizar .v3-wa-fab,
    body.has-cta-finalizar .v3-back-top { bottom: 78px !important; }
  }

  /* ─── Pulse no botão do carrinho quando produto é adicionado ─── */
  @keyframes cartPulse {
    0%, 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(199,32,32,.6); }
    25%      { transform: scale(1.18); box-shadow: 0 0 0 8px rgba(199,32,32,0); }
    50%      { transform: scale(1); box-shadow: 0 0 0 0 rgba(199,32,32,0); }
    75%      { transform: scale(1.1);  box-shadow: 0 0 0 6px rgba(199,32,32,0); }
  }
  .cart-btn.cart-pulsing {
    animation: cartPulse 1.2s ease-out;
  }
  /* Badge maior + amarelo brilhante durante o pulse */
  @keyframes cartBadgePop {
    0%   { transform: scale(1); }
    30%  { transform: scale(1.4); background: #fbbf24 !important; }
    60%  { transform: scale(1.2); }
    100% { transform: scale(1); }
  }
  .cart-btn.cart-pulsing .cart-badge {
    animation: cartBadgePop 1.2s ease-out;
  }

  /* Toast "✓ Adicionado!" que aparece no topo perto do carrinho */
  .v3-cart-toast {
    position: fixed; top: 64px; right: 12px; z-index: 9999;
    background: #16a34a; color: #fff;
    padding: 10px 16px 10px 12px;
    border-radius: 999px;
    box-shadow: 0 6px 20px rgba(22,163,74,.4);
    display: flex; align-items: center; gap: 8px;
    font-weight: 700; font-size: .88rem;
    opacity: 0; transform: translateY(-10px) scale(.9);
    transition: all .25s cubic-bezier(.34,1.56,.64,1);
    pointer-events: none;
  }
  .v3-cart-toast.show {
    opacity: 1; transform: translateY(0) scale(1);
  }
  .v3-cart-toast i { font-size: 1.1rem; }
  /* Variante VERMELHA — toast de erro de validação (substitui alert(), 2026-07-02) */
  .v3-cart-toast.v3-toast-erro {
    background: #dc2626;
    box-shadow: 0 6px 20px rgba(220,38,38,.4);
  }
  @media (max-width: 480px) {
    .v3-cart-toast { top: 58px; right: 8px; padding: 8px 14px 8px 10px; font-size: .82rem; }
  }

  /* ─── Modo CHECKOUT (steps 2/3) — esconde header/status/chips/bottom nav ─── */
  /* Cliente já decidiu, agora só foco em finalizar. Sobra espaço pros botões caberem. */
  body.v3-checkout-mode .sg-navbar,
  body.v3-checkout-mode .v3-store-header,
  body.v3-checkout-mode .v3-store-info,
  body.v3-checkout-mode .v3-proof,
  body.v3-checkout-mode .v3-fechado-banner,
  body.v3-checkout-mode .v3-nav-bottom,
  body.v3-checkout-mode .v3-go-bottom,
  body.v3-checkout-mode .v3-wa-fab,
  body.v3-checkout-mode .v3-back-top,
  body.v3-checkout-mode .mobile-nav,
  body.v3-checkout-mode .sg-wa-float,
  body.v3-checkout-mode .sg-a11y-toggle,
  body.v3-checkout-mode .v3-cta-finalizar { display: none !important; }
  /* No checkout o body usa cor warm de fundo (sem navbar preta no topo) */
  body.v3-checkout-mode { padding-top: 0 !important; background: var(--sg-warm); }

  /* ── Blocos do Step 3 (Pagamento) compactos no mobile ── */
  @media (max-width: 576px) {
    body.v3-checkout-mode .v3-block { padding: 12px 14px; margin-bottom: 10px; }
    body.v3-checkout-mode .v3-block h2 { font-size: .95rem; margin-bottom: 8px; }
    body.v3-checkout-mode .v3-block h2 i { font-size: 1rem; }
    body.v3-checkout-mode .v3-h3 { font-size: .9rem; margin-bottom: 8px; }
    body.v3-checkout-mode .v3-h3 i { font-size: 1rem; }
    /* Cards Retirada/Delivery + Pra agora/Agendar — menores */
    body.v3-checkout-mode .v3-mode { padding: 10px 6px; min-width: 0; }
    body.v3-checkout-mode .v3-mode i { font-size: 1.3rem; margin-bottom: 2px; }
    body.v3-checkout-mode .v3-mode .ttl { font-size: .85rem; }
    body.v3-checkout-mode .v3-mode .sub { font-size: .68rem; }
    body.v3-checkout-mode .v3-modes { gap: 8px; margin-bottom: 10px; }
    /* Cards "Pagar agora" / "Pagar quando buscar" — menores */
    body.v3-checkout-mode .v3-pay-quando-card { padding: 10px 10px; gap: 9px; }
    body.v3-checkout-mode .v3-pay-quando-card .ico { width: 36px; height: 36px; }
    body.v3-checkout-mode .v3-pay-quando-card .ico i { font-size: 1.18rem; }
    body.v3-checkout-mode .v3-pay-quando-card .info b { font-size: .92rem; }
    body.v3-checkout-mode .v3-pay-quando-card .info span { font-size: .68rem; }
    /* Resumo + mini-card cliente — menos padding */
    body.v3-checkout-mode .v3-resumo { padding: 10px 12px; }
    body.v3-checkout-mode .v3-resumo .rh { font-size: .9rem; padding-bottom: 6px; }
    body.v3-checkout-mode .v3-resumo .item { font-size: .82rem; padding: 4px 0; }
    body.v3-checkout-mode .v3-resumo .rt .line { font-size: .82rem; }
    body.v3-checkout-mode .v3-resumo .rt .line.tot { font-size: 1.05rem; }
    body.v3-checkout-mode .v3-id-mini { padding: 9px 12px; margin-bottom: 8px; }
    /* Cupom toggle bem compacto */
    body.v3-checkout-mode .v3-cupom-toggle { font-size: .92rem; }
    /* Inputs de agendamento menores */
    body.v3-checkout-mode .v3-agendar-field .form-control { padding: 10px 11px; font-size: 16px; } /* 16px = sem zoom iOS */
    body.v3-checkout-mode .v3-agendar-field label { font-size: .76rem; margin-bottom: 4px; }
    body.v3-checkout-mode .v3-agendar-hint { font-size: .66rem; }
  }
  /* Jornada sticky volta pra top:0 (sem header acima) */
  body.v3-checkout-mode .v3-jornada { top: 0 !important; }
  /* Step com menos padding-bottom (não tem mais bottom nav cobrindo) e margem horizontal pra não encostar */
  body.v3-checkout-mode .v3-step {
    padding: 14px 20px 24px !important;
  }
  @media (max-width: 400px) {
    body.v3-checkout-mode .v3-step { padding: 12px 16px 20px !important; }
  }
  /* Blocos brancos com mais respiração nas laterais */
  body.v3-checkout-mode .v3-block,
  body.v3-checkout-mode .v3-resumo,
  body.v3-checkout-mode .v3-resumo-compacto,
  body.v3-checkout-mode .v3-id-mini {
    margin-left: 0; margin-right: 0;
    max-width: 100%; box-sizing: border-box;
  }
  /* Garante que NADA estoure pra direita (overflow horizontal) */
  body.v3-checkout-mode { overflow-x: hidden; }
  body.v3-checkout-mode .v3-step,
  body.v3-checkout-mode .v3-step * { max-width: 100%; box-sizing: border-box; }
  body.v3-checkout-mode .v3-id-input,
  body.v3-checkout-mode .form-control { width: 100%; }

  /* Telas bem pequenas (<400px) — ainda mais compacto */
  @media (max-width: 400px) {
    .v3-id-block { padding: 12px 12px 10px; }
    .v3-id-block h2 { font-size: 1rem; }
    .v3-id-input { padding: 10px 11px; font-size: 16px; } /* 16px = sem zoom iOS */
    .v3-id-grid { gap: 8px; }
    /* padding lateral preservado em 18px do breakpoint principal — sem override */
    .v3-pay-quando-card { padding: 10px 10px; }
    .v3-step-footer .btn-outline-sg { font-size: .82rem; padding: 11px 6px; }
    .v3-step-footer .btn-sg { font-size: .92rem; padding: 12px 8px; }
  }
  /* ═══════════════════════════════════════════════════════════════════════
     ONDA A — Cardápio v4 visual estilo Balcão PDV
     Sobrescreve .v3-grid e .v3-prod com cards imagem-bg + gradient escuro.
     Adiciona carrinho lateral fixo (substitui barra inferior em desktop).
     ═══════════════════════════════════════════════════════════════════════ */

  /* Grid: 4 colunas em desktop, mais compacto */
  .v3-grid {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)) !important;
    gap: 10px !important;
    padding: 0 !important;
    margin: 14px 0 100px 0 !important;
  }
  @media (min-width: 1100px) {
    .v3-grid { grid-template-columns: repeat(4, 1fr) !important; }
  }
  /* (regras body.has-side-cart removidas 2026-06-09 — abriam 340-360px de
     padding em desktop pra um carrinho lateral que estava display:none) */

  /* Card: imagem cobre 100% do card; texto sobreposto com gradient */
  .v3-prod {
    position: relative !important;
    aspect-ratio: 1 / 1.15 !important;
    border-radius: 14px !important;
    overflow: hidden !important;
    cursor: pointer !important;
    border: none !important;
    background: #1f2937 !important;
    box-shadow: 0 2px 6px rgba(0,0,0,.08) !important;
    transition: transform .15s, box-shadow .15s !important;
  }
  .v3-prod:hover {
    transform: translateY(-2px) !important;
    box-shadow: 0 8px 16px rgba(0,0,0,.18) !important;
  }
  .v3-prod .img {
    position: absolute !important; inset: 0 !important;
    width: 100% !important; height: 100% !important;
    border-radius: 0 !important;
  }
  .v3-prod .img picture, .v3-prod .img img {
    width: 100% !important; height: 100% !important;
    object-fit: cover !important;
  }
  .v3-prod .img .no-img {
    position: absolute; inset: 0;
    display: flex; align-items: center; justify-content: center;
    color: rgba(255,255,255,.3); font-size: 3rem;
  }
  /* Gradient escuro no rodapé do card (legibilidade do texto) */
  .v3-prod::after {
    content: '';
    position: absolute; left: 0; right: 0; bottom: 0; height: 65%;
    background: linear-gradient(to top, rgba(0,0,0,.85) 0%, rgba(0,0,0,.55) 50%, transparent 100%);
    pointer-events: none;
    z-index: 1;
  }
  .v3-prod .body {
    position: absolute !important;
    left: 0; right: 0; bottom: 0;
    padding: 10px 12px !important;
    z-index: 2;
    color: #fff !important;
    background: transparent !important;
  }
  .v3-prod .body .nm {
    color: #fff !important;
    font-size: .9rem !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
    text-shadow: 0 1px 3px rgba(0,0,0,.5) !important;
    margin-bottom: 4px !important;
  }
  .v3-prod .body .sub { display: none !important; } /* esconde subtítulo no card balcão */
  .v3-prod .body .pr {
    color: #fff !important;
    font-weight: 900 !important;
    font-size: 1.05rem !important;
    text-shadow: 0 1px 3px rgba(0,0,0,.5) !important;
  }
  .v3-prod .body .pr .old {
    color: rgba(255,255,255,.6) !important;
    font-size: .72rem !important;
  }

  /* Eng tags: posiciona no topo */
  .v3-prod .body .eng-tag {
    position: absolute;
    top: -200px; /* esconde — usar versões absolutas */
  }
  .v3-prod .eng-tag.combo-tag,
  .v3-prod .eng-tag.star,
  .v3-prod .eng-tag.chef {
    position: absolute !important;
    top: 8px !important; left: 8px !important;
    z-index: 3;
    font-size: .62rem !important;
    padding: 3px 8px !important;
    border-radius: 12px !important;
    backdrop-filter: blur(4px);
    background: rgba(0,0,0,.65) !important;
    color: #fff !important;
  }
  .v3-prod .eng-tag.star { background: linear-gradient(135deg, var(--sg-gold,#C8860A), #f0a830) !important; }
  .v3-prod .eng-tag.chef { background: linear-gradient(135deg, #a855f7, #c084fc) !important; }

  /* Badges em volta da imagem permanecem (b-disc, b-pop, b-new, b-trd, b-bomba, b-combo) */
  .v3-prod .b-disc, .v3-prod .b-pop, .v3-prod .b-new,
  .v3-prod .b-trd, .v3-prod .b-bomba, .v3-prod .b-combo,
  .v3-prod .b-timer { z-index: 3; }

  /* Estampa "✓ N" — quando in-cart, mantém + adapta posição */
  .v3-prod .qty-stamp {
    z-index: 3;
    background: rgba(22, 163, 74, .95) !important;
    backdrop-filter: blur(4px);
  }

  /* Pílula +/- quando in-cart */
  .v3-prod .qty-pill {
    z-index: 4 !important;
    background: rgba(22, 163, 74, .95) !important;
    backdrop-filter: blur(6px);
  }
  .v3-prod.in-cart {
    box-shadow: 0 0 0 3px #16a34a, 0 4px 12px rgba(0,0,0,.18) !important;
  }

  /* (CSS do carrinho lateral .v3-side-cart removido 2026-06-09 — HTML deletado) */

  /* Modal "Esvaziar carrinho?" */
  .v3-limpar-modal {
    position: fixed; inset: 0; background: rgba(15,23,42,.55);
    z-index: 99990; display: none; align-items: center; justify-content: center;
    padding: 20px; backdrop-filter: blur(2px);
  }
  .v3-limpar-modal.active { display: flex; animation: v3FadeIn .18s ease-out; }
  .v3-limpar-box {
    background: #fff; border-radius: 18px; padding: 28px 24px 20px;
    width: 100%; max-width: 360px; text-align: center;
    box-shadow: 0 20px 60px rgba(0,0,0,.3);
    animation: v3PopIn .22s ease-out;
  }
  @keyframes v3FadeIn { from { opacity: 0 } to { opacity: 1 } }
  @keyframes v3PopIn { from { opacity: 0; transform: scale(.92) } to { opacity: 1; transform: scale(1) } }
  .v3-limpar-ilus { margin: 0 auto 14px; }
  .v3-limpar-titulo {
    font-size: 1.08rem; font-weight: 700; color: #1f2937;
    margin: 0 0 18px; line-height: 1.3;
  }
  .v3-limpar-btn-sim, .v3-limpar-btn-nao {
    width: 100%; padding: 12px; font-weight: 800; font-size: 1rem;
    border-radius: 10px; cursor: pointer; transition: .15s;
    display: block; margin-bottom: 8px;
  }
  .v3-limpar-btn-sim {
    background: #fff; color: #dc2626;
    border: 2px solid #dc2626;
  }
  .v3-limpar-btn-sim:hover { background: #fef2f2; }
  .v3-limpar-btn-nao {
    background: #dc2626; color: #fff;
    border: 2px solid #dc2626;
    margin-bottom: 0;
  }
  .v3-limpar-btn-nao:hover { background: #b91c1c; }

  /* ════════════════════════════════════════════════════════════════════════
     ESTILO ANOTA AI — Cardápio simplificado por seções
     ════════════════════════════════════════════════════════════════════════ */

  /* Esconde elementos do master layout substituídos pelo design Anota AI.
     2026-06-09: lista enxugada — antes `body > header` aqui escondia o PRÓPRIO
     header da loja (a view é require direto no body), e busca/chips ficavam
     permanentemente invisíveis. Agora: header próprio + busca + chips ATIVOS;
     a navbar genérica do master sai de cena (o header tem sacola + meus pedidos). */
  .sg-navbar,                 /* navbar genérica do master — header próprio assume */
  body > footer,              /* footer global */
  .site-banner-natal          /* banner Natal antigo */
  { display: none !important; }


  /* ──────────────── BARRA INFERIOR FIXA (estilo app) ──────────────── */
  .v3-nav-bottom {
    position: fixed; bottom: 0; left: 0; right: 0;
    background: white; border-top: 1px solid #e5e7eb;
    box-shadow: 0 -4px 12px rgba(0,0,0,.06);
    z-index: 900;
    padding: 6px 0 max(6px, env(safe-area-inset-bottom));
    display: grid;
    grid-template-columns: repeat(4, 1fr);
  }
  .v3-nav-item {
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    gap: 2px;
    padding: 8px 4px;
    color: #6b7280;
    text-decoration: none;
    font-size: .68rem;
    font-weight: 700;
    background: none; border: none; cursor: pointer;
    transition: color .12s;
    position: relative;
    font-family: inherit;
  }
  .v3-nav-item i { font-size: 1.4rem; line-height: 1; }
  .v3-nav-item span { letter-spacing: .2px; }
  .v3-nav-item:hover, .v3-nav-item.active {
    color: var(--sg-red, #8B1A1A);
  }
  .v3-nav-item.active::before {
    content: '';
    position: absolute; top: 0; left: 25%; right: 25%;
    height: 2px; background: var(--sg-red, #8B1A1A);
    border-radius: 0 0 2px 2px;
  }
  /* Badge de quantidade no carrinho — posicionada em % (segura em qualquer largura) */
  .v3-nav-item .nav-badge {
    position: absolute;
    top: 4px; right: 22%;          /* era calc(50% - 22px), voava em <360px */
    background: var(--sg-red, #8B1A1A); color: white;
    border-radius: 10px; padding: 1px 6px;
    font-size: .62rem; font-weight: 900;
    min-width: 16px; text-align: center;
    line-height: 1.3;
    border: 2px solid white;
  }
  .v3-nav-item .nav-badge:empty { display: none; }

  /* Espaço pro conteúdo não ficar atrás da nav fixa */
  body { padding-bottom: 78px; padding-top: 0 !important; }
  body, html { background: #fff !important; }

  /* ──────────────── HEADER PRÓPRIO (estilo Anota AI) ──────────────── */
  .v3-store-header {
    background: var(--sg-red, #C41A1A);
    color: white;
    padding: 12px 16px;
    display: flex; align-items: center; gap: 12px;
    position: sticky; top: 0; z-index: 800;
    box-shadow: 0 2px 6px rgba(0,0,0,.1);
  }
  .v3-store-header .logo {
    width: 40px; height: 40px;
    border-radius: 50%;
    background: white;
    background-size: cover; background-position: center;
    flex-shrink: 0;
    border: 2px solid rgba(255,255,255,.3);
  }
  .v3-store-header .nome {
    flex: 1;
    font-size: 1.05rem; font-weight: 800;
    color: white;
    margin: 0;
  }
  .v3-store-header .icons { display: flex; gap: 4px; }
  .v3-store-header .icons button,
  .v3-store-header .icons a {
    width: 40px; height: 40px;       /* era 36×36 — agora respeita touch target mínimo */
    border-radius: 50%;
    background: rgba(255,255,255,.15);
    border: none; color: white;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; font-size: 1.05rem;
    text-decoration: none;
    transition: background .12s;
  }
  .v3-store-header .icons button:hover,
  .v3-store-header .icons a:hover { background: rgba(255,255,255,.3); }
  /* Sacola no header: badge de contagem (atualizado pelo store.js) */
  .v3-store-header .icons .cart-btn { position: relative; }
  .v3-store-header .icons .cart-badge {
    position: absolute; top: -3px; right: -3px;
    background: #fff; color: var(--sg-red, #C41A1A);
    font-size: .66rem; font-weight: 800; line-height: 1;
    min-width: 17px; height: 17px; border-radius: 9px;
    display: flex; align-items: center; justify-content: center;
    padding: 0 4px; box-shadow: 0 1px 3px rgba(0,0,0,.25);
  }
  /* Pulso de "adicionado ao carrinho" também na sacola do header */
  .v3-store-header .cart-btn.cart-pulsing { animation: v3CartPulse 1.2s ease; }
  @keyframes v3CartPulse {
    0%, 100% { transform: scale(1); }
    25% { transform: scale(1.25); }
    50% { transform: scale(1); }
    75% { transform: scale(1.15); }
  }

  /* Linha info: Aberto + botão Horário + Perfil da loja */
  .v3-store-info {
    display: flex; align-items: center; justify-content: space-between;
    padding: 10px 18px;       /* era 16px — mais respiro lateral pra não colar no AA toggle */
    font-size: .82rem;
    background: white;
    border-bottom: 1px solid #f3f4f6;
    flex-wrap: wrap; gap: 8px;
  }
  /* Header também ganha 18px lateral pro logo/carrinho não colar */
  .v3-store-header { padding: 12px 18px !important; }
  /* Mobile: header mais compacto (logo+nome+botões menores pra ocupar menos tela) */
  @media (max-width: 700px) {
    .v3-store-header { padding: 8px 14px !important; gap: 10px; }
    .v3-store-header .logo { width: 32px; height: 32px; }
    .v3-store-header .nome { font-size: .95rem; }
    .v3-store-header .icons button,
    .v3-store-header .icons a { width: 34px; height: 34px; font-size: .95rem; }
    .v3-store-info { padding: 6px 14px; font-size: .76rem; gap: 6px; }
    .v3-store-info .btn-horario { padding: 3px 8px; font-size: .72rem; }
    .v3-store-info .perfil { font-size: .76rem; }
    .sg-freebar { padding: 6px 12px; font-size: .78rem; }
  }
  .v3-store-info .status {
    color: #6b7280;
    display: inline-flex; align-items: center; gap: 8px;
  }
  .v3-store-info .status .open {
    display: inline-flex; align-items: center; gap: 4px;
    color: #16a34a; font-weight: 700;
  }
  .v3-store-info .status .open::before {
    content: '●'; font-size: .7rem;
  }
  .v3-store-info .btn-horario {
    background: #f3f4f6; border: 1px solid #e5e7eb;
    padding: 4px 10px; border-radius: 14px;
    color: #1a1a1a; font-weight: 700; font-size: .76rem;
    cursor: pointer;
    display: inline-flex; align-items: center; gap: 4px;
  }
  .v3-store-info .btn-horario:hover { background: #e5e7eb; }
  .v3-store-info .btn-horario i { color: var(--sg-red, #C41A1A); }
  .v3-store-info .perfil {
    color: var(--sg-red, #C41A1A);
    font-weight: 700; text-decoration: none;
    font-size: .82rem;
  }
  .v3-store-info .perfil:hover { text-decoration: underline; }

  /* (CSS da faixa social proof .v3-proof removido 2026-06-09 — faixa removida
     a pedido em 2026-05-26, junto com as 2 queries do $lojaStats) */

  /* Modal "Perfil da loja" estilo iFood (3 abas: Sobre / Horário / Pagamento) */
  .v3-perfil-modal {
    position: fixed; inset: 0;
    background: rgba(0,0,0,.55);
    display: none; align-items: flex-start; justify-content: center;
    z-index: 2000;
    padding: 0;
  }
  .v3-perfil-modal.active { display: flex; }
  .v3-perfil-modal .box {
    background: white;
    width: 100%; max-width: 460px;
    height: 100vh; max-height: 100vh;
    overflow-y: auto;
    display: flex; flex-direction: column;
  }
  @media (min-width: 700px) {
    .v3-perfil-modal { padding: 24px; align-items: center; }
    .v3-perfil-modal .box { border-radius: 14px; height: auto; max-height: 90vh; }
  }
  .v3-perfil-modal .pf-head {
    padding: 14px 18px;
    border-bottom: 1px solid #f3f4f6;
    display: flex; align-items: center;
    position: sticky; top: 0; background: white; z-index: 2;
  }
  .v3-perfil-modal .pf-head .close {
    background: none; border: none; cursor: pointer;
    color: var(--sg-red, #C41A1A);
    font-size: 1.3rem; padding: 4px 8px;
  }
  /* Tabs estilo iFood */
  .v3-perfil-tabs {
    display: flex; border-bottom: 1px solid #f3f4f6;
    background: white;
    position: sticky; top: 50px; z-index: 1;
  }
  .v3-perfil-tabs button {
    flex: 1; padding: 14px 8px;
    background: none; border: none;
    font-weight: 700; font-size: .9rem;
    color: #9ca3af; cursor: pointer;
    border-bottom: 3px solid transparent;
    transition: all .15s;
  }
  .v3-perfil-tabs button.active {
    color: var(--sg-red, #C41A1A);
    border-bottom-color: var(--sg-red, #C41A1A);
  }
  .v3-perfil-modal .pf-tab-content {
    padding: 18px;
    display: none;
  }
  .v3-perfil-modal .pf-tab-content.active { display: block; }

  /* Aba Sobre: selo + destaques */
  .v3-perfil-modal .selo-card {
    background: #fafafa; border-radius: 12px;
    padding: 16px; margin-bottom: 18px;
    display: flex; gap: 12px; align-items: flex-start;
  }
  .v3-perfil-modal .selo-card .selo-icon {
    width: 48px; height: 48px;
    background: var(--sg-red, #C41A1A);
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    color: white; font-size: 1.6rem;
    flex-shrink: 0;
  }
  .v3-perfil-modal .selo-card .selo-info .nm {
    font-weight: 800; font-size: .92rem; color: #1a1a1a;
    margin-bottom: 2px;
  }
  .v3-perfil-modal .selo-card .selo-info .desc {
    color: #6b7280; font-size: .82rem; line-height: 1.4;
  }
  .v3-perfil-modal .destaques { list-style: none; padding: 0; margin: 0 0 18px 0; }
  .v3-perfil-modal .destaques li {
    display: flex; align-items: center; gap: 10px;
    padding: 6px 0;
    color: #1a1a1a; font-size: .88rem;
  }
  .v3-perfil-modal .destaques li i {
    color: var(--sg-red, #C41A1A);
    font-size: .9rem;
  }
  .v3-perfil-modal .pf-section-title {
    font-size: 1.05rem; font-weight: 800;
    color: #1a1a1a;
    margin: 18px 0 8px 0;
  }
  .v3-perfil-modal .pf-text {
    color: #4b5563; font-size: .88rem; line-height: 1.5;
  }
  .v3-perfil-modal .pf-foot {
    text-align: center;
    color: #9ca3af; font-size: .78rem;
    padding: 16px;
    border-top: 1px solid #f3f4f6;
    margin-top: auto;
  }

  /* Aba Horário: lista de dias */
  .v3-perfil-modal .horario-row {
    display: flex; justify-content: space-between;
    padding: 12px 0;
    border-bottom: 1px solid #f3f4f6;
    font-size: .92rem;
  }
  .v3-perfil-modal .horario-row:last-child { border: none; }
  .v3-perfil-modal .horario-row.today {
    background: #fef2f2;
    margin: 0 -18px;
    padding: 12px 18px;
    border-radius: 0;
    font-weight: 800;
    color: var(--sg-red, #C41A1A);
  }
  .v3-perfil-modal .horario-row.today .dia::before {
    content: '● ';
    color: #16a34a;
  }
  .v3-perfil-modal .horario-row .dia { color: #1a1a1a; }
  .v3-perfil-modal .horario-row .h { color: #6b7280; }
  .v3-perfil-modal .horario-row.fechado .h { color: #dc2626; font-weight: 700; }

  /* Aba Pagamento: cards */
  .v3-perfil-modal .pag-list { list-style: none; padding: 0; margin: 0; }
  .v3-perfil-modal .pag-list li {
    display: flex; align-items: center; gap: 12px;
    padding: 12px 0;
    border-bottom: 1px solid #f3f4f6;
  }
  .v3-perfil-modal .pag-list li:last-child { border: none; }
  .v3-perfil-modal .pag-list li i {
    width: 38px; height: 38px;
    background: #f3f4f6; border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    color: var(--sg-red, #C41A1A); font-size: 1.1rem;
    flex-shrink: 0;
  }
  .v3-perfil-modal .pag-list li .pag-info .nm {
    font-weight: 700; font-size: .9rem; color: #1a1a1a;
  }
  .v3-perfil-modal .pag-list li .pag-info .sub {
    color: #6b7280; font-size: .78rem;
  }

  /* Banner cashback (roxo) */
  .v3-cashback-banner {
    margin: 14px 16px;
    background: linear-gradient(135deg, #6d28d9 0%, #9333ea 100%);
    border-radius: 14px;
    padding: 18px;
    display: flex; align-items: center; gap: 16px;
    color: white;
    box-shadow: 0 4px 12px rgba(109, 40, 217, .2);
  }
  .v3-cashback-banner .icon {
    width: 56px; height: 56px;
    background: rgba(255,255,255,.18);
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
    font-size: 1.8rem;
  }
  .v3-cashback-banner .info { flex: 1; text-align: center; }
  .v3-cashback-banner .info .titulo {
    font-size: 1.4rem; font-weight: 900;
    line-height: 1.1;
  }
  .v3-cashback-banner .info .sub {
    font-size: .82rem;
    opacity: .9;
    margin-top: 2px;
    text-decoration: underline;
  }
  .v3-cashback-banner .cta {
    font-size: .82rem; font-weight: 800;
    margin-top: 4px;
  }
  @media (max-width: 700px) {
    .v3-cashback-banner { flex-direction: row; padding: 14px; }
    .v3-cashback-banner .icon { width: 44px; height: 44px; font-size: 1.4rem; }
    .v3-cashback-banner .info .titulo { font-size: 1.1rem; }
  }

  /* ── Tarja do cupom de campanha (Copa/Brasil) — some sozinha quando o cupom expira ── */
  .v3-cupom-tarja {
    display: flex; align-items: center; gap: 12px;
    margin: 10px 12px 0; padding: 12px 14px; border-radius: 14px;
    background: linear-gradient(120deg, #009b3a 0%, #00803a 55%, #ffcc29 220%);
    color: #fff; box-shadow: 0 4px 14px rgba(0,128,58,.25);
    border: 1px solid rgba(255,255,255,.18);
  }
  .v3-cupom-tarja .ct-flag { font-size: 1.7rem; line-height: 1; flex-shrink: 0; }
  .v3-cupom-tarja .ct-info { flex: 1; min-width: 0; }
  .v3-cupom-tarja .ct-titulo { font-weight: 800; font-size: 1rem; line-height: 1.2; }
  .v3-cupom-tarja .ct-titulo b {
    background: #ffcc29; color: #00451a; padding: 1px 7px; border-radius: 6px;
    letter-spacing: .5px; font-weight: 900; white-space: nowrap;
  }
  .v3-cupom-tarja .ct-regras { font-size: .74rem; opacity: .96; margin-top: 3px; line-height: 1.35; }
  .v3-cupom-tarja .ct-copiar {
    flex-shrink: 0; border: 0; background: #fff; color: #00803a; font-weight: 800;
    padding: 9px 13px; border-radius: 10px; cursor: pointer; font-size: .82rem;
    display: inline-flex; align-items: center; gap: 6px; transition: transform .1s;
  }
  .v3-cupom-tarja .ct-copiar:active { transform: scale(.95); }
  .v3-cupom-tarja .ct-timer-wrap { font-size: .76rem; margin-top: 5px; font-weight: 700; display: flex; align-items: center; gap: 5px; }
  .v3-cupom-tarja .ct-timer {
    font-variant-numeric: tabular-nums; background: rgba(0,0,0,.20);
    padding: 1px 8px; border-radius: 6px; letter-spacing: .5px;
  }
  body.v3-checkout-mode .v3-cupom-tarja { display: none; }
  @media (max-width: 560px) {
    .v3-cupom-tarja { margin: 8px 10px 0; padding: 10px 12px; gap: 10px; }
    .v3-cupom-tarja .ct-titulo { font-size: .9rem; }
    .v3-cupom-tarja .ct-regras { font-size: .7rem; }
    .v3-cupom-tarja .ct-timer-wrap { font-size: .72rem; }
    .v3-cupom-tarja .ct-copiar { padding: 8px 11px; font-size: .78rem; }
  }

  /* (Overrides do hero e do banner Natal removidos 2026-06-09 — HTML deletado) */

  /* Seções nomeadas (categorias) */
  .v3-section {
    margin: 28px 0 8px 0;
  }
  .v3-section-title {
    font-size: 1.2rem;
    font-weight: 900;
    color: var(--sg-red, #8B1A1A);
    text-transform: uppercase;
    letter-spacing: .5px;
    margin: 0 0 4px 0;
    padding-bottom: 6px;
    border-bottom: 2px solid var(--sg-gold, #C8860A);
    display: inline-block;
  }
  .v3-section-desc {
    font-size: .85rem;
    color: #6b7280;
    margin: 0 0 14px 0;
  }

  /* Grid: cards HORIZONTAIS 2 colunas (estilo Anota AI) */
  .v3-grid {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 12px !important;
    margin: 0 0 20px 0 !important;
  }
  /* Mobile: 1 coluna (cards horizontais com imagem à direita) — densidade vem da altura menor */
  @media (max-width: 700px) {
    .v3-grid { grid-template-columns: 1fr !important; gap: 8px !important; }
  }

  /* CARD HORIZONTAL — info à esquerda, foto à direita */
  .v3-prod {
    aspect-ratio: auto !important;
    height: auto !important;
    min-height: 96px !important;
    background: white !important;
    border: 1px solid #e5e7eb !important;
    border-radius: 12px !important;
    overflow: hidden !important;
    cursor: pointer !important;
    display: grid !important;
    grid-template-columns: 1fr 96px !important;
    transition: transform .12s, box-shadow .12s !important;
  }
  .v3-prod:hover {
    transform: translateY(-1px) !important;
    box-shadow: 0 4px 12px rgba(0,0,0,.08) !important;
  }
  .v3-prod::after { display: none !important; }  /* remove gradient escuro */

  .v3-prod .img {
    position: relative !important;
    inset: auto !important;
    width: 100% !important;
    height: 100% !important;
    min-height: 96px;
    grid-column: 2;
    grid-row: 1 / span 2;
    border-radius: 0 !important;
    background: #f3f4f6;
  }
  .v3-prod .img picture, .v3-prod .img img {
    width: 100% !important; height: 100% !important;
    object-fit: cover !important;
  }

  .v3-prod .body {
    position: relative !important;
    inset: auto !important;
    padding: 12px 14px !important;
    z-index: auto !important;
    background: white !important;
    color: #1a1a1a !important;
    grid-column: 1;
    grid-row: 1;
    display: flex; flex-direction: column;
    justify-content: space-between;
  }
  .v3-prod .body .nm {
    color: #1a1a1a !important;
    font-size: .95rem !important;
    font-weight: 800 !important;
    text-shadow: none !important;
    margin: 0 0 4px 0 !important;
    line-height: 1.2 !important;
  }
  .v3-prod .body .sub {
    display: -webkit-box !important;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    color: #6b7280 !important;
    font-size: .78rem !important;
    margin: 0 0 6px 0 !important;
    text-shadow: none !important;
  }
  .v3-prod .body .pr {
    color: #1f2937 !important;
    font-weight: 900 !important;
    font-size: 1.1rem !important;
    text-shadow: none !important;
    margin-top: 4px !important;
  }
  .v3-prod .body .pr.has-promo {
    color: var(--sg-red, #8B1A1A) !important;
  }
  /* Body do card cola informações no topo (não estica até o fim) */
  .v3-prod .body {
    justify-content: flex-start !important;
  }
  .v3-prod .body .pr .old {
    display: inline-block !important;
    color: #9ca3af !important;
    font-size: .8rem !important;
    margin-right: 6px !important;
  }

  /* Eng tags na imagem */
  .v3-prod .body .eng-tag,
  .v3-prod .eng-tag.combo-tag,
  .v3-prod .eng-tag.star,
  .v3-prod .eng-tag.chef {
    position: static !important;
    display: inline-block !important;
    margin-bottom: 4px !important;
    align-self: flex-start;
    background: #fef3c7 !important;
    color: #92400e !important;
    box-shadow: none !important;
  }
  .v3-prod .eng-tag.star { background: #fde68a !important; color: #92400e !important; }
  .v3-prod .eng-tag.chef { background: #ede9fe !important; color: #6d28d9 !important; }

  /* Badges de produto (Novo, Bombando) sobrepostas na foto */
  .v3-prod .b-disc, .v3-prod .b-pop, .v3-prod .b-new,
  .v3-prod .b-trd, .v3-prod .b-bomba, .v3-prod .b-combo,
  .v3-prod .b-timer { z-index: 3 !important; }

  /* Pílula +/- e estampa quando in-cart */
  .v3-prod .qty-stamp { z-index: 4; }
  .v3-prod .qty-pill { z-index: 5; }
  .v3-prod.in-cart {
    box-shadow: 0 0 0 2px #16a34a, 0 4px 12px rgba(0,0,0,.1) !important;
  }

  /* "Adicionar ao carrinho" badge no canto inferior direito (em vez do gradient) */
  /* right: 8px (era -18px que vazava do card e ficava clipado em desktop/tablet) */
  .v3-prod .body::after {
    content: '+';
    position: absolute;
    right: 8px; bottom: 8px;
    width: 28px; height: 28px;
    background: var(--sg-red, #8B1A1A);
    color: white;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.3rem; font-weight: 900;
    box-shadow: 0 2px 6px rgba(0,0,0,.2);
    transition: transform .12s, background .12s;
    z-index: 4;
  }
  .v3-prod:hover .body::after {
    transform: scale(1.1);
    background: #6b1414;
  }
  .v3-prod.in-cart .body::after {
    content: '✓';
    background: #16a34a;
  }

  /* Esconde pílula e estampa antigas (visual antigo) */
  .v3-prod .qty-stamp { display: none !important; }

  /* ════════════════════════════════════════════════════════════════════════
     Cards COMPACTOS no mobile (≤700px) — nome maior + espaçamento mínimo
     ════════════════════════════════════════════════════════════════════════ */
  @media (max-width: 700px) {
    .v3-prod {
      min-height: 72px !important;          /* ainda mais denso (era 84) */
      grid-template-columns: 1fr 78px !important;  /* imagem menor (era 92) */
      border-radius: 10px !important;
    }
    .v3-prod .img {
      min-height: 72px !important;          /* segue card */
      background: #f9fafb !important;
      overflow: hidden !important;
    }
    .v3-prod .img img,
    .v3-prod .img picture img {
      width: 100% !important;
      height: 100% !important;
      object-fit: cover !important;
      object-position: center center !important;
      display: block !important;
    }
    .v3-prod .body {
      padding: 5px 9px !important;          /* mais compacto (era 6px 10px) */
      gap: 0 !important;
      justify-content: center !important;
    }
    .v3-prod .body .nm {
      font-size: .92rem !important;         /* era 1.02 — menor pra caber mais */
      font-weight: 800 !important;
      line-height: 1.1 !important;
      margin: 0 !important;
    }
    .v3-prod .body .sub {
      -webkit-line-clamp: 1;
      font-size: .68rem !important;         /* era .72 */
      line-height: 1.1 !important;
      margin: 1px 0 0 0 !important;
    }
    .v3-prod .v3-prod-meta {
      gap: 4px;
      margin: 1px 0 0 0;
      font-size: .58rem;
    }
    .v3-prod .v3-prod-meta .m-item i { font-size: .64rem; }
    /* Preço cola logo embaixo do nome (sem mt-auto) */
    .v3-prod .body .pr {
      font-size: .96rem !important;         /* era 1.05 */
      margin: 2px 0 0 0 !important;
      padding-top: 0 !important;
    }
    .v3-prod .body .eng-tag {
      font-size: .56rem !important;         /* era .58 */
      padding: 1px 5px !important;
      margin: 0 0 2px 0 !important;
    }
    /* Botão flutuante "+" menor */
    .v3-prod .body::after {
      width: 22px; height: 22px;            /* era 24 */
      font-size: 1rem;
      right: -12px; bottom: 5px;
    }
    /* Pílula +/- quando in-cart também compacta */
    .v3-prod .qty-pill { padding: 5px 7px !important; }
    .v3-prod .qty-pill button {
      width: 28px; height: 28px;
      border-radius: 8px; font-size: 1rem;
    }
    .v3-prod .qty-pill .val { font-size: .94rem; }
    /* Espaçamento entre cards reduzido */
    .v3-grid { gap: 6px !important; }       /* era 8 */
    .v3-section { margin: 14px 0 4px 0; }   /* era 18px 0 6px */
    .v3-section-title { font-size: .95rem; }/* era 1.05 */
  }
  /* Tela muito pequena (<400px) — ainda mais compacto */
  @media (max-width: 400px) {
    .v3-prod {
      min-height: 78px !important;
      grid-template-columns: 1fr 84px !important;
    }
    .v3-prod .img { min-height: 78px !important; }
    .v3-prod .body .nm { font-size: .92rem !important; }
    .v3-prod .body .sub { font-size: .66rem !important; }
    .v3-prod .body .pr { font-size: .98rem !important; }
  }

  /* Botão "+" não pode estourar a borda direita do card (overflow:hidden esconde) */
  @media (max-width: 700px) {
    .v3-prod .body::after {
      right: 4px !important;
      bottom: 4px !important;
      width: 26px;
      height: 26px;
      font-size: 1.1rem;
    }
  }

  /* ════════════════════════════════════════════════════════════════════════
     PAGAMENTO — grid de métodos
     (CSS do .v3-pay-group antigo removido 2026-06-09 — o HTML atual usa
      .v3-pay-quando-card, regras próprias mais abaixo) */
  .v3-pays.v3-pays-4 {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px;
  }
  @media (max-width: 600px) {
    .v3-pays.v3-pays-4 { grid-template-columns: repeat(2, 1fr); }
  }

  /* ─── Pagamento em 2 cliques — PASSO 1: Quando pagar? ─────────────── */
  .v3-pay-quando {
    display: flex; flex-direction: column; gap: 10px;
  }
  .v3-pay-quando-card {
    display: flex; align-items: center; gap: 14px;
    background: #f0fdf4; border: 2px solid #bbf7d0;
    border-radius: 14px; padding: 16px 14px;
    cursor: pointer; transition: all .15s;
    font-family: inherit; text-align: left;
    width: 100%;
  }
  .v3-pay-quando-card.pg-retirada {
    background: #fff8e7; border-color: #f0e3b5;
  }
  .v3-pay-quando-card:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 16px rgba(0,0,0,.08);
    border-color: var(--sg-red, #C41A1A);
  }
  .v3-pay-quando-card .ico {
    width: 46px; height: 46px; border-radius: 12px;
    background: #fff;
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
    box-shadow: 0 2px 6px rgba(0,0,0,.06);
  }
  .v3-pay-quando-card .ico i {
    font-size: 1.55rem; color: #16a34a;
  }
  .v3-pay-quando-card.pg-retirada .ico i { color: #C8860A; }
  .v3-pay-quando-card .info { flex: 1; min-width: 0; }
  .v3-pay-quando-card .info b {
    display: block; font-size: 1.02rem; font-weight: 800; color: #065f46;
    line-height: 1.2;
  }
  .v3-pay-quando-card.pg-retirada .info b { color: #6b5713; }
  .v3-pay-quando-card .info span {
    display: block; margin-top: 2px;
    font-size: .8rem; color: #6b7280; font-weight: 500; line-height: 1.3;
  }
  .v3-pay-quando-card .arr {
    color: #9ca3af; font-size: 1.2rem; flex-shrink: 0;
  }

  /* Aviso de fritura — deixa CLARO quando o salgado é frito (depende de quando paga) */
  .v3-fritar-aviso {
    display: flex; align-items: flex-start; gap: 10px;
    padding: 11px 13px; margin: 0 0 14px;
    border-radius: 12px; border: 1.5px solid;
    font-size: .86rem; line-height: 1.38;
  }
  .v3-fritar-aviso i { font-size: 1.35rem; flex-shrink: 0; margin-top: 1px; }
  .v3-fritar-aviso .txt { min-width: 0; }
  .v3-fritar-aviso .txt b { font-weight: 800; }
  .v3-fritar-aviso.is-agora {
    background: #f0fdf4; border-color: #86efac; color: #14532d;
  }
  .v3-fritar-aviso.is-agora i { color: #16a34a; }
  .v3-fritar-aviso.is-retirada {
    background: #fff8e7; border-color: #f0d68a; color: #6b5713;
  }
  .v3-fritar-aviso.is-retirada i { color: #C8860A; }

  /* PASSO 2: Como pagar? — header com "Trocar" */
  .v3-pay-como-head {
    display: flex; justify-content: space-between; align-items: center;
    gap: 10px; padding: 10px 12px; margin: 0 0 12px;
    background: #f0fdf4; border: 1px solid #bbf7d0;
    border-radius: 10px; color: #065f46;
  }
  .v3-pay-como-head.is-retirada {
    background: #fff8e7; border-color: #f0e3b5; color: #6b5713;
  }
  .v3-pay-como-head .left { display: flex; gap: 10px; align-items: center; min-width: 0; }
  .v3-pay-como-head .left i { font-size: 1.3rem; flex-shrink: 0; }
  .v3-pay-como-head .left b {
    display: block; font-size: .92rem; line-height: 1.15; font-weight: 800;
  }
  .v3-pay-como-head .left span {
    display: block; font-size: .74rem; line-height: 1.15; opacity: .85;
  }
  .v3-pay-como-head .btn-trocar-pag {
    background: #fff; border: 1.5px solid currentColor;
    color: inherit; font-weight: 700;
    padding: 6px 14px; border-radius: 8px; cursor: pointer;
    font-size: .8rem; flex-shrink: 0;
    transition: all .15s;
  }
  .v3-pay-como-head .btn-trocar-pag:hover {
    background: currentColor;
  }
  .v3-pay-como-head .btn-trocar-pag:hover { color: #fff; }

  /* ════════════════════════════════════════════════════════════════════════
     ONDA UX 2026-05-22 — Trust bar + meta nos cards + FAB WA + back-to-top
     ════════════════════════════════════════════════════════════════════════ */

  /* Hide-on-scroll do header (mobile) */
  .v3-store-header { transition: transform .25s ease; }
  .v3-store-header.hide-on-scroll { transform: translateY(-100%); }

  /* (Trust bar .v3-trust removida 2026-06-09 — 0 usos no HTML) */

  /* Meta nos cards de produto: tempo + nota + urgência */
  .v3-prod .v3-prod-meta {
    display: flex; gap: 7px; flex-wrap: wrap;
    margin: 2px 0 6px;
    font-size: .68rem; color: #6b7280;
  }
  .v3-prod .m-item {
    display: inline-flex; align-items: center; gap: 3px;
    font-weight: 600; line-height: 1;
  }
  .v3-prod .m-item i { font-size: .76rem; }
  .v3-prod .m-star { color: #92400e; }
  .v3-prod .m-star i { color: #fbbf24; }
  .v3-prod .m-star small { color: #9ca3af; font-size: .62rem; margin-left: 1px; font-weight: 500; }

  /* FAB WhatsApp — atendimento humano */
  .v3-wa-fab {
    position: fixed; right: 16px; bottom: 92px; z-index: 950;
    width: 56px; height: 56px; border-radius: 50%;
    background: #25d366; color: white !important;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.8rem; text-decoration: none;
    box-shadow: 0 6px 20px rgba(37,211,102,.45);
    transition: transform .15s;
  }
  .v3-wa-fab:hover { transform: scale(1.06); color: white !important; box-shadow: 0 8px 24px rgba(37,211,102,.55); }
  .v3-wa-fab i { line-height: 1; }
  @media (max-width: 480px) {
    .v3-wa-fab { width: 52px; height: 52px; right: 14px; bottom: 88px; font-size: 1.65rem; }
  }

  /* ════════════════════════════════════════════════════════════════════════
     CTA grande "Finalizar pedido" — aparece quando carrinho tem itens
     ════════════════════════════════════════════════════════════════════════ */
  .v3-cta-finalizar {
    position: fixed; left: 12px; right: 12px; bottom: 88px;
    z-index: 945;
    background: linear-gradient(135deg, #16a34a 0%, #15803d 100%);
    color: #fff; border: none; cursor: pointer;
    border-radius: 14px;
    padding: 14px 18px;
    display: none; align-items: center; gap: 12px;
    box-shadow: 0 8px 28px rgba(22,163,74,.5), 0 0 0 4px rgba(22,163,74,.15);
    font-family: inherit;
    animation: ctaSlideUp .35s cubic-bezier(.4,1.6,.6,1);
    text-decoration: none;
  }
  .v3-cta-finalizar.show { display: flex; }
  .v3-cta-finalizar:hover { background: linear-gradient(135deg, #15803d 0%, #14532d 100%); }
  .v3-cta-finalizar:active { transform: translateY(1px); }
  .v3-cta-finalizar .cta-icon {
    width: 38px; height: 38px; border-radius: 50%;
    background: rgba(255,255,255,.22);
    display: flex; align-items: center; justify-content: center;
    font-size: 1.25rem; flex-shrink: 0;
  }
  .v3-cta-finalizar .cta-txt {
    flex: 1; min-width: 0; text-align: left;
  }
  .v3-cta-finalizar .cta-txt .lbl {
    font-size: .68rem; font-weight: 600; opacity: .88; letter-spacing: .4px;
    text-transform: uppercase; line-height: 1;
  }
  .v3-cta-finalizar .cta-txt .qty {
    font-size: 1.02rem; font-weight: 900; line-height: 1.15;
    margin-top: 2px;
  }
  .v3-cta-finalizar .cta-total {
    font-size: 1.15rem; font-weight: 900; padding: 0 4px;
    white-space: nowrap;
  }
  .v3-cta-finalizar .cta-arrow {
    font-size: 1.3rem; flex-shrink: 0;
  }
  @keyframes ctaSlideUp {
    from { transform: translateY(60px); opacity: 0; }
    to   { transform: translateY(0); opacity: 1; }
  }
  /* Quando o CTA aparece, sobe o WA FAB e o back-top pra não sobrepor */
  body.has-cta-finalizar .v3-wa-fab { bottom: 168px; }
  body.has-cta-finalizar .v3-back-top { bottom: 168px; }
  @media (max-width: 480px) {
    .v3-cta-finalizar { left: 8px; right: 8px; bottom: 84px; padding: 12px 14px; gap: 10px; }
    .v3-cta-finalizar .cta-icon { width: 34px; height: 34px; font-size: 1.1rem; }
    .v3-cta-finalizar .cta-txt .qty { font-size: .92rem; }
    .v3-cta-finalizar .cta-total { font-size: 1.02rem; }
    body.has-cta-finalizar .v3-wa-fab { bottom: 156px; }
    body.has-cta-finalizar .v3-back-top { bottom: 156px; }
  }

  /* Botão "voltar ao topo" */
  .v3-back-top {
    position: fixed; left: 16px; bottom: 92px; z-index: 940;
    width: 44px; height: 44px; border-radius: 50%;
    background: rgba(26,26,26,.78); color: white;
    border: none; cursor: pointer;
    align-items: center; justify-content: center;
    font-size: 1.2rem;
    box-shadow: 0 4px 12px rgba(0,0,0,.25);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    opacity: 0; pointer-events: none;
    transition: opacity .2s, transform .2s;
    transform: translateY(8px);
    display: flex;
  }
  .v3-back-top.show {
    opacity: 1; pointer-events: auto;
    transform: translateY(0);
  }
  .v3-back-top:hover { background: rgba(26,26,26,.92); }
  @media (max-width: 480px) {
    .v3-back-top { width: 40px; height: 40px; left: 14px; bottom: 88px; font-size: 1.05rem; }
  }
