/*
 * Sistema visual do njparts-theme — portado do protótipo aprovado
 * (njparts-a-marketplace.html). Tema claro único, sem alternância
 * automática por modo escuro do sistema (decisão do dono da loja, depois
 * de ver a versão escura sem querer no protótipo).
 *
 * Convenção: todas as classes do tema usam o prefixo "njp-", pra nunca
 * colidir com o CSS do tema antigo (partdo) enquanto os dois convivem
 * durante a migração, nem com plugins de terceiros.
 */
:root{
  --bg:#F5F7F9; --surface:#FFFFFF; --surface-2:#EAEDF1;
  --ink:#050F28; --navy:#151E3F; --ink-soft:#4A5570; --border:#DEE3E9;
  --red:#FF1E3F; --red-deep:#C7112C; --on-red:#FFFFFF; --red-tint:#FFF1F2; --red-glow:rgba(255,30,63,.5);
  /* Campanha (Personalizar → "Campanha", 29/09/2026): header.php troca estes 3 conforme o estilo escolhido (cor do site,
     Black Friday ou personalizado); os de baixo são calculados a partir deles no @supports. */
  --camp-fundo:var(--red); --camp-texto:var(--on-red); --camp-realce:var(--surface);
  --camp-fundo-escuro:var(--camp-fundo); --camp-linha:rgba(255,255,255,.16); --camp-texto-suave:var(--camp-texto);
  --camp-sobre-realce:var(--camp-fundo-escuro); /* o que vai EM CIMA do realce — header.php troca pra branco quando o realce é escuro */
  --amber:#FFB020; --on-amber:#241a02;
  --green:#1C8A4B; --green-bg:#E3F3EA;
  --gray-badge:#6B7488; --gray-badge-bg:#E7EAEF;
  /* Avisos de problema (erro, "não serve no seu carro"): vermelho FIXO, igual ao verde de "compatível" — não segue a cor
     de destaque do Personalizar (--red), senão "não serve" ficaria da cor da marca, com cara de informação comum. */
  --danger:#FF1E3F; --danger-deep:#C7112C; --danger-tint:#FFF1F2;
  --font-display:'Barlow Condensed',system-ui,sans-serif;
  --font-body:'Barlow',system-ui,sans-serif;
  --font-mono:'JetBrains Mono',ui-monospace,monospace;
}
/* Tom clarinho e brilho da cor de destaque calculados a partir dela: trocar a cor no Personalizar leva junto o fundo
   dos selos, do "Adicionar ao carrinho" da página de produto etc. e o brilho dos botões. Navegador antigo fica nos fixos acima. */
@supports (color:color-mix(in srgb,red 50%,white)){
  /* --camp-fundo-escuro: o próprio fundo da campanha escurecido (degradê do "Destaque de promoção", número do cronômetro)
     — não usa o --red-deep do Personalizar, que pode estar em qualquer cor e deixaria o degradê com duas cores sem relação.
     --camp-linha / --camp-texto-suave: linhas finas, fundo do "passar o mouse" e texto secundário sobre o fundo da campanha. */
  :root{--red-tint:color-mix(in srgb,var(--red) 8%,var(--surface));--red-glow:color-mix(in srgb,var(--red) 50%,transparent);--camp-fundo-escuro:color-mix(in srgb,var(--camp-fundo) 78%,#000);--camp-linha:color-mix(in srgb,var(--camp-texto) 16%,transparent);--camp-texto-suave:color-mix(in srgb,var(--camp-texto) 78%,transparent)}
}

*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased}
img,svg{max-width:100%}
h1,h2,h3{font-family:var(--font-display);text-wrap:balance;margin:0;letter-spacing:.2px}
a{color:inherit}
.njp-tabular{font-variant-numeric:tabular-nums}
.njp-wrap{max-width:1240px;margin:0 auto;padding:0 20px}
.njp-icon{width:1em;height:1em;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
/* Texto só pra leitor de tela (padrão de todo tema WordPress) — antes vinha só do CSS de outro plugin; o do WooCommerce está desligado neste tema (16/10/2026). */
.screen-reader-text{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);border:0;white-space:nowrap}

/* ---------- topbar ---------- */
.njp-topbar{background:var(--surface-2);color:var(--ink-soft);font-size:12.5px;border-bottom:1px solid var(--border);overflow:hidden}
.njp-topbar .njp-wrap{display:flex;align-items:center;justify-content:space-between;height:34px;gap:16px}
.njp-topbar-msg{font-weight:600;letter-spacing:.3px;white-space:nowrap}
.njp-topbar-msg b{color:var(--red)}

/* Faixa deslizante do topo (24/09/2026, corrigida 25/09/2026) — ver header.php pro porquê de cada metade ter min-width:100vw + 6 repetições. */
.njp-topbar-ticker{width:100%;height:34px;overflow:hidden;display:flex;align-items:center}
.njp-topbar-ticker-track{display:flex;align-items:center;width:max-content;animation:njp-topbar-ticker 34s linear infinite}
.njp-topbar-ticker-set{display:flex;align-items:center;min-width:100vw;flex-shrink:0}
.njp-topbar-ticker-track .njp-topbar-msg{padding:0 48px}
@keyframes njp-topbar-ticker{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){
  .njp-topbar-ticker-track{animation:none}
}
/* Abaixo do cabeçalho (padrão desde 22/10/2026, no lugar da barra de categorias): branca, com linha em cima e embaixo —
   lê como parte do cabeçalho e não gruda na faixa de confiança cinza que vem logo depois nas páginas internas. */
.njp-topbar.is-abaixo{background:var(--surface);border-top:1px solid var(--border)}

/* ---------- Faixa de destaques do topo (22/10/2026, template-parts/faixa-destaque.php) ----------
 * Personalizar → "Faixa de destaques (topo)". Cores por variável (o PHP só escreve as que o dono mudou). Fundo padrão
 * fixo, não var(--ink): com a campanha escura ligada, --ink vira cor clara e o texto branco sumiria. Mensagem em
 * maiúsculo, como os títulos das seções. Celular: mensagem à esquerda (até 2 linhas), cronômetro à direita.
 */
.njp-faixa-destaque{--faixa-fundo:#050F28;--faixa-texto:#FFFFFF;background:var(--faixa-fundo);color:var(--faixa-texto)}
.njp-faixa-destaque[hidden]{display:none}
.njp-faixa-destaque-inner{display:flex;align-items:center;justify-content:center;gap:8px 28px;min-height:40px;padding-top:6px;padding-bottom:6px}
.njp-faixa-destaque-texto{margin:0;min-width:0;font-family:var(--font-display);font-size:16px;font-weight:700;line-height:1.2;letter-spacing:.4px;text-transform:uppercase;text-align:center;color:inherit;text-decoration:none}
.njp-faixa-destaque-texto b{color:var(--faixa-realce,var(--faixa-texto))}
a.njp-faixa-destaque-texto:hover{text-decoration:underline}
.njp-faixa-tempo{display:flex;align-items:flex-start;gap:4px;flex-shrink:0}
.njp-faixa-tempo[hidden]{display:none}
.njp-faixa-tempo:not(.is-pronto){visibility:hidden}
.njp-faixa-tempo-bloco{display:flex;flex-direction:column;align-items:center;min-width:30px}
.njp-faixa-tempo-bloco b{font-family:var(--font-display);font-size:22px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums;color:var(--faixa-realce,var(--faixa-texto))}
.njp-faixa-tempo-bloco small{margin-top:3px;font-size:10px;line-height:1;opacity:.8}
.njp-faixa-tempo-sep{font-family:var(--font-display);font-size:20px;font-weight:700;line-height:1;opacity:.7}
@media (max-width:760px){
  .njp-faixa-destaque-inner.has-tempo{justify-content:space-between}
  .njp-faixa-destaque-inner.has-tempo .njp-faixa-destaque-texto{font-size:14.5px;text-align:left}
  .njp-faixa-tempo{gap:3px}
  .njp-faixa-tempo-bloco{min-width:25px}
  .njp-faixa-tempo-bloco b{font-size:19px}
  .njp-faixa-tempo-sep{font-size:17px}
}
@media (min-width:1201px){
  .njp-faixa-destaque.njp-so-celular{display:none}
}

/* ---------- header ---------- */
.njp-site-header{position:sticky;top:0;z-index:40;background:var(--surface)}
.njp-header-main{display:flex;align-items:center;gap:24px;padding-top:14px;padding-bottom:14px}
/*
 * Altura exata no computador (29/10/2026, dono: "entre njp-site-header e njp-category-nav há um vão de 1px"): a barra de
 * categorias gruda a 77px do topo (ou logo + 28px), mas a altura do cabeçalho vinha do conteúdo — o texto "Minha conta /
 * Carrinho" — e mudava com a fonte: 77px com a Barlow, 76px com Arial (enquanto a fonte do site não carrega, ou noutro
 * aparelho) = fresta de 1px com a página rolando por baixo; com outras, 79px. Agora o cabeçalho tem a MESMA conta da barra
 * (a dela fica mais abaixo neste arquivo); o conteúdo continua centralizado. Só onde a barra gruda (acima de 1200px).
 */
@media (min-width:1201px){
  .njp-header-main{height:77px}
  @supports (top:max(1px,2px)){
    .njp-header-main{height:max(77px,calc(var(--njp-logo-h,30px) + 28px))}
  }
}
.njp-logo{display:flex;align-items:center;flex-shrink:0}
/* Altura: Personalizar → "Cabeçalho e rodapé" (--njp-logo-h no computador, --njp-logo-h-cel até 1200px — header.php). */
.njp-logo img{height:var(--njp-logo-h,30px);width:auto;display:block}
.njp-search-form{flex:1;display:flex;min-width:0;position:relative}
.njp-search-suggest{position:absolute;top:calc(100% + 8px);left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 20px 46px -18px rgba(5,15,40,.3);z-index:60;overflow:hidden}
.njp-search-suggest-item{display:flex;align-items:center;gap:12px;padding:10px 14px;text-decoration:none;color:var(--ink);border-bottom:1px solid var(--border)}
.njp-search-suggest-item:last-of-type{border-bottom:none}
.njp-search-suggest-item:hover,.njp-search-suggest-item.is-active{background:var(--surface-2)}
.njp-search-suggest-item img{width:42px;height:42px;object-fit:contain;border:1px solid var(--border);border-radius:7px;background:var(--surface);flex-shrink:0;padding:3px}
.njp-search-suggest-info{display:flex;flex-direction:column;gap:2px;min-width:0}
.njp-search-suggest-name{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.njp-search-suggest-meta{font-size:11px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.njp-search-suggest-price{font-size:12px;font-weight:700;color:var(--green)}
/*
 * ".njp-search-form button" (regra da lupa, mais acima neste arquivo) sem
 * querer também pega este botão — os dois são <button> dentro do mesmo
 * form. Como ela tem uma especificidade maior (elemento + classe), só
 * repetir a classe aqui não ganhava dela; precisa "button.classe" pra
 * empatar em especificidade e header vencer por vir depois. Bug relatado
 * no PDF de melhorias: o botão aparecia como um quadrado de 52px, com o
 * texto quebrado letra por letra.
 */
.njp-search-form button.njp-search-suggest-all{display:block;width:100%;height:auto;border:none;border-radius:0;background:var(--surface-2);color:var(--red);font-weight:700;font-size:12.5px;padding:11px;cursor:pointer;font-family:inherit;text-align:center}
.njp-search-form button.njp-search-suggest-all:hover{background:var(--red-tint)}
.njp-search-form input{flex:1;min-width:0;border:2px solid var(--border);border-right:none;border-radius:8px 0 0 8px;padding:0 16px;height:46px;font-family:var(--font-body);font-size:15px;background:var(--surface);color:var(--ink)}
.njp-search-form input::placeholder{color:var(--ink-soft)}
.njp-search-form input:focus{outline:none;border-color:var(--red)}
.njp-search-form button{width:52px;border:none;border-radius:0 8px 8px 0;background:var(--red);color:var(--on-red);display:grid;place-items:center;cursor:pointer}
.njp-search-form button .njp-icon{width:19px;height:19px}

.njp-header-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
.njp-header-action{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 12px;border-radius:8px;cursor:pointer;font-size:11px;font-weight:600;color:var(--ink-soft);position:relative;text-decoration:none}
.njp-header-action:hover{background:var(--surface-2);color:var(--ink)}
.njp-header-action .njp-icon{width:22px;height:22px;color:var(--ink)}
.njp-cart-count{position:absolute;top:2px;right:6px;background:var(--red);color:var(--on-red);border-radius:999px;font-size:10px;font-weight:700;min-width:16px;height:16px;line-height:16px;text-align:center;padding:0 3px}
.njp-cart-count:empty{display:none}

/* Botão de CEP do nj-parts-core: o plugin dá um estilo mínimo, propositalmente
   "sem cara", pra se adaptar a qualquer lugar onde for colocado. Aqui damos
   a aparência de pill do protótipo, com seletor mais específico pra sempre
   vencer o CSS do plugin (que é injetado tarde, no wp_head). */
.njp-header-main .njp-cep-header-trigger{display:inline-flex;align-items:center;padding:8px 14px;border-radius:999px;border:1px solid var(--border);background:var(--surface);cursor:pointer;font-family:inherit}
.njp-header-main .njp-cep-header-trigger:hover{border-color:var(--red)}
.njp-header-main .njp-cep-header-inner{display:flex;align-items:center;gap:7px}
.njp-header-main .njp-cep-header-trigger svg{color:var(--red);flex-shrink:0}
.njp-header-main .njp-cep-header-text{display:flex;flex-direction:column;align-items:flex-start;line-height:1.25;text-align:left}
.njp-header-main .njp-cep-header-line1{font-size:10px;color:var(--ink-soft)}
.njp-header-main .njp-cep-header-line2{font-size:12.5px;font-weight:700;color:var(--ink);max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Sticky própria (25/09/2026: separada do <header>, ver header.php) — mesma altura do header-main (77px) pra encostar certinho embaixo dele, sem vão nem sobreposição.
   Sombra de 1px pra cima, da cor da própria barra (29/10/2026): com zoom do navegador ou escala do Windows diferente de 100%,
   as duas peças presas são desenhadas separadas e o arredondamento podia deixar 1 pixel aberto entre elas. A sombra tapa
   essa fresta e fica por baixo do cabeçalho (que está na frente, z-index 40) — sem fresta, ninguém a vê. */
.njp-category-nav{background:var(--surface);color:var(--ink);border-bottom:1px solid var(--border);position:sticky;top:77px;z-index:39;box-shadow:0 -1px 0 var(--surface)}
/* Logo com mais de 49px (22/10/2026, altura editável): o cabeçalho cresce (logo + 28px de respiro) e o menu desce junto.
   --njp-faixa-h: altura da faixa de destaques presa no topo (faixa-destaque.js); sem ela, 0. */
@supports (top:max(1px,2px)){
  .njp-category-nav{top:calc(max(77px,calc(var(--njp-logo-h,30px) + 28px)) + var(--njp-faixa-h,0px))}
}
.njp-category-nav .njp-wrap{display:flex;align-items:center;gap:26px;height:44px;overflow-x:auto;scrollbar-width:none}
.njp-category-nav .njp-wrap::-webkit-scrollbar{display:none}
/* Menu montado em Aparência → Menus vem em <li> (as categorias automáticas, em <a> soltos): sem marcador de lista. */
.njp-category-nav li{list-style:none;margin:0;flex-shrink:0}
.njp-category-nav a{font-size:13.5px;font-weight:600;white-space:nowrap;color:var(--ink-soft);text-decoration:none}
.njp-category-nav a:hover{color:var(--red)}

/* ---------- Campanha na barra do topo e no cabeçalho (Personalizar → "Campanha", 29/09/2026) ----------
   Só com a classe .is-campanha (header.php, quando marcado). A caixa de busca continua branca; o botão da lupa e o
   número do carrinho vão pra cor de realce. Logo sem versão própria da campanha vira branco (.is-branco). */
.njp-topbar.is-campanha{background:var(--camp-fundo);color:var(--camp-texto);border-bottom-color:var(--camp-linha)}
.njp-topbar.is-campanha .njp-topbar-msg b{color:var(--camp-realce)}
.njp-site-header.is-campanha{background:var(--camp-fundo)}
.njp-site-header.is-campanha .njp-logo img.is-branco{filter:brightness(0) invert(1)}
.njp-site-header.is-campanha .njp-search-form input{border-color:transparent}
.njp-site-header.is-campanha .njp-search-form input:focus{border-color:var(--camp-realce)}
.njp-site-header.is-campanha .njp-search-form button:not(.njp-search-suggest-all):not(.njp-busca-fechar){background:var(--camp-realce);color:var(--camp-sobre-realce)}
.njp-site-header.is-campanha .njp-header-action,.njp-site-header.is-campanha .njp-header-action .njp-icon{color:var(--camp-texto)}
.njp-site-header.is-campanha .njp-header-action:hover{background:var(--camp-linha);color:var(--camp-texto)}
.njp-site-header.is-campanha .njp-cart-count{background:var(--camp-realce);color:var(--camp-sobre-realce)}
.njp-site-header.is-campanha .njp-header-main .njp-cep-header-trigger{background:transparent;border-color:var(--camp-linha)}
.njp-site-header.is-campanha .njp-header-main .njp-cep-header-trigger:hover{border-color:var(--camp-realce)}
.njp-site-header.is-campanha .njp-header-main .njp-cep-header-trigger svg{color:var(--camp-realce)}
.njp-site-header.is-campanha .njp-header-main .njp-cep-header-line1{color:var(--camp-texto-suave)}
.njp-site-header.is-campanha .njp-header-main .njp-cep-header-line2{color:var(--camp-texto)}
.njp-category-nav.is-campanha{background:var(--camp-fundo);border-top:1px solid var(--camp-linha);border-bottom-color:var(--camp-linha);box-shadow:0 -1px 0 var(--camp-fundo)}
.njp-category-nav.is-campanha a{color:var(--camp-texto-suave)}
.njp-category-nav.is-campanha a:hover{color:var(--camp-realce)}

/* ---------- Campanha ligada: a loja inteira (html.njp-campanha / .njp-campanha-escura, header.php) ----------
   A paleta já troca sozinha (NJP_Theme_Settings::paleta_da_campanha()). Aqui só o que tem cor PRÓPRIA e não
   acompanharia: foto de produto num quadro branco (as fotos já vêm com fundo branco), avaliações do Google num cartão
   branco (o widget usa letras cinza), formas de pagamento sobre branco (ícones escuros), logo do rodapé em branco,
   listas dos campos de seleção no modo escuro do navegador, e uma linha fina marcando a faixa de destaque (o fundo
   dela e o da página passam a ser o mesmo). */
html.njp-campanha-escura{color-scheme:dark}
html.njp-campanha .njp-prod-media,html.njp-campanha .njp-pdp-gallery-main{background:#fff}
html.njp-campanha .njp-reviews-embed{background:#fff;border-color:transparent}
html.njp-campanha .njp-foot-payment-img{background:#fff;padding:5px 10px;border-radius:8px;box-sizing:content-box}
html.njp-campanha-escura .njp-foot-logo img{filter:brightness(0) invert(1)}
html.njp-campanha .njp-section.is-destaque{border-top:1px solid var(--border);border-bottom:1px solid var(--border)}

/*
 * ---------- hero (usado na home) ----------
 * Virou slider de verdade (25/09/2026): cada ".njp-hero-slide" cobre o
 * fundo inteiro (imagem, ou a cor --bg quando o banner não tem imagem),
 * empilhados uns sobre os outros (position:absolute) — só o ".is-active"
 * fica visível (opacity, ver hero-slider.js pra troca). O buscador de
 * veículo (".njp-hero-finder-wrap") NÃO faz parte do vaivém: fica por
 * cima de tudo, sempre no mesmo lugar, "pointer-events:none" no wrap +
 * "auto" só no cartão, pra não bloquear clique nas bolinhas/setas atrás
 * dele. Imagem mobile (var(--njp-hero-bg-mobile)) é opcional — sem ela, a
 * media query cai pra mesma variável do desktop sozinha (ver o fallback
 * no var() abaixo), nunca fica sem imagem no celular à toa.
 */
.njp-hero{position:relative;overflow:hidden;min-height:560px}
.njp-hero-slides{position:absolute;inset:0}
/* Troca sem "clarão" (27/10/2026, revisão): o slide que sai fica inteiro por baixo até o novo terminar de aparecer (0,6s) —
   antes ele sumia na hora e o novo surgia sobre o fundo cinza da página, com o texto lavado no meio da troca. */
.njp-hero-slide{position:absolute;inset:0;background:var(--bg);background-image:var(--njp-hero-bg,none);background-size:cover;background-position:center;opacity:0;visibility:hidden;transition:opacity 0s .6s,visibility 0s .6s}
.njp-hero-slide.is-active{opacity:1;visibility:visible;z-index:1;transition:opacity .6s ease}
@media (prefers-reduced-motion:reduce){
  .njp-hero-slide,.njp-hero-slide.is-active{transition:none}
}
/*
 * Escurecido mais forte (27/10/2026, dono: "precisa aumentar o hover do slider, o texto está ruim de ler"). Medido pixel a
 * pixel com a imagem real (o lado esquerdo dela é quase branco): o fim do texto de apoio ficava com contraste 3,4 no
 * computador (mínimo recomendado: 4,5) — o escuro caía pra .5 já em 40% da tela, antes de o texto acabar. Agora o escuro
 * acompanha a coluna do texto (até 450px depois da margem do .njp-wrap: max(470px, 50% - 150px)) e só depois some, em
 * qualquer largura de tela; o pior ponto foi pra 6,8. 1ª linha = reserva pra navegador sem max() dentro do degradê.
 */
.njp-hero-slide-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,15,40,.84) 0%,rgba(5,15,40,.7) 36%,rgba(5,15,40,.42) 52%,rgba(5,15,40,0) 72%);background:linear-gradient(90deg,rgba(5,15,40,.84) 0%,rgba(5,15,40,.7) max(470px,50% - 150px),rgba(5,15,40,.42) max(660px,50% + 40px),rgba(5,15,40,0) max(920px,50% + 300px))}
.njp-hero-slide-content{position:relative;z-index:2;height:100%;display:flex;align-items:center}
.njp-hero-copy{color:var(--ink);max-width:600px}
.njp-hero-slide.has-image .njp-hero-copy{color:#fff}
.njp-hero-slide.has-image .njp-hero-copy .njp-lede{color:rgba(255,255,255,.92)}
/* Sombra leve nas letras sobre foto: segura a leitura onde a imagem tem ponto muito claro (farol, carroceria branca). */
.njp-hero-slide.has-image .njp-hero-copy h1,.njp-hero-slide.has-image .njp-hero-copy .njp-lede{text-shadow:0 1px 3px rgba(5,15,40,.55)}
.njp-hero-image{display:none} /* campo antigo (item 7, versão de 1 imagem só) — mantido só pra não quebrar se algum cache servir HTML velho; o slider não usa mais esta classe */
.njp-hero-eyebrow{display:inline-flex;align-items:center;gap:8px;background:var(--red);color:var(--on-red);border-radius:999px;padding:6px 14px;font-size:12.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;margin-bottom:18px}
.njp-hero-eyebrow .njp-icon{width:14px;height:14px;color:var(--amber)}
/* overflow-wrap: endereço ou cupom comprido sem espaço quebra em vez de alargar o banner pra fora da tela no celular. */
.njp-hero h1{font-size:52px;line-height:.98;font-weight:800;overflow-wrap:anywhere}
.njp-hero p.njp-lede{font-family:var(--font-body);font-size:16.5px;max-width:44ch;margin:16px 0 0;line-height:1.5;overflow-wrap:anywhere}

.njp-hero-finder-wrap{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:flex-end;pointer-events:none}
.njp-hero-finder-wrap .njp-finder-card{pointer-events:auto;width:100%;max-width:420px}

.njp-hero-dots{position:absolute;left:50%;bottom:20px;transform:translateX(-50%);display:flex;gap:6px;z-index:4}
.njp-hero-dots span{width:22px;height:4px;border-radius:2px;background:rgba(255,255,255,.5);cursor:pointer}
.njp-hero-dots span.is-on{background:var(--red);width:32px}
/* Setas embaixo, dos dois lados das bolinhas (27/10/2026, revisão): no meio da altura, até ~1310px de tela, a "‹" cobria o
   começo do título e a "›" a borda do cartão do buscador (por cima do campo "Versão" — clicar ali trocava o banner). Embaixo
   não há texto nem cartão. Até 980px elas somem (bolinhas ficam). */
.njp-hero-nav{position:absolute;bottom:2px;width:40px;height:40px;padding:0;border-radius:50%;background:var(--surface);border:1px solid var(--border);display:grid;place-items:center;cursor:pointer;z-index:4;box-shadow:0 8px 20px -10px rgba(5,15,40,.3)}
.njp-hero-nav.is-prev{left:calc(50% - 130px)}
.njp-hero-nav.is-next{right:calc(50% - 130px)}
.njp-hero-nav .njp-icon{width:17px;height:17px;color:var(--ink)}
.njp-hero-nav.is-prev .njp-icon{transform:rotate(180deg)}
.njp-hero-nav:hover{border-color:var(--red)}
.njp-hero-nav:hover .njp-icon{color:var(--red)}

/*
 * Base pra qualquer botão ".btn-wpce-action" sem estilo mais específico —
 * pedido 17/09/2026 (achado no botão "Carregar mais veículos", sem
 * nenhuma aparência). A versão colorida antiga (azul) só existe pro tema
 * antigo agora — ver o bloco condicional em wpce-supabase/class-wpce-
 * assets.php. Fica ANTES de .njp-finder-submit de propósito: o botão do
 * buscador usa as duas classes juntas, e precisa que a dele ganhe.
 */
.btn-wpce-action{background:var(--surface-2);color:var(--ink);border:1.5px solid var(--border);border-radius:10px;height:40px;padding:0 20px;font-weight:700;font-size:13px;font-family:inherit;cursor:pointer}
.btn-wpce-action:hover{border-color:var(--red);color:var(--red)}

.njp-finder-card{background:var(--surface);border-radius:16px;padding:22px;box-shadow:0 22px 50px -18px rgba(0,0,0,.35);border:1px solid var(--border)}
.njp-finder-tabs{display:flex;gap:4px;background:var(--surface-2);padding:4px;border-radius:10px;margin-bottom:16px}
.njp-finder-tab{flex:1;text-align:center;padding:9px;border-radius:8px;font-weight:700;font-size:13.5px;cursor:pointer;color:var(--ink-soft)}
.njp-finder-tab.is-active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.njp-finder-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.njp-finder-grid select,.njp-finder-plate input{width:100%;height:44px;border-radius:8px;border:1.5px solid var(--border);background:var(--surface);color:var(--ink);font-family:var(--font-body);font-size:14px;padding:0 12px}
.njp-finder-plate{display:none}
.njp-finder-plate.is-show{display:block}
.njp-finder-select.is-hide{display:none}
.njp-finder-plate input{text-transform:uppercase;letter-spacing:3px;font-family:var(--font-mono);text-align:center;font-size:17px}
/* Mesmo visual do "Comprar Agora" (pedido 28/09/2026): o buscador é o maior diferencial da loja e precisava chamar atenção. */
.njp-finder-submit{margin-top:12px;width:100%;height:52px;border:none;border-radius:10px;background:var(--red);color:var(--on-red);font-family:var(--font-body);font-weight:700;font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 8px 18px -6px var(--red-glow);transition:background .15s}
/* A cor precisa ser repetida: sem ela, ".btn-wpce-action:hover" pintava o texto de vermelho em cima do fundo vermelho. */
.njp-finder-submit:hover{background:var(--red-deep);color:var(--on-red)}
.njp-finder-submit .njp-icon{width:18px;height:18px;flex-shrink:0}
.njp-finder-hint{margin:10px 0 0;font-size:11.5px;color:var(--ink-soft);text-align:center}

/*
 * Versão do buscador pra página de Produto (pedido 17/09/2026) — mesmas
 * classes do buscador da Home, só que sombra mais discreta (aqui ele fica
 * dentro do fluxo da página, não flutuando sobre uma imagem) e campos com
 * rótulo (label) próprio, e no desktop os 4 campos + botão ficam numa
 * linha só, em vez de grade 2x2.
 */
.njp-pdp-finder{box-shadow:none;margin-bottom:24px}
.njp-shop-finder{box-shadow:none;margin-bottom:20px}
.njp-finder-card-title{display:flex;align-items:center;gap:8px;font-family:var(--font-display);font-size:15px;font-weight:700;color:var(--ink);text-transform:uppercase;letter-spacing:.3px;margin-bottom:14px}
.njp-finder-card-title .njp-icon{width:18px;height:18px;color:var(--red)}
.njp-finder-field label{display:block;font-size:11px;font-weight:600;color:var(--ink-soft);margin-bottom:5px}
/* Produto e Loja: o botão mora DENTRO da grade — no celular ocupa a linha inteira; no computador vira a 5ª coluna, da altura dos campos. */
.njp-pdp-finder .njp-finder-submit,
.njp-shop-finder .njp-finder-submit{margin-top:0;grid-column:1 / -1}
@media (min-width:900px){
	.njp-pdp-finder .njp-finder-grid,
	.njp-shop-finder .njp-finder-grid{grid-template-columns:repeat(4,1fr) auto;align-items:end;gap:12px}
	.njp-pdp-finder .njp-finder-submit,
	.njp-shop-finder .njp-finder-submit{grid-column:auto;width:auto;height:44px;padding:0 22px;white-space:nowrap}
	.njp-pdp-finder .njp-finder-plate,
	.njp-shop-finder .njp-finder-plate{grid-column:1 / 5}
}
.njp-opcional{font-weight:400;color:var(--ink-soft)}

/*
 * Busca por placa nos buscadores (19/10/2026): abas e campo montados pelo wpce-supabase/assets/js/script.js, só com
 * "Busca por placa" ligada no Personalizar — as abas e o .njp-finder-plate já existiam aqui desde o protótipo aprovado.
 * Na aba "Pela placa" os selects somem e o campo da placa ocupa a linha; o botão fica (na Loja/Produto ele mora na
 * grade). Campo com cara de placa Mercosul (faixa azul "BRASIL").
 */
.njp-finder-tab{border:0;background:none;font-family:inherit}
.njp-finder-tab:focus-visible{outline:2px solid var(--red);outline-offset:1px}
.wpce-sys-main.is-placa .njp-finder-grid > select,
.wpce-sys-main.is-placa .njp-finder-grid > .njp-finder-field{display:none}
.njp-finder-plate{grid-column:1 / -1}
.wpce-sys-main .njp-placa{display:block;margin:0;border:2px solid var(--ink);border-radius:8px;overflow:hidden;background:#fff;cursor:text}
.wpce-sys-main .njp-placa:focus-within{border-color:var(--red)}
.njp-placa-faixa{display:block;padding:2px 0;background:#1f3d99;color:#fff;font-family:var(--font-body);font-size:9px;font-weight:700;letter-spacing:3px;line-height:1.3;text-align:center}
.njp-finder-plate .njp-placa input{height:44px;border:0;border-radius:0;background:#fff;color:#111;font-family:var(--font-mono);font-size:22px;font-weight:600;letter-spacing:5px;text-align:center;text-transform:uppercase;padding:0 8px}
.njp-finder-plate .njp-placa input:focus{outline:none}
.njp-finder-plate .njp-placa input::placeholder{color:#B8BDC7}

/*
 * Modal "Qual é o seu carro?" (19/10/2026, template-parts/garagem-modal.php — substitui o modal antigo do wpce-supabase):
 * caixa no meio da tela no computador, folha que sobe de baixo no celular. Campos e botão iguais aos do buscador da
 * Home (.njp-finder-*).
 */
/* Mesma moldura pra outros modais do site (.njp-modal*, 19/10/2026 — o primeiro: "Formas de entrega" da página de
   produto, NJP_Shipping_Display — dono: "ficou incrível… faça parecido"). */
.njp-garagem,.njp-modal{position:fixed;inset:0;z-index:99990;display:flex;align-items:center;justify-content:center;padding:20px}
.njp-garagem[hidden],.njp-modal[hidden]{display:none}
.njp-garagem-fundo,.njp-modal-fundo{position:absolute;inset:0;background:rgba(5,15,40,.55);opacity:0;transition:opacity .2s}
.njp-garagem-caixa,.njp-modal-caixa{position:relative;width:100%;max-width:460px;max-height:calc(100vh - 40px);overflow-y:auto;overscroll-behavior:contain;background:var(--surface);border-radius:18px;padding:24px;box-shadow:0 30px 70px -20px rgba(5,15,40,.5);opacity:0;transform:translateY(12px) scale(.98);transition:opacity .2s,transform .2s}
.njp-garagem-caixa:focus,.njp-modal-caixa:focus{outline:none}
.njp-garagem.is-aberto .njp-garagem-fundo,.njp-modal.is-aberto .njp-modal-fundo{opacity:1}
.njp-garagem.is-aberto .njp-garagem-caixa,.njp-modal.is-aberto .njp-modal-caixa{opacity:1;transform:none}
.njp-garagem-fechar,.njp-modal-fechar{position:absolute;top:12px;right:12px;display:grid;place-items:center;width:36px;height:36px;padding:0;border:0;border-radius:50%;background:var(--surface-2);color:var(--ink);cursor:pointer}
.njp-garagem-fechar .njp-icon,.njp-modal-fechar .njp-icon{width:16px;height:16px}
.njp-garagem-fechar:hover,.njp-modal-fechar:hover{background:var(--red-tint);color:var(--red)}
.njp-garagem-topo,.njp-modal-topo{display:flex;align-items:center;gap:14px;margin:0 40px 18px 0}
.njp-garagem-icone,.njp-modal-icone{display:grid;place-items:center;flex-shrink:0;width:48px;height:48px;border-radius:14px;background:var(--red-tint);color:var(--red)}
.njp-modal-icone.is-verde{background:var(--green-bg);color:var(--green)}
.njp-garagem-icone .njp-icon,.njp-modal-icone .njp-icon{width:26px;height:26px}
.njp-garagem-titulo,.njp-modal-titulo{margin:0;font-family:var(--font-display);font-size:22px;font-weight:800;line-height:1.1;text-transform:uppercase;letter-spacing:.2px}
.njp-garagem-sub,.njp-modal-sub{margin:4px 0 0;font-size:13px;color:var(--ink-soft);line-height:1.4}
.njp-modal-sub a{color:var(--red);font-weight:600}
.njp-modal-nota{display:flex;gap:8px;margin:16px 0 0;font-size:12px;color:var(--ink-soft);line-height:1.5}
.njp-modal-nota .njp-icon{width:15px;height:15px;flex-shrink:0;margin-top:1px}
/* Formas de entrega (NJP_Shipping_Display::lista_opcoes): um cartão por forma — nome, quando chega, preço. */
.njp-frete-opcoes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.njp-frete-opcao{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1.5px solid var(--border);border-radius:12px;background:var(--surface)}
.njp-frete-opcao-info{display:flex;flex-direction:column;gap:2px;min-width:0}
.njp-frete-opcao-info strong{font-size:14px;line-height:1.3;color:var(--ink)}
.njp-frete-opcao-info span{font-size:12.5px;font-weight:600;color:var(--green)}
.njp-frete-opcao-preco{flex-shrink:0;font-size:15px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.njp-frete-opcao-preco.is-gratis{color:var(--green)}
/* Simulador de CEP dentro do modal (visitante): campo e botão na altura dos outros campos do site. */
.njp-modal .njp-shipping-sim-input{height:44px;font-size:15px;letter-spacing:.5px}
.njp-modal .njp-shipping-sim-btn{height:44px;padding:0 18px;border:0;border-radius:8px;background:var(--ink);color:var(--surface)}
.njp-modal .njp-shipping-sim-btn:hover{background:var(--red);color:var(--on-red)}
.njp-modal .njp-shipping-sim-results{margin-top:4px}
.njp-garagem-atual{display:flex;align-items:center;gap:8px;margin:0 0 16px;padding:10px 12px;border-radius:10px;background:var(--green-bg);color:var(--green);font-size:13px;line-height:1.35}
.njp-garagem-atual[hidden]{display:none}
.njp-garagem-atual .njp-icon{width:16px;height:16px;flex-shrink:0}
.njp-garagem-atual strong{color:var(--ink)}
.njp-garagem-dica{text-align:left}
.njp-garagem-gerenciar{display:block;margin-top:14px;text-align:center;font-size:13px;font-weight:600;color:var(--red);text-decoration:none}
.njp-garagem-gerenciar:hover{text-decoration:underline}
/*
 * Pop-ups (19/10/2026 — template-parts/popups.php + assets/js/popups.js; conteúdo e regras em Personalizar → "Pop-up 1/2/3").
 * "Centro": janela no meio, fundo escurecido. "Canto": cartão no canto, sem escurecer (no celular, faixa acima do menu de
 * baixo). Animação de entrada pela classe njp-popup--anim-*: a caixa nasce deslocada/encolhida e vai pro lugar no .is-aberto.
 */
.njp-popup{position:fixed;inset:0;z-index:99980;display:flex;align-items:center;justify-content:center;padding:20px}
.njp-popup[hidden]{display:none}
body.njp-popup-aberto{overflow:hidden}
.njp-popup-fundo{position:absolute;inset:0;background:rgba(5,15,40,.6);opacity:0;transition:opacity .3s}
.njp-popup.is-aberto .njp-popup-fundo{opacity:1}
.njp-popup-caixa{position:relative;width:100%;max-width:440px;max-height:calc(100vh - 40px);overflow-y:auto;overscroll-behavior:contain;background:var(--surface);border-radius:18px;box-shadow:0 30px 70px -20px rgba(5,15,40,.55);opacity:0;transition:opacity .3s,transform .4s cubic-bezier(.2,.8,.2,1)}
.njp-popup-caixa:focus{outline:none}
.njp-popup--anim-zoom .njp-popup-caixa{transform:scale(.86)}
.njp-popup--anim-subir .njp-popup-caixa{transform:translateY(70px)}
.njp-popup--anim-lateral .njp-popup-caixa{transform:translateX(90px)}
.njp-popup.is-aberto .njp-popup-caixa{opacity:1;transform:none}
.njp-popup-fechar{position:absolute;top:10px;right:10px;z-index:2;display:grid;place-items:center;width:36px;height:36px;padding:0;border:0;border-radius:50%;background:var(--surface);color:var(--ink);box-shadow:0 4px 12px -4px rgba(5,15,40,.35);cursor:pointer}
.njp-popup-fechar .njp-icon{width:16px;height:16px}
.njp-popup-fechar:hover{color:var(--red)}
.njp-popup-imagem{display:block;width:100%;height:auto;max-height:300px;object-fit:cover;border-radius:18px 18px 0 0;background:var(--surface-2)}
.njp-popup.is-so-imagem .njp-popup-imagem{max-height:none;border-radius:18px}
.njp-popup.is-so-imagem .njp-popup-corpo{padding-top:12px}
.njp-popup-imagem-link{display:block}
.njp-popup-corpo{padding:24px 24px 20px;text-align:center}
.njp-popup:not(.tem-imagem) .njp-popup-corpo{padding-top:34px}
.njp-popup-titulo{margin:0 0 8px;font-family:var(--font-display);font-size:26px;font-weight:800;line-height:1.05;text-transform:uppercase;letter-spacing:.2px;color:var(--ink)}
.njp-popup:not(.tem-imagem) .njp-popup-titulo{padding:0 26px}
.njp-popup-texto{font-size:14.5px;line-height:1.5;color:var(--ink-soft)}
.njp-popup-texto p{margin:0 0 8px}
.njp-popup-texto a{color:var(--red)}
.njp-popup-cupom{display:flex;align-items:center;gap:10px;margin:16px 0 4px;padding:10px 10px 10px 14px;border:2px dashed var(--red);border-radius:12px;background:var(--red-tint);text-align:left}
.njp-popup-cupom-rotulo{font-size:10.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--ink-soft)}
.njp-popup-cupom-codigo{flex:1;min-width:0;overflow-wrap:anywhere;font-family:var(--font-mono);font-size:18px;letter-spacing:1.5px;color:var(--ink)}
.njp-popup-copiar{flex-shrink:0;height:36px;padding:0 14px;border:0;border-radius:8px;background:var(--ink);color:var(--surface);font-family:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
.njp-popup-copiar.is-copiado{background:var(--green);color:#fff}
.njp-popup-botao{display:flex;align-items:center;justify-content:center;width:100%;height:50px;margin-top:16px;border-radius:10px;background:var(--red);color:var(--on-red);font-weight:700;font-size:15px;text-decoration:none;box-shadow:0 8px 18px -6px var(--red-glow)}
.njp-popup-botao:hover{background:var(--red-deep);color:var(--on-red)}
/* Botão do WhatsApp (verde de sempre do site — .njp-btn-whatsapp/.njp-zap-fab); com outro botão em cima, 10px entre eles. */
.njp-popup-zap{gap:10px;background:#25D366;color:#fff;box-shadow:0 8px 18px -6px rgba(37,211,102,.55)}
.njp-popup-zap:hover{background:#1EBE5A;color:#fff}
.njp-popup-zap .njp-icon{width:22px;height:22px;flex-shrink:0}
.njp-popup-botao + .njp-popup-botao{margin-top:10px}
.njp-popup-agora-nao{display:block;margin:12px auto 0;padding:4px 8px;border:0;background:none;color:var(--ink-soft);font-family:inherit;font-size:13px;text-decoration:underline;cursor:pointer}
.njp-popup-agora-nao:hover{color:var(--ink)}
/* Cartão no canto: sem fundo escuro, sem travar a página, abaixo dos painéis laterais (carrinho, menu). */
.njp-popup--canto{inset:auto 20px 20px auto;z-index:89;display:block;width:min(360px,calc(100vw - 40px));padding:0}
.njp-popup--canto .njp-popup-caixa{max-height:calc(100vh - 120px);margin-left:auto}
.njp-popup--canto .njp-popup-titulo{font-size:21px}
.njp-popup--canto .njp-popup-imagem{max-height:180px}
/* Com um pop-up na tela, o convite de CEP (z-index 99998, por cima de tudo) espera — mesmo jeito do aviso de cookies. */
body.njp-popup-aberto #njp-cep-banner,body.njp-popup-canto #njp-cep-banner{visibility:hidden}
@media (min-width:1201px){
  /* Computador: o cartão do canto fica em cima do botão do WhatsApp (56px + 24px), sem tampar. */
  body:has(.njp-zap-fab) .njp-popup--canto{bottom:92px}
}
@media (max-width:560px){
  .njp-popup--centro{padding:16px}
  .njp-popup-titulo{font-size:23px}
  .njp-popup-corpo{padding:20px 18px 18px}
}
@media (max-width:1200px){
  /* Celular/tablet: acima do menu de baixo (62px), no lugar do botão do WhatsApp enquanto estiver aberto (um de cada vez
     no pé da tela, como o convite de CEP). */
  .njp-popup--canto{inset:auto 12px calc(74px + env(safe-area-inset-bottom,0px)) 12px;width:auto}
  body.njp-popup-canto .njp-zap-fab{visibility:hidden}
}

@media (max-width:640px){
  .njp-garagem,.njp-modal{align-items:flex-end;padding:0}
  .njp-garagem-caixa,.njp-modal-caixa{max-width:none;max-height:92vh;border-radius:20px 20px 0 0;padding:20px 20px calc(20px + env(safe-area-inset-bottom));transform:translateY(100%);transition:transform .25s ease,opacity .2s}
  .njp-garagem.is-aberto .njp-garagem-caixa,.njp-modal.is-aberto .njp-modal-caixa{transform:none}
  .njp-garagem-titulo,.njp-modal-titulo{font-size:20px}
}

/* ---------- faixa de confiança ---------- */
.njp-trust-strip{background:var(--surface-2);color:var(--ink);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.njp-trust-strip .njp-wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:0}
.njp-trust-item{display:flex;align-items:center;gap:12px;padding:18px;border-left:1px solid var(--border)}
.njp-trust-item:first-child{border-left:none}
.njp-trust-item .njp-icon{width:26px;height:26px;color:var(--red);flex-shrink:0}
.njp-trust-item strong{display:block;font-size:13.5px;font-weight:700}
.njp-trust-item span{display:block;font-size:11.5px;color:var(--ink-soft)}

/* ---------- banners promocionais ---------- */
/*
 * Cartões promocionais (template-parts/home/section-promo.php). 30/10/2026, junto com o conserto dos cartões que só
 * apareciam no Personalizar: sem style no HTML (classe .njp-promo-section), grade que se ajusta à quantidade de cartões
 * (--njp-promo-cols, como "Navegue por categoria"), cartão inteiro clicável com o mesmo "sobe ao passar o mouse" dos
 * cartões de categoria, e foco visível no teclado.
 * Sem respiro embaixo: a seção seguinte já tem o dela em cima. Mas se a seguinte tiver FUNDO (vitrine cinza ou "Destaque
 * de promoção", faixa de confiança — a ordem é do Personalizar), ela começaria encostada nos cartões: aí o respiro volta.
 */
/* .njp-section.njp-promo-section (2 classes): senão o .njp-section{padding:46px 0}, que vem depois no arquivo, vencia. */
.njp-section.njp-promo-section{padding-bottom:0}
.njp-promo-section:has(+ .njp-section[style*="background"], + .njp-section.is-destaque, + .njp-trust-strip){padding-bottom:46px}
.njp-promo-grid{display:grid;grid-template-columns:repeat(var(--njp-promo-cols,3),minmax(0,1fr));gap:16px}
.njp-promo-card{border-radius:14px;padding:24px;display:flex;flex-direction:column;gap:8px;color:var(--ink);text-decoration:none}
/* Oferta vencida (promo-cards.js põe hidden): sem isto o display:flex acima vencia o hidden e o cartão ficava na tela. */
.njp-promo-card[hidden],.njp-promo-section[hidden]{display:none}
.njp-promo-texto{display:flex;flex-direction:column;gap:8px}
a.njp-promo-card{transition:transform .2s,border-color .2s}
a.njp-promo-card:hover{transform:translateY(-3px)}
a.njp-promo-card.is-tint-white:hover{border-color:var(--red)}
a.njp-promo-card:focus-visible{outline:2px solid var(--red);outline-offset:3px}
@media (max-width:980px){
  a.njp-promo-card:hover{transform:none}
}
@media (prefers-reduced-motion:reduce){
  a.njp-promo-card{transition:none}
  a.njp-promo-card:hover{transform:none}
}
.njp-promo-card .njp-promo-icon{width:32px;height:32px;margin-bottom:6px;flex-shrink:0}
.njp-promo-card .njp-promo-icon.is-imagem{border-radius:8px;object-fit:cover}
.njp-promo-card h3{font-size:21px;font-weight:700;line-height:1.15}
.njp-promo-card p{font-size:13px;color:var(--ink-soft);margin:0 0 6px;max-width:28ch;line-height:1.45}
.njp-promo-card .njp-promo-link{margin-top:auto;font-size:13px;font-weight:700;text-decoration:none;display:inline-flex;align-items:center;gap:4px}
.njp-promo-card .njp-promo-link .njp-icon{width:13px;height:13px}
.njp-promo-card.is-tint-red{background:var(--red-tint)}
.njp-promo-card.is-tint-red .njp-promo-icon{color:var(--red)}
.njp-promo-card.is-tint-red .njp-promo-link{color:var(--red-deep)}
.njp-promo-card.is-tint-grey{background:var(--surface-2)}
/* --ink, não --navy (30/10/2026): com a campanha (Black Friday) ligada, o --navy vira um cinza quase igual ao fundo do
   cartão — ícone e convite sumiam (contraste 1,2). Nas cores de sempre a diferença não se nota. */
.njp-promo-card.is-tint-grey .njp-promo-icon{color:var(--ink)}
.njp-promo-card.is-tint-grey .njp-promo-link{color:var(--ink)}
html.njp-campanha .njp-promo-card.is-tint-grey{border:1px solid var(--border)}
.njp-promo-card.is-tint-white{background:var(--surface);border:1px solid var(--border)}
.njp-promo-card.is-tint-white .njp-promo-icon{color:var(--red)}
.njp-promo-card.is-tint-white .njp-promo-link{color:var(--red-deep)}
/* Um cartão só (os outros dois desligados): deitado — ícone, texto e convite na mesma linha. Em pé, virava uma faixa
   larga quase vazia (o texto tem no máximo 28 letras por linha). */
@media (min-width:981px){
  .njp-promo-grid.is-n1 .njp-promo-card{flex-direction:row;align-items:center;gap:20px}
  .njp-promo-grid.is-n1 .njp-promo-card .njp-promo-icon{margin-bottom:0}
  .njp-promo-grid.is-n1 .njp-promo-texto{flex:1;min-width:0}
  .njp-promo-grid.is-n1 .njp-promo-card p{max-width:none;margin:0}
  .njp-promo-grid.is-n1 .njp-promo-card .njp-promo-link{margin-top:0;flex-shrink:0}
}
/* Cronômetro dentro do cartão (fim da oferta, 30/10/2026): o mesmo das vitrines, um pouco menor. */
.njp-promo-card .njp-countdown{margin-top:2px;flex-wrap:wrap}
.njp-promo-card .njp-countdown-tempo{height:28px;padding:0 10px;font-size:15px}
/*
 * Arte de fundo (30/10/2026, escolha do dono): a imagem cobre o cartão e o texto fica branco sobre o MESMO escurecido do
 * banner principal no celular (.56 → .8 de cima pra baixo) — medido lá: mesmo sobre branco puro, o título passa de 4:1 e o
 * texto de 5,9:1. "Só a arte" (arte que já traz o texto): sem escurecido e sem o texto na tela.
 */
.njp-promo-card.has-arte{position:relative;isolation:isolate;overflow:hidden;min-height:210px;background:var(--navy);border-color:transparent;color:#fff}
.njp-promo-arte{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover}
.njp-promo-card.has-arte::before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(5,15,40,.56) 0%,rgba(5,15,40,.68) 40%,rgba(5,15,40,.8) 100%)}
.njp-promo-card.has-arte h3,.njp-promo-card.has-arte .njp-promo-icon,.njp-promo-card.has-arte .njp-promo-link{color:#fff}
.njp-promo-card.has-arte p{color:rgba(255,255,255,.92)}
.njp-promo-card.has-arte h3,.njp-promo-card.has-arte p{text-shadow:0 1px 3px rgba(5,15,40,.55)}
.njp-promo-card.has-arte .njp-countdown{color:rgba(255,255,255,.92)}
/* Cartão com arte nunca ganha borda (nem no "sobe" do branco, nem na campanha). */
.njp-promo-card.has-arte,a.njp-promo-card.has-arte:hover,html.njp-campanha .njp-promo-card.has-arte{border-color:transparent}
.njp-promo-card.is-so-arte::before{display:none}
/* Só a arte: no formato da arte recomendada (16:9, 800 × 450), pra o texto desenhado nela não ser cortado; com um cartão só
   (a linha inteira), a arte aparece inteira, centralizada. O cronômetro, se ligado, fica num selo por cima, no canto. */
.njp-promo-card.is-so-arte{min-height:0;aspect-ratio:16/9;justify-content:flex-end}
.njp-promo-grid.is-n1 .njp-promo-card.is-so-arte{aspect-ratio:auto;min-height:240px}
.njp-promo-grid.is-n1 .njp-promo-card.is-so-arte .njp-promo-arte{object-fit:contain}
.njp-promo-card.is-so-arte .njp-countdown{align-self:flex-start;padding:4px 4px 4px 10px;border-radius:10px;background:rgba(5,15,40,.72);color:#fff}
/*
 * Celular e tablet (30/10/2026, escolha do dono): fileira de arrastar, como as vitrines — um cartão por vez com a ponta do
 * próximo à vista, encaixando ao arrastar. Empilhados, os 3 ocupavam ~660px (quase uma tela); assim ficam ~250px.
 */
@media (max-width:980px){
  /* 6px em cima: a rolagem lateral corta o que passa da borda — com 2px, sumia o contorno de foco do teclado. */
  .njp-promo-grid{grid-auto-flow:column;grid-template-columns:none;grid-auto-columns:min(84%,380px);gap:12px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:20px;margin:0 -20px;padding:6px 20px 8px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .njp-promo-grid::-webkit-scrollbar{display:none}
  .njp-promo-grid > *{scroll-snap-align:start}
  .njp-promo-grid.is-n1{grid-auto-columns:100%}
  /* 2 cartões no tablet: dividem a largura (sem isso, de ~830 a 980px sobrava um vão à direita). */
  .njp-promo-grid.is-n2{grid-auto-columns:max(min(84%,380px),calc(50% - 6px))}
  .njp-promo-card{padding:20px}
}

/* ---------- seções, categorias, produtos, marcas ---------- */
.njp-section{padding:46px 0}
.njp-section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:20px}
/* Maiúsculo automático (25/09/2026, padronização) — mesmo tratamento que o eyebrow do banner principal e da faixa de avaliações já tinham (.njp-hero-eyebrow, .njp-reviews-eyebrow); faltava só aqui. Dono da loja digita como quiser no Personalizar, a tela sempre mostra maiúsculo. */
.njp-section-head h2{font-size:28px;text-transform:uppercase;letter-spacing:.3px}
.njp-section-head .njp-see-all{font-size:13px;font-weight:700;color:var(--red);text-decoration:none;white-space:nowrap}

/* Cronômetro de oferta das vitrines (item 14): título e cronômetro juntos à esquerda, "ver mais" à direita. Números
   em largura fixa (tabular-nums), pra etiqueta não mudar de tamanho a cada segundo. */
.njp-section-head{gap:12px}
.njp-section-head-titulo{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;min-width:0}
.njp-countdown{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--ink-soft)}
.njp-countdown[hidden]{display:none}
.njp-countdown-tempo{display:inline-flex;align-items:center;height:32px;padding:0 12px;border-radius:8px;background:var(--red);color:var(--on-red);font-family:var(--font-display);font-size:17px;font-weight:700;letter-spacing:.4px;font-variant-numeric:tabular-nums;white-space:nowrap;box-shadow:0 6px 14px -6px var(--red-glow)}
/* Destaque de promoção (item 15): faixa inteira na cor de destaque, em degradê pro tom escuro — o "ver mais", à
   direita, fica sobre o tom mais escuro (mais contraste pro texto pequeno). Cartões continuam brancos por cima.
   Cor branca só no título, link e cronômetro: o nome do produto herda a cor de fora e sumiria no cartão branco. */
.njp-section.is-destaque{background:linear-gradient(100deg,var(--camp-fundo) 0%,var(--camp-fundo-escuro) 100%)}
.njp-section.is-destaque .njp-section-head h2{color:var(--camp-texto)}
.njp-section.is-destaque .njp-section-head h2 .njp-icon{width:.85em;height:.85em;vertical-align:-.1em;margin-right:.3em;stroke-width:2;color:var(--camp-realce)}
.njp-section.is-destaque .njp-see-all{color:var(--camp-realce)}
.njp-section.is-destaque .njp-see-all:hover{text-decoration:underline}
.njp-section.is-destaque .njp-countdown{color:var(--camp-texto)}
.njp-section.is-destaque .njp-countdown-tempo{background:var(--camp-realce);color:var(--camp-sobre-realce);box-shadow:0 6px 14px -8px rgba(5,15,40,.5)}
/* Celular: cronômetro numa linha só dele, embaixo do título — título e "ver mais" continuam lado a lado em cima. */
@media (max-width:560px){
  .njp-section-head.has-countdown{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;column-gap:12px;row-gap:10px}
  .njp-section-head.has-countdown .njp-section-head-titulo{display:contents}
  .njp-section-head.has-countdown .njp-countdown{grid-column:1 / -1;grid-row:2}
  /* Destaque de promoção (22/10/2026, "o ícone da vitrine promocional não é visível em mobile"): o raio ficava escondido
     aqui desde 29/09, porque ao lado do "ver mais" até "Em promoção" quebrava linha. Agora o "ver mais" desce pra baixo
     do título (e do cronômetro): o título tem a largura toda e o raio volta. */
  .njp-section.is-destaque .njp-section-head,.njp-section.is-destaque .njp-section-head.has-countdown{display:flex;flex-direction:column;align-items:flex-start;gap:10px}
}

/*
 * Colunas dinâmicas (25/09/2026) — "--njp-cat-cols" vem do PHP (número
 * real de categorias mostradas, até 9). Sem a variável (ex.: a grade de
 * marcas/modelos de "Todos os Veículos", que reaproveita esta mesma
 * classe), cai no 9 de sempre. min() garante que telas menores não
 * espremam mais colunas do que o normal, mesmo com poucas categorias
 * numa tela grande.
 */
.njp-cat-row{display:grid;grid-template-columns:repeat(var(--njp-cat-cols,9),1fr);gap:10px}
.njp-cat-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 8px;text-align:center;text-decoration:none;color:var(--ink);transition:border-color .15s,transform .15s}
.njp-cat-card:hover{border-color:var(--red);transform:translateY(-2px)}
/* Ícone/imagem crescem um pouco com menos colunas (25/09/2026, pedido: "os componentes devem ficar um pouco maiores até preencher todo o espaço"), não só a largura do cartão. Tamanho normal (9 colunas) fica igual a sempre; clamp() trava um teto, pra não ficar gigante com pouquíssimas categorias. */
.njp-cat-card .njp-icon{width:clamp(30px,calc(30px + (9 - var(--njp-cat-cols,9)) * 2.2px),48px);height:clamp(30px,calc(30px + (9 - var(--njp-cat-cols,9)) * 2.2px),48px);color:var(--red);margin-bottom:8px}
.njp-cat-card .njp-cat-thumb{width:clamp(36px,calc(36px + (9 - var(--njp-cat-cols,9)) * 2.6px),58px);height:clamp(36px,calc(36px + (9 - var(--njp-cat-cols,9)) * 2.6px),58px);object-fit:cover;border-radius:8px;margin-bottom:8px}
.njp-cat-card span{display:block;font-size:12px;font-weight:600;line-height:1.25}
/* Logo de montadora (24/09/2026): mesma altura do ícone que substitui, largura livre até um teto — logos não são todos quadrados. */
.njp-cat-card .njp-cat-logo{height:30px;width:auto;max-width:100%;object-fit:contain;margin:0 auto 8px;display:block}

/*
 * "Navegue por categoria" da Home — redesenho de 15/10/2026 (template-parts/home/section-category.php): cartões grandes
 * com a foto em destaque (antes 36–58px, cortada em quadrado), nome, quantidade de peças e seta. Mesmas regras de
 * 25/09: sem sombra nenhuma, foto inteira (contain), sem escurecer. Foto JPG de fundo branco ("is-foto") se funde no
 * fundo claro da área da foto (multiply); recorte PNG ("is-recorte") já tem fundo transparente. Até 5 por linha
 * (--njp-cats-cols vem do PHP, equilibrado entre as linhas); abaixo de 900px vira carrossel de arrastar — em grade, o
 * tablet ficaria com uma última fileira de 1 ou 2 cartões soltos. Classes próprias (.njp-cats) — .njp-cat-row e
 * .njp-cat-card continuam valendo em "Todos os Veículos".
 */
.njp-cats{--njp-cats-max:5;--njp-cats-gap:16px;position:relative;display:flex;flex-wrap:wrap;justify-content:center;gap:var(--njp-cats-gap)}
.njp-cats-card{--njp-cats-n:min(var(--njp-cats-max),var(--njp-cats-cols,5));position:relative;flex:0 0 calc((100% - (var(--njp-cats-n) - 1) * var(--njp-cats-gap)) / var(--njp-cats-n));min-width:0;display:flex;flex-direction:column;padding:12px 12px 16px;background:var(--surface);border:1px solid var(--border);border-radius:18px;color:var(--ink);text-decoration:none;transition:border-color .2s,transform .2s}
.njp-cats-card:hover{border-color:var(--red);transform:translateY(-3px)}
/* Foto fora do fluxo e quadro quadrado (16/10/2026): mesmo problema da foto do cartão de produto (".njp-prod-media") —
   o Chrome já mostrava quadrado (a proporção 1,2 nunca valeu), o Safari alargava o quadro pra fora do cartão. */
.njp-cats-media{position:relative;order:-1;display:flex;align-items:center;justify-content:center;aspect-ratio:1;margin-bottom:14px;padding:10px;border-radius:12px;background:var(--bg);isolation:isolate}
.njp-cats-media img{position:absolute;inset:0;padding:inherit;display:block;width:100%;height:100%;object-fit:contain;transition:transform .3s ease}
.njp-cats-media.is-foto img{mix-blend-mode:multiply}
.njp-cats-card:hover .njp-cats-media img{transform:scale(1.06)}
.njp-cats-media.is-icone .njp-icon{width:42%;height:auto;aspect-ratio:1;padding:9%;border-radius:50%;background:var(--red-tint);color:var(--red);stroke-width:1.4;box-sizing:content-box}
.njp-cats-nome{padding:0 44px 0 6px;font-family:var(--font-display);font-size:18px;font-weight:800;line-height:1.1;letter-spacing:.2px;text-transform:uppercase;transition:color .2s}
.njp-cats-qtd{margin-top:3px;padding:0 44px 0 6px;font-size:12.5px;font-weight:600;color:var(--ink-soft)}
.njp-cats-seta{position:absolute;right:12px;bottom:16px;display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid var(--border);border-radius:50%;background:var(--surface);color:var(--ink);transition:background .2s,border-color .2s,color .2s}
.njp-cats-seta .njp-icon{width:16px;height:16px}
.njp-cats-card:hover .njp-cats-nome{color:var(--red)}
.njp-cats-card:hover .njp-cats-seta{background:var(--red);border-color:var(--red);color:var(--on-red)}
/* Campanha de fundo escuro: a foto ganha uma placa branca (mesma regra das fotos de produto), sem multiply. */
html.njp-campanha-escura .njp-cats-media{background:#fff}
@media (max-width:900px){
  .njp-cats{--njp-cats-gap:12px;flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:20px;margin:0 -20px;padding:2px 20px 8px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .njp-cats::-webkit-scrollbar{display:none}
  .njp-cats-card{flex:0 0 27%;scroll-snap-align:start}
  .njp-cats-card:hover{transform:none}
  .njp-cats-nome{font-size:16px}
}
@media (max-width:560px){
  .njp-cats-card{flex:0 0 42%;padding:10px 10px 14px;border-radius:16px}
  .njp-cats-media{margin-bottom:10px;padding:8px}
  .njp-cats-nome{padding:0 36px 0 4px;font-size:15px}
  .njp-cats-qtd{padding:0 36px 0 4px;font-size:11.5px}
  .njp-cats-seta{right:10px;bottom:14px;width:30px;height:30px}
}

/*
 * Página "Todas as Categorias" (25/09/2026, reescrita — pedido: hierarquia
 * de verdade, sem sombra nenhuma no site, sem cabeçalho escuro, miniatura
 * mostrando a foto inteira sem corte e sem escurecido). Uma seção por
 * categoria-mãe (reaproveita ".njp-section-head", mesmo título das seções
 * da Home) + cartões das subcategorias dela abaixo. Cartão de subcategoria
 * copia o mesmo espírito do cartão de produto da Loja (".njp-prod-media"):
 * fundo claro, "object-fit:contain" — a foto inteira sempre visível,
 * nunca cortada. Nenhuma regra de sombra ("box-shadow") neste bloco, de
 * propósito.
 */
.njp-cat-hier-group{margin-bottom:40px}
.njp-cat-hier-group:last-child{margin-bottom:0}
.njp-cat-hier-count{display:inline-block;font-size:13px;font-weight:500;color:var(--ink-soft);text-transform:none;letter-spacing:0;margin-left:10px}
.njp-cat-hier-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}
.njp-cat-hier-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden;text-decoration:none;color:var(--ink);display:flex;flex-direction:column;transition:border-color .15s,transform .15s}
.njp-cat-hier-card:hover{border-color:var(--red);transform:translateY(-2px)}
/* Foto fora do fluxo e ícone pela largura (16/10/2026): o ícone com "height:42%" virava 150px de altura (tamanho padrão
   de SVG) e esticava o quadro — subcategoria sem foto ficava bem mais alta que as com foto, e os nomes desalinhavam na
   mesma fileira. A foto (quadrada) também esticava: a proporção 1,2 nunca valeu. Agora todos são o mesmo quadrado. */
.njp-cat-hier-media{position:relative;aspect-ratio:1;background:var(--surface);display:grid;place-items:center;padding:12px}
.njp-cat-hier-media img{position:absolute;inset:0;padding:inherit;width:100%;height:100%;object-fit:contain}
.njp-cat-hier-media .njp-icon{width:42%;height:auto;aspect-ratio:1;color:var(--red)}
.njp-cat-hier-body{padding:10px 12px 12px;border-top:1px solid var(--border)}
.njp-cat-hier-body strong{display:block;font-size:13px;font-weight:700;line-height:1.3;margin-bottom:2px}
.njp-cat-hier-body span{font-size:11.5px;color:var(--ink-soft)}
@media(max-width:560px){
	.njp-cat-hier-group{margin-bottom:30px}
	.njp-cat-hier-row{grid-template-columns:repeat(3,1fr);gap:10px}
	.njp-cat-hier-body{padding:8px 8px 10px}
}

/* Marcas de PEÇA: carrossel da Home (.njp-marcas) e página "Todas as Marcas" (.njp-marcas-grid). Colunas vêm do Personalizar, via style do .njp-marcas. */
.njp-marcas{--njp-marcas-gap:14px}
.njp-marcas-stage{position:relative}
.njp-marcas-track{display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - (var(--njp-marcas-cols,6) - 1) * var(--njp-marcas-gap)) / var(--njp-marcas-cols,6));gap:var(--njp-marcas-gap);overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.njp-marcas-track::-webkit-scrollbar{display:none}
.njp-marcas-track:focus-visible{outline:2px solid var(--red);outline-offset:4px;border-radius:12px}
.njp-marcas.is-static .njp-marcas-track{justify-content:center}
.njp-marca-tile{scroll-snap-align:start;aspect-ratio:5/3;min-width:0;min-height:0;display:flex;align-items:center;justify-content:center;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:12px;color:var(--ink-soft);text-decoration:none;container-type:inline-size;transition:border-color .15s,color .15s}
a.njp-marca-tile:hover,a.njp-marca-tile:focus-visible,.njp-marca-card:hover .njp-marca-tile,.njp-marca-card:focus-visible .njp-marca-tile{border-color:var(--red);color:var(--ink)}
.njp-marca-tile img{display:block;width:100%;height:100%;min-width:0;min-height:0;object-fit:contain;transition:filter .2s,opacity .2s}
.njp-marca-nome{font-family:var(--font-display);font-weight:800;font-size:18px;font-size:clamp(13px,14cqi,24px);line-height:1.05;letter-spacing:.5px;text-transform:uppercase;text-align:center;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.njp-marcas.is-grayscale .njp-marca-tile img{filter:grayscale(1);opacity:.65}
.njp-marcas.is-grayscale a.njp-marca-tile:hover img,.njp-marcas.is-grayscale a.njp-marca-tile:focus-visible img{filter:none;opacity:1}
.njp-marcas-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:36px;height:36px;padding:0;border-radius:50%;background:var(--surface);border:1px solid var(--border);color:var(--ink);display:grid;place-items:center;cursor:pointer;transition:border-color .15s,color .15s}
.njp-marcas-nav[hidden]{display:none}
.njp-marcas-nav.is-prev{left:-16px}
.njp-marcas-nav.is-next{right:-16px}
.njp-marcas-nav .njp-icon{width:16px;height:16px}
.njp-marcas-nav.is-prev .njp-icon{transform:rotate(180deg)}
.njp-marcas-nav:hover,.njp-marcas-nav:focus-visible{border-color:var(--red);color:var(--red)}
.njp-marcas-dots{display:flex;justify-content:center;gap:6px;margin-top:14px}
.njp-marcas-dots[hidden]{display:none}
.njp-marcas-dots button{width:22px;height:16px;padding:6px 0;border:0;border-radius:2px;background:var(--border);background-clip:content-box;cursor:pointer;transition:width .2s,background-color .2s}
.njp-marcas-dots button.is-on{width:32px;background-color:var(--red)}
.njp-marcas-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px}
.njp-marca-card{display:flex;flex-direction:column;gap:8px;text-decoration:none;color:var(--ink)}
.njp-marca-total{font-size:12px;color:var(--ink-soft);text-align:center}
@media (max-width:980px){
  .njp-marcas-track{--njp-marcas-cols:var(--njp-marcas-cols-tablet,4)}
}
@media (max-width:560px){
  .njp-marcas{--njp-marcas-gap:10px}
  .njp-marcas-track{--njp-marcas-cols:var(--njp-marcas-cols-mobile,3)}
  .njp-marcas-nav{display:none}
  .njp-marca-tile{padding:10px 12px}
  .njp-marcas-grid{grid-template-columns:repeat(2,1fr);gap:10px}
}
@media (prefers-reduced-motion:reduce){
  .njp-marcas-track{scroll-behavior:auto}
}

.njp-prod-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
/* Vitrines da Home: produtos por linha vêm do Personalizar (--njp-vitrine-cols). Tablet continua com 2; celular é carrossel. */
@media (min-width:981px){.njp-prod-grid.njp-vitrine{grid-template-columns:repeat(var(--njp-vitrine-cols,4),1fr)}}
.njp-prod-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden;display:flex;flex-direction:column}
/* Serve no carro do cliente (vitrine com "compatíveis primeiro", item 16 — a classe vem do wpce-supabase/assets/js/script.js): borda verde dupla, sem mexer no tamanho do cartão. */
.njp-prod-card.is-compativel{border-color:var(--green);box-shadow:0 0 0 1px var(--green)}
/* Fundo branco (igual ao resto do cartão), não cinza: assim a "moldura" que
   sobra ao redor de fotos que não são quadradas fica invisível, em vez de
   parecer um espaço vazio sobrando. */
.njp-prod-media{aspect-ratio:1;background:var(--surface);display:grid;place-items:center;position:relative;text-decoration:none}
/*
 * Foto fora do fluxo (16/10/2026, print do iPhone: selo "Frete grátis" cortado e foto deslocada pra direita). Dentro do
 * fluxo, a foto quadrada "pedia" mais altura que a proporção do quadro (era 1,15): o Chrome só esticava a altura — por
 * isso o quadro sempre saiu quadrado —, e o Safari alargava junto, ~40px além do cartão. Fora do fluxo, o quadro segue
 * só a proporção, em qualquer navegador; e a proporção virou 1, o mesmo quadrado que sempre apareceu.
 */
.njp-prod-media img:not(.njp-prod-brand-logo){position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:14px}
.njp-prod-media svg.njp-icon{width:54%;height:54%;color:var(--ink-soft);opacity:.55;stroke-width:1.1}
/*
 * Selo(s) no canto da foto — desconto automático ("-X%") e/ou selo
 * personalizado por produto (pedido 21/09/2026, aba "Badge" do admin,
 * ver njparts_render_custom_badge em functions.php). Os dois cabem no
 * mesmo canto, empilhados, por isso viraram filhos de um wrapper comum em
 * vez de cada um se posicionar sozinho.
 */
.njp-prod-badges{position:absolute;top:9px;left:9px;z-index:1;display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.njp-prod-tag{background:var(--amber);color:var(--on-amber);font-size:10.5px;font-weight:800;padding:3px 8px;border-radius:5px;letter-spacing:.3px}
.njp-custom-badge{background:var(--red);color:var(--on-red);font-size:10.5px;font-weight:800;padding:3px 8px;border-radius:5px;letter-spacing:.3px}
.njp-custom-badge-style-2{border-radius:999px}
.njp-custom-badge-style-3{width:34px;height:34px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;text-align:center;font-size:9px;line-height:1.1}
.njp-pdp-badges{top:14px;left:14px}
.njp-pdp-badges .njp-custom-badge,.njp-pdp-badges .njp-prod-tag{font-size:12px;padding:5px 11px}
.njp-pdp-badges .njp-custom-badge-style-3{width:42px;height:42px;font-size:10.5px}
.njp-prod-brand-logo{position:absolute;top:9px;right:9px;width:36px;height:36px;object-fit:contain;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:4px}
.njp-prod-body{padding:14px 15px 16px;display:flex;flex-direction:column;gap:8px;flex:1}
.njp-prod-info{display:flex;flex-direction:column;gap:8px;min-width:0}
.njp-prod-meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
/* Etiqueta de venda UN / PAR / JG (21/10/2026 — NJP_Product_Quantity_Limits::etiqueta; regra do dono: sem mínimo = UN,
   mínimo 2 = PAR, acima de 2 = JG). Cartões, página de produto e carrinho lateral. UN discreta; PAR e JG em destaque,
   porque mudam a quantidade e o total. */
.njp-venda-tag{display:inline-flex;align-items:center;height:18px;padding:0 6px;border:1px solid var(--border);border-radius:4px;font-size:10.5px;font-weight:800;line-height:1;letter-spacing:.4px;white-space:nowrap;color:var(--ink-soft);vertical-align:middle}
.njp-venda-tag.is-par,.njp-venda-tag.is-jg{border-color:var(--ink);background:var(--ink);color:var(--surface)}
.njp-cart-item .njp-venda-tag{align-self:flex-start}
.njp-prod-brand{font-size:11px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--ink-soft)}
.njp-stars{position:relative;display:inline-flex;align-items:center;gap:4px;width:fit-content}
.njp-stars-outline,.njp-stars-filled{display:flex;gap:1px}
.njp-stars-outline{color:var(--border)}
.njp-stars-filled{position:absolute;left:0;top:0;overflow:hidden;color:var(--amber);white-space:nowrap}
.njp-star{width:13px;height:13px;fill:currentColor;flex-shrink:0}
.njp-stars-count{font-size:11px;color:var(--ink-soft);margin-left:2px}
.njp-prod-name{font-size:15.5px;font-weight:700;line-height:1.3;min-height:2.6em;text-decoration:none;display:block}
.njp-fit-line{font-size:12px;color:var(--ink-soft);font-family:var(--font-mono)}
.njp-compat-slot{display:block}
.njp-compat-slot:empty{display:none}
/* Caixa de compatibilidade do cartão (script.js do wpce-supabase, 15/10/2026): o estilo vem embutido; aqui só o "toque". */
.njp-compat-caixa--convite:hover{filter:brightness(.97)}
.njp-compat-caixa strong{font-weight:700}
.njp-badge{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;padding:3px 8px;border-radius:999px;width:fit-content}
.njp-badge.is-ok{background:var(--green-bg);color:var(--green)}
.njp-badge.is-unknown{background:var(--gray-badge-bg);color:var(--gray-badge)}
.njp-badge .njp-icon{width:10px;height:10px}
.njp-price-block{margin-top:auto;padding-top:8px;border-top:1px dashed var(--border)}
.njp-price-old{font-size:14px;color:var(--ink-soft);text-decoration:line-through}
.njp-price-pix{font-family:var(--font-display);font-size:30px;font-weight:700;color:var(--ink);line-height:1.15}
.njp-price-pix small{font-family:var(--font-body);font-size:13px;font-weight:700;color:var(--green)}
/* Parcelamento em destaque (negrito + verde) — pedido 20/09/2026, pra
   competir visualmente com o preço à vista em vez de passar despercebido. */
.njp-price-parc{display:block;font-size:13.5px;font-weight:700;color:var(--green);margin-top:3px}
.njp-savings-badge{display:inline-flex;width:fit-content;background:var(--green-bg);color:var(--green);font-size:11.5px;font-weight:700;padding:4px 9px;border-radius:6px}
.njp-freeship-badge{display:inline-flex;align-items:center;gap:5px;width:fit-content;font-size:11.5px;font-weight:600;color:var(--ink-soft)}
.njp-freeship-badge .njp-icon{width:13px;height:13px}
.njp-freeship-badge.is-ok{background:var(--green);color:#fff;font-weight:800;text-transform:uppercase;letter-spacing:.3px;padding:5px 11px;border-radius:6px;font-size:10.5px}
.njp-freeship-badge.is-ok .njp-icon{color:#fff}
/* Versão do selo "Frete grátis" que fica sobre a foto do cartão (canto
   inferior direito) — pedido 20/09/2026, "melhor localizado" em vez de
   disputar espaço com o preço. */
.njp-freeship-badge-photo{position:absolute;right:9px;bottom:9px;box-shadow:0 3px 8px -2px rgba(0,0,0,.35)}
/*
 * BUG CORRIGIDO (20/09/2026): o ícone desse selo ficava enorme, porque
 * ".njp-prod-media svg.njp-icon{width:54%;height:54%}" (a regra do ícone
 * GRANDE de "sem foto", também dentro de .njp-prod-media) tinha prioridade
 * maior que ".njp-freeship-badge .njp-icon{width:13px}" — mais classes no
 * seletor ganham, independente de qual regra vem depois no arquivo. Esta
 * linha só existe pra ganhar essa disputa de volta.
 */
.njp-prod-media .njp-freeship-badge-photo .njp-icon{width:13px;height:13px}
/* Cópia do selo ao lado do nome: só no cartão horizontal da Loja no celular (19/10/2026, ver a regra ≤640px da lista). */
.njp-freeship-badge-inline{display:none}
/* Selo "últimas unidades" — vermelho de urgência, pílula (mesma família
   visual dos outros selos pequenos do site), ícone em traço em vez de
   emoji (pedido 17/09/2026). */
.njp-stock-urgente{display:inline-flex;align-items:center;gap:6px;background:var(--red-tint);color:var(--red-deep);font-size:12px;font-weight:700;padding:5px 12px 5px 10px;border-radius:999px;margin:8px 0 0;width:fit-content}
.njp-stock-urgente .njp-icon{width:13px;height:13px;color:var(--red)}
.njp-stock-urgente strong{font-weight:800}
.njp-add-btn{margin-top:8px;width:100%;height:37px;border:none;border-radius:7px;background:var(--red);color:var(--on-red);font-weight:700;font-size:12.5px;cursor:pointer}
.njp-add-btn:hover{background:var(--red-deep)}
/*
 * Botão real de "Adicionar ao carrinho" do WooCommerce
 * (woocommerce_template_loop_add_to_cart). Cantos de 10px, o padrão dos
 * botões de ação do site (a pílula de 20/09/2026 saiu em 28/09/2026 — destoava).
 * O ícone de carrinho vem de um filtro do WooCommerce
 * (functions.php), não é possível colocar só com CSS.
 */
.njp-prod-card .button,
.njp-prod-card .add_to_cart_button{margin-top:10px;width:100%;height:44px;border:none;border-radius:10px;background:var(--red);color:var(--on-red)!important;font-weight:700;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:7px;text-decoration:none;text-align:center;transition:background .15s,transform .15s,box-shadow .15s}
.njp-prod-card .button:hover,
.njp-prod-card .add_to_cart_button:hover{background:var(--red-deep);transform:translateY(-1px);box-shadow:0 6px 14px -4px rgba(199,17,44,.45)}
.njp-prod-card .button .njp-icon,
.njp-prod-card .add_to_cart_button .njp-icon{width:15px;height:15px;flex-shrink:0}

/* Botão "bloqueado" quando a peça está sem estoque — pedido 20/09/2026:
   mesmo formato do botão normal, mas cinza e sem clique nenhum. */
.njp-add-btn-disabled{margin-top:10px;width:100%;height:44px;border:none;border-radius:10px;background:var(--surface-2);color:var(--ink-soft);font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;cursor:not-allowed;user-select:none}

.njp-brand-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.njp-brand-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 18px}
.njp-brand-card h3{font-size:18px;margin-bottom:10px;display:flex;align-items:center;gap:8px}
.njp-brand-card h3 .njp-icon{width:18px;height:18px;color:var(--red)}
.njp-brand-card h3 .njp-brand-logo{height:18px;width:auto;max-width:70px;object-fit:contain}
.njp-brand-card ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.njp-brand-card a{font-size:12.5px;color:var(--ink-soft);text-decoration:none}
.njp-brand-card a:hover{color:var(--red)}
.njp-brand-card .njp-more{margin-top:8px;display:block;font-size:11.5px;font-weight:700;color:var(--red)}

/* ---------- 404 ---------- */
.njp-404-wrap{max-width:480px;margin:0 auto;padding:70px 20px 90px;text-align:center}
.njp-404-icon{width:80px;height:80px;margin:0 auto 20px;border-radius:50%;background:var(--surface-2);display:flex;align-items:center;justify-content:center}
.njp-404-icon .njp-icon{width:36px;height:36px;color:var(--ink-soft)}
.njp-404-code{font-family:var(--font-display);font-size:64px;font-weight:800;line-height:1;color:var(--border);margin:0 0 6px}
.njp-404-title{font-size:26px;margin:0 0 10px}
.njp-404-text{font-size:14px;color:var(--ink-soft);line-height:1.6;margin:0 0 28px}
.njp-404-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.njp-404-btn{display:inline-flex;align-items:center;justify-content:center;height:46px;padding:0 24px;border-radius:10px;background:var(--red);color:var(--on-red);font-weight:700;font-size:13.5px;text-decoration:none}
.njp-404-btn:hover{background:var(--red-deep)}
.njp-404-btn-outline{background:var(--surface);color:var(--ink);border:1.5px solid var(--border)}
.njp-404-btn-outline:hover{border-color:var(--red);color:var(--red);background:var(--surface)}

/* ---------- Loja / Categoria ---------- */
.njp-shop-wrap{padding-top:24px;padding-bottom:60px}
.njp-breadcrumb{font-size:12.5px;color:var(--ink-soft);margin-bottom:16px}
.njp-breadcrumb a{color:var(--ink-soft);text-decoration:none}
.njp-breadcrumb a:hover{color:var(--red)}

.njp-shop-head{display:flex;align-items:center;gap:16px;margin-bottom:28px}
.njp-shop-head-img{width:56px;height:56px;border-radius:12px;object-fit:cover;border:1px solid var(--border);flex-shrink:0}
/* Logo da marca de peça (/marca/<nome>/, 20/10/2026): inteiro, sem cortar, num quadro branco. */
.njp-shop-head-img.is-logo{width:auto;min-width:56px;max-width:120px;padding:6px 10px;object-fit:contain;background:#fff}
.njp-shop-title{font-size:32px}
.njp-active-filters{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.njp-active-filter{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:999px;background:var(--red-tint);color:var(--red-deep);font-size:13px;text-decoration:none}
.njp-active-filter span{font-size:16px;line-height:1}
.njp-active-filter:hover{background:var(--red);color:var(--on-red)}
.njp-shop-desc{font-size:13.5px;color:var(--ink-soft);margin-top:6px;max-width:70ch;line-height:1.6}
/* Texto da categoria (21/10/2026 — por IA, NJP_AI_Category_Text): recolhido em 3 linhas com esfumado; "Ver mais" abre. */
.njp-shop-desc p{margin:0 0 8px}
.njp-shop-desc h3{margin:12px 0 6px;font-size:15px;color:var(--ink)}
.njp-shop-desc ul{margin:0 0 8px;padding-left:18px}
.njp-shop-head:has(.njp-shop-desc){align-items:flex-start} /* texto aberto: a foto da categoria fica no topo, não no meio */
.njp-shop-desc.is-recolhido{position:relative;max-height:4.8em;overflow:hidden}
.njp-shop-desc.is-recolhido::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1.8em;background:linear-gradient(rgba(245,247,249,0),var(--bg))}
.njp-shop-desc-mais{margin-top:4px;padding:0;border:0;background:none;color:var(--red);font-family:inherit;font-size:13px;font-weight:700;cursor:pointer}
.njp-shop-desc-mais:hover{text-decoration:underline}

/* Subcategorias no topo da categoria (19/10/2026, avaliação do karhub — archive-product.php): quadros com foto, nome e
   quantidade. Computador: grade com até 12 + "Ver todas". Celular: fileira de arrastar, todas. Foto fora do fluxo (mesma
   regra das outras fotos com proporção — senão o Safari alarga o quadro). */
.njp-subcats{display:grid;grid-template-columns:repeat(auto-fill,minmax(124px,1fr));gap:12px;margin:-8px 0 24px}
.njp-subcat{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0;padding:10px 8px 12px;background:var(--surface);border:1px solid var(--border);border-radius:12px;color:var(--ink);text-align:center;text-decoration:none;font-family:inherit;cursor:pointer;transition:border-color .15s}
.njp-subcat:hover{border-color:var(--red)}
.njp-subcat-media{position:relative;width:100%;max-width:92px;aspect-ratio:1;margin-bottom:5px}
.njp-subcat-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.njp-subcat-media .njp-icon{position:absolute;inset:22%;width:56%;height:56%;color:var(--red);stroke-width:1.3}
.njp-subcat-nome{font-size:13px;font-weight:700;line-height:1.25}
.njp-subcat-qtd{font-size:11.5px;color:var(--ink-soft)}
.njp-subcats-mais{justify-content:center;background:var(--surface-2)}
.njp-subcats-mais[hidden]{display:none}
.njp-subcats-mais-num{font-family:var(--font-display);font-size:26px;font-weight:800;color:var(--red);line-height:1}
@media (min-width:641px){.njp-subcats:not(.is-aberto) .njp-subcat.is-extra{display:none}}
@media (max-width:640px){
  .njp-subcats{display:flex;gap:10px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:20px;margin:-12px -20px 20px;padding:2px 20px 6px;scrollbar-width:none}
  .njp-subcats::-webkit-scrollbar{display:none}
  .njp-subcat{flex:0 0 30%;scroll-snap-align:start}
  .njp-subcats-mais{display:none}
}

.njp-shop-layout{display:grid;grid-template-columns:240px 1fr;gap:28px;align-items:start}
.njp-shop-sidebar-title{font-family:var(--font-display);font-size:18px;font-weight:700;margin:0 0 16px;text-transform:uppercase;letter-spacing:.3px}
.njp-filter-toggle{display:none}
.njp-shop-sidebar-empty{font-size:12.5px;color:var(--ink-soft);line-height:1.6}
.njp-filter-widget{border-bottom:1px solid var(--border);padding-bottom:18px;margin-bottom:18px}
.njp-filter-widget:last-child{border-bottom:none;margin-bottom:0}
.njp-filter-title{font-family:var(--font-display);font-size:16px;font-weight:700;margin:0 0 12px}
.njp-filter-widget ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.njp-filter-widget li{font-size:13px}
.njp-filter-widget a{color:var(--ink-soft);text-decoration:none}
.njp-filter-widget a:hover{color:var(--red)}
.njp-filter-widget input[type="checkbox"],
.njp-filter-widget input[type="radio"]{margin-right:6px}
.njp-filter-widget .price_slider_amount{display:flex;align-items:center;justify-content:space-between;margin-top:14px;font-size:12.5px;color:var(--ink-soft)}
.njp-filter-widget .price_slider_amount .button{background:var(--red);color:var(--on-red);border:none;border-radius:6px;padding:7px 14px;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit}

/* Filtro "Categorias" da Loja com caixinhas, como no partdo (16/10/2026). O desenho de cada item vem do nj-parts-core
   (NJP_Category_Checkbox_Walker): subcategorias recolhidas atrás do "+", a categoria aberta na tela marcada em vermelho. */
/* Filtros por atributo — Posição, Lado (19/10/2026, avaliação do karhub): as mesmas caixinhas (marcação vem do
   NJP_Category_Filter; a opção marcada é o "li.chosen" do WooCommerce). */
.njp-filter-widget .product-categories,
.njp-filter-widget .woocommerce-widget-layered-nav-list{gap:0;--njp-caixa-borda:#B7BDC8}
@supports (color:color-mix(in srgb,red 50%,white)){.njp-filter-widget .product-categories,.njp-filter-widget .woocommerce-widget-layered-nav-list{--njp-caixa-borda:color-mix(in srgb,var(--ink-soft) 40%,var(--surface))}}
.njp-filter-widget .product-categories li,
.njp-filter-widget .woocommerce-widget-layered-nav-list li{position:relative;font-size:13.5px}
.njp-filter-widget .product-categories .njp-cat-op,
.njp-filter-widget .woocommerce-widget-layered-nav-list .njp-cat-op{display:flex;align-items:center;gap:10px;padding:5px 0;color:var(--ink);line-height:1.3}
.njp-filter-widget .product-categories .cat-parent > .njp-cat-op{padding-right:34px}
.njp-filter-widget .product-categories .children .njp-cat-op{color:var(--ink-soft)}
.njp-filter-widget .product-categories .njp-cat-op:hover,
.njp-filter-widget .woocommerce-widget-layered-nav-list a.njp-cat-op:hover{color:var(--red)}
.njp-cat-op .count{margin-left:-4px;font-size:12px;font-weight:400;color:var(--ink-soft)}
.njp-cat-op.is-vazio{opacity:.5}
.njp-cat-caixa{display:grid;place-items:center;flex-shrink:0;width:18px;height:18px;border:1.5px solid var(--njp-caixa-borda);border-radius:4px;background:var(--surface);transition:border-color .15s}
.njp-cat-op:hover .njp-cat-caixa{border-color:var(--red)}
.njp-filter-widget .product-categories .current-cat > .njp-cat-op,
.njp-filter-widget .woocommerce-widget-layered-nav-list .chosen > .njp-cat-op{color:var(--red);font-weight:600}
.current-cat > .njp-cat-op .njp-cat-caixa,
.chosen > .njp-cat-op .njp-cat-caixa{border-color:var(--red);background:var(--red)}
.current-cat > .njp-cat-op .njp-cat-caixa::after,
.chosen > .njp-cat-op .njp-cat-caixa::after{content:"";width:5px;height:9px;margin-top:-2px;border:solid var(--on-red);border-width:0 2px 2px 0;transform:rotate(45deg)}
.njp-filter-widget .product-categories .children{display:none;gap:0;padding:0 0 4px 28px}
.njp-filter-widget .product-categories .is-aberto > .children{display:flex}
.njp-cat-abrir{position:absolute;top:2px;right:0;display:grid;place-items:center;width:30px;height:28px;padding:0;border:0;border-radius:6px;background:none;color:var(--ink-soft);font-family:inherit;font-size:18px;line-height:1;cursor:pointer}
.njp-cat-abrir::before{content:"+"}
.is-aberto > .njp-cat-abrir::before{content:"\2212"}
.njp-cat-abrir:hover{background:var(--surface-2);color:var(--ink)}
.njp-cat-abrir:focus-visible{outline:2px solid var(--red);outline-offset:1px}
@media (max-width:980px){
  .njp-filter-widget .product-categories .njp-cat-op,
  .njp-filter-widget .woocommerce-widget-layered-nav-list .njp-cat-op{padding-top:8px;padding-bottom:8px}
  .njp-cat-abrir{top:3px;width:36px;height:34px}
}

/* Widgets novos: Marcas (checkbox), Código/OEM/Referência (busca por texto) — nj-parts-core */
.njp-filter-select{width:100%;height:42px;border:1.5px solid var(--border);border-radius:8px;padding:0 12px;font-size:13px;font-family:var(--font-body);color:var(--ink);background:var(--surface)}
.njp-filter-select:focus{outline:none;border-color:var(--red)}
.njp-filter-search-form{display:flex;gap:6px}
.njp-filter-search-input{flex:1;min-width:0;height:38px;border:1.5px solid var(--border);border-radius:8px;padding:0 12px;font-size:13px;font-family:var(--font-body);color:var(--ink);background:var(--surface)}
.njp-filter-search-input:focus{outline:none;border-color:var(--red)}
.njp-filter-submit{height:38px;padding:0 14px;border:none;border-radius:8px;background:var(--red);color:var(--on-red);font-weight:700;font-size:12.5px;cursor:pointer;font-family:inherit;flex-shrink:0}
.njp-filter-submit:hover{background:var(--red-deep)}
.njp-filter-widget .njp-filter-submit{margin-top:4px}
.njp-filter-admin-notice{font-size:12px;color:var(--red-deep);background:var(--red-tint);padding:10px 12px;border-radius:8px;line-height:1.5}

.njp-shop-main{min-width:0}
/* .njp-drawer-chev ainda é usado (ícone do botão "Filtros" no celular, ver .njp-filter-toggle abaixo) — o resto do sistema de "gaveta" (.njp-shop-toolbar/.njp-shop-drawers/.njp-drawer/.njp-drawer-toggle/.njp-drawer-panel) saiu de uso em 21/09/2026, quando Filtros voltou a ser coluna lateral no desktop (PDF de melhorias) e "Meu veículo" virou componente fixo — nenhuma tela do tema usa mais essas classes. */
.njp-drawer-chev{width:13px!important;height:13px!important}
.njp-vehicle-current{font-size:12.5px;font-weight:700;color:var(--red);margin:0 0 12px}
.njp-compat-toggle{display:flex;align-items:center;gap:8px;margin-top:14px;font-size:12.5px;font-weight:600;color:var(--ink-soft);cursor:pointer}
/* Sem isto o display:flex acima vencia o "hidden" e a caixinha aparecia pra quem ainda não escolheu carro. */
.njp-compat-toggle[hidden]{display:none}
.njp-shop-toolbar-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.njp-shop-toolbar-right .woocommerce-ordering{margin-left:auto}
.njp-compat-active-notice{display:flex;align-items:center;gap:8px;background:var(--green-bg);color:var(--green);font-size:13px;font-weight:600;padding:10px 16px;border-radius:10px;margin-bottom:18px}
.njp-compat-active-notice .njp-icon{width:15px;height:15px;flex-shrink:0}
.njp-compat-active-notice a{margin-left:auto;color:var(--green);text-decoration:underline;font-weight:700;flex-shrink:0}

/* ---------- Páginas por carro (20/10/2026 — pagina-montadora.php / pagina-carro.php; dados: NJP_Vehicle_Pages) ----------
 * Cabeçalho com o logo da montadora (o mesmo de "Navegue por veículo"; sem logo, o carrinho), modelos em cartões
 * (.njp-cat-row de "Todos os Veículos"), anos e categorias em pílulas (no celular, uma fileira de arrastar) e, no fim,
 * o caminho pra Loja filtrada (peças sem cadastro) e pro WhatsApp. */
.njp-carro-head{display:flex;align-items:center;gap:16px;margin-bottom:22px}
.njp-carro-head .njp-page-title,.njp-carro-head .njp-shop-title{margin-bottom:0}
.njp-carro-marca{display:grid;place-items:center;flex-shrink:0;width:64px;height:64px;border-radius:14px;background:var(--surface);border:1px solid var(--border)}
.njp-carro-marca img{max-width:46px;max-height:40px;object-fit:contain}
.njp-carro-marca .njp-icon{width:30px;height:30px;color:var(--red)}
.njp-carro-intro{margin:6px 0 0;font-size:14px;color:var(--ink-soft);line-height:1.6;max-width:75ch}
.njp-carro-subtitulo{margin:30px 0 14px;font-size:20px}
.njp-carro-modelos{--njp-cat-cols:6}
.njp-carro-modelos small{display:block;margin-top:4px;font-size:11.5px;color:var(--ink-soft)}
.njp-carro-nota{margin:-6px 0 12px;font-size:13px;color:var(--ink-soft)}
.njp-carro-outros{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.njp-carro-outros a{display:inline-block;padding:6px 12px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--ink);font-size:13px;text-decoration:none}
.njp-carro-outros a:hover{border-color:var(--red);color:var(--red)}
/* Página de marca (22/10/2026): "Carros com peças <Marca>" — as mesmas pílulas de "Peças para outros <Montadora>" da
   página do carro; 16 na tela, o resto no "Ver todos". */
.njp-marca-carros{margin-top:12px}
.njp-carro-outros:not(.is-aberto) li.is-extra{display:none}
.njp-marca-carros-mais{margin-top:12px;padding:0;border:0;background:none;color:var(--red);font-family:inherit;font-size:13px;font-weight:700;cursor:pointer}
.njp-marca-carros-mais:hover{text-decoration:underline}
.njp-marca-carros-mais[hidden]{display:none}
.njp-carro-chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 12px}
.njp-carro-chips-rotulo{margin-right:4px;font-size:12px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--ink-soft)}
.njp-carro-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--ink);font-size:13px;font-weight:600;text-decoration:none}
.njp-carro-chip small{font-size:11px;font-weight:700;color:var(--ink-soft)}
.njp-carro-chip:hover{border-color:var(--red);color:var(--red)}
.njp-carro-chip.is-ativo{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.njp-carro-chip.is-ativo small{color:inherit;opacity:.75}
.njp-carro-lista{margin-top:18px}
.njp-carro-vazio{padding:28px 20px;border:1px dashed var(--border);border-radius:12px;text-align:center;color:var(--ink-soft)}
.njp-carro-cta{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:32px;padding:20px 24px;border-radius:14px;background:var(--surface-2)}
.njp-carro-cta strong{display:block;margin-bottom:4px;font-size:16px}
.njp-carro-cta p{margin:0;max-width:62ch;font-size:13.5px;line-height:1.55;color:var(--ink-soft)}
.njp-carro-cta-botoes{display:flex;flex-wrap:wrap;flex-shrink:0;gap:10px}
.njp-carro-btn{display:inline-flex;align-items:center;justify-content:center;height:46px;padding:0 20px;border-radius:10px;background:var(--ink);color:var(--surface);font-size:14px;font-weight:700;text-decoration:none}
.njp-carro-btn:hover{background:var(--red);color:var(--on-red)}
.njp-carro-voltar{margin-top:28px}
@media (max-width:760px){
  .njp-carro-head{align-items:flex-start}
  .njp-carro-marca{width:48px;height:48px;border-radius:12px}
  .njp-carro-marca img{max-width:34px;max-height:30px}
  .njp-carro-chips{flex-wrap:nowrap;overflow-x:auto;margin-right:-16px;padding-right:16px;scrollbar-width:none}
  .njp-carro-chips::-webkit-scrollbar{display:none}
  .njp-carro-chip,.njp-carro-chips-rotulo{flex-shrink:0}
  .njp-carro-cta{flex-direction:column;align-items:stretch;padding:18px}
  .njp-carro-cta-botoes{flex-direction:column}
  .njp-carro-btn,.njp-carro-cta .njp-btn-whatsapp{width:100%;justify-content:center}
}
.njp-prod-grid-full{grid-template-columns:repeat(5,1fr)}
.njp-prod-grid-full.njp-view-list{grid-template-columns:1fr}
@media (max-width:1100px){.njp-prod-grid-full{grid-template-columns:repeat(4,1fr)}}
@media (max-width:860px){.njp-prod-grid-full{grid-template-columns:repeat(3,1fr)}}
@media (max-width:560px){.njp-prod-grid-full{grid-template-columns:repeat(2,1fr)}}

.woocommerce-result-count{font-size:13px;color:var(--ink-soft);margin:0}
.woocommerce-ordering{margin:0 0 0 auto}
.woocommerce-ordering select{border:1.5px solid var(--border);border-radius:8px;padding:8px 12px;font-size:13px;font-family:var(--font-body);background:var(--surface);color:var(--ink)}

.njp-view-toggle{display:flex;gap:4px;background:var(--surface-2);padding:4px;border-radius:9px;flex-shrink:0}
.njp-view-btn{width:34px;height:30px;border:none;border-radius:6px;background:transparent;color:var(--ink-soft);display:grid;place-items:center;cursor:pointer}
.njp-view-btn .njp-icon{width:17px;height:17px}
.njp-view-btn.is-active{background:var(--surface);color:var(--red);box-shadow:0 1px 3px rgba(0,0,0,.12)}

.njp-prod-grid-shop{grid-template-columns:repeat(3,1fr)}

/* Visão em lista da Loja (padrão) — mesma marcação do cartão de grade,
   só reorganizada: foto pequena à esquerda, preço/botão à direita. */
.njp-prod-grid-shop.njp-view-list{grid-template-columns:1fr}
.njp-prod-grid-shop.njp-view-list .njp-prod-card{flex-direction:row}
.njp-prod-grid-shop.njp-view-list .njp-prod-media{width:150px;aspect-ratio:1;flex-shrink:0}
.njp-prod-grid-shop.njp-view-list .njp-prod-body{flex-direction:row;align-items:center;gap:18px;padding:14px 20px}
.njp-prod-grid-shop.njp-view-list .njp-prod-info{flex:1}
.njp-prod-grid-shop.njp-view-list .njp-prod-name{min-height:0}
.njp-prod-grid-shop.njp-view-list .njp-price-block{margin-top:0;padding-top:0;border-top:none;flex-shrink:0;width:200px;text-align:right}
.njp-prod-grid-shop.njp-view-list .njp-price-old,
.njp-prod-grid-shop.njp-view-list .njp-price-parc{display:block}
@media (max-width:640px){
  /*
   * Cartão horizontal no celular (19/10/2026, avaliação do karhub): foto pequena à esquerda, nome/marca/código ao lado,
   * e o resto (veículos, compatibilidade, preço, botão) embaixo, na largura toda — cabem 2 peças por tela, não 1.
   * Grade no próprio cartão + "display:contents" nos 2 blocos de dentro: cada informação vira uma peça dessa grade.
   * A 4ª linha (1fr) fica com a sobra da altura da foto, pra nome e marca não se espalharem.
   */
  .njp-prod-grid-shop.njp-view-list .njp-prod-card{display:grid;grid-template-columns:104px minmax(0,1fr);grid-template-rows:auto auto auto 1fr;column-gap:12px;row-gap:6px;padding:12px;align-items:start}
  .njp-prod-grid-shop.njp-view-list .njp-prod-body,
  .njp-prod-grid-shop.njp-view-list .njp-prod-info{display:contents}
  .njp-prod-grid-shop.njp-view-list .njp-prod-media{grid-column:1;grid-row:1 / span 4;width:104px;border-radius:8px}
  .njp-prod-grid-shop.njp-view-list .njp-prod-media img:not(.njp-prod-brand-logo){padding:4px}
  .njp-prod-grid-shop.njp-view-list .njp-prod-badges{top:4px;left:4px}
  .njp-prod-grid-shop.njp-view-list .njp-prod-info > *{grid-column:2;min-width:0}
  .njp-prod-grid-shop.njp-view-list .njp-prod-name{font-size:14.5px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
  .njp-prod-grid-shop.njp-view-list .njp-prod-veiculos,
  .njp-prod-grid-shop.njp-view-list .njp-compat-slot,
  .njp-prod-grid-shop.njp-view-list .njp-price-block{grid-column:1 / -1}
  .njp-prod-grid-shop.njp-view-list .njp-price-block{width:auto;text-align:left;margin-top:4px;padding-top:10px;border-top:1px dashed var(--border)}
  /* Foto pequena: o selo de frete vai pro lado do nome; logo da marca e nota saem (a marca já está escrita ao lado). */
  .njp-prod-grid-shop.njp-view-list .njp-freeship-badge-photo,
  .njp-prod-grid-shop.njp-view-list .njp-prod-brand-logo,
  .njp-prod-grid-shop.njp-view-list .njp-prod-media .njp-rating-badge{display:none}
  .njp-prod-grid-shop.njp-view-list .njp-freeship-badge-inline{display:inline-flex}
}

.woocommerce-pagination{margin-top:32px;display:flex;justify-content:center}
.woocommerce-pagination ul{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:6px;padding:0;margin:0}
.woocommerce-pagination .page-numbers{display:flex;align-items:center;justify-content:center;min-width:38px;height:38px;padding:0 10px;border-radius:8px;border:1px solid var(--border);color:var(--ink-soft);text-decoration:none;font-size:13px;font-weight:600}
.woocommerce-pagination .page-numbers.current{background:var(--red);border-color:var(--red);color:var(--on-red)}
.woocommerce-pagination a.page-numbers:hover{border-color:var(--red);color:var(--red)}

.woocommerce-info{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:16px 20px;font-size:13.5px;color:var(--ink-soft);list-style:none}
/* Sucesso/erro do WooCommerce ("… removido. Desfazer?", erro de login ou de checkout): sem o CSS padrão dele, saíam como texto solto. */
.woocommerce-message,.woocommerce-error{margin:0 0 18px;padding:14px 18px;border-radius:10px;font-size:13.5px;line-height:1.5;list-style:none}
.woocommerce-message{background:var(--green-bg);color:var(--ink)}
.woocommerce-error{background:var(--danger-tint);color:var(--danger-deep)}
.woocommerce-error li{margin:0}
.woocommerce-error li+li{margin-top:6px}
.woocommerce-message a:not(.button),.woocommerce-error a:not(.button){color:inherit;font-weight:700}
.woocommerce-message::after{content:"";display:table;clear:both}
.woocommerce-message .button{float:right;margin:-5px 0 -5px 14px;display:inline-flex;align-items:center;height:32px;padding:0 14px;border-radius:8px;background:var(--surface);border:1px solid var(--border);color:var(--ink);font-size:12.5px;font-weight:700;text-decoration:none}
.woocommerce-message .button:hover{border-color:var(--green);color:var(--green)}

@media (max-width:860px){
  .njp-shop-layout{grid-template-columns:1fr}
  .njp-shop-sidebar-title{display:none}
  .njp-filter-toggle{display:flex;align-items:center;gap:8px;width:100%;padding:12px 16px;border-radius:10px;border:1.5px solid var(--border);background:var(--surface);font-weight:700;font-size:13.5px;color:var(--ink);cursor:pointer;margin-bottom:12px;font-family:inherit}
  .njp-filter-toggle .njp-icon{width:18px;height:18px}
  .njp-filter-toggle .njp-drawer-chev{transition:transform .15s}
  .njp-filter-toggle.is-open .njp-drawer-chev{transform:rotate(180deg)}
  .njp-filter-toggle.is-open{border-color:var(--red);color:var(--red)}
  .njp-shop-sidebar-inner{display:none}
  .njp-shop-sidebar-inner.is-open{display:block;margin-bottom:20px}
  .njp-prod-grid-shop{grid-template-columns:repeat(2,1fr)}
  .njp-shop-head-img{width:44px;height:44px}
  .njp-shop-title{font-size:24px}
}
@media (max-width:560px){
  .njp-prod-grid-shop{grid-template-columns:repeat(2,1fr)}
}

/* ---------- Página de Produto ---------- */
:root{ --color-success: var(--green); } /* NJP_Shipping_Display (plugin) já lê essa variável */

.njp-pdp-wrap{padding-top:24px;padding-bottom:60px}
.njp-pdp-layout{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start}

.njp-pdp-gallery{display:flex;flex-direction:column;gap:12px;position:sticky;top:calc(90px + var(--njp-faixa-h,0px))}
.njp-pdp-gallery-main{position:relative;aspect-ratio:1;background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden}
.njp-pdp-gallery-slide{position:absolute;inset:0;display:none;place-items:center;padding:26px}
.njp-pdp-gallery-slide.is-active{display:grid}
.njp-pdp-gallery-slide img{width:100%;height:100%;object-fit:contain}
.njp-pdp-gallery-thumbs{display:flex;gap:10px;flex-wrap:wrap}
.njp-pdp-thumb{width:64px;height:64px;padding:4px;border-radius:10px;border:2px solid var(--border);background:var(--surface);cursor:pointer;display:grid;place-items:center}
.njp-pdp-thumb img{width:100%;height:100%;object-fit:contain}
.njp-pdp-thumb.is-active{border-color:var(--red)}

.njp-pdp-summary{display:flex;flex-direction:column;gap:14px}
.njp-pdp-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.njp-pdp-brand-logo{width:40px;height:40px;object-fit:contain;border:1px solid var(--border);border-radius:8px;padding:4px;background:var(--surface)}
/* Linha do topo do cartão (21/10/2026): marca/código à esquerda, "Compartilhar" no canto direito. */
.njp-pdp-topo{display:flex;align-items:center;justify-content:space-between;gap:10px}
.njp-pdp-topo .njp-pdp-meta{min-width:0}
/* Botão "Compartilhar" (template-parts/compartilhar.php) — um <details>: o menu é o conteúdo dele. No celular o
   product-page.js abre a lista do próprio aparelho no lugar do menu. */
.njp-share{position:relative;margin-left:auto;flex-shrink:0}
.njp-share-btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--ink);font-size:13px;font-weight:600;white-space:nowrap;cursor:pointer;list-style:none;user-select:none}
.njp-share-btn::-webkit-details-marker{display:none}
.njp-share-btn::marker{content:''}
.njp-share-btn:hover,.njp-share[open] > .njp-share-btn{border-color:var(--ink-soft)}
.njp-share-btn .njp-icon{width:16px;height:16px;flex-shrink:0}
.njp-share-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:40;min-width:200px;padding:6px;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 16px 36px -14px rgba(5,15,40,.32)}
.njp-share-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border:0;border-radius:8px;background:none;color:var(--ink);font:inherit;font-size:14px;line-height:1.2;text-align:left;text-decoration:none;cursor:pointer}
.njp-share-item:hover,.njp-share-item:focus-visible{background:var(--surface-2)}
.njp-share-item .njp-icon{width:18px;height:18px;flex-shrink:0;color:var(--ink-soft)}
.njp-share-item.is-whatsapp .njp-icon{color:#25D366}
.njp-share-item.is-facebook .njp-icon{color:#1877F2}
.njp-share-item.is-x .njp-icon{color:var(--ink)}
.njp-share-item.is-pinterest .njp-icon{color:#E60023}
.njp-share-item.is-telegram .njp-icon{color:#229ED9}
.njp-share-item.is-copiado,.njp-share-item.is-copiado .njp-icon{color:var(--green)}
/* overflow-wrap (21/10/2026): "Fiesta/ka/ecosport/focus" não tinha onde quebrar — em tela de 360px o título passava da
   borda e a página inteira ganhava rolagem pro lado. A barra ganhou ponto de quebra (<wbr>, single-product.php); isto
   aqui é a rede pra palavra comprida sem barra (um código de peça, por exemplo): quebra dentro dela só se não couber. */
.njp-pdp-summary .product_title{font-size:30px;line-height:1.18;font-family:var(--font-display);overflow-wrap:anywhere}

.njp-compat-notice-slot:empty{display:none}

/* Cartão único de "nome, preço, ação" — pedido 17/09/2026, separando
   visualmente o que é decisão de compra do que é reforço de confiança. */
.njp-pdp-card{display:flex;flex-direction:column;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:22px 24px}
.njp-pdp-card .product_title{margin:0}

.njp-pdp-price{padding:14px 0;border-top:1px dashed var(--border);border-bottom:1px dashed var(--border)}
.njp-pdp-price .njp-price-old{font-size:15px}
.njp-pdp-price-pix{font-family:var(--font-display);font-size:40px;font-weight:800;color:var(--ink);line-height:1.1}
.njp-pdp-price-pix small{font-family:var(--font-body);font-size:15px;font-weight:700;color:var(--green)}
.njp-pdp-price .njp-price-parc{font-size:14px;margin-top:4px;display:block}
.njp-pdp-price .njp-savings-badge{font-size:13px;padding:5px 11px;margin-top:10px}
.njp-pdp-price .njp-freeship-badge{font-size:13px;margin-top:8px}
.njp-pdp-price .njp-freeship-badge.is-ok{font-size:12px}
.njp-pdp-price .njp-freeship-badge .njp-icon{width:15px;height:15px}

.wfs-fast-shipping-box{padding:14px 16px;background:var(--surface-2);border-radius:10px}

/* Prazo de entrega — linha com fundo esverdeado, mesma família visual do
   aviso de frete grátis do carrinho (pedido 17/09/2026: "mais inovador,
   acompanhar o estilo do restante"). */
.njp-pdp-shipping{display:flex;align-items:flex-start;gap:10px;background:var(--green-bg);border-radius:10px;padding:12px 14px}
.njp-pdp-shipping > .njp-icon{width:19px;height:19px;color:var(--green);flex-shrink:0;margin-top:2px}
.njp-pdp-shipping-text{display:flex;flex-direction:column;gap:3px;font-size:12.5px}
.njp-pdp-shipping-text strong{font-size:14.5px;font-weight:700;color:var(--ink)}
.njp-pdp-shipping-text .wfs-details-link{color:var(--green);text-decoration:none;font-weight:600;font-size:12.5px}
.njp-pdp-shipping-text .wfs-details-link:hover{text-decoration:underline}
.njp-pdp-shipping-text .njp-info-tooltip{margin-left:4px;vertical-align:-3px}

/*
 * Modal "Opções de Entrega", conteúdo de quem ainda não informou CEP
 * (NJP_Shipping_Display, ramo $forcar_calculadora) — reportado 21/09/2026
 * como "estilo incompatível com o tema": essa parte nasceu com estilo
 * embutido direto no PHP (herdado de quando isso era o woo-fast-shipping-badge),
 * nunca migrou pras classes do tema como o resto do modal já tinha migrado
 * (ver comentário "Visual em linha só com classes do tema" logo abaixo,
 * no mesmo arquivo) — por isso destoava: caixa amarela (cor que nem existe
 * na paleta da loja) e campo/botão sem o visual do resto dos formulários.
 */
.njp-shipping-cep-notice{display:flex;align-items:flex-start;gap:9px;background:var(--surface-2);border-radius:10px;padding:11px 13px;margin-bottom:16px;font-size:12.5px;color:var(--ink-soft);line-height:1.5}
.njp-shipping-cep-notice .njp-icon{width:17px;height:17px;color:var(--red);flex-shrink:0;margin-top:1px}
/* :not(.njp-promo-card) (30/10/2026): o cartão promocional "Calcular meu frete" também abre a janela do CEP, e este estilo
   (feito pro linkzinho "Informe seu CEP" da página de produto) deixava o cartão inteiro vermelho, negrito e sublinhado. */
.njp-cep-open-trigger:not(.njp-promo-card){color:var(--red);font-weight:700;text-decoration:none}
.njp-cep-open-trigger:not(.njp-promo-card):hover{text-decoration:underline}
.njp-shipping-sim{margin-bottom:14px}
.njp-shipping-sim-label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-soft);margin-bottom:6px}
.njp-shipping-sim-row{display:flex;gap:8px}
.njp-shipping-sim-input{flex:1;height:40px;border:1.5px solid var(--border);border-radius:8px;padding:0 12px;font-size:13.5px;font-family:var(--font-body);background:var(--surface);color:var(--ink)}
.njp-shipping-sim-input:focus{outline:none;border-color:var(--red)}
.njp-shipping-sim-btn{flex-shrink:0}
.njp-shipping-sim-hint{font-size:12.5px;color:var(--ink-soft);margin:0}
.njp-shipping-sim-error{font-size:12.5px;color:var(--danger-deep);margin:0}

/*
 * Caixa de compra reformulada (pedido 17/09/2026, comparando com a karhub):
 * quantidade na própria linha, "Comprar Agora" em destaque cheio (é o
 * caminho mais rápido pra comprar, por isso vem primeiro e mais forte),
 * "Adicionar ao Carrinho" mais discreto embaixo. Ordem visual (CSS order)
 * em vez de trocar o HTML de lugar — o botão Comprar Agora continua sendo
 * injetado pelo gancho do WooCommerce (functions.php), só muda onde ele
 * aparece na tela.
 */
.njp-pdp-summary form.cart{display:flex;flex-direction:column;align-items:stretch;gap:10px}
.njp-pdp-summary .quantity{display:flex;order:1;align-self:flex-start}
/* UN/PAR/JG ao lado da quantidade (21/10/2026, njparts_venda_ao_lado_da_quantidade): quantidade e etiqueta dividem a 1ª
   linha; os botões (width:100%) quebram pras linhas de baixo. Só no produto simples — no variável a quantidade mora
   noutra caixa (.woocommerce-variation-add-to-cart) e a etiqueta fica embaixo dela. */
.njp-pdp-summary form.cart:not(.variations_form){flex-direction:row;flex-wrap:wrap;align-items:center;gap:10px 14px}
.njp-pdp-summary form.cart:not(.variations_form) .quantity{align-self:center}
.njp-venda-qtd{order:1;flex:1 1 140px;min-width:0;display:flex;flex-direction:column;gap:3px;font-size:13px;line-height:1.35;color:var(--ink-soft)}
.njp-venda-qtd-linha{display:flex;align-items:center;gap:6px;color:var(--ink);font-weight:600}
.njp-venda-qtd-linha .njp-venda-tag{flex-shrink:0}
.njp-venda-qtd-total strong{color:var(--ink);font-variant-numeric:tabular-nums}
.njp-venda-qtd-total[hidden]{display:none}
.njp-pdp-summary .qty{width:64px;height:46px;border:1.5px solid var(--border);border-radius:8px;text-align:center;font-size:15px;font-family:var(--font-body);color:var(--ink)}
/* Cantos bem arredondados (999px), igual ao botão "Adicionar ao Carrinho"
   dos cartões de produto (Loja/Home) — pedido 17/09/2026, os dois estavam
   com formatos diferentes. */
.njp-pdp-summary .single_add_to_cart_button{width:100%;background:var(--red-tint);color:var(--red)!important;border:1.5px solid var(--red-tint);border-radius:10px;padding:0 20px;height:52px;font-weight:700;font-size:14.5px;cursor:pointer;font-family:inherit;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;order:3}
.njp-pdp-summary .single_add_to_cart_button:hover{background:var(--red);color:var(--on-red)!important}
.njp-pdp-summary .single_add_to_cart_button:disabled{opacity:.5;cursor:not-allowed}
.njp-pdp-summary .single_add_to_cart_button.njp-btn-comprar-agora{order:2;background:var(--red);color:var(--on-red)!important;border-color:var(--red);box-shadow:0 8px 18px -6px var(--red-glow)}
.njp-pdp-summary .single_add_to_cart_button.njp-btn-comprar-agora:hover{background:var(--red-deep);border-color:var(--red-deep)}
.njp-pdp-summary .single_add_to_cart_button.njp-btn-comprar-agora .njp-icon{width:17px;height:17px}

/* Botões "−"/"+" em volta do campo de quantidade nativo — form.js liga o comportamento. */
.njp-pdp-summary .quantity.njp-pdp-qty-stepper{align-items:center;gap:2px}
.njp-pdp-summary .njp-pdp-qty-stepper .qty{width:46px;height:36px;font-size:14px;font-weight:700}
.njp-pdp-summary .njp-pdp-qty-stepper .njp-qty-btn{width:36px;height:36px;font-size:17px;flex-shrink:0}

/* Formas de pagamento — imagem única (25/09/2026: voltou de ícone-por-ícone pra uma imagem só, pedido do dono da loja — sem normalização de tamanho numa lista de arquivos soltos). Mesma imagem do rodapé (njp_footer_payment_image). */
.njp-pdp-payment-icons img{height:26px;width:auto;display:block;object-fit:contain}

.njp-btn-whatsapp{display:inline-flex;align-items:center;gap:8px;width:fit-content;height:46px;padding:0 20px;border-radius:10px;background:#25D366;color:#fff!important;font-weight:700;font-size:14px;text-decoration:none}
.njp-btn-whatsapp:hover{background:#1EBE5A}
.njp-btn-whatsapp .njp-icon{width:19px;height:19px}

.njp-pdp-trust-line{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--ink-soft)}
.njp-pdp-trust-line .njp-icon{width:16px;height:16px;color:var(--green)}

/* Linhas simples (ícone + texto corrido), não mais cartões em grade —
   pedido 17/09/2026, tirando o ar de "plugin genérico". */
.njp-pdp-badges{display:flex;flex-direction:column;gap:9px;padding-top:2px}
.njp-pdp-badge{display:flex;align-items:flex-start;gap:8px}
.njp-pdp-badge .njp-icon{width:16px;height:16px;color:var(--green);flex-shrink:0;margin-top:2px}
.njp-pdp-badge strong{font-size:13px;font-weight:700;color:var(--ink)}
.njp-pdp-badge span{font-size:12.5px;color:var(--ink-soft);margin-left:3px}

.njp-pdp-outofstock{display:flex;gap:14px;align-items:flex-start;background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:18px}
.njp-pdp-outofstock .njp-icon{width:26px;height:26px;color:var(--ink-soft);flex-shrink:0;margin-top:2px}
.njp-pdp-outofstock strong{display:block;font-size:15px;color:var(--ink)}
.njp-pdp-outofstock p{font-size:13px;color:var(--ink-soft);margin:6px 0 14px;max-width:44ch;line-height:1.5}

.product_meta{font-size:12px;color:var(--ink-soft);display:flex;flex-direction:column;gap:4px;margin-top:6px}
.product_meta a{color:var(--ink-soft);text-decoration:none}
.product_meta a:hover{color:var(--red)}

/*
 * Ficha Técnica + Veículos Compatíveis + Descrição — pedido 17/09/2026,
 * substituindo as abas clicáveis do WooCommerce (Descrição/Informação
 * adicional/Compatibilidades) por seções sempre visíveis, lado a lado,
 * igual à referência (karhub). Título com "// " na frente, mesmo padrão
 * já usado em outras chamadas do tema (ex.: sugestões do carrinho).
 */
.njp-pdp-extra{display:grid;grid-template-columns:1fr 1fr;gap:44px;margin-top:52px;padding-top:40px;border-top:1px solid var(--border)}
.njp-pdp-extra-title{font-family:var(--font-display);font-size:21px;font-weight:700;color:var(--ink);text-transform:uppercase;letter-spacing:.3px;margin:0 0 16px}
.njp-pdp-extra-title::before{content:'// ';color:var(--red)}
/* Ficha Técnica e Veículos Compatíveis usam ícone em vez do "//" — pedido
   17/09/2026, o "//" era cópia direta da referência (karhub), preferiram
   identidade própria aqui. */
.njp-pdp-extra-title.njp-pdp-extra-title-icon{display:flex;align-items:center;gap:9px}
.njp-pdp-extra-title.njp-pdp-extra-title-icon::before{content:none}
.njp-pdp-extra-title-icon .njp-icon{width:21px;height:21px;color:var(--red);flex-shrink:0}

.njp-pdp-specs table.shop_attributes{width:100%;border-collapse:collapse;font-size:13.5px}
.njp-pdp-specs table.shop_attributes th,
.njp-pdp-specs table.shop_attributes td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border)}
.njp-pdp-specs table.shop_attributes th{color:var(--ink-soft);font-weight:600;width:180px}

/* A lista de veículos já vem com seu próprio título (ícone + "Veículos
   Compatíveis") de dentro do wpce-supabase — escondido aqui porque o
   título da seção (acima) já diz a mesma coisa; evita repetir. */
.njp-pdp-compat-col .wpce-tab-title{display:none}
.njp-pdp-compat-col #wpce-tab-compatibility-list{max-height:440px;overflow-y:auto;padding-right:6px}

.njp-pdp-desc{margin-top:44px}
.njp-pdp-desc-content{font-size:14px;line-height:1.8;color:var(--ink-soft);max-width:80ch}
.njp-pdp-desc-content p{margin:0 0 14px}

@media (max-width:900px){
	.njp-pdp-extra{grid-template-columns:1fr;gap:36px}
}

.woocommerce-tabs{margin-top:48px}
.woocommerce-tabs ul.tabs{display:flex;gap:6px;list-style:none;padding:0;margin:0 0 20px;border-bottom:1px solid var(--border);flex-wrap:wrap}
.woocommerce-tabs ul.tabs li{margin:0}
.woocommerce-tabs ul.tabs li a{display:inline-block;padding:10px 16px;text-decoration:none;color:var(--ink-soft);font-weight:600;font-size:13.5px;border-bottom:2px solid transparent;margin-bottom:-1px}
.woocommerce-tabs ul.tabs li.active a{color:var(--red);border-bottom-color:var(--red)}
.woocommerce-tabs .panel{font-size:14px;line-height:1.75;color:var(--ink-soft);max-width:75ch}
.woocommerce-tabs .panel h2{font-size:19px;color:var(--ink);margin-bottom:12px}
.woocommerce-tabs table.shop_attributes{width:100%;border-collapse:collapse;font-size:13.5px}
.woocommerce-tabs table.shop_attributes th,
.woocommerce-tabs table.shop_attributes td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border)}
.woocommerce-tabs table.shop_attributes th{color:var(--ink-soft);font-weight:600;width:220px}

/* Sugestões: página de produto (.related), "leve também" manual (.up-sells) e carrinho (.cross-sells, 16/10/2026). */
.related.products,.up-sells.products,.cross-sells{margin-top:48px}
/* No carrinho a seção fica dentro do ".njp-page-content" (texto de página: cinza, 14,5px, entrelinha 1,75) — volta pro padrão do site, igual à página de produto. */
.cross-sells{color:var(--ink);font-size:16px;line-height:normal}
.related.products > h2,.up-sells.products > h2,.cross-sells > h2{font-size:26px;margin-bottom:20px}
.related.products ul.products,.up-sells.products ul.products,.cross-sells ul.products{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.related.products ul.products li.product{list-style:none}

@media (max-width:900px){
  .njp-pdp-layout{grid-template-columns:1fr}
  .njp-pdp-gallery{position:static}
  .related.products ul.products,.up-sells.products ul.products,.cross-sells ul.products{grid-template-columns:repeat(2,1fr)}
}

/*
 * Vitrines no celular (28/09/2026): carrossel com UM produto por vez e a ponta do próximo à vista, pra mostrar que
 * dá pra arrastar. Só CSS (scroll-snap). Vale pra "Mais vendidos" (.njp-vitrine) e pras sugestões da página de produto;
 * a Loja continua em lista/grade. A margem negativa leva o carrossel até a borda da tela (o .njp-wrap tem 20px de respiro).
 */
/* position:relative: sem ele, o texto escondido de leitor de tela do preço em promoção ("Preço original era...") se posiciona pela página e a estica pro lado. */
@media (max-width:560px){
  .njp-prod-grid.njp-vitrine,
  .related.products ul.products,
  .up-sells.products ul.products,
  .cross-sells ul.products{position:relative;display:grid;grid-auto-flow:column;grid-template-columns:none;grid-auto-columns:84%;gap:12px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:20px;margin:0 -20px;padding:2px 20px 8px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .njp-prod-grid.njp-vitrine{grid-auto-columns:var(--njp-vitrine-mobile,84%)}
  .njp-prod-grid.njp-vitrine::-webkit-scrollbar,
  .related.products ul.products::-webkit-scrollbar,
  .up-sells.products ul.products::-webkit-scrollbar,
  .cross-sells ul.products::-webkit-scrollbar{display:none}
  .njp-prod-grid.njp-vitrine > *,
  .related.products ul.products > *,
  .up-sells.products ul.products > *,
  .cross-sells ul.products > *{scroll-snap-align:start}
  /* Um produto só: ocupa a largura toda, em vez de sobrar um vão do lado. */
  .njp-prod-grid.njp-vitrine:has(> :only-child),
  .related.products ul.products:has(> :only-child),
  .up-sells.products ul.products:has(> :only-child),
  .cross-sells ul.products:has(> :only-child){grid-auto-columns:100%}
}

/* ---------- páginas genéricas + Minha Conta ---------- */
.njp-page-wrap{padding-top:24px;padding-bottom:60px}
.njp-page-title{font-size:32px;margin-bottom:22px}
.njp-page-content{font-size:14.5px;line-height:1.75;color:var(--ink-soft);max-width:80ch}

.njp-account-back{display:inline-flex;align-items:center;gap:6px;margin-bottom:18px;font-size:13px;font-weight:600;color:var(--ink-soft);text-decoration:none}
.njp-account-back:hover{color:var(--red)}
.njp-account-back .njp-icon{width:15px;height:15px}
/* Linha "‹ Voltar ao painel" + seletor de seção (o seletor só aparece no celular — ver @media 760px; 16/10/2026). */
.njp-account-topo{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.njp-account-topo .njp-account-back{margin-bottom:0}
.njp-account-back-curto,.njp-account-trocar{display:none}

.njp-dash-hello{margin-bottom:26px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}
.njp-dash-hello h2{font-size:27px;margin-bottom:6px}
.njp-dash-hello p{font-size:14px;color:var(--ink-soft);margin:0}
.njp-dash-logout{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;height:38px;padding:0 16px;border:1.5px solid var(--border);border-radius:8px;color:var(--ink-soft);text-decoration:none;font-size:13px;font-weight:600}
.njp-dash-logout:hover{border-color:var(--red);color:var(--red)}
.njp-dash-logout .njp-icon{width:16px;height:16px}
.njp-dash-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
/* Painel mais largo (pedido 20/09/2026) — 4 cartões numa linha só a partir
   de 1100px, pra não sobrar espaço vazio em cada cartão. */
@media (min-width:1100px){.njp-dash-grid{grid-template-columns:repeat(4,1fr)}}
.njp-dash-card{display:flex;flex-direction:column;gap:4px;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:22px;text-decoration:none;color:var(--ink);transition:border-color .15s,transform .15s}
.njp-dash-card:hover{border-color:var(--red);transform:translateY(-2px)}
.njp-dash-card-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;font-family:var(--font-display);font-weight:700;font-size:15px;color:var(--ink-soft)}
.njp-dash-card-head .njp-icon{width:20px;height:20px;color:var(--red);flex-shrink:0}
.njp-dash-card strong{font-size:16px}
.njp-dash-sub{font-size:12.5px;color:var(--ink-soft)}
.njp-dash-empty{font-size:13px;color:var(--ink-soft);font-style:italic}
.njp-dash-link{margin-top:auto;padding-top:16px;font-size:12.5px;font-weight:700;color:var(--red)}
.njp-dash-status{display:inline-flex;width:fit-content;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;padding:3px 9px;border-radius:999px;background:var(--surface-2);color:var(--ink-soft)}
.njp-dash-status--completed,.njp-dash-status--processing{background:var(--green-bg);color:var(--green)}
.njp-dash-status--pending,.njp-dash-status--on-hold{background:rgba(255,176,32,.16);color:#B45300}
.njp-dash-status--cancelled,.njp-dash-status--failed,.njp-dash-status--refunded{background:rgba(220,53,69,.1);color:var(--danger-deep)}
@media (max-width:640px){.njp-dash-grid{grid-template-columns:1fr}}

.njp-account-layout{display:grid;grid-template-columns:230px 1fr;gap:32px;align-items:start}
.woocommerce-MyAccount-navigation ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.woocommerce-MyAccount-navigation li{margin:0}
.woocommerce-MyAccount-navigation li a{display:block;padding:11px 16px;border-radius:9px;color:var(--ink-soft);text-decoration:none;font-size:13.5px;font-weight:600}
.woocommerce-MyAccount-navigation li a:hover{background:var(--surface-2);color:var(--ink)}
.woocommerce-MyAccount-navigation li.is-active a{background:var(--red-tint);color:var(--red)}
.njp-account-content{min-width:0}
.njp-account-content > p{font-size:14px;color:var(--ink-soft);line-height:1.75;margin:0 0 14px}
.njp-account-content a{color:var(--red);text-decoration:none;font-weight:600}
.njp-account-content strong{color:var(--ink)}
.njp-account-content h2,.njp-account-content h3{font-family:var(--font-display);margin:0 0 14px}

/* Formulários nativos do WooCommerce (login, registro, dados da conta) —
   um estilo só, reaproveitado em qualquer form.form-row que apareça. */
.form-row{margin:0 0 14px}
.form-row label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-soft);margin-bottom:5px}
.form-row label .required{color:var(--red);text-decoration:none}
.form-row input.input-text,
.form-row select,
.form-row textarea{width:100%;height:46px;border:1.5px solid var(--border);border-radius:8px;padding:0 14px;font-size:14px;font-family:var(--font-body);background:var(--surface);color:var(--ink)}
.form-row textarea{height:auto;padding:12px 14px;min-height:100px}
.form-row input:focus,.form-row select:focus,.form-row textarea:focus{outline:none;border-color:var(--red)}
.form-row.forgetmenot{display:flex;align-items:center;gap:8px}
.form-row.forgetmenot label{display:flex;align-items:center;gap:6px;margin:0;font-weight:500}

/*
 * Botão "Mostrar senha" (injetado pelo próprio WordPress via JavaScript,
 * um <button> vazio — sem como colocar nosso SVG de dentro dele) — pedido
 * 20/09/2026, estava sem estilo nenhum. Ícone de olho como imagem de
 * fundo (única forma seguindo o padrão do site sem template do WooCommerce
 * pra editar). Posicionado a partir de baixo pra sempre cair centralizado
 * na altura do campo (46px), não importa se o rótulo quebra em 1 ou 2
 * linhas em cima.
 */
.form-row{position:relative}
.form-row .show-password-input{position:absolute;right:6px;bottom:0;width:38px;height:46px;padding:0;border:none;background-color:transparent;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234A5570' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 12s4-7 11-7 11 7 11 7-4 7-11 7-11-7-11-7z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:center;background-size:19px}
.form-row .show-password-input:hover{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23FF1E3F' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 12s4-7 11-7 11 7 11 7-4 7-11 7-11-7-11-7z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E")}
.form-row input[type="password"],
.form-row input[type="text"].password-input{padding-right:42px}

/*
 * Campo País, virado "hidden" com valor fixo BR (NJP_Checkout_Layout::
 * ocultar_campo_pais — só vendemos pro Brasil). Descoberto em teste real
 * (21/09/2026): mesmo com o campo escondido, o WooCommerce continua
 * desenhando a LINHA inteira (".form-row", com rótulo) por fora do
 * <input> — sobrava "País (opcional)" solto na tela, sem nada do lado.
 * Escondendo a linha toda, não só o campo.
 */
#billing_country_field,
#shipping_country_field{display:none}

/*
 * Select2 (usado no campo "Estado" — Checkout, Minha Conta > Dados da
 * conta, livro de endereços) substitui o <select> por um widget próprio,
 * com HTML totalmente diferente (".select2-container..."), por isso a
 * regra ".form-row select" acima não alcançava — ficava com a aparência
 * padrão da biblioteca (borda quadrada, azul), destoando do resto do
 * formulário. Reportado 21/09/2026, no Checkout. Global (não só
 * Checkout) porque o mesmo campo aparece em mais de uma tela.
 */
.select2-container--default .select2-selection--single{height:46px;display:flex;align-items:center;padding:0 14px;border:1.5px solid var(--border);border-radius:8px;background:var(--surface)}
.select2-container--default .select2-selection--single .select2-selection__rendered{padding:0;line-height:normal;font-size:14px;color:var(--ink);font-family:var(--font-body)}
.select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--ink-soft)}
.select2-container--default .select2-selection--single .select2-selection__arrow{height:44px;right:10px}
.select2-container--default.select2-container--open .select2-selection--single{border-color:var(--red)}
.select2-dropdown{border-color:var(--border);border-radius:8px;overflow:hidden;font-family:var(--font-body);font-size:14px;box-shadow:0 10px 24px rgba(0,0,0,.12)}
.select2-container--default .select2-results__option--highlighted[aria-selected]{background:var(--red);color:var(--on-red)}
.select2-container--default .select2-results__option[aria-selected="true"]{background:var(--surface-2)}
.select2-search--dropdown .select2-search__field{border:1.5px solid var(--border);border-radius:6px;padding:6px 10px;font-family:var(--font-body);font-size:13.5px}
.select2-search--dropdown .select2-search__field:focus{outline:none;border-color:var(--red)}

button.woocommerce-Button,
button.woocommerce-button,
.njp-account-content button.button,
.njp-account-content input.button{background:var(--red);color:var(--on-red)!important;border:none;border-radius:8px;padding:0 26px;height:46px;font-weight:700;font-size:13.5px;cursor:pointer;font-family:inherit}
button.woocommerce-Button:hover,
.njp-account-content button.button:hover{background:var(--red-deep)}

.woocommerce-form-login,
.woocommerce-form-register{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:28px;max-width:440px}
.woocommerce-form-login .lost_password,
.woocommerce-form-register .lost_password{margin-top:12px}
.woocommerce-form-login .lost_password a,
.woocommerce-form-register .lost_password a{color:var(--red);text-decoration:none;font-size:12.5px;font-weight:600}
.u-columns{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:start}

/*
 * Login e cadastro reimaginados (16/10/2026, woocommerce/myaccount/form-login.php): um cartão só — benefícios da conta à
 * esquerda, abas "Entrar | Criar conta" à direita, login social no topo de cada aba. Fundos claros, sem sombra (mesmas
 * regras do resto do site). No celular, o formulário vem primeiro e os benefícios embaixo. O "MINHA CONTA" da página
 * some aqui: o cartão já tem o próprio título.
 */
body.woocommerce-account:not(.logged-in):has(#customer_login) .njp-page-title{display:none}
.njp-auth{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,500px);max-width:1080px;margin:8px auto 0;background:var(--surface);border:1px solid var(--border);border-radius:20px;overflow:hidden}
.njp-auth-lado{display:flex;flex-direction:column;justify-content:center;gap:18px;padding:48px 44px;background:var(--surface-2)}
.njp-auth-selo{display:inline-flex;width:fit-content;padding:5px 12px;border-radius:999px;background:var(--red-tint);color:var(--red-deep);font-size:11.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase}
.njp-auth-chamada{margin:0;font-family:var(--font-display);font-size:38px;font-weight:800;line-height:1.05;color:var(--ink);text-transform:uppercase}
/* "NA HORA CERTA" (pedido 16/10/2026): faixa na cor de destaque, inteira — no celular desce junta pra 2ª linha, sem quebrar
   no meio. Cantos de 6px (botão é 10px), pra não parecer clicável. */
.njp-auth-destaque{display:inline-block;padding:.04em .22em .02em;border-radius:6px;background:var(--red);color:var(--on-red)}
.njp-auth-beneficios{display:flex;flex-direction:column;gap:14px;margin:6px 0 0;padding:0;list-style:none}
.njp-auth-beneficios li{display:flex;align-items:flex-start;gap:12px;font-size:14px;line-height:1.45;color:var(--ink-soft)}
.njp-auth-beneficios strong{color:var(--ink)}
.njp-auth-beneficio-icone{display:grid;place-items:center;flex-shrink:0;width:38px;height:38px;border-radius:10px;background:var(--surface);color:var(--red)}
.njp-auth-beneficio-icone .njp-icon{width:20px;height:20px}
.njp-auth-cartao{padding:36px 40px 32px}
.njp-auth-abas{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:26px;padding:4px;border-radius:12px;background:var(--surface-2)}
.njp-auth-aba{height:42px;border:0;border-radius:9px;background:none;color:var(--ink-soft);font-family:inherit;font-size:14px;font-weight:700;cursor:pointer;transition:background .15s,color .15s}
.njp-auth-aba[aria-selected="true"]{background:var(--surface);color:var(--ink)}
.njp-auth-aba:focus-visible{outline:2px solid var(--red);outline-offset:2px}
.njp-auth-painel[hidden]{display:none}
.njp-auth-titulo{margin:0 0 4px;font-family:var(--font-display);font-size:26px;font-weight:800;color:var(--ink)}
.njp-auth-sub{margin:0 0 20px;font-size:13.5px;color:var(--ink-soft)}
.njp-auth-social{display:flex;flex-direction:column;gap:10px;margin-bottom:6px}
.njp-auth-social a,.njp-auth-social button{border-radius:10px!important}
/* Nextend Social Login (16/10/2026, já instalado no staging): o botão vinha com a largura do texto (241 de 289px no
   celular), 40px de altura e cantos de 4px — agora da largura dos campos, 48px e cantos de 10px, como o resto do cartão. */
.njp-auth .njp-auth-social .nsl-container{width:100%}
.njp-auth .njp-auth-social .nsl-container-buttons{display:grid;grid-template-columns:1fr;gap:10px;width:100%;padding:0}
.njp-auth .njp-auth-social .nsl-container-buttons a{width:100%;margin:0}
.njp-auth .njp-auth-social .nsl-button{min-height:48px;align-items:center;border-radius:10px}
.njp-auth-ou{display:flex;align-items:center;gap:12px;margin:16px 0;font-size:12px;color:var(--ink-soft)}
.njp-auth-ou::before,.njp-auth-ou::after{content:"";flex:1;height:1px;background:var(--border)}
.njp-auth .woocommerce-form-login,.njp-auth .woocommerce-form-register{max-width:none;margin:0;padding:0;background:none;border:0;border-radius:0}
.njp-auth .form-row{margin-bottom:14px}
.njp-auth .form-row label{font-size:12.5px;font-weight:600;color:var(--ink)}
.njp-auth .form-row input.input-text{height:48px;font-size:15px}
.njp-auth-linha{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:-2px 0 16px;font-size:13px}
.njp-auth-linha label{display:inline-flex;align-items:center;gap:7px;margin:0;color:var(--ink-soft);cursor:pointer}
.njp-auth-linha input[type="checkbox"]{width:16px;height:16px;accent-color:var(--red)}
.njp-auth-esqueci{font-weight:700;color:var(--red);text-decoration:none}
.njp-auth-esqueci:hover{text-decoration:underline}
.njp-auth .njp-auth-botao{width:100%;height:50px;border:0;border-radius:10px;background:var(--red);color:var(--on-red);font-family:inherit;font-size:15px;font-weight:700;cursor:pointer}
.njp-auth .njp-auth-botao:hover{background:var(--red-deep)}
.njp-auth .woocommerce-privacy-policy-text{margin:0 0 14px;font-size:12px;line-height:1.5;color:var(--ink-soft)}
.njp-auth .woocommerce-privacy-policy-text a{color:var(--red)}
.njp-auth-nota{font-size:13px;color:var(--ink-soft)}
.njp-auth-trocar{margin:18px 0 0;font-size:13.5px;text-align:center;color:var(--ink-soft)}
.njp-auth-trocar button{padding:0;border:0;background:none;color:var(--red);font-family:inherit;font-size:inherit;font-weight:700;cursor:pointer}
.njp-auth-trocar button:hover{text-decoration:underline}
.njp-auth.is-so-entrar{grid-template-columns:minmax(0,1fr) minmax(0,460px)}
@media (max-width:860px){
  .njp-auth{grid-template-columns:1fr;max-width:520px}
  .njp-auth-cartao{order:-1;padding:26px 22px 24px}
  .njp-auth-lado{padding:26px 22px;gap:14px}
  .njp-auth-chamada{font-size:28px}
}

/* "Esqueci a senha" e "nova senha" (templates padrão do WooCommerce): mesmo cartão claro do login, centralizado. */
body.woocommerce-lost-password .woocommerce-ResetPassword,
.woocommerce-account:not(.logged-in) form.woocommerce-ResetPassword{max-width:480px;margin:8px auto 0;padding:32px 36px;background:var(--surface);border:1px solid var(--border);border-radius:20px}
.woocommerce-ResetPassword > p:first-child{margin:0 0 18px;font-size:14px;line-height:1.55;color:var(--ink-soft)}
.woocommerce-ResetPassword .form-row-first,.woocommerce-ResetPassword .form-row-last{width:100%;float:none}
.woocommerce-ResetPassword input.input-text{height:48px;font-size:15px}
.woocommerce-ResetPassword button.button{width:100%;height:50px;border-radius:10px}
@media (max-width:560px){
  body.woocommerce-lost-password .woocommerce-ResetPassword,
  .woocommerce-account:not(.logged-in) form.woocommerce-ResetPassword{padding:24px 20px}
}

.woocommerce-orders-table,
table.shop_table{width:100%;border-collapse:collapse;font-size:13px}
.woocommerce-orders-table th,.woocommerce-orders-table td,
table.shop_table th,table.shop_table td{text-align:left;padding:12px;border-bottom:1px solid var(--border)}
.woocommerce-orders-table th,table.shop_table th{color:var(--ink-soft);font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.3px}
/* Fora do carrinho (16/10/2026): lá os botões de cupom/atualizar/CEP têm estilo próprio, e este (com !important) os deixava cinza e com 32px. ":where" não muda a força da regra — o "Ver"/"Pagar" vermelho de Pedidos continua ganhando. */
.woocommerce-orders-table .button,
:where(body:not(.woocommerce-cart)) table.shop_table .button{display:inline-flex;align-items:center;height:32px!important;padding:0 13px;font-size:12px;background:var(--surface-2)!important;color:var(--ink)!important;border-radius:6px;text-decoration:none;font-weight:600;border:1px solid var(--border)}
.woocommerce-orders-table .button.pay,
.woocommerce-orders-table .button.view{background:var(--red)!important;color:var(--on-red)!important;border-color:var(--red)}
.order-again{margin-top:6px}

/*
 * Selo de status do pedido (a tag <mark> que o WooCommerce gera sozinho —
 * sem isso, fica com o fundo amarelo padrão do navegador pra <mark>)
 * — pedido 20/09/2026. Mesma linguagem visual dos selos do painel
 * (.njp-dash-status), incluindo as mesmas classes de status que o
 * WooCommerce já usa (status-completed, status-processing, etc.), pra não
 * precisar duplicar em PHP.
 */
mark.order-status{display:inline-flex;width:fit-content;background:var(--surface-2);color:var(--ink-soft);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;padding:3px 9px;border-radius:999px}
mark.order-status.status-completed,mark.order-status.status-processing{background:var(--green-bg);color:var(--green)}
mark.order-status.status-pending,mark.order-status.status-on-hold{background:rgba(255,176,32,.16);color:#B45300}
mark.order-status.status-cancelled,mark.order-status.status-failed,mark.order-status.status-refunded{background:rgba(220,53,69,.1);color:var(--danger-deep)}

.woocommerce-Addresses{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.woocommerce-Address-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
address{font-style:normal;font-size:13.5px;color:var(--ink-soft);line-height:1.7}

/*
 * Detalhes do Pedido (view-order) — pedido 20/09/2026: texto maior, mais
 * legível, endereço de entrega em destaque (cartão próprio, não só uma
 * lista corrida). Continua sendo o template nativo do WooCommerce, só com
 * classes que ele mesmo já gera (nenhum arquivo dele foi sobrescrito).
 */
.woocommerce-order-details table.shop_table{font-size:14px;margin-bottom:0}
.woocommerce-order-details table.shop_table th{font-size:11.5px}
.woocommerce-order-details table.shop_table tfoot tr:last-child th,
.woocommerce-order-details table.shop_table tfoot tr:last-child td{font-size:18px;font-weight:700;color:var(--ink)}

.woocommerce-customer-details{margin-top:32px}
.woocommerce-columns--addresses{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;list-style:none;padding:0;margin:0}
.woocommerce-column--billing-address,.woocommerce-column--shipping-address{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:22px}
.woocommerce-column__title{font-family:var(--font-display);font-size:16px;font-weight:700;color:var(--ink);margin:0 0 12px;text-transform:uppercase;letter-spacing:.3px}
.woocommerce-customer-details address{font-size:14.5px;line-height:1.85}

/* Botão de contato do pedido — pedido 20/09/2026, ver njparts_order_contato() no functions.php. */
.njp-order-actions{display:flex;gap:10px;flex-wrap:wrap;margin:22px 0}
.njp-order-actions .njp-btn-whatsapp{height:44px}

/* Suporte pós-venda (22/10/2026, 1ª etapa — njparts_url_suporte(), functions.php): botão "Tive um problema" com contorno
   vermelho, do tamanho do botão do WhatsApp. Na página do pedido vira um cartão (texto + os dois botões); no painel de
   Minha Conta, uma faixa abaixo dos cartões. No celular, botões na largura toda. */
.njp-btn-suporte{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:fit-content;height:44px;padding:0 20px;border:1.5px solid var(--red);border-radius:10px;background:var(--surface);color:var(--red-deep);font-weight:700;font-size:14px;text-decoration:none;white-space:nowrap}
.njp-btn-suporte:hover{background:var(--red);color:var(--on-red)}
.njp-btn-suporte .njp-icon{width:18px;height:18px}
.njp-order-ajuda.has-suporte{margin:22px 0;padding:20px 22px;background:var(--surface);border:1px solid var(--border);border-radius:16px}
.njp-order-ajuda.has-suporte .njp-order-actions{margin:14px 0 0}
.njp-order-ajuda-texto{margin:0;font-size:13.5px;line-height:1.55;color:var(--ink-soft)}
.njp-order-ajuda-texto strong{display:block;margin-bottom:2px;font-size:15px;color:var(--ink)}
.njp-order-ajuda-texto b{color:var(--ink)}
.njp-dash-ajuda{display:flex;align-items:center;gap:14px;margin-top:16px;padding:18px 22px;background:var(--surface);border:1px solid var(--border);border-radius:16px}
.njp-dash-ajuda > .njp-icon{width:26px;height:26px;color:var(--red);flex-shrink:0}
.njp-dash-ajuda-texto{flex:1;min-width:0;margin:0;font-size:13px;line-height:1.5;color:var(--ink-soft)}
.njp-dash-ajuda-texto strong{display:block;font-size:15px;color:var(--ink)}
@media (max-width:640px){
  .njp-dash-ajuda{flex-wrap:wrap;align-items:flex-start}
  .njp-dash-ajuda .njp-btn-suporte{width:100%}
  .njp-order-ajuda.has-suporte .njp-order-actions > a{flex:1 1 100%;justify-content:center}
}

/*
 * Lista de Pedidos em cartões (woocommerce/myaccount/orders.php) — pedido
 * 20/09/2026, no lugar da tabela padrão do WooCommerce.
 */
.njp-orders-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px}
.njp-order-card{display:flex;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:16px;text-decoration:none;color:var(--ink);transition:border-color .15s,transform .15s}
.njp-order-card:hover{border-color:var(--red);transform:translateY(-2px)}
.njp-order-card-img{position:relative;width:76px;height:76px;flex-shrink:0;border-radius:10px;overflow:hidden;background:var(--surface-2);display:flex;align-items:center;justify-content:center}
.njp-order-card-img img{width:100%;height:100%;object-fit:contain}
.njp-order-card-mais{position:absolute;bottom:2px;right:2px;background:var(--ink);color:var(--surface);font-size:10px;font-weight:700;padding:2px 5px;border-radius:999px;line-height:1.4}
.njp-order-card-body{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}
.njp-order-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.njp-order-card-top strong{font-size:14px;color:var(--ink)}
.njp-order-card-date{font-size:12px;color:var(--ink-soft)}
.njp-order-card-total{font-family:var(--font-display);font-size:19px;font-weight:700;color:var(--ink);margin-top:2px}
.njp-order-card-btn{display:inline-flex;align-items:center;gap:4px;margin-top:auto;padding-top:6px;font-size:12.5px;font-weight:700;color:var(--red)}
.njp-order-card-btn .njp-icon{width:13px;height:13px}

.njp-orders-pagination{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:26px;font-size:13px;color:var(--ink-soft)}
.njp-orders-pagination a{color:var(--red);font-weight:700;text-decoration:none}
.njp-orders-pagination a:hover{text-decoration:underline}

/*
 * Detalhes do Pedido — reconstruída (woocommerce/myaccount/view-order.php),
 * pedido 20/09/2026: "mudança impactante, algo mais Marketplace".
 */
.njp-vo-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:24px}
.njp-vo-head-eyebrow{display:block;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-soft)}
.njp-vo-head-numero{font-family:var(--font-display);font-size:34px;font-weight:800;color:var(--ink);margin:2px 0}
.njp-vo-head-data{font-size:13px;color:var(--ink-soft)}
.njp-vo-head-status{font-size:12.5px;padding:7px 16px;margin-top:6px}

.njp-vo-problema{display:flex;gap:14px;align-items:flex-start;background:rgba(220,53,69,.08);border:1px solid rgba(220,53,69,.25);border-radius:14px;padding:18px;margin-bottom:28px}
.njp-vo-problema .njp-icon{width:24px;height:24px;color:var(--danger-deep);flex-shrink:0}
.njp-vo-problema strong{display:block;font-size:15px;color:var(--danger-deep)}
.njp-vo-problema p{font-size:13px;color:var(--ink-soft);margin:4px 0 0}

.njp-vo-timeline{display:flex;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:24px 28px;margin-bottom:28px}
.njp-vo-step{display:flex;flex-direction:column;align-items:center;gap:8px;flex-shrink:0}
.njp-vo-step-dot{width:34px;height:34px;border-radius:50%;background:var(--surface-2);color:transparent;display:flex;align-items:center;justify-content:center;border:2px solid var(--border)}
.njp-vo-step-dot .njp-icon{width:16px;height:16px}
.njp-vo-step.is-done .njp-vo-step-dot{background:var(--green);border-color:var(--green);color:#fff}
.njp-vo-step-label{font-size:11.5px;font-weight:700;color:var(--ink-soft);text-align:center;max-width:90px}
.njp-vo-step.is-done .njp-vo-step-label{color:var(--ink)}
.njp-vo-step-line{flex:1;height:2px;background:var(--border);margin:0 6px;margin-bottom:26px}
.njp-vo-step-line.is-done{background:var(--green)}

.njp-vo-layout{display:grid;grid-template-columns:1fr 340px;gap:24px;align-items:start}
.njp-vo-main,.njp-vo-side{display:flex;flex-direction:column;gap:20px}
.njp-vo-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:22px}
.njp-vo-card-title{display:flex;align-items:center;gap:7px;font-family:var(--font-display);font-size:16px;font-weight:700;color:var(--ink);margin:0 0 16px;text-transform:uppercase;letter-spacing:.3px}
.njp-vo-card-title .njp-icon{width:17px;height:17px;color:var(--red)}

.njp-vo-item{display:flex;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid var(--border)}
.njp-vo-item:last-child{border-bottom:none;padding-bottom:0}
.njp-vo-item:first-child{padding-top:0}
.njp-vo-item-img{width:60px;height:60px;flex-shrink:0;border-radius:10px;overflow:hidden;background:var(--surface-2);display:flex;align-items:center;justify-content:center}
.njp-vo-item-img img{width:100%;height:100%;object-fit:contain}
.njp-vo-item-info{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0}
.njp-vo-item-info a,.njp-vo-item-info span:first-child{font-size:14px;font-weight:600;color:var(--ink);text-decoration:none}
.njp-vo-item-info a:hover{color:var(--red)}
.njp-vo-item-qty{font-size:12.5px;color:var(--ink-soft)}
.njp-vo-item-total{font-size:14.5px;font-weight:700;color:var(--ink);white-space:nowrap}

.njp-vo-resumo-row{display:flex;align-items:center;justify-content:space-between;font-size:13.5px;color:var(--ink-soft);padding:6px 0}
.njp-vo-resumo-row.njp-vo-desconto{color:var(--green)}
.njp-vo-gratis{color:var(--green);font-weight:700}
.njp-vo-resumo-total{border-top:1px dashed var(--border);margin-top:6px;padding-top:14px;font-size:17px;font-weight:800;color:var(--ink)}
.njp-vo-pagamento{margin-top:12px;font-size:12px;color:var(--ink-soft)}

.njp-vo-card-endereco{background:var(--red-tint);border-color:transparent}
.njp-vo-card-endereco .njp-vo-card-title{color:var(--red-deep)}
.njp-vo-card-endereco address{color:var(--ink)}
.njp-vo-fone{display:block;margin-top:6px;font-size:13px;color:var(--ink-soft)}

@media (max-width:900px){
	.njp-vo-layout{grid-template-columns:1fr}
	.njp-vo-timeline{padding:20px 14px}
	.njp-vo-step-label{font-size:10.5px;max-width:70px}
}

/*
 * Rastreio do pedido (14/10/2026) — status logístico que vem do ERP: bloco "Acompanhe sua entrega" (Ver pedido e
 * página "Rastrear pedido"), selo de entrega nos cartões de pedido. O HTML vem do nj-parts-core
 * (NJP_Order_Tracking::render / render_consulta). Etapas deitadas no computador; em pé no celular e quando o bloco
 * fica estreito (container query — navegador antigo cai só na regra por largura de tela).
 */
.njp-trk{container:njp-trk / inline-size;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:24px 26px;margin-bottom:28px}
.njp-trk-topo{display:flex;flex-direction:column;gap:2px;margin-bottom:22px}
.njp-trk-sobre{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-soft)}
.njp-trk-status{font-family:var(--font-display);font-size:26px;font-weight:800;line-height:1.15;color:var(--ink)}
.njp-trk-detalhe{font-size:13px;color:var(--ink-soft)}

.njp-trk-aviso{margin:0 0 20px;padding:12px 16px;border-radius:12px;font-size:13.5px;line-height:1.5}
.njp-trk-aviso--alerta{background:rgba(255,176,32,.16);color:#7A4A00}
.njp-trk-aviso--erro{background:var(--danger-tint);color:var(--danger-deep)}
.njp-trk-aviso--info{background:var(--surface-2);color:var(--ink-soft)}

.njp-trk-etapas{list-style:none;margin:0;padding:0;display:flex}
.njp-trk-etapa{position:relative;flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:8px;padding:0 4px;text-align:center}
/* Linha até a próxima etapa — verde quando a próxima também já foi atingida (.linha-feita, calculado no PHP). */
.njp-trk-etapa::after{content:"";position:absolute;top:16px;left:calc(50% + 19px);right:calc(19px - 50%);height:3px;border-radius:2px;background:var(--border)}
.njp-trk-etapa:last-child::after{display:none}
.njp-trk-etapa.linha-feita::after{background:var(--green)}
.njp-trk-ponto{position:relative;z-index:1;flex-shrink:0;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--surface);border:2px solid var(--border);color:#fff}
.njp-trk-ponto svg{width:16px;height:16px}
.njp-trk-etapa.is-feito .njp-trk-ponto{background:var(--green);border-color:var(--green)}
.njp-trk-etapa.is-atual .njp-trk-ponto{background:var(--green);border-color:var(--green);box-shadow:0 0 0 6px var(--green-bg)}
.njp-trk-etapa.is-alerta .njp-trk-ponto{background:var(--amber);border-color:var(--amber);color:var(--on-amber);box-shadow:0 0 0 6px rgba(255,176,32,.22)}
.njp-trk-texto{display:flex;flex-direction:column;gap:2px;min-width:0}
.njp-trk-rotulo{font-size:12px;font-weight:700;line-height:1.3;color:var(--ink-soft)}
.njp-trk-etapa.is-feito .njp-trk-rotulo{color:var(--ink)}
.njp-trk-etapa.is-atual .njp-trk-rotulo{color:var(--green)}
.njp-trk-etapa.is-alerta .njp-trk-rotulo{color:#7A4A00}
.njp-trk-texto time{font-size:11px;color:var(--ink-soft);font-variant-numeric:tabular-nums}

.njp-trk-rastreio{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px 20px;margin-top:24px;padding-top:20px;border-top:1px dashed var(--border)}
.njp-trk-codigo{display:flex;flex-direction:column;gap:2px;min-width:0}
.njp-trk-codigo span{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-soft)}
.njp-trk-codigo strong{font-family:var(--font-mono);font-size:18px;letter-spacing:.5px;color:var(--ink);overflow-wrap:anywhere}
.njp-trk-codigo small{font-size:12.5px;color:var(--ink-soft)}
.njp-trk-acoes{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}
.njp-trk-copiar{height:44px;padding:0 16px;border:1.5px solid var(--border);border-radius:10px;background:var(--surface);color:var(--ink);font-family:inherit;font-size:13px;font-weight:700;cursor:pointer}
.njp-trk-copiar:hover{border-color:var(--ink)}
.njp-trk-ver{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:44px;padding:0 18px;border-radius:10px;background:var(--red);color:var(--on-red);font-size:13.5px;font-weight:700;text-decoration:none}
.njp-trk-ver:hover{background:var(--red-deep);color:var(--on-red)}
.njp-trk-nota{grid-column:1 / -1;margin:0;font-size:12px;line-height:1.5;color:var(--ink-soft)}

.njp-trk-selo{display:inline-flex;width:fit-content;padding:3px 9px;border-radius:999px;background:var(--surface-2);color:var(--ink-soft);font-size:10.5px;font-weight:700;letter-spacing:.3px;text-transform:uppercase}
.njp-trk-selo--delivered{background:var(--green-bg);color:var(--green)}
.njp-trk-selo--delivery_paused,.njp-trk-selo--delivery_failed{background:rgba(255,176,32,.16);color:#7A4A00}
.njp-trk-selo--cancelled{background:var(--danger-tint);color:var(--danger-deep)}

/* "Veículos compatíveis" no cartão de produto (PDF de melhorias pág. 4, 15/10/2026 — HTML em product-card.php). */
.njp-prod-veiculos{font-size:11.5px;line-height:1.45;color:var(--ink-soft);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.njp-prod-veiculos-rotulo{font-weight:700;color:var(--ink);margin-right:4px}
.njp-prod-veiculos-lista b{font-weight:700;color:var(--ink)}
.njp-prod-veiculos .njp-sep{color:var(--red);font-weight:700;margin:0 2px}
.njp-prod-veiculos-mais{margin-left:6px;font-weight:700;color:var(--red);text-decoration:none;white-space:nowrap}
.njp-prod-veiculos-mais:hover{text-decoration:underline}
#veiculos-compativeis{scroll-margin-top:calc(110px + var(--njp-faixa-h,0px))}

/* Cartão do pedido (lista de pedidos e painel de Minha Conta): "🚚 A caminho". */
.njp-order-card-entrega{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:700;color:var(--ink)}
.njp-order-card-entrega .njp-icon{width:15px;height:15px;color:var(--ink-soft)}
.njp-order-card-entrega--delivered,.njp-order-card-entrega--delivered .njp-icon{color:var(--green)}
.njp-order-card-entrega--delivery_paused,.njp-order-card-entrega--delivery_failed{color:#B45300}

@container njp-trk (max-width:680px){
	.njp-trk-etapas{flex-direction:column}
	.njp-trk-etapa{flex-direction:row;align-items:flex-start;gap:12px;padding:0 0 18px;text-align:left}
	.njp-trk-etapa:last-child{padding-bottom:0}
	.njp-trk-etapa::after{top:36px;bottom:2px;left:15.5px;right:auto;width:3px;height:auto}
	.njp-trk-texto{padding-top:7px}
	.njp-trk-rastreio{grid-template-columns:1fr}
	.njp-trk-acoes{justify-content:stretch}
	.njp-trk-acoes > *{flex:1 1 auto}
}
@media (max-width:760px){
	.njp-trk{padding:20px 18px}
	.njp-trk-status{font-size:23px}
	.njp-trk-etapas{flex-direction:column}
	.njp-trk-etapa{flex-direction:row;align-items:flex-start;gap:12px;padding:0 0 18px;text-align:left}
	.njp-trk-etapa:last-child{padding-bottom:0}
	.njp-trk-etapa::after{top:36px;bottom:2px;left:15.5px;right:auto;width:3px;height:auto}
	.njp-trk-texto{padding-top:7px}
	.njp-trk-rastreio{grid-template-columns:1fr}
	.njp-trk-acoes{justify-content:stretch}
	.njp-trk-acoes > *{flex:1 1 auto}
}

/* Página "Rastrear pedido" (template-rastreio.php) */
.njp-rastreio-hero{display:flex;align-items:center;gap:18px;margin-bottom:26px}
.njp-rastreio-icone{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:56px;height:56px;border-radius:16px;background:var(--red-tint);color:var(--red)}
.njp-rastreio-icone .njp-icon{width:28px;height:28px}
.njp-rastreio-hero .njp-page-title{margin:0 0 4px}
.njp-rastreio-hero p{max-width:640px;margin:0;font-size:14.5px;color:var(--ink-soft)}
.njp-rastreio-texto{margin-bottom:22px;font-size:14.5px;color:var(--ink-soft)}
.njp-rastreio-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:24px;align-items:start}
.njp-rastreio-consulta{display:flex;flex-direction:column;gap:20px}
.njp-rastreio-form,.njp-rastreio-meus,.njp-rastreio-card,.njp-rastreio-resultado{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:22px}
.njp-rastreio-titulo{margin:0 0 14px;font-family:var(--font-display);font-size:18px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;color:var(--ink)}
.njp-rastreio-campos{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:12px;margin-bottom:16px}
.njp-rastreio-campos label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;font-weight:600;color:var(--ink-soft)}
.njp-rastreio-campos input{height:46px;padding:0 14px;border:1.5px solid var(--border);border-radius:10px;background:var(--surface);color:var(--ink);font-family:var(--font-body);font-size:15px}
.njp-rastreio-campos input:focus{outline:none;border-color:var(--red)}
.njp-rastreio-btn{height:48px;padding:0 28px;border:none;border-radius:10px;background:var(--red);color:var(--on-red);font-family:inherit;font-size:14.5px;font-weight:700;cursor:pointer}
.njp-rastreio-btn:hover{background:var(--red-deep)}
.njp-rastreio-erro{margin:0;padding:12px 16px;border-radius:12px;background:var(--danger-tint);color:var(--danger-deep);font-size:13.5px;font-weight:600;line-height:1.5}
.njp-rastreio-resultado .njp-trk{margin:0;padding:0;border:none;border-radius:0}
.njp-rastreio-pedido{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid var(--border)}
.njp-rastreio-pedido strong{font-family:var(--font-display);font-size:22px;color:var(--ink)}
.njp-rastreio-pedido span{font-size:13px;color:var(--ink-soft)}
.njp-rastreio-pedido a{margin-left:auto;font-size:13px;font-weight:700;color:var(--red);text-decoration:none}
.njp-rastreio-meus ul{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
.njp-rastreio-meus a{display:grid;grid-template-columns:auto auto 1fr auto;grid-template-areas:"num data selo ir";align-items:center;gap:6px 14px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;color:var(--ink);text-decoration:none;transition:border-color .15s}
.njp-rastreio-meus a:hover{border-color:var(--red)}
.njp-rastreio-meus-num{grid-area:num;font-size:14px;font-weight:700}
.njp-rastreio-meus-data{grid-area:data;font-size:12.5px;color:var(--ink-soft)}
.njp-rastreio-meus .njp-trk-selo{grid-area:selo}
.njp-rastreio-meus-ir{grid-area:ir;font-size:12.5px;font-weight:700;color:var(--red)}
.njp-rastreio-ajuda{display:flex;flex-direction:column;gap:16px}
.njp-rastreio-card h3{margin:0 0 6px;font-family:var(--font-display);font-size:16px;font-weight:700;color:var(--ink)}
.njp-rastreio-card p{margin:0 0 12px;font-size:13.5px;line-height:1.55;color:var(--ink-soft)}
.njp-rastreio-card p:last-child{margin-bottom:0}
.njp-rastreio-link{font-size:13.5px;font-weight:700;color:var(--red);text-decoration:none}
.njp-rastreio-link:hover{text-decoration:underline}
@media (max-width:900px){
	.njp-rastreio-grid{grid-template-columns:1fr}
}
@media (max-width:560px){
	.njp-rastreio-hero{align-items:flex-start;gap:14px}
	.njp-rastreio-icone{width:46px;height:46px;border-radius:12px}
	.njp-rastreio-icone .njp-icon{width:24px;height:24px}
	.njp-rastreio-form,.njp-rastreio-meus,.njp-rastreio-card,.njp-rastreio-resultado{padding:18px}
	.njp-rastreio-campos{grid-template-columns:1fr}
	.njp-rastreio-btn{width:100%}
	.njp-rastreio-pedido a{margin-left:0}
	.njp-rastreio-meus a{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"num ir" "selo data"}
	.njp-rastreio-meus-data{justify-self:end}
}

.njp-garage-add{margin-bottom:24px}
.njp-garage-add h3{font-family:var(--font-display);font-size:18px;margin-bottom:14px}
.njp-garage-list{display:flex;flex-direction:column;gap:10px}
.njp-garage-row{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:var(--surface);border:1.5px solid var(--border);border-radius:12px;padding:16px 20px}
.njp-garage-row.is-active{border-color:var(--red)}
.njp-garage-row-info{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.njp-garage-row-info strong{font-size:14.5px}
.njp-garage-sub{font-size:12.5px;color:var(--ink-soft)}
.njp-garage-badge{background:var(--red);color:var(--on-red);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;padding:3px 9px;border-radius:999px}
.njp-garage-row-actions{display:flex;gap:10px;flex-shrink:0}
.njp-garage-remove{background:none;border:1.5px solid var(--red);color:var(--red);border-radius:8px;padding:0 16px;height:38px;font-size:12.5px;font-weight:700;cursor:pointer;font-family:inherit}
.njp-garage-remove:hover{background:var(--red-tint)}
.njp-garage-remove:disabled{opacity:.5;cursor:default}
.njp-garage-shop{background:var(--navy);color:#fff;border-radius:8px;padding:0 18px;height:38px;display:inline-flex;align-items:center;font-size:12.5px;font-weight:700;text-decoration:none}
.njp-garage-shop:hover{background:var(--red)}
.njp-garage-empty{font-size:13.5px;color:var(--ink-soft);margin:16px 0}

@media (max-width:760px){
  .njp-account-layout{grid-template-columns:1fr}
  .u-columns{grid-template-columns:1fr}
  /*
   * Minha Conta no celular (16/10/2026, "rolagem, elementos grandes"). Antes: título grande + "Voltar ao painel" + o menu
   * da conta virado tira de botões que rolava pro lado, tudo em cima do conteúdo (o 1º pedido começava lá embaixo).
   * Agora: título menor, o menu some e vira o seletor "Pedidos ▾" na mesma linha do "‹ Painel"; cartões mais baixos.
   */
  body.woocommerce-account .njp-page-title{font-size:24px;margin-bottom:12px}
  .njp-account-topo{margin-bottom:14px}
  .njp-account-back-longo{display:none}
  .njp-account-back-curto{display:inline}
  .njp-account-layout > .woocommerce-MyAccount-navigation{display:none}
  .njp-account-trocar{display:block;position:relative}
  .njp-account-trocar summary{display:flex;align-items:center;gap:6px;height:38px;padding:0 10px 0 14px;border:1.5px solid var(--border);border-radius:10px;background:var(--surface);font-size:13.5px;font-weight:700;color:var(--ink);cursor:pointer;list-style:none}
  .njp-account-trocar summary::-webkit-details-marker{display:none}
  .njp-account-trocar summary .njp-icon{width:16px;height:16px;color:var(--ink-soft);transition:transform .15s}
  .njp-account-trocar[open] summary{border-color:var(--red)}
  .njp-account-trocar[open] summary .njp-icon{transform:rotate(180deg)}
  .njp-account-trocar ul{position:absolute;top:calc(100% + 6px);right:0;z-index:30;min-width:220px;margin:0;padding:6px;list-style:none;background:var(--surface);border:1px solid var(--border);border-radius:12px}
  .njp-account-trocar li a{display:block;padding:11px 12px;border-radius:8px;font-size:14px;font-weight:600;color:var(--ink);text-decoration:none}
  .njp-account-trocar li.is-active a{background:var(--red-tint);color:var(--red)}
  .njp-orders-grid{grid-template-columns:1fr;gap:12px}
  .njp-order-card{gap:12px;padding:12px;align-items:center}
  .njp-order-card-img{width:60px;height:60px}
  .njp-order-card-total{font-size:17px}
  /* O cartão inteiro já é o link: no lugar do "Ver mais" (uma linha a mais por pedido), a seta de lista no canto. */
  .njp-order-card-btn{display:none}
  .njp-order-card::after{content:"";flex-shrink:0;width:9px;height:9px;margin-right:4px;border:solid var(--ink-soft);border-width:2px 2px 0 0;transform:rotate(45deg)}
  .njp-orders-pagination{margin-top:18px}
  .njp-vo-head{margin-bottom:16px}
  .njp-vo-head-numero{font-size:26px}
  .njp-vo-card{padding:16px}
  .njp-dash-hello{margin-bottom:18px}
  .njp-dash-hello h2{font-size:22px}
  .njp-dash-grid{gap:12px}
  .njp-dash-card{padding:16px}
}

/* ---------- avaliações (Trustindex) ---------- */
/*
 * Sem fundo próprio (25/09/2026, padronização pedida) — antes tinha
 * background:var(--surface-2) fixo aqui, sempre ligado. Igual a maioria
 * dos outros ".njp-section" da home (Categoria, Veículo, Promocionais),
 * que só tem fundo tintado quando alguém pede de propósito (inline
 * style, ex.: "Mais vendidos"). Com os dois fixos, "Mais vendidos" (logo
 * antes) e "Avaliações" ficavam grudados num bloco cinza só, sem
 * separação visual entre as duas seções.
 */
/* .njp-reviews-head agora também leva ".njp-section-head" (25/09/2026) — título padronizado, sem CSS próprio de tamanho/cor. Regra específica de ".njp-reviews-eyebrow" removida (não usada mais, era só o <span> antigo). */
.njp-reviews-embed{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px}
/* Enquanto o widget espera a pessoa chegar perto (desempenho, 26/10/2026 — functions.php, njparts_avaliacoes_sob_demanda):
   o espaço já fica reservado, pra a página não "pular" quando ele entra. */
.njp-reviews-embed[data-njp-adiado]{min-height:220px}

/* ---------- newsletter (topo do rodapé) ---------- */
.njp-newsletter{background:var(--navy);color:#fff}
.njp-newsletter-inner{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;padding:28px 0}
.njp-newsletter-copy h3{font-size:21px;color:#fff}
.njp-newsletter-copy p{font-size:13px;color:rgba(255,255,255,.7);margin-top:4px}
.njp-newsletter-form{display:flex;gap:10px;flex-wrap:wrap}
.njp-newsletter-form input{width:260px;max-width:100%;height:46px;border:none;border-radius:8px;padding:0 14px;font-size:14px;font-family:var(--font-body)}
.njp-newsletter-form input:focus{outline:2px solid var(--red)}
.njp-newsletter-form button{height:46px;padding:0 22px;border:none;border-radius:8px;background:var(--red);color:var(--on-red);font-weight:700;font-size:13.5px;cursor:pointer;font-family:inherit;white-space:nowrap}
.njp-newsletter-form button:hover{background:var(--red-deep)}
@media (max-width:640px){.njp-newsletter-inner{flex-direction:column;align-items:stretch;text-align:center}.njp-newsletter-form{justify-content:center}}

/* ---------- selo de avaliação "⭐ nota/5" (Personalizar → Avaliações) ---------- */
.njp-rating-badge{display:inline-flex;align-items:center;gap:3px;background:rgba(5,15,40,.78);color:#fff;font-size:11.5px;font-weight:700;padding:4px 9px;border-radius:999px;backdrop-filter:blur(2px)}
.njp-rating-badge-count{opacity:.75;font-weight:500}
.njp-prod-media .njp-rating-badge{position:absolute;left:9px;bottom:9px}
.njp-pdp-gallery-main .njp-rating-badge{position:absolute;left:14px;bottom:14px;z-index:2;font-size:13px;padding:6px 12px}

/* ---------- rodapé ---------- */
.njp-site-footer{background:var(--surface-2);color:var(--ink-soft);padding:44px 0 28px;font-size:13.5px;border-top:1px solid var(--border)}
.njp-foot-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:28px;padding-bottom:26px;border-bottom:1px solid var(--border)}
.njp-foot-grid h4{color:var(--ink);font-family:var(--font-body);font-size:13.5px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin-bottom:14px}
.njp-foot-grid ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.njp-foot-grid a{text-decoration:none;color:var(--ink-soft)}
.njp-foot-grid a:hover{color:var(--red)}
.njp-foot-logo{margin-bottom:16px}
.njp-foot-logo img{height:46px;width:auto;display:block}
.njp-foot-contact li{line-height:1.5}
.njp-foot-grid .njp-foot-links-extra{margin-top:12px} /* menu "Rodapé — coluna 3", abaixo do telefone e e-mail */

/* Barra inferior do rodapé (25/09/2026): formas de pagamento à esquerda, selos de confiança à direita — as duas listas somem sozinhas se nada foi configurado. */
.njp-foot-payment-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;padding:22px 0;border-bottom:1px solid var(--border)}
.njp-foot-payment-img{height:28px;width:auto;object-fit:contain;display:block}
.njp-foot-trust-badges{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
/*
 * CORRIGIDO (25/09/2026, achado em teste real — o selo do Google ficou
 * minúsculo): dentro de "display:flex", um link (<a>) só com uma imagem
 * dentro pode encolher pra largura 0 (o link em si não tem "tamanho
 * próprio" nenhum pro flexbox se basear, só o que tem dentro) — mesmo a
 * imagem tendo altura certa, a largura calculada ia a zero. "flex-shrink:
 * 0" nos dois (link E imagem) impede esse encolhimento indevido. Também
 * aumentei de 34px pra 44px — selos como o do Google (logo + texto +
 * estrelas lado a lado) ficam ilegíveis muito pequenos.
 */
.njp-foot-trust-badges a{display:flex;flex-shrink:0}
.njp-foot-trust-badges img{height:44px;width:auto;flex-shrink:0;display:block}

.njp-foot-bottom{padding-top:18px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px;color:var(--ink-soft)}

@media (max-width:980px){
  /*
   * Slider do banner principal no celular/tablet (25/09/2026): o cartão
   * do buscador deixa de flutuar por cima da imagem (não cabe do lado do
   * texto numa tela estreita) e volta pro fluxo normal, abaixo do texto —
   * ".njp-hero" perde a altura fixa (agora é a soma da altura dos slides
   * + a altura do cartão, cada um do seu tamanho natural).
   */
  .njp-hero{min-height:0}
  /*
   * Altura do banner = a do texto (27/10/2026, dono: "aumentar o padding pra se afastar mais dos outros componentes").
   * Antes era fixa (340px; 280px no celular) com o texto centralizado: texto comprido passava da altura, encostava na
   * faixa de cima e descia por baixo do cartão do buscador. Agora os slides ficam empilhados na mesma célula de uma grade
   * (grid-area 1/1) — o banner fica com a altura do slide mais alto e não "pula" ao trocar de slide —, com 36px de folga
   * em cima e 36px antes do cartão (o cartão sobe 28px por cima do pé do banner: 64px embaixo). A altura antiga virou o
   * mínimo (no celular, proporcional à largura — bloco de 768px), que é a altura do slide só com imagem.
   */
  .njp-hero-slides{position:relative;inset:auto;height:auto;display:grid;grid-template-columns:minmax(0,1fr)}
  .njp-hero-slide{position:relative;inset:auto;grid-area:1/1;display:flex;min-height:340px}
  .njp-hero-slide-content{flex:1 1 auto;height:auto;padding-top:36px;padding-bottom:64px}
  /* Sem nenhum banner (todos desligados no Personalizar), não há pé de imagem pra o cartão subir por cima — com os 28px
     negativos ele saía cortado em cima (o .njp-hero esconde o que passa da borda). */
  .njp-hero.is-sem-banner .njp-hero-finder-wrap .njp-finder-card{margin-top:0}
  .njp-hero-nav{display:none}
  /* Aqui o texto ocupa a largura toda: o escurecido também (de cima pra baixo, mais forte atrás do texto de apoio).
     Contraste medido com a imagem real: pior ponto 6,4 (antes 1,0 — letra branca sobre o carro branco). */
  .njp-hero-slide-overlay{background:linear-gradient(180deg,rgba(5,15,40,.56) 0%,rgba(5,15,40,.68) 40%,rgba(5,15,40,.8) 100%)}
  /* Bolinhas entre o fim do texto e o cartão — em 20px elas ficavam escondidas atrás dele. */
  .njp-hero-dots{bottom:42px}
  /* 20px embaixo (pedido 19/10/2026): sem eles, o cartão encostava na faixa "Frete grátis / 7% no Pix" logo abaixo. */
  .njp-hero-finder-wrap{position:static;inset:auto;padding:22px 20px 20px;justify-content:center}
  /* O cartão sobe ~50px por cima do pé do banner (pedido 19/10/2026, com print) — position + z-index pra ficar NA FRENTE
     da imagem (o banner é "position:relative" e, sem isso, seria pintado por cima do cartão). */
  .njp-hero-finder-wrap .njp-finder-card{max-width:480px;position:relative;z-index:5;margin-top:-50px}
  .njp-hero h1{font-size:38px}
  .njp-trust-strip .njp-wrap{display:flex;overflow-x:auto;scroll-behavior:smooth;gap:0;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .njp-trust-strip .njp-wrap::-webkit-scrollbar{display:none}
  .njp-trust-item{min-width:50%;flex-shrink:0;border-left:none;border-right:1px solid var(--border);padding-left:16px;padding-right:16px}
  .njp-trust-item:last-child{border-right:none}
  .njp-cat-row{grid-template-columns:repeat(min(4,var(--njp-cat-cols,9)),1fr)}
  .njp-prod-grid{grid-template-columns:repeat(2,1fr)}
  .njp-brand-grid{grid-template-columns:repeat(2,1fr)}
  /* .njp-promo-grid: fileira de arrastar até 980px — ver "Cartões promocionais" (30/10/2026). */
  .njp-foot-grid{grid-template-columns:1fr 1fr}
}
/* Imagem mobile do slider (25/09/2026) — só entra em ação se o banner tiver uma enviada (var() cai pra --njp-hero-bg sozinha quando não tem, ver regra base). 768px: largura de telefone, separado da régua de 980px (onde só o LAYOUT empilha) porque tablet ainda cabe bem com a imagem de computador. */
@media (max-width:768px){
  /* Altura no celular proporcional à largura (8/9 dela, até 340px): o banner fica com o mesmo formato em todo aparelho
     comum — a arte do celular pode ser feita nessa proporção (1080 × 960 px) sem cortar as beiradas — e não "pula" quando
     a fonte do site termina de carregar. Só texto comprido o faz crescer. 280px = reserva pra navegador sem clamp(). */
  .njp-hero-slide{background-image:var(--njp-hero-bg-mobile,var(--njp-hero-bg,none));min-height:280px;min-height:clamp(280px,88.9vw,340px)}
}
@media (max-width:560px){
  .njp-topbar .njp-wrap{font-size:11px}
  .njp-hero h1{font-size:30px}
  .njp-cat-row{grid-template-columns:repeat(min(3,var(--njp-cat-cols,9)),1fr)}
  .njp-prod-grid{grid-template-columns:repeat(2,1fr)}
  .njp-brand-grid{grid-template-columns:1fr}
  .njp-foot-grid{grid-template-columns:1fr}
}

/*
 * Cabeçalho mobile mais enxuto (25/09/2026) — antes não tinha NENHUM
 * ajuste próprio: era só o layout de computador "quebrando linha"
 * sozinho (logo+ações numa linha, busca forçada pra baixo numa 2ª linha),
 * e ainda ficava preso (sticky) no topo quase inteiro enquanto rolava a
 * página. Mesma régua de 1200px que o botão de CEP e o menu inferior já
 * usam pra alternar entre desktop/mobile (ver class-njp-cep-widget.php,
 * wpce-supabase/includes/class-wpce-assets.php, mobile-nav no main.css).
 *
 * - Categoria deixa de ficar grudada (position:static) — continua
 *   existindo, só não ocupa espaço fixo o tempo todo rolando a página.
 * - Botão de CEP do cabeçalho: sumia nesta régua até 16/10/2026; agora
 *   fica, compacto, ao lado do carrinho (pedido do dono da loja).
 * - "Minha conta" (ícone+texto) some daqui pelo mesmo motivo: o menu
 *   inferior já tem "Conta". Carrinho fica — é o único acesso a ele no
 *   celular hoje, não está no menu inferior.
 * - Faixa deslizante do topo (.njp-topbar) NÃO some — item pedido e
 *   ajustado por várias rodadas, só tem 34px de altura, cabe numa tela
 *   pequena sem pesar.
 */
@media (max-width:1200px){
  /*
   * CORRIGIDO DE VERDADE (25/09/2026, 2ª tentativa): a categoria agora
   * é irmã do <header>, não mais filha dele (ver header.php) — então
   * "position:static" aqui realmente desgruda só ela, sem afetar o
   * header-main (que continua sticky por conta própria, regra de sempre
   * em .njp-site-header). Antes disso, a 1ª tentativa (só mudar a
   * categoria pra static, com as duas ainda dentro do mesmo <header>)
   * não tinha efeito nenhum — ela já era "static" por padrão; quem
   * precisava mudar era a estrutura, não essa propriedade.
   */
  .njp-category-nav{position:static}
  .njp-header-main{flex-wrap:nowrap;padding-top:10px;padding-bottom:10px;gap:12px}
  /* Era max-height:26px fixo (22/10/2026: o campo do Personalizar não fazia efeito aqui) — agora campo próprio, padrão 26. */
  .njp-logo img{height:var(--njp-logo-h-cel,26px)}
  /* "Só no computador" (Personalizar: barra de categorias, faixa de confiança das outras páginas, faixa de destaques). */
  .njp-category-nav.njp-so-computador,.njp-trust-strip.njp-so-computador,.njp-faixa-destaque.njp-so-computador{display:none}
  .njp-header-actions{gap:10px}
  .njp-header-actions a.njp-header-action:not(.njp-cart-button){display:none}
  /* O botão de CEP sumia aqui até 16/10/2026; agora fica, compacto e ao lado do carrinho — ver "Botão de CEP no cabeçalho". */
}

/* ---------- Menu lateral do celular (PDF de melhorias pág. 7, 16/10/2026) ----------
 * template-parts/menu-lateral.php + assets/js/menu-lateral.js. Botão ☰ só até 1200px (mesma régua do cabeçalho de
 * celular). Abre pela esquerda (o carrinho lateral abre pela direita). Sem sombra, como o resto do site.
 */
.njp-menu-toggle{display:none;flex-shrink:0;align-items:center;justify-content:center;width:40px;height:40px;margin-left:-8px;border:0;border-radius:10px;background:none;color:var(--ink);cursor:pointer}
.njp-menu-toggle .njp-icon{width:24px;height:24px;stroke-width:2}
.njp-site-header.is-campanha .njp-menu-toggle{color:var(--camp-texto)}
@media (max-width:1200px){
  .njp-menu-toggle{display:inline-flex}
}
/* Caixa do ☰ + lupa (header.php, 22/10/2026): só vira caixa no cabeçalho compacto do celular (até 760px); acima disso
   "some" e os botões ficam soltos na linha, como antes. Lupa e texto "Categorias" nascem escondidos. */
.njp-header-esquerda{display:contents}
.njp-busca-abrir,.njp-menu-toggle-rotulo{display:none}
/* Computador sem a barra de categorias (padrão desde 22/10/2026, pedido do dono): o ☰ aparece lá também, como
   "☰ Categorias", logo depois da logo e da altura da busca — abre o mesmo menu lateral do celular. */
@media (min-width:1201px){
  .njp-site-header.njp-sem-barra-cat .njp-logo{order:-1}
  .njp-site-header.njp-sem-barra-cat .njp-menu-toggle{display:inline-flex;gap:8px;width:auto;height:46px;margin-left:0;padding:0 16px 0 12px;border:1px solid var(--border);border-radius:8px;font-family:var(--font-body);font-size:14px;font-weight:700}
  .njp-site-header.njp-sem-barra-cat .njp-menu-toggle:hover{border-color:var(--red)}
  .njp-site-header.is-campanha.njp-sem-barra-cat .njp-menu-toggle{border-color:var(--camp-linha)}
  .njp-site-header.njp-sem-barra-cat .njp-menu-toggle-rotulo{display:inline}
}
/* Celular (16/10/2026): lupa da busca mais estreita. O carrinho só com o ícone e os espaços menores que moravam aqui
   foram pro "Cabeçalho compacto do celular" (22/10/2026, até 760px). */
@media (max-width:560px){
  .njp-search-form button:not(.njp-search-suggest-all):not(.njp-busca-fechar){width:44px}
}

/* ---------- Botão de CEP no cabeçalho + busca na largura toda no celular (16/10/2026) ----------
 * Pedido: "busca do cabeçalho curta", "botão de CEP no cabeçalho, junto do carrinho, destacado e com notificação quando
 * não houver CEP". O botão é o mesmo do computador (o nj-parts-core troca o texto: "Informe seu CEP" ou "Entregar em
 * São Paulo - SP"); antes ele sumia abaixo de 1200px. Sem CEP: destacado + bolinha vermelha (classes is-pronto /
 * is-informado vêm do commerce.js, só depois de saber a resposta — não pisca pra quem já tem CEP).
 * Até 760px, desde 22/10/2026: só o ícone, com a bolinha piscando — ver "Cabeçalho compacto do celular", logo abaixo.
 */
.njp-header-main .njp-cep-header-trigger{position:relative}
.njp-site-header:not(.is-campanha) .njp-header-main .njp-cep-header-trigger.is-pronto:not(.is-informado){border-color:var(--red);background:var(--red-tint)}
.njp-header-main .njp-cep-header-trigger.is-pronto:not(.is-informado) .njp-cep-header-line1{font-size:12px;font-weight:700;color:var(--red-deep)}
.njp-site-header.is-campanha .njp-header-main .njp-cep-header-trigger.is-pronto:not(.is-informado) .njp-cep-header-line1{color:var(--camp-texto)}
.njp-header-main .njp-cep-header-trigger.is-pronto:not(.is-informado)::after{content:"";position:absolute;top:-3px;right:-3px;width:11px;height:11px;border-radius:50%;background:var(--red);border:2px solid var(--surface)}
@media (max-width:1200px){
  .njp-header-main .njp-cep-header-trigger{display:inline-flex;height:40px;padding:0 10px;border-radius:10px;max-width:136px}
  .njp-header-main .njp-cep-header-inner{gap:6px;min-width:0}
  .njp-header-main .njp-cep-header-text{min-width:0}
  .njp-header-main .njp-cep-header-line1{font-size:9.5px;white-space:nowrap}
  .njp-header-main .njp-cep-header-line2{max-width:92px;font-size:11.5px}
}
/* ---------- Cabeçalho compacto do celular (22/10/2026, pedido do dono com o modelo da Saint Germain) ----------
 * Uma linha só, até 760px: ☰ e lupa à esquerda, logo no CENTRO, CEP (só o ícone) e carrinho à direita — antes eram
 * 2 linhas (a busca inteira embaixo) + a barra de categorias. Colunas iguais dos lados (1fr), nunca menores que os
 * botões (max-content): a logo fica no meio da tela de verdade e, se faltar espaço (logo muito alta num celular
 * estreito), quem encolhe é ela, proporcional ("contain") — medido: com 60px numa tela de 375px, sem o max-content,
 * CEP e carrinho eram espremidos de 82 pra 60px. A lupa abre a busca em tela cheia (search-suggest.js).
 */
@media (max-width:760px){
  .njp-header-main{display:grid;grid-template-columns:minmax(max-content,1fr) auto minmax(max-content,1fr);align-items:center;column-gap:8px;padding-top:8px;padding-bottom:8px}
  .njp-header-esquerda{display:flex;align-items:center;gap:2px;justify-self:start}
  .njp-busca-abrir{display:grid;place-items:center;flex-shrink:0;width:40px;height:40px;border:0;border-radius:10px;background:none;color:var(--ink);cursor:pointer}
  .njp-busca-abrir .njp-icon{width:23px;height:23px}
  .njp-site-header.is-campanha .njp-busca-abrir{color:var(--camp-texto)}
  .njp-header-main .njp-logo{justify-self:center;min-width:0;max-width:100%}
  .njp-header-main .njp-logo img{max-width:100%;object-fit:contain}
  .njp-header-actions{justify-self:end;gap:4px}
  /* Carrinho só com o ícone (o número de itens continua) — era assim até 560px; agora em todo o cabeçalho compacto. */
  .njp-cart-button{padding:8px}
  .njp-cart-button > span:not(.njp-cart-count){display:none}
  .njp-cart-button .njp-cart-count{top:0;right:0}
  .njp-search-form{display:none}
  .njp-search-form input{height:44px}
  /* Sugestões da busca: da largura da tela e com rolagem própria. */
  .njp-search-suggest{max-height:min(62vh,440px);overflow-y:auto;overscroll-behavior:contain}
  .njp-search-suggest-name{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  /* CEP só com o ícone. O texto ("Informe seu CEP" / a cidade) continua pra leitor de tela, e o commerce.js põe o nome
     no botão (aria-label). Sem CEP: a bolinha vermelha pisca em cima do alfinete. */
  .njp-header-main .njp-cep-header-trigger{justify-content:center;width:40px;height:40px;max-width:none;padding:0;border:0;background:none}
  .njp-site-header:not(.is-campanha) .njp-header-main .njp-cep-header-trigger.is-pronto:not(.is-informado){background:none}
  .njp-header-main .njp-cep-header-text{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
  .njp-header-main .njp-cep-header-trigger svg{width:23px;height:23px;color:var(--ink)}
  .njp-header-main .njp-cep-header-trigger.is-pronto:not(.is-informado)::after{top:6px;right:5px;width:10px;height:10px;animation:njp-pisca 1.3s ease-in-out infinite}
}
@keyframes njp-pisca{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.25;transform:scale(.7)}}
@media (prefers-reduced-motion:reduce){
  .njp-header-main .njp-cep-header-trigger::after{animation:none}
}
/* Celular pequeno (320px): margens mais justas — sobra mais espaço pra logo. */
@media (max-width:360px){
  .njp-header-main.njp-wrap{padding-left:12px;padding-right:12px}
}
.njp-search-suggest-vazio{margin:0;padding:14px;font-size:13px;color:var(--ink-soft)}

/* Busca em tela cheia no celular (16/10/2026, a partir do modelo do partdo enviado pelo dono da loja): tocar no campo abre
   a busca na tela toda — título, ✕, o campo no topo e as sugestões ocupando o resto, acima do teclado. search-suggest.js
   põe/tira "njp-busca-aberta" no <body>. No computador nada muda. */
.njp-busca-topo{display:none}
@media (max-width:760px){
  .njp-search-form input{font-size:16px} /* abaixo de 16px o iPhone dá zoom na página ao tocar no campo */
  body.njp-busca-aberta{overflow:hidden}
  /* O cabeçalho (sticky, z-index 40) prende a camada da busca dentro dele: sem subir ele, o menu de baixo (50) ficava por cima. */
  body.njp-busca-aberta .njp-site-header{z-index:97}
  body.njp-busca-aberta .njp-search-form{display:flex;position:fixed;inset:0;z-index:96;flex-wrap:wrap;align-content:flex-start;padding:14px 16px calc(14px + env(safe-area-inset-bottom,0px));background:var(--surface)}
  body.njp-busca-aberta .njp-busca-topo{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:1 1 100%;margin-bottom:14px}
  .njp-busca-titulo{font-family:var(--font-display);font-size:21px;font-weight:700;line-height:1.15;color:var(--ink)}
  /* .njp-search-form button (a lupa vermelha) pegaria este botão também: mesma força + depois no arquivo. */
  .njp-search-form button.njp-busca-fechar{display:grid;place-items:center;flex-shrink:0;width:40px;height:40px;border:0;border-radius:10px;background:var(--surface-2);color:var(--ink);cursor:pointer}
  .njp-search-form button.njp-busca-fechar .njp-icon{width:18px;height:18px;stroke-width:2}
  body.njp-busca-aberta .njp-search-form input{flex:1 1 0;height:48px}
  body.njp-busca-aberta .njp-search-form button:not(.njp-search-suggest-all):not(.njp-busca-fechar){height:48px}
  body.njp-busca-aberta .njp-search-suggest{position:static;flex:1 1 100%;max-height:calc(100dvh - 150px);margin-top:12px}
  body.njp-busca-aberta #njp-cep-banner,body.njp-busca-aberta .njp-zap-fab,body.njp-busca-aberta .njp-cookies{visibility:hidden}
}
.njp-menu-overlay[hidden],.njp-menu-lateral[hidden],.njp-menu-lateral .sub-menu[hidden]{display:none}
.njp-menu-overlay{position:fixed;inset:0;z-index:92;background:rgba(5,15,40,.45);opacity:0;transition:opacity .2s}
.njp-menu-overlay.is-open{opacity:1}
.njp-menu-lateral{position:fixed;top:0;left:0;bottom:0;z-index:93;display:flex;flex-direction:column;width:340px;max-width:88vw;background:var(--surface);transform:translateX(-100%);transition:transform .25s ease}
.njp-menu-lateral.is-open{transform:translateX(0)}
.njp-menu-topo{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;padding:12px 14px 12px 16px;border-bottom:1px solid var(--border)}
.njp-menu-logo img{display:block;width:auto;height:26px}
.njp-menu-fechar{display:grid;place-items:center;width:36px;height:36px;border:0;border-radius:8px;background:var(--surface-2);color:var(--ink);cursor:pointer}
.njp-menu-fechar .njp-icon{width:18px;height:18px;stroke-width:2}
.njp-menu-fechar:hover{background:var(--red-tint);color:var(--red)}
.njp-menu-conta{display:flex;align-items:center;gap:12px;flex-shrink:0;margin:14px 16px 4px;padding:12px 14px;border-radius:12px;background:var(--surface-2);color:var(--ink);text-decoration:none}
.njp-menu-conta-icone{display:grid;place-items:center;flex-shrink:0;width:38px;height:38px;border-radius:50%;background:var(--surface);color:var(--red)}
.njp-menu-conta-icone .njp-icon{width:20px;height:20px}
.njp-menu-conta-texto{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.njp-menu-conta-texto strong{font-size:14px}
.njp-menu-conta-texto small{font-size:12px;color:var(--ink-soft)}
.njp-menu-seta{flex-shrink:0;width:16px;height:16px;color:var(--ink-soft)}
.njp-menu-corpo{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:6px 0 18px}
.njp-menu-rotulo{margin:14px 16px 4px;font-size:11px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--ink-soft)}
.njp-menu-lista,.njp-menu-lista .sub-menu,.njp-menu-atalhos{margin:0;padding:0;list-style:none}
.njp-menu-lista > li{position:relative;border-bottom:1px solid var(--border)}
.njp-menu-lista > li > a{display:block;padding:14px 58px 14px 16px;font-family:var(--font-display);font-size:16px;font-weight:700;letter-spacing:.2px;text-transform:uppercase;color:var(--ink);text-decoration:none}
.njp-menu-abrir{position:absolute;top:4px;right:8px;display:grid;place-items:center;width:42px;height:42px;border:0;border-radius:8px;background:none;color:var(--ink-soft);cursor:pointer}
.njp-menu-abrir .njp-icon{width:18px;height:18px;transition:transform .2s}
.njp-menu-abrir[aria-expanded="true"] .njp-icon{transform:rotate(90deg)}
.njp-menu-lista .sub-menu{padding:0 0 10px}
.njp-menu-lista .sub-menu a{display:block;padding:9px 16px 9px 28px;font-size:14px;color:var(--ink-soft);text-decoration:none}
.njp-menu-lista .sub-menu li:first-child a{font-weight:700;color:var(--red)}
.njp-menu-atalhos{margin-top:8px}
.njp-menu-atalhos a{display:block;padding:12px 16px;font-size:14px;font-weight:600;color:var(--ink);text-decoration:none}
.njp-menu-lateral a:hover,.njp-menu-lateral a:focus-visible{color:var(--red)}
.njp-menu-rastreio{display:flex;align-items:center;gap:10px;flex-shrink:0;padding:16px 18px calc(16px + env(safe-area-inset-bottom,0px));background:var(--ink);color:var(--surface);font-size:14.5px;font-weight:700;text-decoration:none}
.njp-menu-rastreio .njp-icon{width:22px;height:22px}
.njp-menu-lateral a.njp-menu-rastreio:hover,.njp-menu-lateral a.njp-menu-rastreio:focus-visible{background:var(--red);color:var(--on-red)}
/* Convite de CEP do nj-parts-core (z-index 99998) ficava por cima do menu lateral e do carrinho lateral, tampando a
   faixa "Rastrear pedido" (16/10/2026, teste depois do upload). Com um dos dois aberto, ele some; ao fechar, volta. */
body.njp-no-scroll #njp-cep-banner,body.njp-no-scroll #njp-cep-fab{visibility:hidden}

/* ---------- Aviso de cookies — LGPD (16/10/2026, template-parts/aviso-cookies.php) ----------
 * Estilos "Cartão" (tipo 1 do partdo: canto da tela, com ícone) e "Faixa" (tipo 2: pé da tela). Sem sombra (borda),
 * como o resto do site. Abaixo de 1200px fica logo acima do menu inferior. Enquanto ele está na tela, o convite de CEP
 * espera (um balão de cada vez). z-index 80: acima do cabeçalho e do menu inferior, abaixo dos painéis laterais (90+).
 */
.njp-cookies[hidden]{display:none}
.njp-cookies{position:fixed;z-index:80;color:var(--ink)}
.njp-cookies-texto{margin:0;font-size:13px;line-height:1.55;color:var(--ink-soft)}
.njp-cookies-texto a{color:var(--red);font-weight:600;text-decoration:underline}
.njp-cookies-botao{flex-shrink:0;height:42px;padding:0 22px;border:0;border-radius:10px;background:var(--red);color:var(--on-red);font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
.njp-cookies-botao:hover{background:var(--red-deep)}
.njp-cookies-botao:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.njp-cookies--cartao{left:24px;bottom:24px;width:360px;max-width:calc(100vw - 32px);padding:22px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}
.njp-cookies--cartao .njp-cookies-icone{display:grid;place-items:center;width:52px;height:52px;margin-bottom:14px;border-radius:14px;background:var(--red-tint);color:var(--red)}
.njp-cookies--cartao .njp-cookies-icone svg{width:28px;height:28px}
.njp-cookies--cartao .njp-cookies-icone img{max-width:52px;max-height:52px;object-fit:contain}
.njp-cookies--cartao .njp-cookies-botao{width:100%;margin-top:16px}
.njp-cookies--faixa{left:0;right:0;bottom:0;padding:14px 20px;border-top:1px solid var(--border);background:var(--surface)}
.njp-cookies--faixa .njp-cookies-corpo{display:flex;align-items:center;justify-content:center;gap:24px;max-width:1240px;margin:0 auto}
@media (max-width:1200px){
  .njp-cookies--cartao{left:12px;right:12px;bottom:calc(72px + env(safe-area-inset-bottom,0px));width:auto;max-width:none;padding:16px 16px 14px}
  .njp-cookies--faixa{bottom:calc(62px + env(safe-area-inset-bottom,0px))}
}
@media (max-width:600px){
  .njp-cookies--cartao .njp-cookies-icone{display:none}
  .njp-cookies--cartao .njp-cookies-botao{margin-top:12px}
  .njp-cookies--faixa .njp-cookies-corpo{flex-direction:column;align-items:stretch;gap:12px}
}
body.njp-cookies-aberto #njp-cep-banner{visibility:hidden}

/* ---------- Botão flutuante do WhatsApp (16/10/2026, template-parts/whatsapp-flutuante.php) ----------
 * Canto inferior direito; abaixo de 1200px, logo acima do menu de baixo (que perdeu o item "Ajuda"). Sem sombra, como
 * o resto do site. Some enquanto o aviso de cookies, o convite de CEP ou um painel lateral estiverem abertos. */
.njp-zap-fab{position:fixed;right:24px;bottom:24px;z-index:70;display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:#25D366;color:#fff;text-decoration:none;transition:background .15s,transform .15s}
.njp-zap-fab:hover{background:#1EBE5A;transform:scale(1.05)}
.njp-zap-fab:focus-visible{outline:3px solid var(--ink);outline-offset:3px}
.njp-zap-fab .njp-icon{width:30px;height:30px}
@media (max-width:1200px){
  .njp-zap-fab{right:14px;bottom:calc(74px + env(safe-area-inset-bottom,0px));width:52px;height:52px}
  .njp-zap-fab .njp-icon{width:28px;height:28px}
}
body.njp-no-scroll .njp-zap-fab,body.njp-cookies-aberto .njp-zap-fab{visibility:hidden}
/* No celular o convite de CEP ocupa a largura toda do pé da tela; no computador ele fica do outro lado, sem conflito. */
@media (max-width:1200px){body:has(#njp-cep-banner:not([hidden])) .njp-zap-fab{visibility:hidden}}
@media (prefers-reduced-motion:reduce){.njp-zap-fab:hover{transform:none}}

/* ---------- Carrinho lateral (drawer) ---------- */
body.njp-no-scroll{overflow:hidden}
.njp-cart-overlay{position:fixed;inset:0;background:rgba(5,15,40,.45);z-index:90;opacity:0;transition:opacity .2s}
.njp-cart-overlay.is-open{opacity:1}
.njp-cart-drawer{position:fixed;top:0;right:0;bottom:0;width:430px;max-width:92vw;background:var(--surface);z-index:91;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .25s ease,box-shadow .25s ease}
/* Sombra só aberto (16/10/2026): fechado, ele fica logo à direita da tela e a sombra vazava ~20px pra dentro, em toda página. */
.njp-cart-drawer.is-open{transform:translateX(0);box-shadow:-16px 0 40px -16px rgba(5,15,40,.3)}
.njp-cart-drawer-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--border);flex-shrink:0}
.njp-cart-drawer-head h2{font-size:22px}
.njp-cart-close{width:34px;height:34px;border:none;border-radius:8px;background:var(--surface-2);display:grid;place-items:center;cursor:pointer;color:var(--ink)}
.njp-cart-close:hover{background:var(--red-tint);color:var(--red)}
.njp-cart-drawer-body{flex:1;overflow-y:auto;padding:22px;display:flex;flex-direction:column;position:relative}
.njp-cart-drawer-body.is-loading{opacity:.55;pointer-events:none}
.njp-cart-drawer-body.is-loading:empty::before{content:"Carregando seu carrinho…";margin:auto;font-size:13.5px;color:var(--ink-soft)}
/* O carrinho lateral já abre sozinho ao adicionar; o link "Ver carrinho" que o WooCommerce põe ao lado do botão sobrava. */
a.added_to_cart{display:none}
.njp-cart-error{background:var(--danger-tint);color:var(--danger-deep);font-size:12.5px;font-weight:600;padding:10px 14px;border-radius:8px;margin:0 0 14px}

.njp-cart-empty{display:flex;flex-direction:column;align-items:center;text-align:center;padding:20px 10px 28px}
.njp-cart-empty-icon{width:64px;height:64px;color:var(--border);stroke-width:1;margin-bottom:16px}
.njp-cart-empty h3{font-size:19px;margin-bottom:8px}
.njp-cart-empty p{font-size:13.5px;color:var(--ink-soft);margin:0 0 20px;max-width:32ch;line-height:1.5}
.njp-cart-empty-cta{background:var(--red);color:var(--on-red);text-decoration:none;font-weight:700;font-size:14px;padding:0 28px;height:48px;display:inline-flex;align-items:center;border-radius:10px}
.njp-cart-empty-cta:hover{background:var(--red-deep)}

.njp-cart-suggest{margin-top:8px;padding-top:22px;border-top:1px solid var(--border);width:100%}
.njp-cart-suggest h4{font-family:var(--font-display);font-size:15px;font-weight:700;color:var(--ink);text-transform:uppercase;letter-spacing:.3px;margin-bottom:14px}
.njp-cart-suggest h4::before{content:'// ';color:var(--red)}
.njp-cart-suggest-item{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--border);text-align:left}
.njp-cart-suggest-item:last-child{border-bottom:none}
.njp-cart-suggest-img{width:56px;height:56px;flex-shrink:0;border:1px solid var(--border);border-radius:8px;overflow:hidden;display:block}
.njp-cart-suggest-img img{width:100%;height:100%;object-fit:contain;padding:4px}
.njp-cart-suggest-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.njp-cart-suggest-name{font-size:12.5px;font-weight:600;color:var(--ink);text-decoration:none;line-height:1.35}
.njp-cart-suggest-price{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12px}
.njp-cart-suggest-price strong{font-size:14px}
.njp-cart-suggest-badge{background:var(--green-bg);color:var(--green);font-size:10px;font-weight:700;padding:2px 7px;border-radius:999px}
.njp-cart-suggest-add{align-self:flex-start;margin-top:2px;background:var(--red-tint);color:var(--red-deep)!important;border:none;border-radius:8px;padding:6px 14px;font-size:11.5px;font-weight:700;cursor:pointer;text-decoration:none;display:inline-block}
.njp-cart-suggest-add:hover{background:var(--red);color:var(--on-red)!important}

.njp-cart-freeship{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--surface-2);color:var(--ink-soft);font-size:12.5px;padding:10px 14px;border-radius:10px;margin-bottom:18px}
.njp-cart-freeship strong.is-ok{color:var(--green)}
.njp-cart-freeship.is-ok{background:var(--green-bg);color:var(--green);font-weight:600}
.njp-cart-freeship .njp-icon{width:16px;height:16px;flex-shrink:0}
.njp-cart-freeship-bar{width:100%;height:5px;background:var(--border);border-radius:999px;overflow:hidden}
.njp-cart-freeship-bar span{display:block;height:100%;background:var(--green);border-radius:999px;transition:width .2s}

.njp-cart-items{list-style:none;margin:0 0 4px;padding:0;display:flex;flex-direction:column;gap:16px}
.njp-cart-item{display:flex;gap:14px}
.njp-cart-item-img{width:76px;height:76px;flex-shrink:0;border:1px solid var(--border);border-radius:10px;overflow:hidden;display:block}
.njp-cart-item-img img{width:100%;height:100%;object-fit:contain;padding:6px}
.njp-cart-item-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.njp-cart-item-name{font-size:13.5px;font-weight:600;color:var(--ink);text-decoration:none;line-height:1.35}
.njp-cart-item-price{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px}
.njp-cart-item-price strong{font-family:var(--font-display);font-size:18px;font-weight:700}
.njp-cart-item-qty{display:flex;align-items:center;gap:2px;margin-top:2px}
.njp-qty-btn{width:28px;height:28px;border:1.5px solid var(--border);background:var(--surface);border-radius:7px;display:grid;place-items:center;cursor:pointer;font-size:15px;color:var(--ink);line-height:1}
.njp-qty-btn:hover{border-color:var(--red);color:var(--red)}
.njp-qty-value{width:30px;text-align:center;font-size:13.5px;font-weight:700}
.njp-cart-item-remove{width:28px;height:28px;border:none;background:none;border-radius:7px;display:grid;place-items:center;cursor:pointer;color:var(--ink-soft);margin-left:8px}
.njp-cart-item-remove:hover{background:var(--red-tint);color:var(--red)}
.njp-cart-item-remove .njp-icon{width:16px;height:16px}

.njp-cart-totals{margin-top:20px;padding-top:18px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px}
.njp-cart-totals-row{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--ink-soft)}
.njp-cart-totals-row.is-desconto span:last-child{color:var(--green);font-weight:600}
.njp-cart-coupon-link{font-size:12.5px;color:var(--red);text-decoration:none;font-weight:600;margin:2px 0}
.njp-cart-coupon-link:hover{text-decoration:underline}
.njp-cart-total-pix{padding-top:10px;border-top:1px dashed var(--border);font-size:15px;font-weight:700;color:var(--ink)}
.njp-cart-total-pix span:last-child{font-family:var(--font-display);font-size:26px}
.njp-cart-savings{align-self:flex-start}
.njp-cart-card-info{font-size:12px;color:var(--ink-soft)}

.njp-cart-checkout-btn{margin-top:16px;background:var(--red);color:var(--on-red)!important;text-decoration:none;font-weight:700;font-size:15px;height:52px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.njp-cart-checkout-btn:hover{background:var(--red-deep)}
.njp-cart-continue{margin-top:12px;text-align:center;font-size:12.5px;font-weight:600;color:var(--ink-soft);text-decoration:none;flex-shrink:0}
.njp-cart-continue:hover{color:var(--red)}
.njp-cart-trust{margin:14px 0 0;text-align:center;font-size:11.5px;color:var(--ink-soft);display:flex;align-items:center;justify-content:center;gap:6px;flex-shrink:0}
.njp-cart-trust .njp-icon{width:13px;height:13px}

@media (max-width:480px){
  .njp-cart-drawer{width:100%;max-width:100%}
}

/* ---------- Checkout (clássico, 3 colunas) ---------- */
/*
 * O Checkout usa o mesmo page.php das páginas de texto comuns (Sobre,
 * Termos...), cujo container (.njp-wrap, 1240px) e área de texto
 * (.njp-page-content, 80 caracteres de largura — bom pra parágrafo, péssimo
 * pra formulário de 3 colunas) deixavam tudo espremido. Alargamos só aqui,
 * via a classe que o WooCommerce já bota sozinho no <body> do Checkout —
 * nenhuma outra página do site é afetada.
 *
 * Importante: o alvo é ".njp-page-wrap" (só o container do CONTEÚDO da
 * página), não ".njp-wrap" sozinho — essa segunda classe também é usada
 * no cabeçalho e no rodapé, que devem continuar do tamanho padrão do
 * site. Alargar ".njp-wrap" sem essa distinção alargou o cabeçalho junto
 * na primeira tentativa — corrigido aqui.
 */
/*
 * 02/10/2026 (pedido do dono da loja, junto com o item 17): o Checkout também passou a ter a largura de Home/Loja
 * (1240px) — saiu o "body.woocommerce-checkout .njp-page-wrap{max-width:none}". Pra caber, o formulário ficou compacto
 * (campos curtos lado a lado, campos um pouco mais baixos, folgas menores — ver "Checkout compacto", logo abaixo).
 */
body.woocommerce-checkout .njp-page-content{max-width:none}

/*
 * Minha Conta: mesma largura de Home/Loja (1240px, o ".njp-wrap" de sempre) desde 02/10/2026 — item 17 da Fase 7.
 * Antes (20/09/2026) ela ia de ponta a ponta da tela, com "body.woocommerce-account .njp-page-wrap{max-width:none}";
 * essa linha saiu. A de baixo (".njp-page-content" sem o limite de 80 caracteres) continua: sem ela, o painel volta a
 * ficar estreito e encostado na esquerda dentro dos 1240px.
 */
/*
 * Faltava esta linha (corrigido 20/09/2026, reportado em teste real:
 * "grudou mais ainda no canto da tela"). ".njp-page-wrap" já tinha ficado
 * sem teto, mas ".njp-page-content" (80 caracteres, feito pra parágrafo de
 * texto — mesmo problema descrito no comentário do Checkout acima) continuava
 * limitando o conteúdo de verdade lá dentro. Sem "margin:auto" própria, esse
 * bloco estreito ficava encostado no início (esquerda) do wrap agora enorme,
 * em vez de esticar — dava exatamente a sensação de "foi pro canto" E de
 * elemento estreito ao mesmo tempo. Checkout já tinha as duas linhas certas
 * desde o início; Minha Conta ficou faltando uma.
 */
body.woocommerce-account .njp-page-content{max-width:none}
/*
 * Nenhum template do WooCommerce foi sobrescrito aqui (nunca tocamos em
 * review-order.php/payment.php) — o HTML continua 100% nativo, só a
 * DISPOSIÇÃO visual muda, via grid. #order_review já vem com a tabela do
 * pedido e o #payment como blocos separados; só precisamos posicioná-los
 * lado a lado.
 */
/* minmax(0, …): a coluna pode encolher abaixo do "mínimo" do conteúdo — o desenho do cartão de crédito (Cielo) pedia
   ~340px e empurrava o resumo pra fora da tela em notebook de 1024px (já vazava 8px antes desta mudança).
   Última linha "1fr" (aqui e no #order_review): quando o Pagamento é mais comprido que a outra coluna (o formulário do
   cartão aberto), a sobra de altura ia sendo repartida entre as linhas de cima — o resumo ganhava um vão de ~900px entre
   "Tem um cupom?" e "Compra 100% segura", e os dados do cliente desciam alguns px em relação ao Pagamento. Com "1fr", a
   sobra vai toda pra última linha, embaixo de tudo. Mesmo espaço (24px) nos dois grids: as colunas ficam alinhadas. */
form.checkout.woocommerce-checkout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto auto 1fr;gap:24px;align-items:start}
/*
 * Um grid só funciona se TODO filho direto tiver linha/coluna explícita —
 * sem isso, o navegador espalha cada um (título, caixa de dados, botão)
 * numa coluna diferente sozinho, em vez de empilhados juntos na coluna 1.
 * Confirmado ao vivo (inspecionando o checkout de teste) antes de fechar
 * esta versão — por isso cada peça abaixo tem linha E coluna fixas, nada
 * fica "automático".
 */
form.checkout.woocommerce-checkout > *{grid-column:1}
#customer_details.col2-set{display:block;grid-row:2}
#customer_details .col-1,#customer_details .col-2{width:100%;float:none}
#customer_details h3{font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--ink-soft);margin:18px 0 10px}

/*
 * Checkout compacto (02/10/2026): campos curtos lado a lado, sem mudar a ordem do HTML (a ordem do Tab continua a
 * mesma da tela). Linhas: Telefone | Nome + Sobrenome | CPF/CNPJ + CEP | Endereço | Número + Bairro | Cidade + Estado |
 * E-mail — na entrega, o CEP fica sozinho (vem colado no Endereço). "dense" deixa o CEP subir pro lado do CPF/CNPJ
 * mesmo com os 3 campos recolhidos do tipo de pessoa (altura 0, do woo-better-shipping) entre eles.
 */
.woocommerce-billing-fields__field-wrapper,.woocommerce-shipping-fields__field-wrapper{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:12px;grid-auto-flow:row dense}
.woocommerce-billing-fields__field-wrapper > .form-row,.woocommerce-shipping-fields__field-wrapper > .form-row{grid-column:span 2;margin:0 0 12px;min-width:0}
#billing_first_name_field,#billing_last_name_field,#billing_document_field,#billing_postcode_field,#billing_number_field,#billing_neighborhood_field,#billing_city_field,#billing_state_field,
#shipping_first_name_field,#shipping_last_name_field,#shipping_number_field,#shipping_neighborhood_field,#shipping_city_field,#shipping_state_field{grid-column:span 1}
/* Celular bem estreito (menos de 360px, ex.: iPhone SE antigo): meia linha sobra ~105px pro texto — um CNPJ inteiro
   (~118px) já não caberia. Lá, um campo por linha, como antes. */
@media (max-width:359px){
  #billing_first_name_field,#billing_last_name_field,#billing_document_field,#billing_postcode_field,#billing_number_field,#billing_neighborhood_field,#billing_city_field,#billing_state_field,
  #shipping_first_name_field,#shipping_last_name_field,#shipping_number_field,#shipping_neighborhood_field,#shipping_city_field,#shipping_state_field{grid-column:span 2}
}
#billing_persontype_field,#billing_cpf_field,#billing_cnpj_field{margin:0}
body.woocommerce-checkout .form-row label{margin-bottom:4px}
body.woocommerce-checkout .form-row input.input-text,body.woocommerce-checkout .form-row select{height:42px}
#customer_details h3:first-child{margin-top:0}
#order_review_heading{display:none}
.njp-checkout-step-title{grid-row:1;display:flex;align-items:center;gap:9px;font-size:16px;font-weight:700;color:var(--red);text-transform:uppercase;letter-spacing:.4px;margin:0 0 16px;padding-bottom:12px;border-bottom:2px solid var(--border)}
.njp-checkout-step-title .njp-icon{width:19px;height:19px;flex-shrink:0}

.njp-checkout-go-payment{grid-row:3;display:block;width:100%;height:50px;margin-top:22px;background:var(--red);color:var(--on-red);border:none;border-radius:10px;font-weight:700;font-size:14.5px;cursor:pointer;font-family:inherit}
.njp-checkout-go-payment:hover{background:var(--red-deep)}

/* 7 linhas (eram 6) desde 22/10/2026: a última é a das avaliações do Google (.njp-checkout-reviews), no fim da coluna do
   Resumo — e continua sendo a "1fr" que recebe a sobra de altura quando o Pagamento é mais comprido. */
#order_review.woocommerce-checkout-review-order{grid-column:2 / span 2;grid-row:1 / span 3;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto auto auto auto auto auto 1fr;gap:24px;align-content:start}
.njp-checkout-step-payment{grid-column:1}
.njp-checkout-step-resumo{grid-column:2}
#payment.woocommerce-checkout-payment{grid-column:1;grid-row:2 / span 6;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:18px;transition:opacity .2s}
#payment.is-disabled{opacity:.45;pointer-events:none}

.woocommerce-checkout-review-order-table{grid-column:2;grid-row:2;width:100%;border-collapse:collapse;font-size:13px;background:var(--surface);border:1px solid var(--border);border-radius:14px}
.woocommerce-checkout-review-order-table thead{display:none}
.woocommerce-checkout-review-order-table,
.woocommerce-checkout-review-order-table tbody,
.woocommerce-checkout-review-order-table tfoot{display:block;width:100%}
.woocommerce-checkout-review-order-table tr{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 18px;border-bottom:1px solid var(--border)}
.woocommerce-checkout-review-order-table tr:last-child{border-bottom:none}
/* "table.shop_table" na frente (22/10/2026): a regra da tabela de Pedidos (table.shop_table td, mais forte) também vale
   pra esta tabela — cada célula do resumo ganhava 12px de espaço e um tracinho embaixo (sob os preços, o Subtotal e o Total). */
table.shop_table.woocommerce-checkout-review-order-table td,table.shop_table.woocommerce-checkout-review-order-table th{border:none;padding:0}
.woocommerce-checkout-review-order-table td,.woocommerce-checkout-review-order-table th{border:none;padding:0;text-align:right}
.woocommerce-checkout-review-order-table .product-name{display:flex;align-items:center;gap:10px;color:var(--ink);font-size:12.5px;text-align:left;flex:1}
.woocommerce-checkout-review-order-table .product-name .wc-item-meta{font-size:11.5px;color:var(--ink-soft);list-style:none;margin:4px 0 0;padding:0}
/* Foto do produto no resumo (pedido 20/09/2026, "igual ao carrinho lateral") — injetada via woocommerce_cart_item_name em NJP_Checkout_Layout::adicionar_foto_no_resumo(), não faz parte do HTML nativo do WooCommerce. */
.njp-checkout-item-img{width:46px;height:46px;border-radius:8px;object-fit:contain;background:var(--surface-2);flex-shrink:0}
.njp-checkout-item-name{flex:1}
.woocommerce-checkout-review-order-table .product-total{font-weight:700;color:var(--ink);white-space:nowrap}
/* Item do resumo em 2 linhas (22/10/2026 — dono: "card fora do padrão"): foto à esquerda; o nome em cima, com a largura
   toda; "× 8" e o preço embaixo. Era tudo numa linha só (foto | nome | × 8 | veículo | preço) numa coluna de ~280px: o
   nome quebrava palavra por palavra e, com "Fiesta/ka/ecosport/focus", o preço saía do cartão (em 1024px a página ganhava
   rolagem pro lado). review-order.php continua o nativo: display:contents solta foto, nome e quantidade de dentro da
   célula do nome direto na grade da linha. font-size:0 NA LINHA E NA CÉLULA: o "&nbsp;" solto que o WooCommerce põe
   depois do nome vira um item da grade — o texto dele herda a letra da célula e a caixa em volta herda a da linha; com
   qualquer uma das duas em 12-13px ele abria um vão de ~22px entre o nome e o preço (medido nas duas situações). Cada
   parte recebe o tamanho dela de volta logo abaixo. row-gap:0 — a linha "dados" (variação do produto, quando houver)
   não deixa vão quando está vazia. */
.woocommerce-checkout-review-order-table tr.cart_item{display:grid;grid-template-columns:46px minmax(0,1fr) auto;grid-template-areas:"foto nome nome" "foto dados dados" "foto qtd total";column-gap:12px;row-gap:0;align-items:center;font-size:0}
.woocommerce-checkout-review-order-table tr.cart_item .product-name{display:contents;font-size:0}
.woocommerce-checkout-review-order-table tr.cart_item .njp-checkout-item-img{grid-area:foto;align-self:start}
.woocommerce-checkout-review-order-table tr.cart_item .njp-checkout-item-name{grid-area:nome;font-size:12.5px;font-weight:600;line-height:1.35;color:var(--ink);overflow-wrap:anywhere}
.woocommerce-checkout-review-order-table tr.cart_item dl.variation{grid-area:dados;margin:4px 0 0}
.woocommerce-checkout-review-order-table tr.cart_item .product-quantity{grid-area:qtd;margin-top:6px;font-size:12px;font-weight:600;color:var(--ink-soft)}
.woocommerce-checkout-review-order-table tr.cart_item .product-total{grid-area:total;margin-top:6px;font-size:13px}
/* Variação do produto no carrinho e no resumo ("Lado: Direito"), quando houver: uma linha miúda, sem o recuo de 40px
   que o navegador dá ao <dd> (era o que empurrava o "Veículo Selecionado" pra uma coluna à parte). */
.woocommerce-cart-form dl.variation,.woocommerce-checkout-review-order-table dl.variation{display:flex;flex-wrap:wrap;gap:0 4px;margin:4px 0 0;font-size:11.5px;line-height:1.4;color:var(--ink-soft)}
.woocommerce-cart-form dl.variation dt,.woocommerce-checkout-review-order-table dl.variation dt{font-weight:600}
.woocommerce-cart-form dl.variation dd,.woocommerce-checkout-review-order-table dl.variation dd{margin:0 8px 0 0}
.woocommerce-cart-form dl.variation dd p,.woocommerce-checkout-review-order-table dl.variation dd p{margin:0}
.woocommerce-checkout-review-order-table .order-total td,
.woocommerce-checkout-review-order-table .order-total th{font-size:16px;font-weight:700;color:var(--ink)}
.woocommerce-checkout-review-order-table .order-total .woocommerce-Price-amount{font-family:var(--font-display);font-size:22px}
.woocommerce-checkout-review-order-table .cart-subtotal td,
.woocommerce-checkout-review-order-table .shipping td,
.woocommerce-checkout-review-order-table .cart-discount td{font-size:13px;color:var(--ink-soft)}

/*
 * Cupom, realocado pra dentro do card "Resumo do pedido" (pedido
 * 21/09/2026) — ver NJP_Checkout_Layout::__construct(). Mesmo HTML/JS
 * nativo do WooCommerce nos dois elementos abaixo (só reestilizados);
 * a mensagem "cupom aplicado"/erro do WooCommerce continua nativa e cai
 * automaticamente na largura da coluna 2, sem precisar de regra própria.
 */
.woocommerce-form-coupon-toggle{grid-column:2;grid-row:3}
.woocommerce-form-coupon-toggle .woocommerce-info{background:none;border:none;padding:0;margin:0;font-size:12.5px;color:var(--ink-soft)}
.woocommerce-form-coupon-toggle .showcoupon{color:var(--red);font-weight:700;text-decoration:none}
.woocommerce-form-coupon-toggle .showcoupon:hover{text-decoration:underline}
.checkout_coupon.woocommerce-form-coupon{grid-column:2;grid-row:4;display:flex;gap:8px;flex-wrap:wrap}
.checkout_coupon .form-row{margin:0;flex:1}
.checkout_coupon .form-row:last-child{flex:0 0 auto}
.checkout_coupon #coupon_code{width:100%;height:40px;border:1.5px solid var(--border);border-radius:8px;padding:0 12px;font-size:13.5px;font-family:var(--font-body);background:var(--surface);color:var(--ink)}
.checkout_coupon #coupon_code:focus{outline:none;border-color:var(--red)}
.checkout_coupon button[name="apply_coupon"]{height:40px;padding:0 18px;background:var(--ink);color:var(--surface);border:none;border-radius:8px;font-weight:700;font-size:13px;cursor:pointer;font-family:inherit;white-space:nowrap}
.checkout_coupon button[name="apply_coupon"]:hover{background:var(--red)}
.checkout_coupon .clear{display:none}

.njp-checkout-trust{grid-column:2;grid-row:5;background:var(--surface-2);border-radius:12px;padding:16px 18px;text-align:center}
.njp-checkout-trust-secure{display:flex;align-items:center;justify-content:center;gap:6px;font-size:13px;font-weight:700;color:var(--green);margin:0 0 4px}
.njp-checkout-trust-secure .njp-icon{width:15px;height:15px}
.njp-checkout-trust-note{font-size:11.5px;color:var(--ink-soft);margin:0}
.njp-checkout-back-cart{grid-column:2;grid-row:6;align-self:start;text-align:center;font-size:12.5px;font-weight:600;color:var(--ink-soft);text-decoration:none}
.njp-checkout-back-cart:hover{color:var(--red)}
/* Avaliações do Google no checkout (22/10/2026; template-parts/trustindex-reviews.php, versão "checkout"). min-width:0 —
   o widget do Trustindex não pode alargar a coluna. */
.njp-checkout-reviews{grid-column:2;grid-row:7;align-self:start;min-width:0;margin-top:6px}
.njp-checkout-reviews .njp-checkout-step-title{margin-bottom:14px}
.njp-checkout-reviews .njp-reviews-embed{padding:14px}

/* Formas de pagamento */
ul.wc_payment_methods{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
ul.wc_payment_methods li.wc_payment_method{border:1.5px solid var(--border);border-radius:10px;padding:14px 16px}
ul.wc_payment_methods li.wc_payment_method label{font-size:13.5px;font-weight:600;color:var(--ink);display:flex;align-items:center;gap:10px;cursor:pointer;margin:0}
ul.wc_payment_methods input.input-radio{width:17px;height:17px;accent-color:var(--red);flex-shrink:0}
ul.wc_payment_methods img{height:20px;width:auto;margin-left:auto}
ul.wc_payment_methods .payment_box{margin-top:12px;padding-top:12px;border-top:1px dashed var(--border);font-size:12.5px;color:var(--ink-soft);line-height:1.6}
ul.wc_payment_methods .payment_box p{margin:0 0 8px}

/*
 * Formulário de cartão do gateway Cielo (plugin de terceiro
 * "lkn-wc-gateway-cielo", fora da pasta local — não editamos os arquivos
 * dele, só CSS aqui, pedido 20/09/2026). Os campos dele têm classe própria
 * (".lkn-wc-gateway-cielo-input"), não ".input-text" como o resto do
 * checkout, por isso ficavam com a aparência crua do navegador. Mesmo
 * visual das linhas ".form-row" comuns, só mudando o seletor.
 */
.form-row input.lkn-wc-gateway-cielo-input{width:100%;height:46px;border:1.5px solid var(--border);border-radius:8px;padding:0 14px;font-size:14px;font-family:var(--font-body);background:var(--surface);color:var(--ink)}
.form-row input.lkn-wc-gateway-cielo-input:focus{outline:none;border-color:var(--red)}
.wc-credit-card-form.wc-payment-form{border:none;padding:0;margin:0}
.credit-card-description{font-size:12px}
/* O desenho do cartão (biblioteca "card", do mesmo plugin) tem largura mínima fixa de 260px: com o checkout em 1240px,
   entre 1001 e ~1185px de tela a coluna do Pagamento fica mais estreita que isso — ele saía pra fora da caixa (antes
   desta mudança, empurrava a página inteira 8px pro lado). Só o desenho diminui (75%); os campos do cartão continuam do
   tamanho normal. No celular não precisa: o próprio plugin já encolhe o desenho (conferido em 320px). */
@media (min-width:1001px) and (max-width:1199px){#payment .lkn-cielo-animated-card-container{zoom:.75}}

/* Frete */
#shipping_method{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
#shipping_method li{border:1.5px solid var(--border);border-radius:10px;padding:12px 14px;font-size:13px}
#shipping_method input.shipping_method{margin-right:8px;accent-color:var(--red)}
#shipping_method label{cursor:pointer}

/* Botão final + termos */
#place_order{width:100%;height:54px;background:var(--red);color:var(--on-red)!important;border:none;border-radius:10px;font-weight:700;font-size:15.5px;cursor:pointer;margin-top:18px}
#place_order:hover{background:var(--red-deep)}
.woocommerce-terms-and-conditions-wrapper{font-size:12px;color:var(--ink-soft);margin:14px 0}
.woocommerce-checkout .woocommerce-error,
.woocommerce-checkout .woocommerce-message,
.woocommerce-checkout .woocommerce-NoticeGroup{grid-column:1 / -1}
.woocommerce-checkout #payment .woocommerce-error{margin-bottom:12px}

@media (max-width:1000px){
  form.checkout.woocommerce-checkout{grid-template-columns:1fr;grid-template-rows:none}
  form.checkout.woocommerce-checkout > *{grid-row:auto}
  #order_review.woocommerce-checkout-review-order{grid-column:1;grid-row:auto;grid-template-columns:1fr;grid-template-rows:none}
  .njp-checkout-step-payment,.njp-checkout-step-resumo,
  #payment.woocommerce-checkout-payment,
  .woocommerce-checkout-review-order-table,
  .woocommerce-form-coupon-toggle,.checkout_coupon.woocommerce-form-coupon,
  .njp-checkout-trust,.njp-checkout-back-cart,.njp-checkout-reviews{grid-column:1;grid-row:auto}
}

/* ---------- Carrinho (/carrinho/) ---------- */
/*
 * Reformulação pedida em 21/09/2026 — igual já foi feito em Loja/Produto/
 * Conta/Checkout, tirar a cara "padrão WooCommerce". Nenhum template foi
 * sobrescrito aqui: o HTML/lógica de cart.php continuam 100% nativos
 * (adicionar/remover item, cupom, calculadora de frete) — só a DISPOSIÇÃO
 * visual muda, via CSS. Mesma técnica de "table vira lista flex" já usada
 * no resumo do Checkout.
 */
/* Carrinho: mesma largura de Home/Loja (1240px) desde 02/10/2026, item 17 — saiu o ".njp-page-wrap{max-width:none}". */
body.woocommerce-cart .njp-page-content{max-width:none}
body.woocommerce-cart .woocommerce{display:grid;grid-template-columns:1fr 380px;gap:32px;align-items:start}
body.woocommerce-cart .woocommerce-notices-wrapper{grid-column:1 / -1}

.woocommerce-cart-form table.cart{border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:6px 20px}
.woocommerce-cart-form table.cart,
.woocommerce-cart-form table.cart tbody{display:block;width:100%}
.woocommerce-cart-form table.cart thead{display:none}
.woocommerce-cart-form table.cart tr.woocommerce-cart-form__cart-item{display:flex;align-items:center;gap:16px;padding:18px 0;border-bottom:1px solid var(--border)}
.woocommerce-cart-form table.cart tr:last-of-type.woocommerce-cart-form__cart-item{border-bottom:none}
.woocommerce-cart-form table.cart td{border:none;padding:0}
.woocommerce-cart-form .product-remove{order:6;flex-shrink:0}
.woocommerce-cart-form .product-remove a.remove{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:var(--surface-2);color:var(--ink-soft);font-size:18px;text-decoration:none;line-height:1}
.woocommerce-cart-form .product-remove a.remove:hover{background:var(--red-tint);color:var(--red)}
.woocommerce-cart-form .product-thumbnail{order:1;flex-shrink:0}
.woocommerce-cart-form .product-thumbnail img{width:78px;height:78px;object-fit:contain;border-radius:10px;background:var(--surface-2)}
.woocommerce-cart-form .product-name{order:2;flex:1;min-width:0}
.woocommerce-cart-form .product-name a{color:var(--ink);font-size:14px;font-weight:600;text-decoration:none;overflow-wrap:anywhere}
.woocommerce-cart-form .product-name a:hover{color:var(--red)}
.woocommerce-cart-form .product-price{order:3;flex-shrink:0;font-size:12.5px;color:var(--ink-soft);width:90px}
.woocommerce-cart-form .product-quantity{order:4;flex-shrink:0}
.woocommerce-cart-form .quantity{display:flex}
.woocommerce-cart-form .qty{width:64px;height:40px;border:1.5px solid var(--border);border-radius:8px;text-align:center;font-size:14px;font-family:var(--font-body);color:var(--ink)}
.woocommerce-cart-form .qty:focus{outline:none;border-color:var(--red)}
.woocommerce-cart-form .product-subtotal{order:5;flex-shrink:0;font-weight:700;color:var(--ink);font-size:14.5px;width:90px;text-align:right}

.woocommerce-cart-form .actions{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;padding:18px 0!important;border-top:1px solid var(--border);margin-top:6px}
.woocommerce-cart-form .coupon{display:flex;gap:8px;flex:1;min-width:230px}
.woocommerce-cart-form .coupon #coupon_code{flex:1;height:44px;border:1.5px solid var(--border);border-radius:8px;padding:0 14px;font-size:14px;font-family:var(--font-body);background:var(--surface);color:var(--ink)}
.woocommerce-cart-form .coupon #coupon_code:focus{outline:none;border-color:var(--red)}
.woocommerce-cart-form .coupon button[name="apply_coupon"]{height:44px;padding:0 20px;background:var(--ink);color:var(--surface);border:none;border-radius:8px;font-weight:700;font-size:13px;cursor:pointer;white-space:nowrap;font-family:inherit}
.woocommerce-cart-form .coupon button[name="apply_coupon"]:hover{background:var(--red)}
.woocommerce-cart-form button[name="update_cart"]{height:44px;padding:0 20px;background:var(--surface-2);color:var(--ink);border:1.5px solid var(--border);border-radius:8px;font-weight:700;font-size:13px;cursor:pointer;font-family:inherit}
.woocommerce-cart-form button[name="update_cart"]:hover{border-color:var(--red);color:var(--red)}

.cart-collaterals{grid-column:2}
.cart_totals{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:22px}
.cart_totals h2{font-family:var(--font-display);font-size:16px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--red);margin:0 0 16px;padding-bottom:12px;border-bottom:2px solid var(--border)}
.cart_totals table{width:100%;border-collapse:collapse}
.cart_totals table tr{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}
.cart_totals table tr:last-child{border-bottom:none}
.cart_totals table th,.cart_totals table td{border:none;padding:0;font-size:13.5px;color:var(--ink-soft);text-align:right}
.cart_totals table th{text-align:left;font-weight:600}
.cart_totals .order-total th,.cart_totals .order-total td{font-size:16px;font-weight:700;color:var(--ink)}
.cart_totals .order-total .woocommerce-Price-amount{font-family:var(--font-display);font-size:22px}
.woocommerce-shipping-calculator{width:100%;text-align:right}
.woocommerce-shipping-calculator .shipping-calculator-button{color:var(--red);font-weight:700;font-size:12.5px;text-decoration:none}
.woocommerce-shipping-calculator .shipping-calculator-button:hover{text-decoration:underline}
.shipping-calculator-form{margin-top:10px;text-align:left}
.shipping-calculator-form .form-row{margin:0 0 10px}
.shipping-calculator-form input.input-text{width:100%;height:40px;border:1.5px solid var(--border);border-radius:8px;padding:0 12px;font-size:13.5px;font-family:var(--font-body)}
.shipping-calculator-form input.input-text:focus{outline:none;border-color:var(--red)}
.shipping-calculator-form button[name="calc_shipping"]{height:38px;padding:0 16px;background:var(--ink);color:var(--surface);border:none;border-radius:8px;font-weight:700;font-size:12.5px;cursor:pointer;font-family:inherit}
.shipping-calculator-form button[name="calc_shipping"]:hover{background:var(--red)}
.wc-proceed-to-checkout{margin-top:18px}
.wc-proceed-to-checkout .checkout-button{display:block;width:100%;height:54px;line-height:54px;text-align:center;background:var(--red);color:var(--on-red)!important;border-radius:10px;font-weight:700;font-size:15px;text-decoration:none}
.wc-proceed-to-checkout .checkout-button:hover{background:var(--red-deep)}

/* Carrinho vazio — só isso aparece dentro de ".woocommerce" nesse caso; span nas 2 colunas do grid pra não ficar torto. */
.cart-empty{grid-column:1 / -1;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:28px;text-align:center;color:var(--ink-soft);font-size:14.5px}
.return-to-shop{grid-column:1 / -1;text-align:center}
.return-to-shop .button{display:inline-block;margin-top:12px;height:44px;line-height:44px;padding:0 22px;background:var(--red);color:var(--on-red)!important;border-radius:10px;font-weight:700;text-decoration:none;font-size:13.5px}

/* Preço unitário some até 1100px (22/10/2026; antes só abaixo de 900): em 1024px o nome da peça ficava numa coluna de
   83px — 5 linhas — e "Fiesta/ka/ecosport/focus" passava por cima do preço unitário. O total da linha continua ali. */
@media (max-width:1100px){
  .woocommerce-cart-form .product-price{display:none}
}
@media (max-width:900px){
  /* minmax(0,1fr), não 1fr (16/10/2026): com 1fr a coluna crescia até o conteúdo mais largo (linha do cupom) e a página passava da tela. */
  body.woocommerce-cart .woocommerce{grid-template-columns:minmax(0,1fr)}
  .cart-collaterals{grid-column:1}
  .woocommerce-cart-form .product-price{display:none}
}
@media (max-width:560px){
  /*
   * Testado ao vivo em 375px (21/09/2026): o "flex-wrap" sozinho não
   * empurrava o nome do produto pra própria linha — como ele é o único
   * item flexível (flex:1) da fileira, o navegador preferia espremê-lo
   * numa coluna quase zero (quebrando palavra por palavra) a mandar ele
   * pra linha de baixo. Grid com áreas nomeadas resolve isso de vez:
   * imagem à esquerda (ocupando as 2 linhas), nome em cima por inteiro,
   * quantidade/subtotal/remover embaixo.
   */
  .woocommerce-cart-form table.cart tr.woocommerce-cart-form__cart-item{
    display:grid;
    grid-template-columns:64px 1fr auto auto;
    grid-template-areas:"thumb name name name" "thumb qty sub remove";
    column-gap:12px;row-gap:10px;align-items:center;
  }
  .woocommerce-cart-form .product-thumbnail{grid-area:thumb}
  .woocommerce-cart-form .product-name{grid-area:name}
  .woocommerce-cart-form .product-quantity{grid-area:qty}
  .woocommerce-cart-form .product-subtotal{grid-area:sub;width:auto;text-align:right}
  .woocommerce-cart-form .product-remove{grid-area:remove}
  /* Linha do cupom (16/10/2026): como "tabela", ela ficava do tamanho do conteúdo (campo 187px + botão 124px) e saía 26px do quadro numa tela de 375px. */
  .woocommerce-cart-form table.cart tr{display:block}
  .woocommerce-cart-form .coupon #coupon_code{min-width:0}
}

/* ---------- Menu mobile (barra inferior) ---------- */
/*
 * Pedido no PDF de melhorias, pág. 6-7, alinhado com o dono da loja em
 * 21/09/2026: barra fixa só no celular. A régua certa é ≤1200px, não
 * ≤768px — descoberto em teste real (21/09/2026): os botões flutuantes de
 * CEP e Garagem já usam 1200px há um tempo (comentário deles mesmos:
 * "mesma régua que o próprio tema usa pra trocar de cabeçalho desktop pro
 * mobile"), 768px era um valor solto que eu supus errado.
 *
 * Escondemos os 2 botões flutuantes ORIGINAIS aqui embaixo (não no plugin
 * deles) — continuam existindo/funcionando no HTML, só não aparecem mais
 * soltos na tela; template-parts/mobile-nav.php tem botões próprios que
 * simulam um clique neles. Seletor com o ID repetido
 * ("#id#id") de propósito: os plugins têm a PRÓPRIA regra
 * "display:flex!important" pra mostrar esses botões no celular, carregada
 * DEPOIS do nosso CSS — num empate de "!important", quem carrega por
 * último vence; dobrar o ID aumenta a especificidade o bastante pra
 * ganhar mesmo assim, sem depender de ordem de carregamento (mesmo
 * problema/mesma solução já usada antes neste projeto pro botão "Ver
 * todos os resultados" da busca).
 */
.njp-mobile-nav{display:none}
@media (max-width:1200px){
  .njp-mobile-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--surface);border-top:1px solid var(--border);padding:6px 4px calc(6px + env(safe-area-inset-bottom,0px));box-shadow:0 -6px 20px -10px rgba(5,15,40,.15)}
  .njp-mobile-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;background:none;border:none;color:var(--ink-soft);text-decoration:none;font-size:10.5px;font-weight:600;font-family:inherit;line-height:1.2;cursor:pointer}
  .njp-mobile-nav-item .njp-icon{width:21px;height:21px}
  .njp-mobile-nav-item:hover,.njp-mobile-nav-item:active{color:var(--red)}
  #njp-cep-fab#njp-cep-fab,#wpce-mobile-float-launcher#wpce-mobile-float-launcher{display:none!important}
  body{padding-bottom:60px}
}

/* ---------- Avaliações de quem comprou (26/10/2026) ----------
 * Página de produto: template-parts/avaliacoes-produto.php + assets/js/avaliacoes.js. Minha Conta: avaliar-pedido.php
 * (card), avaliar-modal.php (janela, mesmo .njp-modal do resto do site) + assets/js/avaliar.js. Regras: nj-parts-core
 * (NJP_Reviews). Só cores do tema (variáveis), pra seguir junto com a Campanha. */
.njp-av{margin-top:52px;padding-top:40px;border-top:1px solid var(--border);scroll-margin-top:90px}
.njp-av [hidden]{display:none!important}
.njp-av-topo{display:grid;grid-template-columns:minmax(220px,300px) minmax(0,1fr);gap:32px;align-items:center;padding:22px 24px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}
.njp-av-resumo{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}
.njp-av-media{font-family:var(--font-display);font-size:54px;font-weight:800;line-height:1;color:var(--ink)}
.njp-av-media small{font-size:20px;font-weight:700;color:var(--ink-soft)}
.njp-av-resumo-info{display:flex;flex-direction:column;gap:4px}
.njp-av-resumo .njp-star{width:19px;height:19px}
.njp-av-total{margin:0;font-size:13px;color:var(--ink-soft)}
.njp-av-selo{display:inline-flex;align-items:center;gap:6px;flex-basis:100%;width:fit-content;max-width:fit-content;margin:4px 0 0;padding:6px 11px;border-radius:999px;background:var(--green-bg);color:var(--green);font-size:12.5px;font-weight:700}
.njp-av-selo .njp-icon{width:16px;height:16px;flex-shrink:0}
.njp-av-barras{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.njp-av-barra{display:grid;grid-template-columns:40px minmax(0,1fr) 34px;align-items:center;gap:10px;width:100%;padding:5px 8px;border:0;border-radius:8px;background:none;color:var(--ink);font:inherit;font-size:13px;text-align:left;cursor:pointer}
.njp-av-barra:hover,.njp-av-barra.is-ativa{background:var(--surface-2)}
.njp-av-barra:disabled{cursor:default;background:none;opacity:.5}
.njp-av-barra-rotulo{display:inline-flex;align-items:center;gap:4px;font-weight:700}
.njp-av-barra-rotulo .njp-star,.njp-av-mini-nota .njp-star{width:12px;height:12px;color:var(--amber)}
.njp-av-barra-trilho{height:8px;border-radius:99px;background:var(--surface-2);overflow:hidden}
.njp-av-barra:hover .njp-av-barra-trilho,.njp-av-barra.is-ativa .njp-av-barra-trilho{background:var(--border)}
.njp-av-barra-trilho span{display:block;height:100%;border-radius:inherit;background:var(--amber)}
.njp-av-barra-n{text-align:right;color:var(--ink-soft);font-variant-numeric:tabular-nums}
.njp-av-estrelas{display:inline-flex;gap:2px}
.njp-av-estrelas .njp-star{width:15px;height:15px;color:var(--border)}
.njp-av-estrelas .njp-star.is-cheia{color:var(--amber)}
.njp-av-galeria{margin-top:26px}
.njp-av-sub{margin:0 0 12px;font-family:var(--font-display);font-size:17px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--ink)}
.njp-av-galeria-lista{display:flex;gap:10px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;padding-bottom:6px}
.njp-av-mini{position:relative;flex:0 0 auto;width:92px;height:92px;padding:0;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--surface-2);cursor:zoom-in;scroll-snap-align:start}
.njp-av-mini img{display:block;width:100%;height:100%;object-fit:cover}
.njp-av-mini-play{position:absolute;inset:0;display:grid;place-items:center;background:rgba(5,15,40,.28);color:#fff}
.njp-av-mini-play .njp-icon{width:30px;height:30px;filter:drop-shadow(0 1px 3px rgba(0,0,0,.5))}
.njp-av-mini-nota{position:absolute;left:6px;bottom:6px;display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:99px;background:rgba(5,15,40,.8);color:#fff;font-size:11px;font-weight:700}
.njp-av-controles{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 14px;margin:28px 0 14px}
.njp-av-controles label{display:flex;flex-direction:column;gap:5px;font-size:11.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--ink-soft)}
.njp-av-controles select{height:42px;min-width:180px;padding:0 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;font-size:14px;font-weight:600;letter-spacing:0;text-transform:none;cursor:pointer}
.njp-av-lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.njp-av-galeria + .njp-av-lista,.njp-av-topo + .njp-av-lista{margin-top:24px}
.njp-av-item{padding:18px 20px;border:1px solid var(--border);border-radius:14px;background:var(--surface)}
.njp-av-item-topo{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;font-size:12.5px;color:var(--ink-soft)}
.njp-av-verificada{display:inline-flex;align-items:center;gap:4px;color:var(--green);font-weight:700}
.njp-av-verificada .njp-icon{width:14px;height:14px}
.njp-av-autor{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:8px 0 0;font-size:14px;font-weight:700;color:var(--ink)}
.njp-av-carro{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:99px;background:var(--surface-2);color:var(--ink-soft);font-size:12px;font-weight:600}
.njp-av-carro .njp-icon{width:15px;height:15px;flex-shrink:0}
.njp-av-texto{margin:10px 0 0;font-size:14.5px;line-height:1.65;color:var(--ink);overflow-wrap:anywhere}
.njp-av.is-js .njp-av-texto{display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}
.njp-av.is-js .njp-av-texto.is-aberto{display:block;-webkit-line-clamp:unset;overflow:visible}
.njp-av-ler{display:block;margin:6px 0 0;padding:0;border:0;background:none;color:var(--red-deep);font:inherit;font-size:13px;font-weight:700;cursor:pointer}
.njp-av-midias{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.njp-av-midias .njp-av-mini{width:76px;height:76px}
.njp-av-resposta{margin:14px 0 0;padding:12px 14px;border-left:3px solid var(--red);border-radius:0 10px 10px 0;background:var(--surface-2);font-size:13.5px;line-height:1.55;color:var(--ink)}
.njp-av-resposta strong{display:block;margin-bottom:4px;font-size:12px;letter-spacing:.3px;text-transform:uppercase}
.njp-av-resposta p{margin:0}
.njp-av-util{display:inline-flex;align-items:center;gap:6px;height:34px;margin-top:14px;padding:0 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--ink-soft);font:inherit;font-size:13px;font-weight:700;cursor:pointer}
.njp-av-util:hover{border-color:var(--ink-soft);color:var(--ink)}
.njp-av-util.is-votado{border-color:var(--green);background:var(--green-bg);color:var(--green);cursor:default}
.njp-av-util .njp-icon{width:16px;height:16px}
.njp-av-vazio{margin:0;padding:18px;border:1px dashed var(--border);border-radius:14px;text-align:center;font-size:14px;color:var(--ink-soft)}
.njp-av-mais{display:block;height:44px;margin:18px auto 0;padding:0 24px;border:1.5px solid var(--ink);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;font-size:14px;font-weight:700;cursor:pointer}
.njp-av-mais:hover{background:var(--ink);color:var(--surface)}
/* Foto/vídeo grande (montado pelo avaliacoes.js no fim do <body>). */
.njp-av-luz{position:fixed;inset:0;z-index:99995;display:flex;align-items:center;justify-content:center;padding:20px}
.njp-av-luz[hidden],.njp-av-luz [hidden]{display:none!important}
.njp-av-luz-fundo{position:absolute;inset:0;background:rgba(5,15,40,.88)}
.njp-av-luz-caixa{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 320px;width:min(1100px,100%);max-height:calc(100vh - 40px);border-radius:16px;overflow:hidden;background:var(--surface)}
.njp-av-luz-midia{display:grid;place-items:center;min-height:360px;background:#000}
.njp-av-luz-midia img,.njp-av-luz-midia video{display:block;max-width:100%;max-height:calc(100vh - 40px);object-fit:contain}
.njp-av-luz-info{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:56px 22px 22px;overflow-y:auto;font-size:14px;line-height:1.6;color:var(--ink)}
.njp-av-luz-info .njp-av-autor{margin:0}
.njp-av-luz-texto{margin:0;overflow-wrap:anywhere}
.njp-av-luz-contador{margin:auto 0 0;font-size:12px;color:var(--ink-soft)}
.njp-av-luz-fechar,.njp-av-luz-nav{position:absolute;z-index:2;display:grid;place-items:center;width:40px;height:40px;padding:0;border:0;border-radius:50%;background:rgba(255,255,255,.94);color:#050F28;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.25)}
.njp-av-luz-fechar{top:10px;right:10px}
.njp-av-luz-nav{top:50%;margin-top:-20px}
.njp-av-luz-ant{left:10px}
.njp-av-luz-prox{right:330px}
.njp-av-luz-ant .njp-icon{transform:rotate(180deg)}
.njp-av-luz-fechar .njp-icon,.njp-av-luz-nav .njp-icon{width:18px;height:18px}
@media (max-width:760px){
  .njp-av{margin-top:40px;padding-top:30px}
  .njp-av-topo{grid-template-columns:1fr;gap:18px;padding:18px}
  .njp-av-media{font-size:46px}
  .njp-av-controles label{flex:1 1 140px}
  .njp-av-controles select{width:100%;min-width:0}
  .njp-av-item{padding:16px}
  .njp-av-luz{padding:0}
  .njp-av-luz-caixa{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto;width:100%;height:100%;max-height:none;border-radius:0}
  .njp-av-luz-midia{min-height:0}
  .njp-av-luz-midia img,.njp-av-luz-midia video{max-height:calc(100vh - 220px)}
  .njp-av-luz-info{max-height:220px;padding:16px}
  .njp-av-luz-prox{right:10px}
}

/* Card "Avalie suas compras" (Minha Conta → Pedidos, página do pedido Concluído). */
.njp-avaliar{margin:0 0 24px;padding:20px 22px;border:1px solid var(--border);border-radius:16px;background:var(--surface);scroll-margin-top:90px}
.njp-vo-main .njp-avaliar{margin:0}
.njp-avaliar-topo{display:flex;align-items:center;gap:14px;margin-bottom:10px}
.njp-avaliar-icone{display:grid;place-items:center;flex-shrink:0;width:46px;height:46px;border-radius:14px;background:var(--surface-2);color:var(--amber)}
.njp-avaliar-icone .njp-icon{width:26px;height:26px;fill:currentColor}
.njp-avaliar-titulo{margin:0;font-family:var(--font-display);font-size:20px;font-weight:800;line-height:1.1;text-transform:uppercase;letter-spacing:.2px;color:var(--ink)}
.njp-avaliar-sub{margin:3px 0 0;font-size:13px;line-height:1.45;color:var(--ink-soft)}
.njp-avaliar-lista{list-style:none;margin:0;padding:0}
.njp-avaliar-item{display:grid;grid-template-columns:56px minmax(0,1fr) auto;align-items:center;gap:14px;padding:12px 0;border-top:1px solid var(--border)}
.njp-avaliar-item:last-child{padding-bottom:0}
.njp-avaliar-item > img{width:56px;height:56px;object-fit:contain;border-radius:10px;background:var(--surface-2)}
.njp-avaliar-nome{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:14px;font-weight:700;line-height:1.35;color:var(--ink);text-decoration:none}
.njp-avaliar-nome:hover{color:var(--red)}
.njp-avaliar-meta{display:block;margin-top:2px;font-size:12px;color:var(--ink-soft)}
.njp-avaliar-acao{display:flex;align-items:center;gap:10px}
.njp-avaliar-estrelas{display:flex}
.njp-avaliar-estrela{display:grid;place-items:center;width:30px;height:36px;padding:0;border:0;background:none;color:var(--border);cursor:pointer}
.njp-avaliar-estrela .njp-star{width:23px;height:23px}
.njp-avaliar-estrelas:hover .njp-avaliar-estrela,.njp-avaliar-estrela:focus-visible{color:var(--amber)}
.njp-avaliar-estrela:hover ~ .njp-avaliar-estrela{color:var(--border)}
.njp-avaliar-btn{height:40px;padding:0 18px;border:0;border-radius:10px;background:var(--red);color:var(--on-red);font:inherit;font-size:14px;font-weight:700;white-space:nowrap;cursor:pointer}
.njp-avaliar-btn:hover{background:var(--red-deep)}
.njp-avaliar-feito{display:inline-flex;align-items:center;gap:6px;color:var(--green);font-size:13.5px;font-weight:700;white-space:nowrap}
.njp-avaliar-feito .njp-icon{width:17px;height:17px}
/* Painel de Minha Conta: lembrete de peças pra avaliar (mesmo jeito da faixa "Teve algum problema?"). */
.njp-dash-avaliar > .njp-icon{color:var(--amber);fill:currentColor}
.njp-dash-avaliar .njp-avaliar-btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
/* Estrelas perto do nome do produto: levam pro bloco de avaliações. */
.njp-pdp-nota{display:inline-flex;width:fit-content;text-decoration:none}

/* Janela "Avaliar peça". */
.njp-avaliar-modal .njp-modal-caixa{max-width:540px}
.njp-avaliar-modal [hidden]{display:none!important}
.njp-av-form-foto{width:56px;height:56px;flex-shrink:0;object-fit:contain;border-radius:12px;background:var(--surface-2)}
.njp-avaliar-modal .njp-modal-sub{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.njp-av-form-nota{margin:0 0 16px;padding:0;border:0}
.njp-av-form-nota legend,.njp-av-form-campo > span,.njp-av-form-rotulo{display:block;margin:0 0 6px;padding:0;font-size:13px;font-weight:700;color:var(--ink)}
.njp-av-form-campo small,.njp-av-form-rotulo small{font-weight:600;color:var(--ink-soft)}
.njp-av-form-estrelas{display:flex;align-items:center;gap:2px}
.njp-av-form-estrelas input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.njp-av-form-estrelas label{display:grid;place-items:center;width:46px;height:46px;border-radius:10px;color:var(--border);cursor:pointer}
.njp-av-form-estrelas label .njp-star{width:36px;height:36px}
.njp-av-form-estrelas label.is-cheia{color:var(--amber)}
.njp-av-form-estrelas input:focus-visible + label{outline:2px solid var(--red);outline-offset:2px}
.njp-av-form-nota-texto{display:block;min-height:18px;margin-top:2px;font-size:13px;font-weight:700;color:var(--ink-soft)}
.njp-av-form-campo{display:block;margin:0 0 16px}
.njp-av-form-campo textarea{display:block;width:100%;min-height:104px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--ink);font:inherit;font-size:15px;line-height:1.5;resize:vertical}
.njp-av-form-campo textarea:focus{outline:none;border-color:var(--ink-soft)}
.njp-av-form-contador{display:block;margin-top:4px;text-align:right;font-size:11.5px;color:var(--ink-soft)}
.njp-av-form-botoes{display:flex;gap:8px}
.njp-av-form-add{position:relative;flex:1;display:flex;align-items:center;justify-content:center;gap:7px;height:48px;padding:0 10px;border:1.5px dashed var(--border);border-radius:12px;background:var(--surface-2);color:var(--ink);font-size:13.5px;font-weight:700;cursor:pointer}
.njp-av-form-add:hover{border-color:var(--ink-soft)}
.njp-av-form-add.is-cheio{opacity:.45;pointer-events:none}
.njp-av-form-add small{font-weight:600;color:var(--ink-soft)}
.njp-av-form-add .njp-icon{width:20px;height:20px;flex-shrink:0}
/* O próprio campo de arquivo cobre o botão, invisível: toque direto nele (no iPhone, rótulo + campo escondido falha às vezes). */
.njp-av-form-add input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;font-size:0}
.njp-av-form-previas{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 0;padding:0}
.njp-av-form-previas:empty{display:none}
.njp-av-previa{position:relative;width:74px;height:74px;border-radius:10px;overflow:hidden;background:var(--surface-2)}
.njp-av-previa img{display:block;width:100%;height:100%;object-fit:cover}
.njp-av-previa img:not([src]){visibility:hidden}
.njp-av-previa-play{position:absolute;inset:0;display:grid;place-items:center;color:#fff;background:rgba(5,15,40,.3)}
.njp-av-previa-play .njp-icon{width:26px;height:26px}
.njp-av-previa-barra{position:absolute;left:6px;right:6px;bottom:6px;height:5px;border-radius:99px;background:rgba(255,255,255,.75);overflow:hidden}
.njp-av-previa-barra span{display:block;width:0;height:100%;background:var(--green);transition:width .2s}
.njp-av-previa.is-pronta .njp-av-previa-barra{display:none}
.njp-av-previa.is-erro{outline:2px solid var(--danger);outline-offset:-2px}
.njp-av-previa-tirar{position:absolute;top:4px;right:4px;display:grid;place-items:center;width:24px;height:24px;padding:0;border:0;border-radius:50%;background:rgba(5,15,40,.78);color:#fff;cursor:pointer}
.njp-av-previa-tirar .njp-icon{width:12px;height:12px}
.njp-av-form-carro{display:flex;align-items:flex-start;gap:8px;margin:16px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink-soft)}
.njp-av-form-carro .njp-icon,.njp-avaliar-modal .njp-modal-nota .njp-icon{width:15px;height:15px;flex-shrink:0;margin-top:2px}
.njp-av-form-carro strong{color:var(--ink)}
.njp-av-form-erro{margin:14px 0 0;padding:10px 12px;border-radius:10px;background:var(--danger-tint);color:var(--danger-deep);font-size:13.5px;font-weight:600}
.njp-av-form-enviar{display:flex;align-items:center;justify-content:center;width:100%;height:52px;margin-top:16px;padding:0 18px;border:0;border-radius:10px;background:var(--red);color:var(--on-red);font:inherit;font-size:15px;font-weight:700;cursor:pointer;box-shadow:0 8px 18px -6px var(--red-glow)}
.njp-av-form-enviar:hover{background:var(--red-deep)}
.njp-av-form-enviar:disabled{opacity:.6;cursor:wait}
.njp-av-form-ok{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 0 4px;text-align:center}
.njp-av-form-ok .njp-modal-titulo:focus{outline:none}
.njp-av-form-ok-texto{margin:0;font-size:14px;line-height:1.5;color:var(--ink-soft)}
.njp-av-form-ok-acoes{display:flex;flex-direction:column;align-items:stretch;gap:8px;width:100%;margin-top:6px}
.njp-av-form-ok-ver{display:flex;align-items:center;justify-content:center;height:46px;border:1.5px solid var(--ink);border-radius:10px;color:var(--ink);font-weight:700;text-decoration:none}
.njp-av-form-ok-ver:hover{background:var(--ink);color:var(--surface)}
.njp-av-form-ok .njp-av-form-enviar{margin-top:0}
.njp-av-form-fechar-ok{height:40px;border:0;background:none;color:var(--ink-soft);font:inherit;font-size:14px;font-weight:700;cursor:pointer}
@media (max-width:640px){
  .njp-avaliar{padding:16px}
  .njp-avaliar-item{grid-template-columns:48px minmax(0,1fr);gap:12px}
  .njp-avaliar-item > img{width:48px;height:48px}
  .njp-avaliar-acao{grid-column:1 / -1;justify-content:space-between}
  .njp-dash-avaliar{flex-wrap:wrap}
  .njp-dash-avaliar .njp-avaliar-btn{width:100%}
  .njp-av-form-estrelas label{width:44px;height:44px}
  .njp-av-form-estrelas label .njp-star{width:34px;height:34px}
}

/* ---------- Páginas institucionais (27/10/2026) ----------
 * template-parts/institucional.php (modelo "NJ Parts — Institucional" e page-compra-garantida / page-nj-parts-e-confiavel /
 * page-entregas-no-mesmo-dia). O texto vem em blocos do editor (padroes/*.php ou o que o dono escrever): por isso o
 * visual é por classe de bloco (wp-block-*) + as classes njp-inst-* dos textos prontos. Ícone dos cartões: classe
 * njp-ic-* no bloco (Avançado → Classes CSS adicionais), desenhado aqui como máscara na cor de destaque. */
.njp-inst-hero{display:flex;align-items:center;gap:18px;margin-bottom:24px;padding:26px 28px;border:1px solid var(--border);border-radius:20px;background:var(--surface)}
.njp-inst-hero .njp-page-title{margin:0 0 6px}
.njp-inst-hero p{max-width:70ch;margin:0;font-size:15.5px;line-height:1.55;color:var(--ink-soft)}
.njp-inst-icone{display:grid;place-items:center;flex-shrink:0;width:60px;height:60px;border-radius:16px;background:var(--red-tint);color:var(--red)}
.njp-inst-icone .njp-icon{width:30px;height:30px}
/* Topo com foto (Quem somos, como a página antiga): a foto cobre a faixa, um degradê escuro por cima garante a leitura. */
.njp-inst-hero.is-foto{position:relative;isolation:isolate;align-items:flex-end;min-height:320px;padding:40px 40px 36px;border:0;overflow:hidden;background:var(--navy)}
.njp-inst-hero-foto{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover}
/* Dois degradês: de baixo pra cima (protege a frase, que fica sobre o letreiro BRANCO da foto da loja — sem ele o
   contraste caía pra ~2:1 entre 600 e 1100px, revisão de 27/10/2026) e da esquerda pra direita. */
.njp-inst-hero.is-foto::after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,rgba(5,15,40,.7) 0%,rgba(5,15,40,0) 70%),linear-gradient(90deg,rgba(5,15,40,.88) 0%,rgba(5,15,40,.62) 55%,rgba(5,15,40,.25) 100%)}
.njp-inst-hero.is-foto .njp-page-title{font-size:42px;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.35)}
.njp-inst-hero.is-foto p{max-width:60ch;font-size:17px;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.35)}
.njp-inst-aviso{margin:0 0 20px;padding:12px 16px;border:1px dashed var(--amber);border-radius:12px;background:var(--surface);font-size:13px;line-height:1.5;color:var(--ink-soft)}
.njp-inst-aviso a{margin-left:6px;font-weight:700;color:var(--red-deep)}
.njp-inst-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:28px;align-items:start}
.njp-inst-corpo{min-width:0;font-size:15px;line-height:1.7;color:var(--ink-soft)}
/* Tema sem theme.json: o WordPress embrulha o miolo de todo bloco "Grupo" num .wp-block-group__inner-container — sem
   isso aqui, a grade dos cartões via um item só (um cartão por linha, conferido no staging em 27/10/2026). */
.njp-inst-corpo .wp-block-group__inner-container{display:contents}
.njp-inst-corpo > *,.njp-inst-corpo .wp-block-group > *{margin-top:0;margin-bottom:16px}
.njp-inst-corpo h2{margin:38px 0 14px;font-family:var(--font-display);font-size:25px;font-weight:800;line-height:1.15;letter-spacing:.2px;text-transform:uppercase;color:var(--ink)}
.njp-inst-corpo > h2:first-child,.njp-inst-corpo > .njp-inst-lead + h2{margin-top:6px}
.njp-inst-corpo h3{margin:24px 0 8px;font-family:var(--font-display);font-size:19px;font-weight:700;line-height:1.2;color:var(--ink)}
.njp-inst-corpo p{margin:0 0 14px}
.njp-inst-corpo strong{color:var(--ink)}
.njp-inst-corpo a{color:var(--red-deep);font-weight:600}
.njp-inst-corpo ul,.njp-inst-corpo ol{margin:0 0 18px;padding-left:22px}
.njp-inst-corpo li{margin-bottom:6px}
.njp-inst-corpo .njp-inst-lead{margin-bottom:28px;font-size:17px;line-height:1.6;color:var(--ink)}
.njp-inst-corpo .njp-inst-nota{margin-top:20px;font-size:13px;color:var(--ink-soft)}
/* Cartões com ícone */
.njp-inst-corpo .njp-inst-cartoes{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;margin-bottom:10px}
.njp-inst-corpo .njp-inst-cartoes > *{margin:0}
.njp-inst-corpo .njp-inst-colunas-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.njp-inst-corpo .njp-inst-cartao{position:relative;padding:68px 20px 20px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}
.njp-inst-cartao::before{content:'';position:absolute;left:20px;top:20px;width:38px;height:38px;border-radius:11px;background:var(--red-tint)}
.njp-inst-cartao::after{content:'';position:absolute;left:28px;top:28px;width:22px;height:22px;background:var(--red);-webkit-mask:var(--njp-ic) center/contain no-repeat;mask:var(--njp-ic) center/contain no-repeat}
.njp-inst-corpo .njp-inst-cartao h3{margin:0 0 6px;font-size:18px}
.njp-inst-corpo .njp-inst-cartao p{margin:0;font-size:14px;line-height:1.55}
.njp-inst-cartao{--njp-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12.5l5 5L20 6.5'/%3E%3C/svg%3E")}
.njp-ic-carro{--njp-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 16v-3.4L5.8 7a2 2 0 0 1 1.9-1.3h8.6A2 2 0 0 1 18.2 7l2.3 5.6V16'/%3E%3Cpath d='M3.5 16h17v2.6a1 1 0 0 1-1 1h-1.4a1 1 0 0 1-1-1V17H6.9v1.6a1 1 0 0 1-1 1H4.5a1 1 0 0 1-1-1V16z'/%3E%3Ccircle cx='7.2' cy='13' r='1.3'/%3E%3Ccircle cx='16.8' cy='13' r='1.3'/%3E%3C/svg%3E")}
.njp-ic-volta{--njp-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12a8 8 0 1 0 2.4-5.7'/%3E%3Cpath d='M4 4.5v4h4'/%3E%3C/svg%3E")}
.njp-ic-escudo{--njp-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2.5 20 6v6.2c0 5-3.4 8.4-8 9.3-4.6-.9-8-4.3-8-9.3V6z'/%3E%3Cpath d='M8.7 12.2l2.3 2.3 4.3-4.6'/%3E%3C/svg%3E")}
.njp-ic-cadeado{--njp-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='9' rx='2'/%3E%3Cpath d='M8 11V7.5a4 4 0 0 1 8 0V11'/%3E%3C/svg%3E")}
.njp-ic-caminhao{--njp-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 6.5h10v9h-10z'/%3E%3Cpath d='M12.5 10h4.3L20 13v2.5h-7.5z'/%3E%3Ccircle cx='6.5' cy='18' r='1.7'/%3E%3Ccircle cx='16.5' cy='18' r='1.7'/%3E%3C/svg%3E")}
.njp-ic-dinheiro{--njp-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='6' width='19' height='12' rx='2'/%3E%3Ccircle cx='12' cy='12' r='2.6'/%3E%3Cpath d='M6 9.5v.01M18 14.5v.01'/%3E%3C/svg%3E")}
.njp-ic-predio{--njp-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.5 20.5V4.5a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v16'/%3E%3Cpath d='M14.5 9.5h4a1 1 0 0 1 1 1v10'/%3E%3Cpath d='M3 20.5h18M8 7.5h3M8 11.5h3M8 15.5h3'/%3E%3C/svg%3E")}
.njp-ic-loja{--njp-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 9.5h16l-1.2 10.2a1 1 0 0 1-1 .8H6.2a1 1 0 0 1-1-.8z'/%3E%3Cpath d='M8.5 9.5V7a3.5 3.5 0 0 1 7 0v2.5'/%3E%3C/svg%3E")}
.njp-ic-local{--njp-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 6.5-8 12-8 12s-8-5.5-8-12a8 8 0 0 1 16 0z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E")}
.njp-ic-estrela{--njp-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.2l2.7 5.5 6 .9-4.35 4.2 1.03 6-5.38-2.83-5.38 2.83 1.03-6L3.3 9.6l6-.9z'/%3E%3C/svg%3E")}
.njp-ic-relogio{--njp-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7.5V12l3 2'/%3E%3C/svg%3E")}
.njp-ic-calendario{--njp-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='5' width='17' height='15.5' rx='2'/%3E%3Cpath d='M3.5 9.5h17M8 3v4M16 3v4'/%3E%3C/svg%3E")}
.njp-ic-pessoa{--njp-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='3.6'/%3E%3Cpath d='M4.5 20.5c1.6-3.8 4.5-5.7 7.5-5.7s5.9 1.9 7.5 5.7'/%3E%3C/svg%3E")}
.njp-ic-raio{--njp-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 2 4 14h6l-1 8 9-12h-6l1-8z'/%3E%3C/svg%3E")}
/* Missão / Visão / Valores numerados (grupo njp-inst-numerados com um grupo njp-inst-numerado por item): o número
   grande e clarinho é contado pelo CSS, como o "01" da página antiga — trocar a ordem no editor renumera sozinho. */
.njp-inst-corpo .njp-inst-numerados{margin:30px 0 18px;counter-reset:njp-numero}
.njp-inst-corpo .njp-inst-numerado{position:relative;margin:0;padding:26px 0 24px 118px;border-top:1px solid var(--border);counter-increment:njp-numero}
.njp-inst-numerado::before{content:counter(njp-numero,decimal-leading-zero);content:counter(njp-numero,decimal-leading-zero) / "";position:absolute;left:0;top:16px;font-family:var(--font-display);font-size:84px;font-weight:800;line-height:1;letter-spacing:-2px;color:var(--border)}
.njp-inst-corpo .njp-inst-numerado .njp-inst-sobretitulo{margin:0 0 2px;font-size:13px;font-weight:600;letter-spacing:.2px;color:var(--ink-soft)}
.njp-inst-corpo .njp-inst-numerado h2{margin:0 0 10px}
.njp-inst-corpo .njp-inst-numerado p:last-child{margin-bottom:0}
/* Passos numerados (lista numerada com a classe njp-inst-passos) */
.njp-inst-corpo .njp-inst-passos{display:grid;gap:10px;margin-bottom:12px;padding:0;list-style:none;counter-reset:njp-passo}
.njp-inst-corpo .njp-inst-passos > li{position:relative;margin:0;padding:15px 18px 15px 62px;border:1px solid var(--border);border-radius:14px;background:var(--surface);color:var(--ink);counter-increment:njp-passo}
.njp-inst-passos > li::before{content:counter(njp-passo);position:absolute;left:18px;top:50%;display:grid;place-items:center;width:30px;height:30px;margin-top:-15px;border-radius:50%;background:var(--red);color:var(--on-red);font-family:var(--font-display);font-size:16px;font-weight:800}
/* Perguntas (bloco "Detalhes" do editor) */
.njp-inst-corpo .wp-block-details{margin:0 0 8px;border:1px solid var(--border);border-radius:12px;background:var(--surface);overflow:hidden}
.njp-inst-corpo .wp-block-details summary{position:relative;padding:15px 48px 15px 18px;font-weight:700;line-height:1.45;color:var(--ink);cursor:pointer;list-style:none}
.njp-inst-corpo .wp-block-details summary::-webkit-details-marker{display:none}
.njp-inst-corpo .wp-block-details summary::after{content:'+';position:absolute;right:18px;top:50%;margin-top:-13px;font-size:22px;font-weight:600;line-height:26px;color:var(--red)}
.njp-inst-corpo .wp-block-details[open] summary::after{content:'−'}
.njp-inst-corpo .wp-block-details > :not(summary){margin:0;padding:0 18px 16px}
/* Imagens do texto (mapa da entrega...): moldura arredondada do tema, sempre inteira (encolhe sem cortar). */
.njp-inst-corpo .wp-block-image{margin:0 0 20px}
.njp-inst-corpo .wp-block-image img{display:block;max-width:100%;height:auto;margin-inline:auto;border:1px solid var(--border);border-radius:16px;background:var(--surface)}
.njp-inst-corpo .njp-inst-mapa img{width:100%}
/* Dados da empresa */
.njp-inst-corpo .njp-inst-dados{padding:18px 22px;border-radius:16px;background:var(--surface-2)}
.njp-inst-corpo .njp-inst-dados p{margin:0 0 6px}
.njp-inst-corpo .njp-inst-dados p:last-child{margin-bottom:0}
/* Chamada final */
.njp-inst-corpo .njp-inst-cta{margin-top:34px;padding:26px 28px;border-radius:18px;background:var(--ink);color:var(--surface)}
.njp-inst-corpo .njp-inst-cta h2,.njp-inst-corpo .njp-inst-cta h3{margin:0 0 6px;color:var(--surface)}
.njp-inst-corpo .njp-inst-cta p{margin:0 0 16px;color:var(--surface);opacity:.85}
.njp-inst-corpo .njp-inst-cta > :last-child,.njp-inst-corpo .njp-inst-cta > .wp-block-group__inner-container > :last-child{margin-bottom:0}
.njp-inst-corpo .wp-block-buttons{display:flex;flex-wrap:wrap;gap:10px}
.njp-inst-corpo .wp-block-buttons > .wp-block-button{margin:0}
.njp-inst-corpo .wp-block-button__link{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:10px 22px;border:1.5px solid var(--red);border-radius:10px;background:var(--red);color:var(--on-red);font-family:var(--font-body);font-size:14.5px;font-weight:700;line-height:1.2;text-decoration:none}
.njp-inst-corpo .wp-block-button__link:hover{border-color:var(--red-deep);background:var(--red-deep);color:var(--on-red)}
.njp-inst-corpo .wp-block-button.is-style-outline > .wp-block-button__link{border-color:currentColor;background:transparent;color:inherit}
.njp-inst-corpo .njp-inst-cta .wp-block-button.is-style-outline > .wp-block-button__link{color:var(--surface)}
.njp-inst-corpo .wp-block-button.is-style-outline > .wp-block-button__link:hover{background:var(--surface-2);color:var(--ink)}
/* Lateral */
.njp-inst-lado{position:sticky;top:96px;display:flex;flex-direction:column;gap:16px}
.njp-inst-card{padding:20px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}
.njp-inst-card-titulo{margin:0 0 12px;font-family:var(--font-display);font-size:17px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;color:var(--ink)}
.njp-inst-card > p{margin:0 0 12px;font-size:13.5px;line-height:1.55;color:var(--ink-soft)}
.njp-inst-card .njp-btn-whatsapp{width:100%;justify-content:center;margin-bottom:14px}
.njp-inst-card .njp-btn-suporte{width:100%}
.njp-inst-contato{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;font-size:13.5px;line-height:1.5;color:var(--ink-soft)}
.njp-inst-contato li{display:flex;align-items:flex-start;gap:9px}
.njp-inst-contato .njp-icon{width:17px;height:17px;flex-shrink:0;margin-top:2px;color:var(--red)}
.njp-inst-contato a{color:var(--ink);font-weight:600;text-decoration:none;overflow-wrap:anywhere}
.njp-inst-paginas ul{display:flex;flex-direction:column;margin:0;padding:0;list-style:none}
.njp-inst-paginas a{display:block;padding:8px 0;border-top:1px solid var(--border);font-size:14px;font-weight:600;color:var(--ink);text-decoration:none}
.njp-inst-paginas li:first-child a{border-top:0;padding-top:0}
.njp-inst-paginas a:hover,.njp-inst-paginas a[aria-current]{color:var(--red)}
@media (max-width:900px){
  .njp-inst-grid{grid-template-columns:1fr}
  .njp-inst-lado{position:static}
  .njp-inst-hero.is-foto::after{background:linear-gradient(0deg,rgba(5,15,40,.92) 0%,rgba(5,15,40,.55) 70%,rgba(5,15,40,.35) 100%)}
}
@media (max-width:560px){
  .njp-inst-hero{flex-direction:column;align-items:flex-start;gap:14px;padding:20px}
  .njp-inst-hero.is-foto{justify-content:flex-end;align-items:stretch;min-height:280px;padding:22px 20px}
  .njp-inst-hero.is-foto .njp-page-title{font-size:32px}
  .njp-inst-hero.is-foto p{font-size:15px}
  .njp-inst-corpo .njp-inst-numerado{padding:20px 0 18px 66px}
  .njp-inst-numerado::before{top:18px;font-size:50px;letter-spacing:-1px}
  .njp-inst-icone{width:50px;height:50px;border-radius:14px}
  .njp-inst-icone .njp-icon{width:26px;height:26px}
  .njp-inst-corpo h2{font-size:22px}
  .njp-inst-corpo .njp-inst-cartoes{grid-template-columns:1fr;gap:10px}
  /* Celular: ícone ao lado do título (em cima, cada cartão ficava ~60px mais alto — 6 cartões = uma tela inteira a mais). */
  .njp-inst-corpo .njp-inst-cartao{padding:16px 16px 16px 70px}
  .njp-inst-cartao::before{left:16px;top:16px}
  .njp-inst-cartao::after{left:24px;top:24px}
  .njp-inst-corpo .njp-inst-cta{padding:22px 20px}
  .njp-inst-corpo .wp-block-buttons > .wp-block-button,.njp-inst-corpo .wp-block-button__link{width:100%}
}

/*
 * Página Fale conosco (03/11/2026, page-fale-conosco.php): canais, assuntos e loja. Topo e lista de contato vêm das regras
 * njp-inst-* acima.
 */
.njp-contato-canais{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}
.njp-contato-canal{display:flex;flex-direction:column;align-items:flex-start;padding:22px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}
.njp-contato-canal.is-whatsapp{border:2px solid #25D366}
.njp-contato-canal-icone{display:grid;place-items:center;width:44px;height:44px;margin-bottom:12px;border-radius:12px;background:var(--red-tint);color:var(--red)}
.njp-contato-canal-icone .njp-icon{width:23px;height:23px}
.njp-contato-canal.is-whatsapp .njp-contato-canal-icone{background:#25D366;color:#fff}
.njp-contato-canal h2{margin:0 0 4px;font-family:var(--font-display);font-size:20px;font-weight:700;line-height:1.2;text-transform:uppercase;color:var(--ink)}
.njp-contato-canal p{margin:0 0 16px;font-size:14px;line-height:1.5;color:var(--ink-soft)}
.njp-contato-canal > a{margin-top:auto}
.njp-contato-canal .njp-btn-whatsapp{width:100%;justify-content:center}
.njp-contato-valor{font-family:var(--font-display);font-size:22px;font-weight:700;display:flex;align-items:center;min-height:46px;line-height:1.2;color:var(--ink);text-decoration:none;overflow-wrap:anywhere}
.njp-contato-valor:hover{color:var(--red)}
.njp-contato-dica{margin:14px 0 0;padding:12px 16px;border-radius:12px;background:var(--surface-2);font-size:14px;line-height:1.5;color:var(--ink-soft)}
.njp-contato-dica strong{color:var(--ink)}
.njp-contato-secao{margin-top:38px}
.njp-contato-titulo{margin:0 0 16px;font-family:var(--font-display);font-size:25px;font-weight:800;line-height:1.15;letter-spacing:.2px;text-transform:uppercase;color:var(--ink)}
.njp-contato-assuntos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:0;padding:0;list-style:none}
.njp-contato-assuntos a{display:flex;align-items:flex-start;gap:14px;height:100%;padding:18px;border:1px solid var(--border);border-radius:14px;background:var(--surface);font-size:13.5px;line-height:1.5;color:var(--ink-soft);text-decoration:none;transition:border-color .15s}
.njp-contato-assuntos a:hover{border-color:var(--red)}
.njp-contato-assuntos .njp-icon{width:24px;height:24px;flex-shrink:0;color:var(--red)}
.njp-contato-assuntos strong{display:block;margin-bottom:3px;font-size:15px;line-height:1.3;color:var(--ink)}
.njp-contato-loja{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);border:1px solid var(--border);border-radius:16px;background:var(--surface);overflow:hidden}
.njp-contato-loja.sem-foto{grid-template-columns:minmax(0,1fr)}
.njp-contato-foto{display:block;width:100%;height:100%;min-height:300px;object-fit:cover}
.njp-contato-loja-info{padding:28px}
.njp-contato-loja .njp-inst-contato{margin-bottom:18px;font-size:15px}
.njp-contato-redes{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin-top:18px;font-size:14px;color:var(--ink-soft)}
.njp-contato-redes a{display:inline-flex;align-items:center;gap:6px;font-weight:600;color:var(--ink);text-decoration:none}
.njp-contato-redes a:hover{color:var(--red)}
.njp-contato-redes .njp-icon{width:18px;height:18px}
.njp-contato-empresa{margin:18px 0 0;padding-top:14px;border-top:1px solid var(--border);font-size:12.5px;line-height:1.5;color:var(--ink-soft)}
/* Em 2 colunas, o 3º canal ficaria sozinho: o WhatsApp ocupa a linha inteira. */
@media (min-width:556px) and (max-width:821px){
  .njp-contato-canal.is-whatsapp{grid-column:1/-1}
}
@media (max-width:900px){
  .njp-contato-assuntos{grid-template-columns:repeat(2,minmax(0,1fr))}
  .njp-contato-loja{grid-template-columns:minmax(0,1fr)}
  .njp-contato-foto{height:240px;min-height:0}
}
@media (max-width:560px){
  .njp-contato-assuntos{grid-template-columns:minmax(0,1fr);gap:10px}
  .njp-contato-assuntos a{padding:14px}
  .njp-contato-canal{padding:18px}
  .njp-contato-loja-info{padding:20px}
  .njp-contato-loja .njp-btn-suporte{width:100%}
  .njp-contato-titulo{font-size:22px}
}
