/* ==========================================================================
   Locs · West Coast
   Linguagem de streetwear de raiz West Coast: foto em primeiro plano, caixa-alta condensada,
   preto e branco, azul Locs só como acento (preço no Pix, selos).
   CSS puro: toda classe .wc-* do Blade do tema está aqui (não depende do build do Tailwind).
   Superfícies nativas: só ids, atributos data-* e classes .ps-* documentados no anexo de ganchos.
   ========================================================================== */

@font-face { font-family: 'Big Shoulders Display'; font-style: normal; font-weight: 800; font-display: swap; src: url('fonts/big-shoulders-display-latin-800-normal.woff2') format('woff2'); }
@font-face { font-family: 'Archivo Narrow'; font-style: normal; font-weight: 500; font-display: swap; src: url('fonts/archivo-narrow-latin-500-normal.woff2') format('woff2'); }
@font-face { font-family: 'Archivo Narrow'; font-style: normal; font-weight: 700; font-display: swap; src: url('fonts/archivo-narrow-latin-700-normal.woff2') format('woff2'); }

:root {
    --wc-tinta: #0e0e0e;
    --wc-papel: #ffffff;
    --wc-nevoa: #f3f3f1;
    --wc-linha: #e3e3e0;
    --wc-cinza: #6b6b6b;
    --wc-azul: #1d3ae0;
    --wc-display: 'Big Shoulders Display', 'Arial Narrow', 'Helvetica Neue', sans-serif;
    --wc-rotulo: 'Archivo Narrow', 'Arial Narrow', sans-serif;
    --wc-corpo: var(--font-menu, 'Red Hat Display'), ui-sans-serif, system-ui, sans-serif;
    --wc-ease: cubic-bezier(.2, .8, .2, 1);
}

/* ---------- Base ---------- */
body { font-family: var(--wc-corpo); background: var(--wc-papel) !important; }
main h1 { font-family: var(--wc-display); font-weight: 800; text-transform: uppercase; letter-spacing: .01em; line-height: 1.02 !important; margin-top: .35rem; }
:focus-visible:not(input):not(select):not(textarea) { outline: 2px solid var(--wc-azul); outline-offset: 2px; }
::selection { background: var(--wc-tinta); color: #fff; }

/* ---------- Barra de anúncio (estilo_menu = anuncio; .ps-marquee é classe estável) ---------- */
body div:has(> .ps-marquee) { background: var(--wc-tinta) !important; color: #fff !important; border: 0 !important; padding-block: .55rem !important; }
body div:has(> .ps-marquee) .ps-marquee { font-family: var(--wc-rotulo); font-size: .78rem !important; font-weight: 700 !important; letter-spacing: .12em; }

/* ---------- Header ---------- */
#ps-header-principal { border-bottom: 1px solid var(--wc-linha) !important; }
#ps-header-principal nav { font-family: var(--wc-rotulo) !important; }
#ps-header-principal nav a { font-weight: 700; font-size: .95rem; letter-spacing: .08em; text-decoration-thickness: 2px !important; text-underline-offset: 7px; }
#ps-header-principal #ps-busca-abrir, #ps-header-principal #ps-conta-link, #ps-header-principal #ps-favoritos-link,
#ps-header-principal #ps-carrinho-abrir, #ps-header-principal #ps-menu-abrir { border-color: transparent !important; border-radius: 0 !important; padding: .55rem !important; }
#ps-header-principal #ps-carrinho-badge, #ps-header-principal #ps-favoritos-badge { background: var(--wc-tinta) !important; color: #fff !important; font-family: var(--wc-rotulo); font-weight: 700; }
#ps-menu-mobile { font-family: var(--wc-rotulo) !important; }

/* Logo (arte com proporção ~1,78:1, 600×337): altura parecida com a do texto "LOCS" de antes.
Este valor (50px) segue sendo o do estado ROLADO no desktop — pedido explícito do Ricardo
(2026-09-30): "o atual do desktop eu gosto desse padrão pra ser mantido quando a barra for
rolada pra baixo". */
#ps-header-principal .ps-logo-header { height: 50px !important; width: auto; }
/* 50px × 1.32 = 66px, +50% = 99px, -10% = 89px (todos 2026-09-30, mesmo dia — a rodada de 99px
ficou grande demais). Só o estado do TOPO muda, o rolado continua nos 50px de sempre.

2ª rodada de correção no mesmo dia (2026-09-30, 2 achados reais do Ricardo depois de ver ao
vivo): (1) a margem de segurança acima/abaixo da logo não mantinha a mesma PORCENTAGEM da altura
da própria barra entre os 2 estados — medido ao vivo: no rolado a barra fica com 86px de altura
de verdade (ditada pelo nav de categorias, não pela logo) com a logo (50px) centralizada
sobrando ~18px de cada lado, ou seja ~21% da altura da barra; o topo só herdava o `py-5` genérico
(20px) de sempre, que não foi pensado especificamente pra essa logo maior e dava uma margem
proporcionalmente MENOR (~16% da barra); (2) a logo virando mais LARGA no topo (proporção fixa da
arte — 89px de altura ≈ 158px de largura, contra ~89px de largura nos 50px do rolado) empurrava
nav/ícones (irmãos dela na `.ps-header-linha`, `justify-content:space-between`) pra mais longe no
topo e de volta pra perto ao rolar — nav/ícones NUNCA deveriam se mexer horizontalmente, só a
logo deveria mudar de tamanho.

Corrigido replicando a MESMA técnica que o bloco mobile/tablet-retrato logo abaixo já usa:
`position:absolute` na logo (sai do fluxo, não conta mais pra largura do flex) dentro de um
container com largura RESERVADA fixa (cabe a logo no tamanho MAIOR, sobra em branco no
rolado — é isso que trava nav/ícones no lugar) + `min-height` explícito na linha pro estado do
topo, calculado pra dar a MESMA ~21% de margem da altura da barra que o rolado já tem
naturalmente (89px de logo ÷ (1 - 2×0,21) ≈ 153px de barra, ~32px de margem de cada lado).
Consulta de mídia é o COMPLEMENTO exato da consulta mobile/tablet-retrato logo abaixo (nunca as
duas batem ao mesmo tempo) — desktop de verdade OU tablet em paisagem. */
@media (min-width: 640px) and (orientation: landscape), (min-width: 1025px) {
    /* 160px cabe a logo grande (600×337 ≈ 1,78:1) até uns 89px de altura com folga; no rolado
    (50px de altura ≈ 89px de largura) sobra espaço em branco à direita dela dentro da mesma
    caixa — é esse espaço reservado, sempre igual, que trava nav/ícones sem se mexerem. */
    #ps-header-principal .ps-header-linha > div:first-child { position: relative; min-width: 160px; }
    #ps-header-principal .ps-header-linha > div:first-child > a { position: absolute; left: 0; top: 50%; transform: translateY(-50%); }
    #ps-header-principal:not(.ps-header-rolado) .ps-logo-header { height: 89px !important; }
    #ps-header-principal:not(.ps-header-rolado) .ps-header-linha { min-height: 153px; }
}

/* Celular: logo no centro; lupa sai da direita e vai pro lado do menu (☰ 🔍 · LOGO · 👤 🛒).
   Só posicionamento por CSS — a marcação e os ids do header nativo não mudam.
   Tablet RETRATO usa o MESMO topo (2026-09-26, pedido do Ricardo: "o topo não tá igual como
   deveria, igual é no topo do celular") — mesma faixa 640-1024px/portrait do menu hambúrguer
   logo abaixo; união por vírgula (OR) em vez de duplicar as regras, pra nunca divergir. */
@media (max-width: 639px), (min-width: 640px) and (max-width: 1024px) and (orientation: portrait) {
    #ps-header-principal .ps-header-linha { position: relative; min-height: 64px; }
    #ps-header-principal .ps-header-linha > div:first-child > a { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); }
    /* 42px → 55px (2026-09-26, pedido do Ricardo: mais 30% em cima do que já tinha ficado em
    2026-09-25). Base do estado ROLADO (scale(1) ali embaixo) — crescer ela também estica o
    estado de cima na mesma proporção, sem precisar recalcular o scale de novo. */
    #ps-header-principal .ps-logo-header { height: 55px !important; }
    #ps-header-principal #ps-busca-abrir { position: absolute; top: 50%; left: calc(1rem + 44px); transform: translateY(-50%); }
    /* Logo do topo maior no celular (2026-09-25) — só o estado NÃO rolado; o nativo já encolhe
    pra scale(1) ao rolar (logo-scroll.js/app.css) e o pedido foi justamente manter esse
    tamanho menor como está, só aumentar o de cima. Nativo aplicava scale(1.1); 1.1 × 1.2 =
    1.32 (pedido de 2026-09-25, "20% maior"). Mantido intacto em 2026-09-26 — o aumento pedido
    dessa vez veio inteiro da altura BASE acima, não deste multiplicador. */
    #ps-header-principal:not(.ps-header-rolado) .ps-logo-header { transform: scale(1.32); }
    /* Barra do topo mais alta SÓ no estado não-rolado (2026-09-26, achado real: o logo cresceu
    (55px * scale 1.32 = ~73px de altura visível) mas a linha continuou no min-height:64px de
    sempre — como o logo é centralizado por position:absolute, ele passou a estourar a própria
    caixa por cima e por baixo, quase encostando no limite. `:not(.ps-header-rolado)` garante
    que o estado ROLADO (pedido explícito: "deve ficar do mesmo jeito que está") continua
    exatamente nos 64px de sempre — só essa regra, mais específica, muda o de cima. */
    #ps-header-principal:not(.ps-header-rolado) .ps-header-linha { min-height: 88px; }
}

/* Tablet RETRATO usa o mesmo menu do celular (2026-09-26, pedido do Ricardo: o nav de
categorias "esquerda" (várias palavras lado a lado) não tem largura suficiente num tablet em
pé — só faz sentido a partir de PAISAGEM, que tem a largura de um desktop pequeno. Faixa
640-1024px cobre os tablets reais em retrato (iPad mini/Air/Pro 11" etc.); acima de 1024px já
é a largura mínima de um iPad em paisagem, cai no padrão desktop de sempre — sem checar
orientação, só largura, porque nessa faixa a paisagem SEMPRE é mais larga que 1024px. */
@media (min-width: 640px) and (max-width: 1024px) and (orientation: portrait) {
    /* :not(#ps-menu-mobile) (2026-09-26, achado real) — o painel off-canvas do menu É um
    <nav id="ps-menu-mobile"> por dentro de #ps-header-principal (ver _menu-mobile.blade.php),
    então esta regra (pensada só pra esconder o nav de CATEGORIAS do desktop) também escondia o
    painel do menu sozinha, com especificidade MAIOR que a regra `#ps-menu-mobile{display:flex}`
    logo abaixo (ID+tag > só ID) — o hambúrguer abria (JS trocava a classe certinho), mas o
    painel continuava display:none, sem efeito visual nenhum. */
    #ps-header-principal nav:not(#ps-menu-mobile) { display: none !important; }
    #ps-header-principal #ps-menu-abrir { display: inline-flex !important; align-items: center; justify-content: center; }

    /* Painel off-canvas do menu — achado real (2026-09-26): o hambúrguer acima já abria/fechava
    certinho (JS troca a classe `.ps-menu-fechado` normalmente), mas o PAINEL em si
    (`#ps-menu-mobile`/backdrop) tem `sm:hidden` nativo (largura ≥640px = escondido, pensado só
    pra desktop, que nunca mostra o hambúrguer) — no tablet retrato o hambúrguer já aparece, mas
    o clique "abria" um painel que continuava `display:none`, sem efeito visual nenhum. Força
    de volta pro comportamento do celular; seguro incondicional porque o estado FECHADO já é só
    `transform: translateX(-100%)` (ver layout.blade.php), nunca dependeu de display. */
    #ps-menu-mobile { display: flex !important; }
    #ps-menu-mobile-backdrop:not(.hidden) { display: block !important; }

    /* Player de Stories — mesma faixa/raciocínio acima ("Menu do tablet retrato"). O layout
    nativo ligado a partir de `sm:` (640px) pressupõe uma tela larga o bastante pra caber os
    painéis de preview dos vídeos vizinhos DOS DOIS LADOS do vídeo principal — num tablet em
    pé (alto e estreito) isso fica espremido/desalinhado. Força de volta o layout cheio de
    tela do celular: vídeo ocupa a tela inteira, sem os painéis vizinhos. */
    #ps-story-caixa {
        height: 100% !important; width: 100% !important; aspect-ratio: auto !important; border-radius: 0 !important;
    }
    #ps-story-vizinho-anterior, #ps-story-vizinho-proximo { display: none !important; }

    /* Rodapé — mesma faixa/raciocínio acima (pedido do Ricardo: "o rodapé do tablet na vertical
    deve ser baseado no rodapé do mobile também"). O rodapé nativo inteiro (acordeão Sobre nós/
    Navegue por/Institucional/Contato + faixas soltas de Redes sociais/Pague com nas pontas) é
    todo gated por `sm:` (640px de largura) — a partir daí o desktop força um bloco combinado
    (Contato+Redes sociais lado a lado, sem acordeão) e esconde as faixas mobile. No tablet
    retrato isso mostrava o bloco desktop cedo demais, antes de sobrar largura de verdade pra
    ele. IDs novos só em `layout.blade.php` (arquivo isento do guardrail de paridade de tema —
    ver ThemeIdParityGuardTest, "header/rodapé são justamente o que cada tema reescreve"). JS
    (`rodape-accordion.js`) já é agnóstico de largura — só alterna `.hidden`, então não precisa
    mudar nada aqui além do CSS. */
    #ps-rodape-grid { grid-template-columns: 1fr !important; }
    #ps-rodape-redes-mobile, #ps-rodape-navegue-wrap, #ps-rodape-contato-wrap, #ps-rodape-pague-mobile { display: block !important; }
    #ps-rodape-desktop-extra { display: none !important; }
    /* A faixa de "Redes sociais"/"Pague com" em si usa `sm:flex-row sm:justify-between`
    NATIVO (não do tema) pra virar linha espaçada a partir de 640px — desfaz de volta pro
    empilhado centralizado do celular, mesmo raciocínio de tudo acima. */
    #ps-rodape-redes-mobile > .ps-container-largo, #ps-rodape-pague-mobile > .ps-container-largo {
        flex-direction: column !important; justify-content: center !important;
    }
    footer[data-ps-regiao="rodape"] [data-rodape-toggle] { pointer-events: auto !important; }
    footer[data-ps-regiao="rodape"] [data-rodape-chevron] { display: block !important; }
    footer[data-ps-regiao="rodape"] #ps-rodape-sobre.hidden,
    footer[data-ps-regiao="rodape"] #ps-rodape-institucional.hidden { display: none !important; }
}

/* Galeria da página de produto — tablet retrato (mesmo raciocínio do bloco acima: o layout
nativo liga `sm:flex-row` a partir de 640px, miniaturas numa coluna à ESQUERDA da foto
principal, pensado pra desktop/paisagem com largura de sobra) E celular DEITADO (2026-09-26,
pedido do Ricardo: "quando na horizontal o mobile, as fotos extras devem ficar igual as do
tablet, maiores, em linhas de 2") — `(orientation:landscape) and (max-height:500px)` pega
celular deitado por ALTURA (celular real deitado nunca passa de ~430px de altura; tablet
deitado nunca fica abaixo de ~600px), não largura — um celular grande deitado (ex. 844px) tem
largura parecida com tablet retrato, mas é a ALTURA curta que denuncia "é um celular de lado".
Bloco SEPARADO do de cima (não uma 3ª condição no OR daquele) porque as regras de
menu/cabeçalho/rodapé daquele bloco são só pra tablet retrato — não fazem sentido pra celular
deitado, que já tem espaço de sobra pro menu/header desktop de sempre. Mesmas declarações do
`.wc-produto-editorial ... @media (min-width:1024px)` mais abaixo (grid de 2 colunas, miniatura
quadrada grande via aspect-ratio, mix-blend-mode) — nunca a faixa 1024px+ inteira em si, que
também muda o grid EXTERNO foto/info pra lado a lado, sem espaço de sobra nesses 2 casos. */
@media (min-width: 640px) and (max-width: 1024px) and (orientation: portrait), (orientation: landscape) and (max-height: 500px) and (max-width: 1024px) {
    #ps-galeria-produto { flex-direction: column-reverse !important; }
    #ps-galeria-miniaturas {
        width: auto !important; flex-shrink: 1 !important; flex-direction: row !important;
        display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem !important; overflow: visible !important;
    }
    #ps-galeria-miniaturas [data-galeria-thumb] {
        width: auto !important; height: auto !important; aspect-ratio: 1; border-width: 0 !important; background: var(--wc-nevoa); cursor: zoom-in;
    }
    #ps-galeria-miniaturas [data-galeria-thumb][aria-current="true"] { display: none; }
    #ps-galeria-miniaturas [data-galeria-thumb] img { mix-blend-mode: multiply; }
    main:has(#ps-comprar-ancora) .aspect-square:has(#ps-galeria-atual) img { mix-blend-mode: multiply; }
}

/* Submenu de categorias (estilo_dropdown = horizontal: painel na largura toda, abaixo do header) */
#ps-header-principal nav .group > div:last-child:not(.relative) { border-top: 1px solid var(--wc-linha) !important; box-shadow: 0 18px 30px -18px rgba(0,0,0,.25) !important; border-radius: 0 !important; }
#ps-header-principal nav .group > div:last-child a { font-family: var(--wc-rotulo); font-weight: 700; font-size: .9rem !important; letter-spacing: .08em; border-radius: 0 !important; }
#ps-header-principal nav .group > div:last-child a:hover { background: var(--wc-tinta) !important; color: #fff !important; }
/* Dropdown que fechava no caminho do mouse: o painel é absolute no top:100% do HEADER, mas o
   item (.group) acabava ~30px antes (padding da linha + logo de 50px) — nessa faixa o mouse
   saía do .group e o painel sumia. Agora a linha não tem padding vertical, o nav e cada item
   ocupam a altura toda do header (encostam no painel) e o fechamento tem 180ms de tolerância. */
@media (min-width: 640px) {
    #ps-header-principal .ps-header-linha { padding-top: 0 !important; padding-bottom: 0 !important; min-height: 86px; align-items: stretch !important; }
    #ps-header-principal .ps-header-linha > * { display: flex; align-items: center; }
    #ps-header-principal .ps-header-linha > nav { align-items: stretch !important; }
    #ps-header-principal .ps-header-linha > nav > * { display: flex; align-items: center; padding-top: 0 !important; padding-bottom: 0 !important; }
    #ps-header-principal [data-nav-dropdown-painel] { transition: opacity .2s ease, visibility 0s linear .18s !important; }
    #ps-header-principal nav .group:hover [data-nav-dropdown-painel], #ps-header-principal nav .group:focus-within [data-nav-dropdown-painel] { transition-delay: 0s !important; }
}

/* ---------- Card de produto (home, categoria, busca, "compre também") ---------- */
[data-produto-card] > .relative > a > div { border-radius: 0 !important; border: 0 !important; background: var(--wc-nevoa) !important; box-shadow: none !important; }
[data-produto-card] > .relative > a img { mix-blend-mode: multiply; transition: transform .6s var(--wc-ease) !important; }
[data-produto-card]:hover > .relative > a img { transform: scale(1.06) !important; }
[data-produto-card] > [data-favoritar-produto] { background: transparent !important; box-shadow: none !important; color: var(--wc-tinta) !important; border-radius: 0 !important; }
[data-produto-card] [data-card-overlay-btn] {
    border-radius: 0 !important; background: var(--wc-tinta) !important; color: #fff !important;
    font-family: var(--wc-rotulo); font-weight: 700 !important; font-size: .82rem !important; letter-spacing: .12em; text-transform: uppercase;
    padding-top: .65rem !important; padding-bottom: .65rem !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
@media (max-width: 639px) { [data-produto-card] [data-card-overlay-btn] { font-size: .72rem !important; letter-spacing: .06em; padding-top: .5rem !important; padding-bottom: .5rem !important; } }
@media (min-width: 640px) {
    [data-produto-card] > .relative { overflow: hidden; }
    [data-produto-card] [data-card-overlay-btn] { transform: translateY(101%); transition: transform .35s var(--wc-ease), opacity .2s !important; }
    [data-produto-card]:hover [data-card-overlay-btn], [data-produto-card] [data-card-overlay-btn]:focus-visible { transform: none; }
}
[data-produto-card] > .relative > span { border-radius: 0 !important; font-family: var(--wc-rotulo); letter-spacing: .12em; text-transform: uppercase; }
[data-produto-card] > a > p:first-child { font-family: var(--wc-rotulo); font-weight: 700 !important; font-size: .95rem !important; line-height: 1.2; letter-spacing: .03em; text-transform: uppercase; color: var(--wc-tinta) !important; margin-top: .75rem !important; }
/* Achado real (2026-09-30, Ricardo): esta regra mirava em `p.text-base` genérico — o NOME do
produto (linha acima) e o PREÇO final do card usam essa mesma classe utilitária, então os 2
saíam idênticos (mesmo tamanho/peso), o preço nunca se destacava de verdade. `[data-preco-final]`
(marcador dedicado, ver `_produto-card.blade.php`) mira só o preço, agora maior que o nome —
hierarquia normal de card de e-commerce (preço > título). */
[data-produto-card] [data-preco-final] { font-family: var(--wc-rotulo); color: var(--wc-tinta) !important; font-weight: 800 !important; font-size: 1.3rem !important; }
/* Título do card "Compre também" nunca ficava em negrito de verdade (2026-09-30, achado real do
Ricardo testando ao vivo) — `compre-tambem.js` usa a classe utilitária `font-medium` (peso 500),
mas a fonte de corpo da loja inteira (Red Hat Display, `--wc-corpo`) só tem os arquivos de peso
400/700 hospedados (ver docblock em resources/css/app.css) — SEM um arquivo de peso 500 real, a
regra do CSS Fonts Module pra "500 pedido, mais próximo indisponível" casa com 400 (regular), não
com 700, então visualmente nunca mudava nada. Corrigido aqui, só neste tema (nunca no
compre-tambem.js compartilhado — outras lojas sem essa limitação de fonte já renderizavam
font-medium normalmente), forçando o peso 700 de verdade (arquivo real, existe). Seletor mira a
classe `line-clamp-2` (só o título tem essa classe dentro do card, único e estável — mais direto
que a estrutura `p:first-child` usada acima, que não bate aqui: neste card a imagem é irmã
ANTERIOR do título dentro do MESMO <a>, então o título nunca é o primeiro filho). */
[data-produto-card].ps-compre-tambem-card p.line-clamp-2 { font-weight: 700 !important; }
[data-produto-card] > a > p.line-through { color: var(--wc-cinza) !important; }
/* Achado real (2026-09-27, Ricardo testando ao vivo): mirar `p.text-sm` genérico dentro do card
pintava de azul QUALQUER parágrafo pequeno — inclusive o TÍTULO do card de "Compre também"
(compre-tambem.js usa `text-sm` pro nome do produto nesse card menor) e a nova linha de parcela
("até Nx sem juros", adicionada junto com esta correção). `[data-preco-pix]` é um atributo
dedicado só na linha do Pix (_produto-card.blade.php e compre-tambem.js) — nunca colide com
título nem com a linha de parcelamento, em nenhum card, Blade ou gerado por JS. */
[data-produto-card] [data-preco-pix] { color: var(--wc-azul) !important; font-weight: 600; }

/* kit (parcial nativo) */
.wc-kits .group.rounded-xl { border-radius: 0 !important; border-color: var(--wc-linha) !important; }
.wc-kits .group.rounded-xl .bg-emerald-600 { background: var(--wc-tinta) !important; border-radius: 0 !important; font-family: var(--wc-rotulo); letter-spacing: .1em; text-transform: uppercase; }
.wc-kits .group.rounded-xl button { border-radius: 0 !important; background: var(--wc-tinta) !important; color: #fff !important; font-family: var(--wc-rotulo); letter-spacing: .1em; text-transform: uppercase; }

/* ---------- Categoria / busca ---------- */
main:has(#ps-filtros-form) h1 { font-size: clamp(2.4rem, 6vw, 4rem) !important; }
#ps-filtros-abrir, #ps-ordenar { border-radius: 0 !important; border-color: var(--wc-tinta) !important; font-family: var(--wc-rotulo); font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
#ps-filtros-painel { border-radius: 0 !important; }
#ps-filtros-painel h2, #ps-filtros-painel h3, #ps-filtros-painel legend { font-family: var(--wc-rotulo) !important; font-weight: 700 !important; letter-spacing: .12em; text-transform: uppercase; }
#ps-filtros-form button, #ps-filtros-form input { border-radius: 0 !important; }
#ps-filtros-form button[type="submit"] { background: var(--wc-tinta) !important; color: #fff !important; border-color: var(--wc-tinta) !important; font-family: var(--wc-rotulo); letter-spacing: .1em; text-transform: uppercase; }

/* ---------- Produto (PDP nativa, só acabamento) ---------- */
main:has(#ps-comprar-ancora) h1 { font-size: clamp(2.2rem, 5vw, 3.4rem) !important; }
[data-galeria-thumb] { border-radius: 0 !important; }
/* Achado no teste: com 5+ fotos a fileira de miniaturas (overflow-x-auto) empurrava a coluna da
   galeria pra 440px no celular — item de grid sem min-width:0 cresce com o conteúdo. Vale
   corrigir no nativo também. */
main:has(#ps-comprar-ancora) .grid > *, main:has(#ps-comprar-ancora) .flex > * { min-width: 0; }
main:has(#ps-comprar-ancora) .aspect-square, main:has(#ps-comprar-ancora) [data-galeria-thumb] { background: var(--wc-nevoa); }
#ps-comprar-ancora [data-adicionar-carrinho], #ps-barra-fixa-mobile [data-adicionar-carrinho] {
    border-radius: 0 !important; background: var(--wc-tinta) !important; color: #fff !important;
    font-family: var(--wc-rotulo); font-weight: 700 !important; letter-spacing: .14em; text-transform: uppercase; min-height: 52px;
}
#ps-comprar-ancora [data-adicionar-carrinho] { flex: 1 1 auto; justify-content: center; }
#ps-comprar-ancora [data-quantidade], #ps-preco-cep input, #ps-preco-cep button { border-radius: 0 !important; }
/* Avise-me da PDP (2026-09-27, pedido do Ricardo: "fica pequeno e fora de enquadramento, sem
estilo") — view nativa compartilhada (`produto.blade.php`, formulário de avise-me tanto do
produto simples quanto da variação esgotada), nunca editada; só reestilizada aqui, escopada ao
MESMO id que o próprio Core já usa como âncora do bloco de compra (`#ps-comprar-ancora`) — vale
pros 2 formulários (produto simples/variação) sem duplicar regra, e não muda NADA fora da
Óculos Locs. `max-width:none` é o que resolve "aproveite melhor o espaço" — o nativo trava em
`max-w-xs` (320px), bem menor que a coluna de compra inteira. */
#ps-comprar-ancora [data-avise-me-form] {
    max-width: none; margin-top: 1.5rem; padding: 1.5rem;
    border: 1.5px solid var(--wc-tinta) !important; border-radius: 0 !important;
    background: var(--wc-nevoa);
}
#ps-comprar-ancora [data-avise-me-form] > p:first-child {
    margin: 0 0 1.1rem; font-family: var(--wc-corpo); font-weight: 600; font-size: .95rem;
    line-height: 1.4; color: var(--wc-tinta);
}
#ps-comprar-ancora [data-avise-me-form] input {
    display: block; width: 100%; height: 48px; margin-top: .75rem !important;
    border: 1.5px solid var(--wc-linha) !important; border-radius: 0 !important;
    padding: 0 1rem; font-size: .95rem; background: var(--wc-papel);
    transition: border-color .2s;
}
#ps-comprar-ancora [data-avise-me-form] input:focus { outline: none; border-color: var(--wc-tinta) !important; }
#ps-comprar-ancora [data-avise-me-form] button[type="submit"] {
    display: flex; align-items: center; justify-content: center;
    width: 100%; min-height: 52px; margin-top: 1.1rem !important;
    border: 1.5px solid var(--wc-tinta) !important; border-radius: 0 !important;
    background: var(--wc-tinta) !important; color: #fff !important;
    font-family: var(--wc-rotulo); font-weight: 700; font-size: .85rem; letter-spacing: .14em; text-transform: uppercase;
    transition: background .2s, color .2s;
}
#ps-comprar-ancora [data-avise-me-form] button[type="submit"]:hover { background: #fff !important; color: var(--wc-tinta) !important; }
#ps-comprar-ancora [data-avise-me-form] [data-avise-me-mensagem] { margin-top: .75rem !important; font-family: var(--wc-corpo); font-size: .85rem; }
#ps-preco-cep { border-radius: 0 !important; border-color: var(--wc-linha) !important; }
[data-preco-atual] { font-family: var(--wc-rotulo); }
main:has(#ps-comprar-ancora) section > h2, #ps-compre-tambem h2 { font-family: var(--wc-display) !important; font-weight: 800 !important; text-transform: uppercase; font-size: clamp(1.6rem, 3.5vw, 2.3rem) !important; letter-spacing: .01em; }
[data-avaliacoes-secao] h2 { font-family: var(--wc-display) !important; text-transform: uppercase; }
#ps-avaliar-abrir { border-radius: 0 !important; background: var(--wc-tinta) !important; font-family: var(--wc-rotulo); letter-spacing: .1em; text-transform: uppercase; }
#ps-compre-tambem-grid .ps-compre-tambem-card { border-radius: 0 !important; }

/* ---------- Carrinho lateral ---------- */
/* Gaveta 420px, cabeçalho enxuto, itens em linhas (sem caixas), módulo de frete grátis no
   mesmo idioma da loja: névoa + barra preta enquanto falta; azul (fundo, texto e barra) quando
   ganha. Selos de confiança ocupam o fim da área de itens (JS). Só CSS nos ids/classes do Core. */
#ps-carrinho-gaveta { border-radius: 0 !important; max-width: 420px !important; box-shadow: -24px 0 60px rgba(0,0,0,.28) !important; }
#ps-carrinho-gaveta > div:first-child { padding: .9rem 1.25rem !important; border-color: var(--wc-linha) !important; }
#ps-carrinho-gaveta h2 { font-family: var(--wc-display); font-weight: 800 !important; font-size: 1.7rem !important; line-height: 1; text-transform: uppercase; letter-spacing: .01em; }
#ps-carrinho-fechar { border-radius: 0 !important; width: 40px !important; height: 40px !important; border: 1.5px solid var(--wc-tinta); color: var(--wc-tinta) !important; }
#ps-carrinho-fechar:hover { background: var(--wc-tinta) !important; color: #fff !important; }
#ps-carrinho-gaveta > div.flex-1 { display: flex; flex-direction: column; padding: 0 1.25rem !important; }
#ps-carrinho-itens { margin: 0 !important; }
#ps-carrinho-itens > * + * { margin-top: 0 !important; }
#ps-carrinho-itens .ps-carrinho-item {
    position: relative; align-items: flex-start !important; gap: .9rem !important; padding: 1rem 2.25rem 1rem 0 !important; border: 0 !important; border-bottom: 1px solid var(--wc-linha) !important; border-radius: 0 !important; box-shadow: none !important; background: transparent !important;
}
#ps-carrinho-itens .ps-carrinho-item > div:first-child { width: 84px !important; height: 84px !important; border-radius: 0 !important; background: var(--wc-nevoa) !important; }
#ps-carrinho-itens .ps-carrinho-item img { border-radius: 0 !important; background: var(--wc-nevoa); mix-blend-mode: multiply; object-fit: contain !important; }
#ps-carrinho-itens .ps-carrinho-item p.text-sm { white-space: normal !important; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; font-family: var(--wc-rotulo); font-weight: 700 !important; font-size: .95rem !important; line-height: 1.2; letter-spacing: .02em; text-transform: uppercase; }
#ps-carrinho-itens .ps-carrinho-item p.text-\[11px\] { font-size: .7rem !important; letter-spacing: .04em; }
#ps-carrinho-itens .ps-carrinho-item .rounded-full.border { border-radius: 0 !important; border: 1.5px solid var(--wc-tinta) !important; }
#ps-carrinho-itens .ps-carrinho-item [data-qtd-menos], #ps-carrinho-itens .ps-carrinho-item [data-qtd-mais] { width: 32px !important; height: 32px !important; font-size: 1rem !important; color: var(--wc-tinta) !important; }
#ps-carrinho-itens .ps-carrinho-item [data-qtd-menos]:hover, #ps-carrinho-itens .ps-carrinho-item [data-qtd-mais]:hover { background: var(--wc-tinta) !important; color: #fff !important; }
#ps-carrinho-itens .ps-carrinho-item .tabular-nums { width: 30px !important; font-family: var(--wc-rotulo); font-weight: 700 !important; font-size: .9rem !important; }
#ps-carrinho-itens .ps-carrinho-item p.text-xs { margin-top: .55rem !important; font-size: .78rem !important; }
#ps-carrinho-itens .ps-carrinho-item p.text-xs b { font-family: var(--wc-display); font-size: 1.25rem; font-weight: 800; color: var(--wc-tinta) !important; margin-left: .15rem; }
#ps-carrinho-itens .ps-carrinho-item [data-remover-index] { position: absolute; top: .8rem; right: 0; width: 32px !important; height: 32px !important; border-radius: 0 !important; }
#ps-carrinho-itens .ps-carrinho-item [data-remover-index] svg { width: 18px; height: 18px; }
#ps-carrinho-vazio span.rounded-full { border-radius: 0 !important; background: var(--wc-nevoa) !important; }
/* selos no fim da área de itens (preenchem o espaço livre com algo útil) */
#ps-carrinho-gaveta .wc-carrinho-selos { margin-top: auto; padding: 1.25rem 0 1rem; display: grid; gap: .5rem; list-style: none; margin-bottom: 0; }
#ps-carrinho-gaveta .wc-carrinho-selos li { display: flex; align-items: center; gap: .6rem; font-family: var(--wc-rotulo); font-weight: 500; font-size: .88rem; color: var(--wc-cinza); }
#ps-carrinho-gaveta .wc-carrinho-selos li::before {
    content: ''; width: 18px; height: 18px; flex: none; background: var(--wc-azul);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.5 16.2 5.3 12l-1.4 1.4 5.6 5.6 11-11-1.4-1.4z'/%3E%3C/svg%3E") center / contain no-repeat;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.5 16.2 5.3 12l-1.4 1.4 5.6 5.6 11-11-1.4-1.4z'/%3E%3C/svg%3E") center / contain no-repeat;
}
#ps-carrinho-gaveta:has(#ps-carrinho-vazio:not(.hidden)) .wc-carrinho-selos { display: none; }
/* rodapé da gaveta */
#ps-carrinho-gaveta > div:last-child { padding: 1rem 1.25rem 1.1rem !important; border-color: var(--wc-linha) !important; background: #fff; box-shadow: 0 -10px 24px -18px rgba(0,0,0,.25); }
/* frete grátis */
#ps-frete-gratis-alerta { margin-bottom: .9rem !important; padding: .75rem .9rem .8rem !important; border-radius: 0 !important; border: 0 !important; border-left: 4px solid var(--wc-tinta) !important; background: var(--wc-nevoa) !important; transition: background .35s, border-color .35s !important; }
#ps-frete-gratis-texto { font-family: var(--wc-rotulo); font-size: .88rem !important; font-weight: 500 !important; letter-spacing: .02em; gap: .5rem !important; }
#ps-frete-gratis-texto span { color: var(--wc-tinta) !important; }
#ps-frete-gratis-texto b { font-weight: 700; }
#ps-frete-gratis-texto svg { width: 18px !important; height: 18px !important; color: var(--wc-tinta) !important; }
#ps-frete-gratis-alerta > div { height: 6px !important; margin-top: .6rem !important; border-radius: 0 !important; background: #dcdcd8 !important; }
#ps-frete-gratis-barra { border-radius: 0 !important; background-color: var(--wc-tinta) !important; position: relative; }
/* ganhou: tudo em azul da marca */
#ps-frete-gratis-alerta.bg-emerald-50 { background: rgba(29,58,224,.08) !important; border-left-color: var(--wc-azul) !important; }
#ps-frete-gratis-alerta.bg-emerald-50 #ps-frete-gratis-texto span { color: var(--wc-azul) !important; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; font-size: .8rem; }
#ps-frete-gratis-alerta.bg-emerald-50 #ps-frete-gratis-texto svg { color: #fff !important; background: var(--wc-azul); padding: 3px; width: 20px !important; height: 20px !important; }
#ps-frete-gratis-alerta.bg-emerald-50 > div { background: rgba(29,58,224,.18) !important; }
#ps-frete-gratis-alerta.bg-emerald-50 #ps-frete-gratis-barra { background-color: var(--wc-azul) !important; }
/* e-mail, total e finalizar */
#ps-carrinho-gaveta label[for="ps-carrinho-email"] { font-family: var(--wc-rotulo); font-weight: 700; font-size: .7rem !important; letter-spacing: .16em; text-transform: uppercase; color: var(--wc-tinta) !important; }
#ps-carrinho-email { border-radius: 0 !important; min-height: 44px; border: 1.5px solid var(--wc-linha) !important; font-size: .95rem !important; }
#ps-carrinho-email:focus { border-color: var(--wc-tinta) !important; box-shadow: 0 0 0 3px rgba(29,58,224,.15) !important; }
#ps-carrinho-gaveta div:has(> #ps-carrinho-total) { margin-top: .85rem !important; align-items: baseline !important; }
#ps-carrinho-gaveta div:has(> #ps-carrinho-total) > span:first-child { font-family: var(--wc-rotulo); font-weight: 700; font-size: .75rem; letter-spacing: .18em; text-transform: uppercase; color: var(--wc-tinta) !important; }
#ps-carrinho-total { font-family: var(--wc-display); font-weight: 800 !important; font-size: 2rem !important; line-height: 1; }
#ps-carrinho-finalizar, #ps-carrinho-gaveta #ps-carrinho-continuar { border-radius: 0 !important; font-family: var(--wc-rotulo); font-weight: 700 !important; letter-spacing: .14em; text-transform: uppercase; }
#ps-carrinho-finalizar { background: var(--wc-tinta) !important; color: #fff !important; min-height: 56px; margin-top: .8rem !important; transition: background .25s !important; }
#ps-carrinho-finalizar:hover { background: var(--wc-azul) !important; opacity: 1 !important; }

/* ---------- Checkout (ids intocados; só aparência) ---------- */
main:has(#ps-checkout-form) h1 { font-size: clamp(2rem, 4.5vw, 3rem) !important; }
#ps-checkout-form input, #ps-checkout-form select, #ck-cupom, #ck-cupom-aplicar { border-radius: 0 !important; }
#ps-checkout-form input:focus, #ps-checkout-form select:focus { border-color: var(--wc-tinta) !important; box-shadow: 0 0 0 1px var(--wc-tinta) !important; outline: 0; }
#ps-checkout-form h2, #ps-checkout-form h3 { font-family: var(--wc-rotulo) !important; font-weight: 700 !important; letter-spacing: .1em; text-transform: uppercase; }
#ck-etapa-dados, #ck-etapa-entrega, #ps-checkout-form .rounded-xl, #ps-checkout-form .rounded-lg { border-radius: 0 !important; }
#ck-finalizar { border-radius: 0 !important; background: var(--wc-tinta) !important; color: #fff !important; font-family: var(--wc-rotulo); font-weight: 700 !important; letter-spacing: .14em; text-transform: uppercase; min-height: 54px; }
#ck-frete-opcoes .ps-checkout-frete-opcao { border-radius: 0 !important; }
#ck-frete-opcoes .ps-checkout-frete-opcao:has(input:checked) { border-color: var(--wc-tinta) !important; box-shadow: inset 0 0 0 1px var(--wc-tinta); }
#ck-total { font-family: var(--wc-rotulo); font-weight: 700; }

/* ---------- Rodapé ---------- */
footer[data-ps-regiao="rodape"] { background: var(--wc-tinta) !important; border-top: 0 !important; }
footer[data-ps-regiao="rodape"] h2, footer[data-ps-regiao="rodape"] h3 { font-family: var(--wc-rotulo) !important; font-weight: 700 !important; letter-spacing: .14em; color: #fff !important; }
footer[data-ps-regiao="rodape"] #ps-newsletter-form input, footer[data-ps-regiao="rodape"] #ps-newsletter-form button { border-radius: 0 !important; }
footer[data-ps-regiao="rodape"] #ps-newsletter-form button { background: #fff !important; color: var(--wc-tinta) !important; font-family: var(--wc-rotulo); font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }

/* ==========================================================================
   HOME
   ========================================================================== */
body:has(#wc-home) main { padding-top: 0 !important; }
#wc-home { color: var(--wc-tinta); }
.wc-sangria { width: 100vw; margin-left: calc(50% - 50vw); }
/* Páginas de conteúdo em modo avançado (2026-09-30, pedido do Ricardo: as 6 páginas institucionais
importadas da Óculos Locs ficavam "boxed" comparado a Sobre nós, que usa a mesma sangria acima —
mesmo tratamento de `body:has(#wc-home)`, generalizado pra QUALQUER página de conteúdo avançado
desta loja via a classe genérica `ps-conteudo-avancado` (ver storefront/pagina.blade.php), não só
Sobre nós. O hero/rodapé escuro de cada página já stretcha via `width:100vw` no próprio <style>
colado — isto aqui só remove o respiro vertical do <main> que sobraria acima/abaixo, igual já
acontece na home. */
body:has(.ps-conteudo-avancado) main { padding-top: 0 !important; padding-bottom: 0 !important; }
.wc-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.wc-centro { text-align: center; }

.wc-sobretitulo { margin: 0; font-family: var(--wc-rotulo); font-weight: 700; font-size: .8rem; letter-spacing: .2em; text-transform: uppercase; }
.wc-titulo { margin: 0; font-family: var(--wc-display); font-weight: 800; text-transform: uppercase; line-height: .92; letter-spacing: .01em; font-size: clamp(2.3rem, 6vw, 4rem); }
/* Título do carrossel de Stories, nativo (2026-09-25) — o tema nunca tinha regra nenhuma pra
essa seção, então caía no default nativo (20px/peso 400/centralizado) totalmente fora do padrão
do resto da página. Mesmo tratamento de .wc-titulo (a "O que nossos clientes dizem" usa o
mesmo), só sem centralizar — todo outro título grande do tema é alinhado à esquerda. */
.ps-stories-titulo { font-family: var(--wc-display); font-weight: 800; text-transform: uppercase; line-height: .92; letter-spacing: .01em; font-size: clamp(2.3rem, 6vw, 4rem); text-align: left; color: var(--wc-tinta); }
.wc-btn {
    display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: .8rem 1.8rem;
    font-family: var(--wc-rotulo); font-weight: 700; font-size: .85rem; letter-spacing: .16em; text-transform: uppercase; text-decoration: none;
    border: 1.5px solid currentColor; transition: background .25s, color .25s, border-color .25s;
}
.wc-btn-claro { background: #fff; color: var(--wc-tinta); border-color: #fff; }
.wc-btn-claro:hover { background: transparent; color: #fff; }
.wc-btn-escuro { background: var(--wc-tinta); color: #fff; border-color: var(--wc-tinta); }
.wc-btn-escuro:hover { background: #fff; color: var(--wc-tinta); }
.wc-btn-contorno { background: transparent; color: var(--wc-tinta); }
.wc-btn-contorno:hover { background: var(--wc-tinta); color: #fff; border-color: var(--wc-tinta); }

/* herói */
.wc-hero { position: relative; background: var(--wc-tinta); }
/* width:100% explícito (2026-09-26, achado real: iPhone deitado — banner "excedia a tela").
Sem isso, `width` fica `auto`; quando `min-height` (360px) vence de `max-height` (curto em
paisagem baixa, ex. celular deitado: `100svh-110px` ~280px), o navegador usa o `aspect-ratio`
pra DERIVAR a largura a partir dessa altura — 360px × (1580/500) ≈ 1138px, muito além da tela.
Com `width` explícito, o cálculo vira o normal (altura derivada da largura), nunca o contrário. */
.wc-hero-visor { position: relative; overflow: hidden; width: 100%; max-height: calc(100svh - 110px); min-height: 360px; }
.wc-hero-trilho { display: flex; height: 100%; transition: transform .8s var(--wc-ease); }
.wc-hero-slide { position: relative; flex: 0 0 100%; height: 100%; overflow: hidden; }
.wc-hero-link { position: absolute; inset: 0; z-index: 2; }
.wc-hero-img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* Opt-in (2026-09-25, campo "Efeito de zoom na foto do banner", grupo Herói) — desligado por
padrão a pedido do Ricardo ("afastando", a imagem assentando de 106% pra 100% dava uma
sensação de câmera recuando que ele não queria); a classe .wc-banner-zoom só entra quando o
lojista liga o campo (ver _wc-assets.blade.php). */
.wc-js.wc-banner-zoom .wc-hero-slide.is-ativo .wc-hero-img { animation: wc-zoom 8s ease-out both; }
.wc-hero-texto { position: absolute; inset: auto 0 0 0; z-index: 3; padding: 2rem 1rem 3.75rem; background: linear-gradient(to top, rgba(0,0,0,.7), transparent); color: #fff; }
@media (min-width: 640px) { .wc-hero-texto { padding: 4rem 3rem 4.5rem; } }
.wc-hero-titulo { margin: 0; font-family: var(--wc-display); font-weight: 800; text-transform: uppercase; font-size: clamp(2.8rem, 8vw, 6.5rem); line-height: .88; max-width: 14ch; }
.wc-hero-sub { margin: .75rem 0 0; max-width: 36rem; font-size: 1.05rem; opacity: .9; }
.wc-hero-texto .wc-btn { margin-top: 1.25rem; }
/* Discreta e sempre visível (2026-09-25, pedido do Ricardo) — antes só aparecia no :hover do
desktop e ficava totalmente escondida no toque (`@media (hover:none){display:none}`), então o
celular não tinha NENHUMA seta, só os pontos/arrastar. Agora a transparência do próprio fundo
(rgba) já entrega o efeito "discreto", sem precisar esconder e revelar. */
.wc-hero-seta { position: absolute; top: 50%; z-index: 4; width: 44px; height: 44px; margin-top: -22px; display: grid; place-items: center; background: rgba(255,255,255,.5); color: var(--wc-tinta); border: 0; transition: background .25s, transform .15s; }
.wc-hero-seta:hover, .wc-hero-seta:focus-visible { background: rgba(255,255,255,.85); }
.wc-hero-seta:active { transform: scale(.94); }
.wc-hero-seta svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; }
.wc-hero-seta-esq { left: 1rem; }
.wc-hero-seta-dir { right: 1rem; }
/* +30% de transparência no mobile/tablet retrato (2026-09-26, pedido do Ricardo) — mesma faixa
do menu/galeria/dica de rolar acima (banner ocupa a tela toda aqui); desktop/tablet paisagem
mantém os .5 de sempre, "já aprovado" (comentário acima). .5 → .2 de opacidade do fundo. */
@media (max-width: 639px), (min-width: 640px) and (max-width: 1024px) and (orientation: portrait) {
    .wc-hero-seta { background: rgba(255,255,255,.2); }
}
/* Fora do .wc-hero-visor de propósito (2026-09-25, achado real: nem todo slide tem
.wc-hero-texto — só quando `titulo` está preenchido — então o gradiente que dava contraste
pros pontos brancos simplesmente não existe em slide "arte pronta"; em cima de foto clara os
pontos ficavam invisíveis). Barra própria, branca, abaixo da imagem — nunca depende do
conteúdo/cor do slide, e a borda superior já separa visualmente da imagem sem precisar de
outra margem extra antes da régua de valor. */
/* #ps-banner-dots.wc-hero-dots (não só .wc-hero-dots): precisa bater a especificidade da
regra `#ps-hero-secao > div { aspect-ratio: ... }` do critical CSS estático (gerado em cima da
estrutura NATIVA, onde o div do banner é filho direto de #ps-hero-secao) — como os dots
também viraram filho direto da section, essa regra genérica passou a combinar com eles
também, esticando a barra pra virar um retângulo 4:3 (achado real, 2026-09-25). */
#ps-banner-dots.wc-hero-dots { aspect-ratio: auto; }
.wc-hero-dots { position: static; display: flex; justify-content: center; align-items: center; gap: .3rem; padding: .65rem 0; background: var(--wc-papel); border-bottom: 1px solid var(--wc-linha); }
.wc-hero-dots button { width: 40px; height: 28px; display: grid; place-items: center; background: none; border: 0; padding: 0; cursor: pointer; }
.wc-hero-dots button span { display: block; width: 22px; height: 3px; background: var(--wc-linha); transition: background .3s; }
.wc-hero-dots button span.bg-white { background: var(--wc-tinta); }
.wc-hero-vazio { background: var(--wc-tinta); color: #fff; padding: 6rem 1rem 5rem; }
.wc-hero-vazio-miolo { max-width: 72rem; margin: 0 auto; display: grid; gap: 1.25rem; justify-items: start; }

/* Dica de rolar sobre o banner (2026-09-26, pedido do Ricardo) — círculo escuro com seta, pra
ter contraste sobre um banner claro; `fixed` (não `absolute` dentro do herói) pra acompanhar o
scroll até o JS escondê-la, em vez de já sumir sozinha no instante em que o topo sai da tela.
Só existe onde o banner ocupa a tela inteira: mesma condição de quando a proporção vertical
está ativa (ver `<style>` inline em home.blade.php) — escondida em paisagem/desktop ≥640px, que
já mostra conteúdo abaixo do banner sem precisar de dica. Mostrar/esconder por scroll (só no
topo) e o clique que rola até o fim da section são só JS (locs-westcoast.js), a classe
`is-escondida` aqui embaixo é o único gancho. */
.wc-hero-scroll-dica {
    position: fixed; left: 1rem; bottom: 1.25rem; z-index: 20;
    width: 44px; height: 44px; display: grid; place-items: center; border-radius: 999px;
    background: rgba(10,14,26,.62); color: #fff; border: 0; cursor: pointer;
    opacity: 1; transition: opacity .25s ease, transform .2s ease;
    animation: wc-hero-scroll-dica-flutuar 1.8s ease-in-out infinite;
}
.wc-hero-scroll-dica svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wc-hero-scroll-dica:active { transform: scale(.92); }
.wc-hero-scroll-dica.is-escondida { opacity: 0; pointer-events: none; }
@keyframes wc-hero-scroll-dica-flutuar { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(5px); } }
@media (prefers-reduced-motion: reduce) { .wc-hero-scroll-dica { animation: none; } }
@media (min-width: 640px) and (orientation: landscape) { .wc-hero-scroll-dica { display: none !important; } }

/* benefícios */
.wc-beneficios { display: grid; grid-template-columns: 1fr; border-bottom: 1px solid var(--wc-linha); }
@media (min-width: 640px) { .wc-beneficios { grid-template-columns: repeat(var(--wc-n-beneficios, 4), minmax(0, 1fr)); } }
.wc-beneficio { align-items: center; justify-content: center; gap: .85rem; padding: 1.15rem .75rem; }
@media (min-width: 640px) { .wc-beneficio + .wc-beneficio { border-left: 1px solid var(--wc-linha); } }
.wc-beneficio-icone svg { width: 1.75rem; height: 1.75rem; fill: none; stroke: var(--wc-tinta); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; display: block; }
.wc-beneficio-texto { display: grid; line-height: 1.25; }
.wc-beneficio-texto strong { font-family: var(--wc-rotulo); font-weight: 700; font-size: .85rem; letter-spacing: .12em; text-transform: uppercase; }
.wc-beneficio-texto span { font-size: .85rem; color: var(--wc-cinza); }

/* seções */
.wc-secao { margin-top: 3.5rem; }
@media (min-width: 640px) { .wc-secao { margin-top: 5rem; } }
.wc-secao-topo { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1rem 2rem; margin-bottom: 1.5rem; }
.wc-vazio { margin: 3rem 0; text-align: center; color: var(--wc-cinza); }

/* abas da vitrine */
.wc-abas { display: flex; gap: 1.5rem; overflow-x: auto; scrollbar-width: none; max-width: 100%; }
.wc-abas::-webkit-scrollbar { display: none; }
.wc-aba { position: relative; flex: none; background: none; border: 0; padding: .6rem 0; cursor: pointer; font-family: var(--wc-rotulo); font-weight: 700; font-size: .95rem; letter-spacing: .12em; text-transform: uppercase; color: var(--wc-cinza); transition: color .25s; }
.wc-aba::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--wc-tinta); transform: scaleX(0); transform-origin: left; transition: transform .35s var(--wc-ease); }
.wc-aba:hover, .wc-aba[aria-selected="true"] { color: var(--wc-tinta); }
.wc-aba[aria-selected="true"]::after { transform: scaleX(1); }
.wc-painel-titulo { margin: -1rem 0 1rem; font-family: var(--wc-rotulo); font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--wc-cinza); }
.wc-js .wc-painel:not([hidden]) { animation: wc-surgir .45s var(--wc-ease) both; }

.wc-trilho-corpo { position: relative; }
.wc-trilho-visor { overflow: hidden; touch-action: pan-y; cursor: grab; user-select: none; -webkit-user-select: none; }
.wc-trilho-visor.cursor-grabbing { cursor: grabbing; }
.wc-trilho-faixa { display: flex; gap: .75rem; will-change: transform; }
@media (min-width: 640px) { .wc-trilho-faixa { gap: 1rem; } }
.wc-trilho-item { flex: 0 0 calc((100% - .75rem) / 2); min-width: 0; }
@media (min-width: 640px) { .wc-trilho-item { flex-basis: calc((100% - 2rem) / 3); } }
@media (min-width: 1024px) { .wc-trilho-item { flex-basis: calc((100% - 3rem) / 4); } }
.wc-trilho-seta { display: none; position: absolute; top: 36%; z-index: 4; width: 44px; height: 44px; place-items: center; background: #fff; color: var(--wc-tinta); border: 1px solid var(--wc-linha); cursor: pointer; transition: background .25s, color .25s, opacity .25s; }
.wc-trilho-seta:hover { background: var(--wc-tinta); color: #fff; border-color: var(--wc-tinta); }
.wc-trilho-seta[disabled] { opacity: 0; pointer-events: none; }
.wc-trilho-seta svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; }
.wc-trilho-seta-esq { left: -22px; }
.wc-trilho-seta-dir { right: -22px; }
@media (min-width: 1024px) { .wc-js .wc-trilho-seta { display: grid; } }
.wc-trilho-rodape { display: flex; flex-direction: column; align-items: center; gap: 1.25rem; margin-top: 1.25rem; }
.wc-trilho-dots { display: flex; justify-content: center; gap: .1rem; }
.wc-trilho-dots .ps-carrossel-dot { width: 22px !important; height: 3px !important; border-radius: 0 !important; background: var(--wc-linha) !important; }
.wc-trilho-dots .ps-carrossel-dot.bg-\[var\(--loja-cor-primaria\)\] { background: var(--wc-tinta) !important; }

/* grade (modo grade + kits) */
.wc-grade { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.75rem .75rem; }
@media (min-width: 640px) { .wc-grade { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2.25rem 1rem; } }
@media (min-width: 1024px) { .wc-grade { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
/* Bloco de contagem + "Ver todos" ao lado direito do título "Todos os modelos" (2026-09-26).
Desktop: lado a lado. Mobile: empilhado (contagem já força width:100% própria, ver-todos flui
pra linha de baixo, largura cheia — 2 elementos de mesma hierarquia visual, nunca um menor que
o outro). */
.wc-todos-topo-direita { display: flex; align-items: center; gap: 1.1rem; flex-wrap: wrap; }
@media (max-width: 639px) { .wc-todos-topo-direita { width: 100%; } }
.wc-contagem { margin: 0; color: var(--wc-cinza); font-size: .95rem; }
@media (max-width: 639px) { .wc-contagem { width: 100%; font-size: .85rem; } }

.wc-ver-todos-link {
    display: inline-flex; align-items: center; justify-content: center; gap: .4rem;
    min-height: 44px; padding: 0 1.15rem; white-space: nowrap;
    font-family: var(--wc-rotulo); font-weight: 700; font-size: .8rem; letter-spacing: .12em; text-transform: uppercase;
    color: var(--wc-tinta); text-decoration: none; border: 1.5px solid var(--wc-tinta);
    transition: background .2s, color .2s;
}
.wc-ver-todos-link:hover { background: var(--wc-tinta); color: #fff; }
.wc-ver-todos-link svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: transform .2s var(--wc-ease); }
.wc-ver-todos-link:hover svg { transform: translateX(3px); }
@media (max-width: 639px) { .wc-ver-todos-link { width: 100%; } }

/* Paginação "Anterior/Próximo + números" (2026-09-26, redesign — layout anterior usava só o
Tailwind padrão do framework, "muito genérico": cinza, sombra, cantos arredondados, sem nada do
vocabulário visual do tema). Reaproveita a view NATIVA/compartilhada
(`resources/views/vendor/pagination/tailwind.blade.php`, também usada em categoria/busca —
nunca editar aquele arquivo, só reestilizar por CSS aqui) — a mudança é puramente visual, os
hrefs/estados continuam os mesmos.

Escopo (2026-09-27, generalizado): `nav[role="navigation"]` — o atributo que a própria view
nativa já coloca no `<nav>` — em vez de depender do wrapper `.wc-paginacao`/`#wc-home` que só
existe na home. `locs-westcoast.css`/`.js` já carregam em TODA página da loja (o header
"empilhado" do tema inclui `_wc-assets` no layout compartilhado, não só na home), então esse
escopo sozinho já cobre home/categoria/busca/qualquer página futura com o mesmo visual, sem
duplicar regra por página — pedido explícito do Ricardo (2026-09-27): "mesmo estilo" na
paginação da categoria.

Estrutura relevante da view nativa (2 blocos dentro de <nav>):
  1º filho = grupo MOBILE (`sm:hidden`): só texto "Anterior/Próximo", SEM número de página.
  2º filho = grupo "desktop" (`hidden sm:flex`): contador (escondido abaixo) + grupo de botões
             (setas + números). Forçado a aparecer em QUALQUER largura aqui embaixo — é o único
             jeito de ter número de página visível no mobile também, sem duplicar/reescrever a
             view. Cada "botão" visual é ou um <a> direto (link ativo) ou um <span> envolvendo
             outro <span> (seta desabilitada, "...", página atual) — as regras abaixo cobrem os
             2 formatos com a mesma aparência final. */
/* Feedback visual enquanto a página nova carrega via fetch (2026-09-27, só na home) — evita a
sensação de "clique não fez nada" no intervalo entre o clique e a troca de conteúdo. */
#wc-todos-secao.wc-secao-carregando { opacity: .45; pointer-events: none; transition: opacity .15s; }

nav[role="navigation"] { width: 100%; margin-top: 2.5rem; }
nav[role="navigation"] > div:first-child { display: none !important; }
nav[role="navigation"] > div:last-child { display: flex !important; width: 100%; }
nav[role="navigation"] > div:last-child > div:first-child { display: none; }
nav[role="navigation"] > div:last-child > div:last-child { width: 100%; display: flex; justify-content: center; }
nav[role="navigation"] > div:last-child > div:last-child > span.inline-flex {
    display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: .5rem; box-shadow: none;
}
nav[role="navigation"] a, nav[role="navigation"] span { border-radius: 0 !important; }
nav[role="navigation"] > div:last-child > div:last-child > span.inline-flex > a,
nav[role="navigation"] > div:last-child > div:last-child > span.inline-flex > span > span {
    display: inline-flex !important; align-items: center; justify-content: center;
    min-width: 44px; height: 44px; margin: 0 !important; padding: 0 .95rem !important;
    font-family: var(--wc-rotulo); font-weight: 700; font-size: .95rem;
    color: var(--wc-tinta) !important; background: var(--wc-papel) !important;
    border: 1.5px solid var(--wc-linha) !important;
    transition: background .2s, color .2s, border-color .2s, opacity .2s;
}
nav[role="navigation"] > div:last-child > div:last-child > span.inline-flex > a svg,
nav[role="navigation"] > div:last-child > div:last-child > span.inline-flex > span > span svg {
    width: 18px; height: 18px;
}
/* Estados especiais abaixo (hover / reticências / página atual / seta desabilitada) repetem a
MESMA cadeia estrutural da regra geral acima (nav > div:last-child > div:last-child >
span.inline-flex > ...) de propósito — achado real ao implementar: um seletor mais curto do tipo
`nav [aria-current="page"] span` parecia certo, mas perde em ESPECIFICIDADE pra regra geral (que
tem mais elementos na cadeia), então nunca vencia o `!important` dela mesmo vindo depois no
arquivo. Repetir a cadeia inteira + o atributo do estado garante especificidade estritamente
maior, não só posição no cascade. */
nav[role="navigation"] > div:last-child > div:last-child > span.inline-flex > a:hover {
    background: var(--wc-tinta) !important; color: #fff !important; border-color: var(--wc-tinta) !important;
}
/* "..." (reticências) — sem borda/fundo, só o texto, não é clicável (só a seta/número disabled
de verdade tem `aria-label`; a reticência é o único `[role=link][aria-disabled]` sem ele). */
nav[role="navigation"] > div:last-child > div:last-child > span.inline-flex > span[role="link"][aria-disabled="true"]:not([aria-label]) > span {
    border-color: transparent !important; background: transparent !important; color: var(--wc-cinza) !important; cursor: default;
}
/* Página atual — preenchida, mesmo tratamento de "ativo" usado em abas/dots do resto do tema. */
nav[role="navigation"] > div:last-child > div:last-child > span.inline-flex > span[aria-current="page"] > span {
    background: var(--wc-tinta) !important; color: #fff !important; border-color: var(--wc-tinta) !important;
}
/* Seta desabilitada (1ª/última página) — apagada, sem hover, nunca escondida (mantém o layout
estável mesmo na 1ª/última página, evita as setas "pularem" de posição). */
nav[role="navigation"] > div:last-child > div:last-child > span.inline-flex > span[aria-label][aria-disabled="true"] > span {
    opacity: .3;
}

/* placas de categoria */
.wc-placas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
@media (min-width: 1024px) { .wc-placas { grid-template-columns: repeat(var(--wc-n-placas, 4), minmax(0, 1fr)); gap: 1rem; } }
.wc-placas:has(> :nth-child(3):last-child) > :first-child { grid-column: 1 / -1; }
@media (min-width: 1024px) { .wc-placas:has(> :nth-child(3):last-child) > :first-child { grid-column: auto; } }
.wc-placa { position: relative; display: flex; flex-direction: column; justify-content: flex-end; align-items: flex-start; gap: .5rem; overflow: hidden; aspect-ratio: 3 / 4; padding: 1.25rem; background: var(--wc-tinta); color: #fff; text-decoration: none; isolation: isolate; }
.wc-placas:has(> :nth-child(3):last-child) > :first-child { aspect-ratio: auto; min-height: 220px; }
@media (min-width: 1024px) { .wc-placas:has(> :nth-child(3):last-child) > :first-child { aspect-ratio: 3 / 4; } }
.wc-placa img { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--wc-ease); }
.wc-placa::after { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(to top, rgba(0,0,0,.65), rgba(0,0,0,0) 55%); }
.wc-placa:hover img { transform: scale(1.06); }
.wc-placa-nome { font-family: var(--wc-display); font-weight: 800; text-transform: uppercase; font-size: clamp(1.7rem, 3.4vw, 2.6rem); line-height: .9; }
.wc-placa-cta { font-family: var(--wc-rotulo); font-weight: 700; font-size: .78rem; letter-spacing: .2em; text-transform: uppercase; padding: .5rem .9rem; border: 1.5px solid #fff; transition: background .25s, color .25s; }
.wc-placa:hover .wc-placa-cta { background: #fff; color: var(--wc-tinta); }
.wc-placa:not(.wc-placa-com-foto):nth-child(2n) { background: #1b1b1b; }

/* banner do meio */
.wc-banner-meio img { display: block; width: 100%; height: auto; }

/* história */
.wc-historia { position: relative; overflow: hidden; margin-top: 4.5rem; background: var(--wc-tinta); color: #fff; padding: 4.5rem 1rem; }
@media (min-width: 640px) { .wc-historia { margin-top: 6rem; padding: 6.5rem 3rem; } }
.wc-historia-miolo { position: relative; z-index: 1; max-width: 72rem; margin: 0 auto; display: grid; gap: 2.5rem; }
@media (min-width: 1024px) { .wc-historia-com-video { grid-template-columns: 1fr 1fr; align-items: center; gap: 4rem; } }
.wc-historia-texto { display: grid; gap: 1.25rem; justify-items: start; max-width: 44rem; }
.wc-historia-titulo { margin: 0; font-family: var(--wc-display); font-weight: 800; text-transform: uppercase; font-size: clamp(2.8rem, 8vw, 6rem); line-height: .86; }
.wc-historia-corpo { margin: 0; font-size: clamp(1rem, 1.5vw, 1.12rem); line-height: 1.7; color: rgba(255,255,255,.82); max-width: 60ch; }
.wc-historia-marca { position: absolute; right: -.04em; bottom: -.18em; margin: 0; font-family: var(--wc-display); font-weight: 800; font-size: clamp(6rem, 22vw, 19rem); line-height: 1; color: transparent; -webkit-text-stroke: 1px rgba(255,255,255,.12); white-space: nowrap; pointer-events: none; }
@media (max-width: 639px) { .wc-historia-marca { right: auto; left: 50%; transform: translateX(-50%); bottom: -.14em; font-size: 16.5vw; } }
.wc-video { position: relative; aspect-ratio: 16 / 9; background: #000; overflow: hidden; }
.wc-video img, .wc-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border: 0; }
.wc-video-play { position: absolute; inset: 0; margin: auto; width: 76px; height: 76px; border-radius: 50%; border: 0; background: #fff; color: var(--wc-tinta); display: grid; place-items: center; cursor: pointer; transition: transform .3s var(--wc-ease); }
.wc-video-play:hover { transform: scale(1.08); }
.wc-video-play svg { width: 28px; height: 28px; fill: currentColor; margin-left: 4px; }

/* avaliações (parcial nativo) — cabeçalho/estrelas do RESUMO só existem na home (carrossel),
por isso continuam escopados em #wc-home; o título/estrelas equivalentes da PDP já são tratados
à parte (ver `[data-avaliacoes-secao] h2`/`#ps-avaliar-abrir`, mais abaixo neste arquivo). */
.wc-avaliacoes { margin-top: 3rem; }
body #wc-home #ps-avc-hd h2 { font-family: var(--wc-display); font-weight: 800; text-transform: uppercase; font-size: clamp(1.5rem, 7vw, 4rem); line-height: .92; color: var(--wc-tinta); white-space: nowrap; letter-spacing: 0; }
body #wc-home #ps-avc-r { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: .15rem .5rem; margin-top: .6rem; font-family: var(--wc-rotulo); font-size: 1rem; }
body #wc-home #ps-avc-r > span:first-child { font-size: 1.65rem; letter-spacing: .08em; line-height: 1; }
body #wc-home #ps-avc-r b { font-family: var(--wc-display); font-size: 1.5rem; font-weight: 800; }
@media (min-width: 640px) { body #wc-home #ps-avc-r > span:first-child { font-size: 1.9rem; } }
body #wc-home .ps-avc-ar { border-radius: 0; } /* setas do trilho — só existem no carrossel */

/* Card de avaliação em si (2026-09-30) — DESESCOPADO de `#wc-home`: `.ps-avc-c` é um parcial
compartilhado (_avaliacao-card.blade.php) usado tanto no carrossel da home quanto na grade
"Avaliações do produto" da PDP. Antes só o carrossel recebia esse tratamento — a grade da PDP
ficava com o visual genérico branco/arredondado/avatar roxo da plataforma, destoando do resto da
página inteira (que é preto/branco, cantos retos, sem sombra) — achado real do Ricardo, "está
terrível, não gostei", 2026-09-30. Mesmo princípio de `[data-favoritar-produto]`/
`[data-produto-card]` logo acima neste arquivo: TODO elemento arredondado nativo vira reto aqui,
sem exceção — é a identidade "West Coast" da loja, não um detalhe. `!important` em tudo aqui
(mesmo padrão já usado no resto do arquivo): o `<style>` dos parciais nativos
(_avaliacao-card-estilo/_avaliacao-instagram-modal) é inline, renderizado DEPOIS do `<link>`
deste arquivo no `<head>` — mesma especificidade (seletor de 1 classe/id), então sem
`!important` o CSS nativo sempre venceria por ordem de documento, não por ser "mais específico"
(achado real: a 1ª versão desta regra, sem `!important`, não teve efeito nenhum). */
.ps-avc-c { border-radius: 0 !important; box-shadow: none !important; border-color: var(--wc-linha) !important; }
.ps-avc-c:hover { border-color: var(--wc-tinta) !important; }
.ps-avc-vb { border-radius: 0 !important; color: var(--wc-tinta) !important; }
.ps-avc-pf { border-radius: 0 !important; }
/* Avaliação SEM foto (2026-09-30, mesma rodada) — cabeçalho compacto com avatar/iniciais,
substituiu o bloco de foto inteiro. Avatar quadrado (não circular) pelo mesmo motivo do resto
desta seção, gradiente escuro em vez do roxo genérico da plataforma, e uma linha fina (mesmo
`--wc-linha` usado em toda tabela/divisória do tema) separando cabeçalho do texto do comentário. */
.ps-avc-av-mini, .ps-avc-av-mini:after { border-radius: 0 !important; }
.ps-avc-av-mini { background: linear-gradient(160deg, #2a2a2a, var(--wc-tinta)) !important; }
.ps-avc-cab-semfoto { border-bottom: 1px solid var(--wc-linha); padding-bottom: .75rem !important; }

/* Modal de avaliação estilo Instagram (`#ps-avc-lb`, 2026-09-30) — sem isto, clicar numa
avaliação (o momento de prova social mais forte da página) abria um modal genérico branco
arredondado com avatar roxo, quebrando a identidade visual bem ali. Mesmo motivo de
`!important` do bloco acima. */
#ps-avc-lb-b { border-radius: 0 !important; }
#ps-avc-lb-av, #ps-avc-lb-av:after { border-radius: 0 !important; }
#ps-avc-lb-av { background: linear-gradient(160deg, #2a2a2a, var(--wc-tinta)) !important; }
.ps-avc-nb, #ps-avc-lb-x { border-radius: 0 !important; }
.ps-avc-lb-tag { border-radius: 0 !important; border-color: var(--wc-linha) !important; }
.ps-avc-lb-tag:hover { background: var(--wc-nevoa) !important; border-color: var(--wc-tinta) !important; }
.ps-avc-lb-tag-img { border-radius: 0 !important; }
.ps-avc-lb-tag:after { color: var(--wc-tinta) !important; font-family: var(--wc-rotulo); text-transform: uppercase; letter-spacing: .06em; }

/* instagram: faixa compacta névoa (texto + 4 fotos), encosta direto na newsletter */
body:has(#wc-home) main { padding-bottom: 0 !important; }
body:has(#wc-home) footer[data-ps-regiao="rodape"] { margin-top: 0 !important; }
body:has(#wc-home) #wc-home > :last-child:not(.wc-insta) { margin-bottom: 5rem; }
.wc-insta { margin-top: 4.5rem; background: var(--wc-nevoa); padding: 3rem 1rem; }
@media (min-width: 640px) { .wc-insta { margin-top: 4rem; padding: 3.5rem 2rem; } }
.wc-insta-miolo { max-width: 88rem; margin: 0 auto; display: grid; gap: 1.75rem; align-items: center; }
/* Proporção 4.6fr/7.4fr (2026-09-26, pedido do Ricardo: "as 4 fotos deveriam ser maiores,
aproveitar melhor o espaço da div, na versão desktop") — era 5fr/7fr. Testado antes de decidir o
valor exato: com 4fr/8fr a coluna de texto caía a 440px numa tela de 1440px, ESTREITA DEMAIS pra
caber "@OCULOSLOCS" + ícone + selo de verificado numa linha só no tamanho máximo do título
(73,6px, o teto do clamp()) — quebrava pra 2 linhas (achado real, medido via Playwright: o limiar
exato fica entre 495-500px). 4.6fr/7.4fr garante ~518px pro texto no container mais largo
possível (88rem = 1408px), acima do limiar com folga, e ainda dá às fotos mais espaço que a
proporção original (de 183px pra ~205px de lado por foto). */
@media (min-width: 900px) { .wc-insta-miolo { grid-template-columns: minmax(0, 4.6fr) minmax(0, 7.4fr); gap: 3.5rem; } }
.wc-insta-texto { display: grid; gap: .6rem; justify-items: start; }
.wc-insta-texto .wc-sobretitulo { color: var(--wc-azul); }
.wc-insta-arroba { margin: 0; font-family: var(--wc-display); font-weight: 800; font-size: clamp(2.5rem, 6vw, 4.6rem); line-height: .9; text-transform: uppercase; letter-spacing: .005em; overflow-wrap: anywhere; }
.wc-insta-arroba a { color: var(--wc-tinta); text-decoration: none; background: linear-gradient(currentColor, currentColor) 0 100% / 0 3px no-repeat; transition: background-size .35s var(--wc-ease), color .2s; }
.wc-insta-arroba a:hover { color: var(--wc-azul); background-size: 100% 3px; }
.wc-insta-apoio { margin: 0; color: var(--wc-cinza); font-size: 1rem; line-height: 1.5; max-width: 34ch; }
/* Numa só linha a partir de 1100px (2026-09-25, pedido do Ricardo) — medido de verdade com a
fonte real (Red Hat Display 16px): a frase padrão pesa ~380px, sobra folga confortável só
quando a coluna de texto (5/12 do container, já mais largo — ver .wc-insta-miolo acima)
realmente tem espaço; abaixo disso mantém o comportamento de sempre (quebra normal). */
@media (min-width: 1100px) { .wc-insta-apoio { max-width: none; white-space: nowrap; } }
.wc-insta-cta { margin-top: .6rem; gap: .6rem; }
.wc-insta-cta svg { width: 18px; height: 18px; }
.wc-insta-arroba { display: flex; align-items: center; gap: .18em; flex-wrap: wrap; }
.wc-insta-verificado { width: .56em; height: .56em; flex: none; transform: translateY(-.04em); }
/* Ícone do Instagram DENTRO do título (2026-09-26). `.wc-insta-arroba-principal` agrupa
ícone+link como UMA UNIDADE que nunca se separa em telas estreitas — achado real (tablet,
~900-1280px): sem esse agrupamento, o ícone (item flex livre) quebrava PRA CIMA sozinho quando o
espaço apertava, deixando uma linha vazia estranha acima do texto. Só o selo de verificado (fora
deste span) pode cair pra uma 2ª linha — é o elemento menos essencial dos 3. Tamanho do ícone em
`em` (mesmo princípio do .wc-insta-verificado acima) — herda o font-size do PRÓPRIO h2 (o
clamp() responsivo do título), cresce/encolhe junto com o texto em qualquer largura de tela.
`.8em` fica próximo da altura de caixa-alta do texto ao lado. SEM fundo/preenchimento — o SVG já
nasce com `fill="none"` no contorno, isto aqui só garante o alinhamento/tamanho. */
.wc-insta-arroba-principal { display: flex; align-items: center; gap: .18em; min-width: 0; }
/* `white-space:nowrap` no link (2026-09-26, achado real ao testar tablet ~900-1280px): sem
isso, depois de agrupar ícone+link numa unidade que pode encolher (min-width:0 acima), o
NAVEGADOR passava a quebrar o próprio texto do link — o "@" (span próprio, ver
.wc-insta-arroba-simbolo) caía numa linha e "OCULOSLOCS" noutra, mesmo sem espaço nenhum entre
eles no HTML (todo elemento inline-block tem um ponto de quebra implícito na fronteira). Gruda
os dois de vez — extremos absurdos (handle gigantesco) já têm a rede de segurança
`overflow-wrap:anywhere` no .wc-insta-arroba pai. */
.wc-insta-arroba-principal a { white-space: nowrap; }
.wc-insta-icone-grande { width: .8em; height: .8em; flex: none; }
/* "@" reposicionado (2026-09-26, 2ª calibragem — achado real do Ricardo: em Big Shoulders
Display, como em praticamente TODA fonte condensada bold testada em comparação real (Anton,
Archivo Black, Oswald, Fjalla One, Teko, League Gothic, Bebas Neue — nenhuma delas resolve
sozinha), o glifo "@" nasce maior e mais baixo que as maiúsculas — característica quase universal
do desenho desse símbolo, baseado na "a" minúscula com a curva completa, não um defeito
específico desta fonte.

2ª calibragem (2026-09-27, achado real do Ricardo: mesmo depois do ajuste de olho acima, "o @
ainda não alinha horizontalmente com OCULOSLOCS") — medido com precisão de PIXEL desta vez, não
mais no olho: desenhei "@" e "O" no mesmo canvas/baseline (mesma fonte/peso, 100px) e escaneei os
pixels de tinta de cada um. Achado: o "@" tem tinta de -75 a +14 (89px de altura, incluindo um
"rabicho" que desce 14px ABAIXO da linha de base — é onde ele "flutuava torto" antes), enquanto o
"O" vai de -81 a 0 (81px, sempre em cima da linha de base, nunca abaixo). A calibragem de olho
anterior (.85em/-.03em) reduzia o tamanho mas não hospedava esse rabicho DENTRO da caixa do "O" —
sobrava sempre um pedaço abaixo da linha, o que o olho lê como "desalinhado". `.91em` encolhe o
"@" até sua altura de tinta total (89px) bater com a do "O" (81px) — proporção 81/89; `-.14em` sobe
o resultado até a tinta ENCAIXAR exatamente dentro da caixa do "O" (topo com topo, base com base),
sem sobra em nenhuma ponta. Contas nesse comentário porque são específicas desta fonte/peso —
mudar a fonte do título exige medir de novo, não só copiar os números. */
.wc-insta-arroba-simbolo { display: inline-block; font-size: .91em; transform: translateY(-.14em); }
.wc-insta-fotos { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; }
@media (min-width: 640px) { .wc-insta-fotos { grid-template-columns: repeat(var(--wc-n-fotos, 4), minmax(0, 1fr)); gap: .75rem; } }
/* cartão de post */
.wc-insta-post { position: relative; display: block; aspect-ratio: 1; overflow: hidden; background: #111; color: #fff; text-decoration: none; isolation: isolate; }
.wc-insta-post img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .7s var(--wc-ease); }
.wc-insta-post::after { content: ''; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(0,0,0,0) 45%, rgba(0,0,0,.72) 100%); transition: background .35s; }
.wc-insta-post:hover img, .wc-insta-post:focus-visible img { transform: scale(1.07); }
.wc-insta-post:hover::after, .wc-insta-post:focus-visible::after { background: linear-gradient(180deg, rgba(11,28,73,.25) 0%, rgba(11,28,73,.82) 100%); }
.wc-insta-post:focus-visible { outline: 3px solid var(--wc-azul); outline-offset: 3px; }
.wc-insta-post-rodape { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; display: flex; align-items: center; gap: .45rem; padding: .7rem .75rem; font-family: var(--wc-rotulo); font-weight: 700; font-size: .8rem; letter-spacing: .06em; }
.wc-insta-post-rodape svg { width: 16px; height: 16px; flex: none; }
.wc-insta-post-autor { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wc-insta-post-seta { display: grid; place-items: center; width: 26px; height: 26px; background: #fff; color: var(--wc-tinta); font-size: .85rem; transform: translate(4px, 4px); opacity: 0; transition: opacity .3s, transform .35s var(--wc-ease); }
.wc-insta-post:hover .wc-insta-post-seta, .wc-insta-post:focus-visible .wc-insta-post-seta { opacity: 1; transform: none; }
@media (hover: none) { .wc-insta-post-seta { opacity: 1; transform: none; } }
/* sem foto cadastrada: capa da marca (bandana), cada cartão com um recorte diferente */
.wc-insta-post-capa { background: #0b1c49 url('img/bandana-720.webp') no-repeat; background-size: 260%; }
.wc-insta-fotos li:nth-child(2) .wc-insta-post-capa { background-position: 70% 20%; }
.wc-insta-fotos li:nth-child(3) .wc-insta-post-capa { background-position: 20% 80%; }
.wc-insta-fotos li:nth-child(4) .wc-insta-post-capa { background-position: 90% 90%; }
.wc-insta-post-capa::before { content: ''; position: absolute; inset: 0; background: rgba(6,14,38,.55); }
.wc-insta-capa-marca { position: absolute; inset: 0; z-index: 2; display: grid; place-content: center; justify-items: center; gap: .3rem; padding: 1rem; text-align: center; }
.wc-insta-capa-marca strong { font-family: var(--wc-display); font-weight: 800; font-size: clamp(2.2rem, 4.5vw, 3.2rem); line-height: .9; }
.wc-insta-capa-marca small { font-family: var(--wc-rotulo); font-weight: 700; font-size: .68rem; letter-spacing: .14em; text-transform: uppercase; opacity: .85; overflow-wrap: anywhere; }
@media (max-width: 899px) {
    .wc-insta { margin-top: 3rem; }
    .wc-insta-miolo { gap: .6rem; }
    .wc-insta-texto { display: contents; }
    .wc-insta-texto > * { justify-self: start; }
    .wc-insta-fotos { order: 1; margin-top: .9rem; }
    .wc-insta-cta { order: 2; width: 100%; margin-top: .9rem; }
}

/* movimento */
.wc-js .wc-revelar { opacity: 0; transform: translateY(24px); transition: opacity .8s var(--wc-ease), transform .9s var(--wc-ease); }
.wc-js .wc-revelar.is-visivel { opacity: 1; transform: none; }
@keyframes wc-zoom { from { transform: scale(1.06); } to { transform: scale(1); } }
@keyframes wc-surgir { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
    .wc-js .wc-revelar { opacity: 1 !important; transform: none !important; transition: none !important; }
    .wc-js .wc-hero-slide.is-ativo .wc-hero-img, .wc-js .wc-painel:not([hidden]) { animation: none; }
    [data-produto-card]:hover > .relative > a img, .wc-placa:hover img { transform: none !important; }
}

/* ---------- Conta, pedidos, favoritos, blog, institucional (marcação nativa) ---------- */
/* Cantos retos em toda a área de conteúdo (cartões, botões, campos) — mantém avatar/selos redondos. */
main .rounded, main .rounded-md, main .rounded-lg, main .rounded-xl, main .rounded-2xl { border-radius: 0 !important; }
main h2.text-lg, main h2.text-xl, main h3.text-lg { font-family: var(--wc-rotulo); font-weight: 700 !important; letter-spacing: .08em; text-transform: uppercase; }
#ps-conta-saudacao { font-family: var(--wc-display) !important; font-weight: 800 !important; text-transform: uppercase; font-size: clamp(1.6rem, 4vw, 2.2rem) !important; letter-spacing: .01em; }
#ps-conta-pontos-card { background: var(--wc-tinta) !important; }
#ps-conta-entrar-form button[type="submit"], #ps-conta-criar-form button[type="submit"], #ps-conta-acesso-form button[type="submit"], #ps-pontos-form button, #ps-endereco-form button[type="submit"] {
    background: var(--wc-tinta) !important; color: #fff !important; font-family: var(--wc-rotulo); font-weight: 700 !important; letter-spacing: .12em; text-transform: uppercase; min-height: 48px;
}
#ps-aba-entrar-botao, #ps-aba-criar-botao { font-family: var(--wc-rotulo); font-weight: 700 !important; letter-spacing: .1em; text-transform: uppercase; }
#ps-favoritos-grid .ps-favoritos-card img, #ps-pedidos-lista img, #ps-pd-conteudo img { background: var(--wc-nevoa); mix-blend-mode: multiply; }

/* Blog (editorial e revista): títulos na fonte de display do tema em vez de Georgia. */
body .ps-blog-editorial .ps-blog-serif, body .ps-blog-revista .ps-blog-serif,
body .ps-blog-editorial .ps-blog-prose h2, body .ps-blog-editorial .ps-blog-prose h3,
body .ps-blog-revista .ps-blog-prose h2, body .ps-blog-revista .ps-blog-prose h3 {
    font-family: var(--wc-display) !important; font-weight: 800 !important; text-transform: uppercase; letter-spacing: .01em; line-height: 1;
}
body .ps-blog-editorial h1.ps-blog-serif, body .ps-blog-revista h1.ps-blog-serif { font-size: clamp(2.4rem, 5.5vw, 4rem) !important; }
body .ps-blog-editorial .ps-blog-prose, body .ps-blog-revista .ps-blog-prose { font-family: var(--wc-corpo) !important; }

/* Página institucional */
main article h2, main .prose h2 { font-family: var(--wc-display); font-weight: 800; text-transform: uppercase; letter-spacing: .01em; }

/* ---------- Faixa de newsletter com bandana azul (campo wc_newsletter_bandana) ----------
   Foto de bandana azul (img/bandana.webp 1280px / bandana-720.webp no celular), carregada só
   como fundo CSS. Véu azul-noite à esquerda deixa texto e campo com contraste alto; a bandana
   aparece mais à direita. */
.wc-bandana footer[data-ps-regiao="rodape"] > div:has(#ps-newsletter-form) { position: relative; overflow: hidden; isolation: isolate; background: #0b1c49 !important; border-bottom: 0 !important; }
.wc-bandana footer[data-ps-regiao="rodape"] > div:has(#ps-newsletter-form)::before {
    content: ''; position: absolute; inset: 0; z-index: -2; background: url('img/bandana.webp') center 40% / cover no-repeat;
}
@media (max-width: 639px) { .wc-bandana footer[data-ps-regiao="rodape"] > div:has(#ps-newsletter-form)::before { background-image: url('img/bandana-720.webp'); } }
.wc-bandana footer[data-ps-regiao="rodape"] > div:has(#ps-newsletter-form)::after {
    content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(6,14,38,.9) 0%, rgba(6,14,38,.62) 45%, rgba(6,14,38,.15) 100%);
}
@media (max-width: 639px) { .wc-bandana footer[data-ps-regiao="rodape"] > div:has(#ps-newsletter-form)::after { background: rgba(6,14,38,.66); } }
footer[data-ps-regiao="rodape"] > div:has(#ps-newsletter-form) > div { padding-block: 2.75rem !important; }
/* Maior, aproveitando o vão até o campo de e-mail (2026-09-26, pedido do Ricardo) — o texto
tinha um teto baixo (1.75rem) e `max-width` em `em` (que encolhe junto com a fonte, nunca cresce
o bastante pra preencher o espaço). `clamp` com coeficiente de vw maior faz o texto ocupar mais
do vão em telas largas. SEM `max-width`/`text-wrap:balance` (2026-09-27, removidos) — a quebra em
2 linhas agora é um `<br>` de verdade inserido por JS num ponto fixo (locs-westcoast.js, ver
comentário lá), não mais dependente de largura; um `max-width` em `ch` aqui correria o risco
real de fazer uma das DUAS metades (cada uma já uma linha própria por causa do `<br>`) quebrar
DE NOVO sozinha, virando 3 linhas — exatamente o problema que motivou a troca pro `<br>`. */
footer[data-ps-regiao="rodape"] > div:has(#ps-newsletter-form) p.font-semibold {
    font-family: var(--wc-display); font-weight: 800 !important; text-transform: uppercase; line-height: 1.05; letter-spacing: .01em;
    font-size: clamp(1.3rem, 3vw, 2.35rem);
}
footer[data-ps-regiao="rodape"] > div:has(#ps-newsletter-form) span.rounded-full { background: #fff !important; color: #0b1c49 !important; }
/* Empilhado até 1279px, não só até 639px como antes (2026-09-27, achado real testando a faixa
toda de larguras): o layout nativo vira lado-a-lado (`sm:flex-row`) já em 640px, mas o form tem
largura FIXA reservada (320-448px conforme o breakpoint, `shrink-0`, nunca encolhe) — de 640px
até quase 1280px isso sobra pouco espaço pro bloco ícone+texto, estreito demais pra "Cadastre seu
e-mail e fique por dentro" (a metade mais longa do `<br>` inserido por JS, ver
locs-westcoast.js) caber numa linha só, virando 3-4 linhas por acidente (medido ao vivo em
640/700/768/1025/1150px, um por um). Empilhado até 1279px dá o container INTEIRO pro texto (bem
mais largo que a sobra do lado-a-lado), sem essa disputa por espaço; só a partir de 1280px (ver
bloco de baixo) que o lado-a-lado finalmente tem espaço de sobra suficiente pras 2 linhas. */
@media (max-width: 1279px) {
    footer[data-ps-regiao="rodape"] > div:has(#ps-newsletter-form) > div { flex-direction: column !important; gap: 1.1rem !important; }
    footer[data-ps-regiao="rodape"] > div:has(#ps-newsletter-form) span.rounded-full { display: none !important; }
    footer[data-ps-regiao="rodape"] > div:has(#ps-newsletter-form) p.font-semibold { font-size: clamp(1.05rem, 5.5vw, 1.8rem); line-height: 1 !important; }
    footer[data-ps-regiao="rodape"] > div:has(#ps-newsletter-form) > div > div:first-child { width: 100%; justify-content: center; }
    footer[data-ps-regiao="rodape"] > div:has(#ps-newsletter-form) > div > div:last-child { width: 100% !important; max-width: 28rem; }
}
/* Desktop (1280px+, não 1024px como a 1ª tentativa) — achado real testando largura por largura:
o form ganha `lg:w-[28rem]` (448px) já em 1024px, mas o texto lado-a-lado só recebe espaço de
sobra o bastante pra "Cadastre seu e-mail e fique por dentro" (a metade mais longa do `<br>`
inserido por JS) caber numa linha só a partir de ~1280px — entre 1025-1279px o `clamp(3vw)` do
título já cresceu mais que o espaço realmente disponível na coluna, virando 3-4 linhas por
acidente de novo (medido ao vivo, mesma classe de bug do primeiro ajuste). Mais simples continuar
empilhado até aqui (ver bloco `max-width:1279px` acima) do que caçar uma curva de `clamp`
diferente só pra essa faixa estreita.

Campo de e-mail perto do texto, não no canto oposto (2026-09-27, pedido do Ricardo: "fica espaço
sobrando entre o texto e o campo"). `sm:justify-between` (nativo, `layout.blade.php` —
compartilhado com TODA loja, nunca editado ali) empurra o form pro extremo direito da faixa
inteira (`ps-container-largo`, até 1152px+); com o texto em só 2 linhas curtas à esquerda, sobra
um vão enorme de fundo no meio em tela larga (medido: ~200-450px vazios em 1280-1920px sem esta
regra). `justify-content:flex-start` + `gap` fixo cola o form logo depois do texto — o espaço
"sobrando" migra pro canto direito (só padrão da bandana), nunca entre os dois elementos que o
olho lê em sequência. */
@media (min-width: 1280px) {
    footer[data-ps-regiao="rodape"] > div:has(#ps-newsletter-form) > div { justify-content: flex-start !important; gap: 3.5rem; }
}

/* PDP: estrelas clicáveis → avaliações */
.wc-estrelas-link { cursor: pointer; width: fit-content; }
.wc-estrelas-link:hover span { text-decoration: underline; text-underline-offset: 3px; }
[data-avaliacoes-secao] { scroll-margin-top: 110px; }

/* ==========================================================================
   SOBRE NÓS (pagina.blade.php → partials/_wc-sobre-nos)
   ========================================================================== */
body:has(.wc-sobre) main { padding-top: 0 !important; padding-bottom: 0 !important; }
body:has(.wc-sobre) footer[data-ps-regiao="rodape"] { margin-top: 0 !important; }
.wc-sobre { color: var(--wc-tinta); }
.wc-sobre-trilha { display: flex; gap: .5rem; padding: 1rem 0; font-size: .85rem; color: var(--wc-cinza); }
.wc-sobre-trilha a { color: inherit; }
.wc-sobre-hero { position: relative; overflow: hidden; isolation: isolate; background: var(--wc-tinta); color: #fff; padding: 4.5rem 1rem 4rem; }
@media (min-width: 640px) { .wc-sobre-hero { padding: 7rem 3rem 6rem; } }
.wc-sobre-hero::before { content: ''; position: absolute; inset: 0; z-index: -2; opacity: .38; background: url('img/bandana.webp') right center / cover no-repeat; -webkit-mask-image: linear-gradient(90deg, transparent 35%, #000 85%); mask-image: linear-gradient(90deg, transparent 35%, #000 85%); }
.wc-sobre-hero-miolo { position: relative; max-width: 72rem; margin: 0 auto; display: grid; gap: 1.25rem; }
.wc-sobre-titulo { margin: 0; font-family: var(--wc-display); font-weight: 800; text-transform: uppercase; font-size: clamp(2.8rem, 7vw, 5.6rem) !important; line-height: .9 !important; max-width: 17ch; text-wrap: balance; }
.wc-sobre-titulo span { display: block; color: #8f8f8f; }
.wc-sobre-intro { margin: 0; max-width: 46ch; font-size: clamp(1rem, 1.6vw, 1.2rem); line-height: 1.6; color: rgba(255,255,255,.78); }
.wc-sobre-tags { list-style: none; margin: .5rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.wc-sobre-tags li { font-family: var(--wc-rotulo); font-weight: 700; font-size: .75rem; letter-spacing: .16em; text-transform: uppercase; padding: .45rem .8rem; border: 1px solid rgba(255,255,255,.3); }
.wc-sobre-marca { position: absolute; right: 4%; bottom: 10%; width: min(34vw, 420px); height: auto; filter: invert(1); opacity: .9; z-index: -1; }
@media (max-width: 900px) { .wc-sobre-marca { opacity: .12; right: -8%; bottom: 6%; width: 70vw; } }

.wc-sobre-origem { display: grid; gap: 2rem; margin: 4.5rem auto 0; max-width: 72rem; align-items: center; }
@media (min-width: 900px) { .wc-sobre-origem { grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: 4rem; } }
.wc-sobre-ano { display: grid; justify-items: start; border-left: 6px solid var(--wc-tinta); padding-left: 1.25rem; }
.wc-sobre-ano strong { font-family: var(--wc-display); font-weight: 800; font-size: clamp(5.5rem, 16vw, 11rem); line-height: .85; letter-spacing: -.02em; }
.wc-sobre-ano span { font-family: var(--wc-rotulo); font-weight: 700; letter-spacing: .24em; text-transform: uppercase; color: var(--wc-cinza); margin-top: .5rem; }
.wc-sobre-origem-texto { display: grid; gap: .9rem; }
.wc-sobre-origem-texto h2 { margin: 0; font-family: var(--wc-display); font-weight: 800; text-transform: uppercase; font-size: clamp(2rem, 4.5vw, 3.2rem); line-height: .95; }
.wc-sobre-origem-texto p:last-child { margin: 0; font-size: 1.08rem; line-height: 1.75; color: #333; max-width: 62ch; }

.wc-sobre-duo { display: grid; gap: 1px; margin: 4.5rem auto 0; max-width: 72rem; background: var(--wc-linha); border: 1px solid var(--wc-linha); }
@media (min-width: 800px) { .wc-sobre-duo { grid-template-columns: 1fr 1fr; } }
.wc-sobre-duo article { background: #fff; padding: 2rem 1.5rem; display: grid; gap: .6rem; align-content: start; }
@media (min-width: 640px) { .wc-sobre-duo article { padding: 2.75rem 2.5rem; } }
.wc-sobre-duo svg { width: 36px; height: 36px; fill: none; stroke: var(--wc-tinta); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.wc-sobre-duo h2 { margin: .4rem 0 0; font-family: var(--wc-display); font-weight: 800; text-transform: uppercase; font-size: 2rem; line-height: 1; }
.wc-sobre-duo-apoio { margin: 0; font-family: var(--wc-rotulo); font-weight: 700; font-size: .8rem; letter-spacing: .16em; text-transform: uppercase; color: var(--wc-cinza); }
.wc-sobre-duo article p:last-child { margin: .4rem 0 0; line-height: 1.7; color: #333; }

.wc-sobre-valores { margin: 5rem auto 0; max-width: 72rem; }
.wc-sobre-valores h2 { margin-bottom: 1.75rem; }
.wc-sobre-valores ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr; border-top: 1px solid var(--wc-linha); }
@media (min-width: 640px) { .wc-sobre-valores ul { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .wc-sobre-valores ul { grid-template-columns: repeat(3, 1fr); } }
.wc-sobre-valores li { display: grid; grid-template-columns: 40px 1fr; column-gap: 1rem; row-gap: .2rem; padding: 1.5rem .25rem; border-bottom: 1px solid var(--wc-linha); }
.wc-sobre-valores svg { grid-row: span 2; width: 32px; height: 32px; fill: none; stroke: var(--wc-tinta); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.wc-sobre-valores strong { font-family: var(--wc-rotulo); font-weight: 700; font-size: 1rem; letter-spacing: .12em; text-transform: uppercase; }
.wc-sobre-valores span { color: #555; line-height: 1.55; font-size: .95rem; }

.wc-sobre-contato { display: grid; gap: 1.5rem; margin: 5rem auto 0; max-width: 72rem; padding: 2.5rem 1.5rem; border: 1.5px solid var(--wc-tinta); }
@media (min-width: 900px) { .wc-sobre-contato { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; padding: 3rem; } }
.wc-sobre-contato p { margin: .6rem 0 0; color: #444; max-width: 48ch; }
.wc-sobre-contato-acoes { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; }
.wc-sobre-contato-acoes .wc-sobre-email { flex-basis: 100%; margin: .25rem 0 0; font-size: .9rem; }
.wc-sobre-email a { color: var(--wc-tinta); font-weight: 700; }

.wc-sobre-fecho { position: relative; overflow: hidden; isolation: isolate; margin-top: 5rem; margin-bottom: 4rem; background: #0b1c49; color: #fff; padding: 5rem 1rem; text-align: center; }
.wc-sobre-fecho::before { content: ''; position: absolute; inset: 0; z-index: -2; background: url('img/bandana.webp') center / cover no-repeat; }
.wc-sobre-fecho::after { content: ''; position: absolute; inset: 0; z-index: -1; background: radial-gradient(ellipse at center, rgba(6,14,38,.88) 0%, rgba(6,14,38,.45) 75%); }
.wc-sobre-fecho-miolo { max-width: 44rem; margin: 0 auto; display: grid; gap: 1rem; justify-items: center; }
.wc-sobre-fecho-frase { margin: 0; font-family: var(--wc-display); font-weight: 800; text-transform: uppercase; font-size: clamp(2.6rem, 8vw, 5.5rem); line-height: .9; }
.wc-sobre-fecho-miolo p:not(.wc-sobre-fecho-frase) { margin: 0; color: rgba(255,255,255,.82); font-size: 1.08rem; line-height: 1.65; }

/* ==========================================================================
   RODAPÉ · variação EDITORIAL (wc_rodape_estilo = editorial → html.wc-rodape-editorial)
   Só CSS sobre o rodapé nativo: colunas viram faixas com filete, links maiores, redes em
   quadrados, bandeiras de pagamento em fichas brancas e o logo da Locs gigante fechando a
   página, logo acima da barra de CNPJ. Ids e [data-rodape-toggle] intactos.
   ========================================================================== */
.wc-rodape-editorial footer[data-ps-regiao="rodape"] { background: #0a0a0a !important; }
.wc-rodape-editorial footer[data-ps-regiao="rodape"] > .ps-container-largo { padding-top: 4rem !important; padding-bottom: 3rem !important; row-gap: 0 !important; }
@media (min-width: 1024px) {
    .wc-rodape-editorial footer[data-ps-regiao="rodape"] > .ps-container-largo { grid-template-columns: minmax(0, 5fr) minmax(0, 3fr) minmax(0, 7fr) !important; column-gap: 4rem !important; }
    .wc-rodape-editorial footer[data-ps-regiao="rodape"] > .ps-container-largo > .sm\:col-span-2 { grid-column: auto !important; }
}
/* títulos: rótulo pequeno em azul-claro com filete acima */
.wc-rodape-editorial footer[data-ps-regiao="rodape"] [data-rodape-toggle] > span,
.wc-rodape-editorial footer[data-ps-regiao="rodape"] .ps-container-largo p.font-bold {
    font-family: var(--wc-rotulo) !important; font-size: .74rem !important; letter-spacing: .24em !important; color: #8fa2ff !important;
}
/* `and (orientation: landscape)` nas 4 regras `min-width:640px`/`max-width:639px` abaixo
(2026-09-26, achado real, pedido do Ricardo: "o rodapé do tablet vertical tá todo bugado") —
`min-width:640px` sozinho pega tablet RETRATO também (768px de largura), então esse grupo de
regras "desktop" (borda em cima do rótulo, logo pequena depois de "Sobre nós", ícones de
pagamento alinhados à esquerda) e o grupo "celular" (`max-width:639px`, acordeão com filete)
ficavam invertidos: tablet retrato herdava o acabamento de DESKTOP num layout de largura de
celular — bugado dos dois jeitos, nem uma coisa nem outra. `orientation:landscape` exclui
retrato do grupo desktop; a versão broadened do `max-width:639px` (mais abaixo) inclui retrato
no grupo celular — os dois lados do MESMO corte, agora consistentes. */
@media (min-width: 640px) and (orientation: landscape) {
    .wc-rodape-editorial footer[data-ps-regiao="rodape"] > .ps-container-largo > div > [data-rodape-toggle],
    .wc-rodape-editorial footer[data-ps-regiao="rodape"] > .ps-container-largo .sm\:grid-cols-2 > div > p.font-bold,
    .wc-rodape-editorial footer[data-ps-regiao="rodape"] > .ps-container-largo .mt-6 > p.font-bold { border-top: 1px solid rgba(255,255,255,.18); padding-top: 1rem; }
}
/* "Sobre nós" — texto corrido (2026-09-25, correção real: usava a mesma fonte grande/caixa-alta
dos títulos de seção, `var(--wc-display)` a 800/uppercase, pesado demais pra um parágrafo de
descrição da loja). Fonte de corpo normal, minúsculas/maiúsculas normais, tamanho de leitura. */
.wc-rodape-editorial #ps-rodape-sobre { font-family: var(--wc-corpo); font-weight: 400; color: rgba(255,255,255,.7) !important; font-size: .95rem !important; line-height: 1.6 !important; letter-spacing: normal; margin-top: 1.1rem !important; }
/* links — nome de página/categoria/contato em caixa-alta (2026-09-25, pedido do Ricardo, pra
combinar com o resto do rodapé/tema, que é todo em caixa-alta) */
.wc-rodape-editorial footer[data-ps-regiao="rodape"] ul { margin-top: 1.1rem !important; }
.wc-rodape-editorial footer[data-ps-regiao="rodape"] ul > li + li { margin-top: .7rem !important; }
.wc-rodape-editorial footer[data-ps-regiao="rodape"] ul a { font-family: var(--wc-rotulo); font-size: 1.05rem; font-weight: 500; text-transform: uppercase; letter-spacing: .04em; color: rgba(255,255,255,.78); text-decoration: none; background: linear-gradient(#fff, #fff) 0 100% / 0 1px no-repeat; transition: background-size .3s var(--wc-ease), color .2s; }
.wc-rodape-editorial footer[data-ps-regiao="rodape"] ul a:hover { color: #fff !important; background-size: 100% 1px; }
/* redes: quadrados */
.wc-rodape-editorial footer[data-ps-regiao="rodape"] a[aria-label].rounded-full { border-radius: 0 !important; width: 46px !important; height: 46px !important; border-color: rgba(255,255,255,.28) !important; color: #fff !important; }
.wc-rodape-editorial footer[data-ps-regiao="rodape"] a[aria-label].rounded-full:hover { background: #fff; color: #0a0a0a !important; }
/* pagamento: fichas brancas */
.wc-rodape-editorial footer[data-ps-regiao="rodape"] img[src*="/pagamento/"] { background: #fff; padding: 2px 3px; box-sizing: content-box; }
.wc-rodape-editorial footer[data-ps-regiao="rodape"] .flex-nowrap:has(> img[src*="/pagamento/"]) { flex-wrap: wrap !important; justify-content: center; }
@media (min-width: 640px) and (orientation: landscape) { .wc-rodape-editorial footer[data-ps-regiao="rodape"] .flex-nowrap:has(> img[src*="/pagamento/"]) { justify-content: flex-start; } }
.wc-rodape-editorial footer[data-ps-regiao="rodape"] > .ps-container-largo .mt-6 { margin-top: 2.25rem !important; }
/* celular (+ tablet retrato, ver comentário acima): acordeões com filete e "+" girando */
@media (max-width: 639px), (min-width: 640px) and (max-width: 1024px) and (orientation: portrait) {
    .wc-rodape-editorial footer[data-ps-regiao="rodape"] > .ps-container-largo { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; }
    .wc-rodape-editorial footer[data-ps-regiao="rodape"] > .ps-container-largo > div { border-bottom: 1px solid rgba(255,255,255,.14); padding-block: 1.15rem; }
    .wc-rodape-editorial footer[data-ps-regiao="rodape"] > .ps-container-largo > div:first-child { padding-top: 0; }
    .wc-rodape-editorial footer[data-ps-regiao="rodape"] [data-rodape-toggle] > span { font-size: .85rem !important; color: #fff !important; }
    .wc-rodape-editorial footer[data-ps-regiao="rodape"] > div.sm\:hidden { border-color: rgba(255,255,255,.14) !important; }
}
/* logo gigante fechando a página (arte do tema: img/locs-logo-branco.webp) */
.wc-rodape-editorial footer[data-ps-regiao="rodape"] > div:last-child { position: relative; border-top: 0 !important; }
.wc-rodape-editorial footer[data-ps-regiao="rodape"] > div:last-child::before {
    content: ''; display: block; width: calc(100% - 2rem); max-width: 78rem; margin-inline: auto; height: clamp(110px, 20vw, 280px);
    background: url('img/locs-logo-branco.webp') center bottom / contain no-repeat; background-origin: content-box;
    border-bottom: 1px solid rgba(255,255,255,.14); padding: 1rem 0 2rem;
}
.wc-rodape-editorial footer[data-ps-regiao="rodape"] > div:last-child > div { padding-top: 1.25rem !important; color: rgba(255,255,255,.55); }

/* ==========================================================================
   PÁGINA DE PRODUTO · variação EDITORIAL (wc_produto_estilo = editorial)
   Galeria grande (foto principal + demais fotos em mosaico 2×), painel de compra fixo ao
   rolar, preço e CTA fortes, selos de confiança, descrição e medidas em cartões lado a lado.
   Só CSS sobre a PDP nativa (+ os selos, inseridos pelo JS a partir de um <template>).
   ========================================================================== */
.wc-selos { display: none; }
.wc-produto-editorial main:has(#ps-comprar-ancora) { padding-top: 1.25rem !important; }
.wc-produto-editorial main:has(#ps-comprar-ancora) > nav:first-child { font-family: var(--wc-rotulo); letter-spacing: .12em; text-transform: uppercase; font-size: .72rem !important; }
/* Breadcrumb das páginas de conteúdo (Sobre nós, Trocas e devoluções, etc, 2026-09-30) — mesma
receita do breadcrumb da PDP acima, pra não destoar (achado real do Ricardo: "Início / Óculos
Locs #203" tinha um estilo bonito, "Início / Trocas e devoluções" ficava com a fonte/tamanho
padrão da plataforma, sem nada do tema). Sem `.wc-produto-editorial`/`:has()` aqui — a classe
`.ps-pagina-breadcrumb` (pagina.blade.php) já é o gancho específico, nenhum outro breadcrumb da
plataforma tem essa classe. */
.ps-pagina-breadcrumb { font-family: var(--wc-rotulo); letter-spacing: .12em; text-transform: uppercase; font-size: .72rem !important; }
/* Distância do topo (2026-09-30, mesmo achado do Ricardo, 2ª rodada) — "Trocas e devoluções" é
"conteúdo avançado" (tem <style> próprio, ver PaginaConteudo::ehConteudoAvancado()), e
`body:has(.ps-conteudo-avancado) main{padding-top:0}` (linha 388) zera o respiro do `<main>` DE
PROPÓSITO nessas páginas — é o que deixa o herói/banner do HTML customizado colado no topo, sem
faixa branca acima. Zerar isso também jogou o breadcrumb pra cima do topo, sem o mesmo respiro de
20px que a PDP tem (`.wc-produto-editorial main:has(#ps-comprar-ancora){padding-top:1.25rem}`,
regra acima). Como o breadcrumb é o PRIMEIRO elemento (antes do wrapper de conteúdo avançado),
dá pra devolver o respiro só nele, sem reabrir a faixa branca que a página avançada não quer.
Escopado a `body:has(.ps-conteudo-avancado)` — página de conteúdo SEM HTML avançado (Markdown
simples) não perde nada aqui, o `<main>` dela já tem o `py-8` padrão intacto. */
/* `padding-top`, não `margin-top` (achado real testando ao vivo): o breadcrumb é o PRIMEIRO
filho de `<main>`, que não tem padding próprio nesse ramo — `margin-top` no filho colapsa com o
pai (clássico "margin collapse" de CSS) e não abre respiro nenhum; `padding` nunca colapsa. */
body:has(.ps-conteudo-avancado) .ps-pagina-breadcrumb { padding-top: 1.25rem; }

/* galeria */
.wc-produto-editorial main:has(#ps-comprar-ancora) .aspect-square:has(#ps-galeria-atual) { border: 0 !important; }
@media (max-width: 639px) {
    /* Tamanho da miniatura + espaço vazio até a linha do "COR:" (2026-09-27, pedido do Ricardo:
    "fotos extras ficam muito pequenas... existe uma linha entre elas e a função COR, ficando
    espaço vazio que poderia ser foto"). Medido ao vivo ANTES de mexer: 58px de miniatura, 40px
    de espaço vazio até a borda de `#ps-selecionar-variacao` — achado real no processo: esse
    espaço é 100% MARGEM (mb-4=16px da própria view nativa nesta linha + margin-top:1.5rem=24px
    daquela borda, ver regra `#ps-selecionar-variacao` mais abaixo no arquivo), NUNCA proporcional
    ao tamanho da miniatura — só aumentar a foto (1ª tentativa) deixa a miniatura maior mas NÃO
    reduz esse espaço nem 1px, porque margem não "encolhe" quando o conteúdo cresce. A correção de
    verdade precisa dos DOIS lados: aqui reduz o `margin-bottom` deste wrapper (16px → 4px) E,
    junto da regra de `#ps-selecionar-variacao` (mais abaixo, também dentro de um
    `@media max-width:639px` — precisa vir DEPOIS da regra sem media query no arquivo pra vencer
    no cascade), reduz o `margin-top` dela (24px → 10px). Total: 40px → 14px, photo maior (58→88)
    ocupando o espaço que sobrava — "quase encostar" sem ficar colado de verdade (0px pareceria
    quebrado). */
    .wc-produto-editorial main:has(#ps-comprar-ancora) > .grid > div:has(> div > .aspect-square #ps-galeria-atual) {
        margin-inline: -1rem; margin-bottom: .25rem !important;
    }
    .wc-produto-editorial main:has(#ps-comprar-ancora) #ps-galeria-miniaturas {
        padding-inline: 1rem;
        /* Toque pra arrastar (2026-09-27, pedido do Ricardo: "quando tiver mais de 5 [fotos],
        permitir carrossel sensível ao toque") — a faixa já é `overflow-x-auto` nativo
        (produto.blade.php), então arrastar já FUNCIONA sem JS; os 3 itens abaixo só deixam a
        experiência com cara de carrossel de verdade: sem barra de rolagem feia por cima da
        régua de fotos, `scroll-snap` faz o dedo "encaixar" numa foto de cada vez ao soltar
        (`proximity`, não `mandatory` — mandatory forçaria ir até o fim do snap mesmo num
        arrasto curto, ruim pra quem só quer espiar um pedaço), `-webkit-overflow-scrolling`
        dá o momentum nativo do iOS Safari em vez do scroll "seco" padrão dele. */
        scroll-snap-type: x proximity;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }
    .wc-produto-editorial main:has(#ps-comprar-ancora) #ps-galeria-miniaturas::-webkit-scrollbar { display: none; }
    .wc-produto-editorial [data-galeria-thumb] {
        width: 88px !important; height: 88px !important; border-width: 0 0 2px !important;
        scroll-snap-align: start;
    }
}
@media (min-width: 1024px) {
    .wc-produto-editorial main:has(#ps-comprar-ancora) > .grid { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr) !important; column-gap: 4rem !important; align-items: start; }
    .wc-produto-editorial main:has(#ps-comprar-ancora) div:has(> .aspect-square #ps-galeria-atual) { flex-direction: column-reverse !important; gap: .75rem !important; }
    /* #ps-galeria-miniaturas por ID, não `> div:first-child` — produto com 1 foto só (ex.: Óculos
    Locs #187) não renderiza esse div (`@if(count($produto->imagens ?? []) > 1)` em
    produto.blade.php), e o `:first-child` antigo passava a casar a própria FOTO PRINCIPAL nesse
    caso (ela vira o primeiro/único filho da linha), aplicando nela o grid de 2 colunas pensado só
    pras miniaturas — cortava a foto pela metade. Bug real achado pelo Ricardo, 2026-09-27. */
    .wc-produto-editorial main:has(#ps-comprar-ancora) #ps-galeria-miniaturas {
        width: auto !important; display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem !important; overflow: visible !important;
    }
    .wc-produto-editorial [data-galeria-thumb] { width: auto !important; height: auto !important; aspect-ratio: 1; border-width: 0 !important; background: var(--wc-nevoa); cursor: zoom-in; }
    /* Esconde a miniatura da foto que já está grande no visor principal — não a 1ª sempre
    (achado real, 2026-09-25): antes era `:first-child`, fixo na foto 0 pra sempre, então depois
    de clicar em qualquer outra miniatura a foto original ficava sem NENHUMA miniatura pra
    voltar (só dava pra ver de novo recarregando a página). `aria-current` é mantido em sincronia
    pelo `galeria-produto.js` nativo a cada clique — a miniatura que "sai" muda junto. */
    .wc-produto-editorial [data-galeria-thumb][aria-current="true"] { display: none; }
    .wc-produto-editorial [data-galeria-thumb] img { mix-blend-mode: multiply; transition: transform .6s var(--wc-ease); }
    .wc-produto-editorial [data-galeria-thumb]:hover img { transform: scale(1.04); }
    .wc-produto-editorial main:has(#ps-comprar-ancora) .aspect-square:has(#ps-galeria-atual) img { mix-blend-mode: multiply; }
    /* painel de compra fixo ao rolar */
    .wc-produto-editorial main:has(#ps-comprar-ancora) > .grid > div:has(h1) { position: sticky; top: 110px; padding-top: .5rem; }
}

/* título, estrelas, marca */
.wc-produto-editorial main:has(#ps-comprar-ancora) h1 { font-family: var(--wc-display) !important; font-weight: 800 !important; text-transform: uppercase; letter-spacing: .005em; font-size: clamp(2.3rem, 4.4vw, 3.7rem) !important; line-height: .92 !important; }
.wc-produto-editorial main:has(#ps-comprar-ancora) [data-favoritar-produto] { border-radius: 0 !important; width: 44px !important; height: 44px !important; border-color: var(--wc-linha) !important; color: var(--wc-tinta) !important; }
.wc-produto-editorial main:has(#ps-comprar-ancora) div:has(> h1) + div { margin-top: .9rem !important; }
.wc-produto-editorial main:has(#ps-comprar-ancora) div:has(> h1) + div > p { font-family: var(--wc-rotulo); font-weight: 700; letter-spacing: .2em; text-transform: uppercase; font-size: .72rem !important; color: var(--wc-azul) !important; }

/* preço + Pix */
.wc-produto-editorial #ps-comprar-ancora, .wc-produto-editorial [data-variacao-preco] { margin-top: 1.5rem !important; }
.wc-produto-editorial [data-preco-atual] > p.text-3xl { font-family: var(--wc-display); font-weight: 800 !important; font-size: clamp(2.3rem, 3.6vw, 2.9rem) !important; line-height: 1; letter-spacing: .01em; }
.wc-produto-editorial [data-preco-atual] > .rounded-lg { border-radius: 0 !important; border: 0 !important; border-left: 3px solid var(--wc-azul) !important; background: var(--wc-nevoa) !important; }
.wc-produto-editorial [data-preco-atual] .bg-emerald-600 { background: var(--wc-azul) !important; border-radius: 0 !important; letter-spacing: .08em; }
.wc-produto-editorial [data-abrir-pagamento] { font-family: var(--wc-rotulo); letter-spacing: .04em; }

/* variações (chips de cor) */
.wc-produto-editorial #ps-selecionar-variacao { margin-top: 1.5rem !important; padding-top: 1.25rem; border-top: 1px solid var(--wc-linha); }
/* Metade 2/2 do ajuste de espaço vazio até aqui no celular — ver comentário completo junto da
miniatura da galeria (bloco `@media max-width:639px` mais acima). PRECISA vir depois da regra
sem media query logo acima (mesma especificidade + !important dos dois lados — quem "ganha" é
só quem vem depois no arquivo). */
@media (max-width: 639px) {
    .wc-produto-editorial #ps-selecionar-variacao { margin-top: .625rem !important; }
}
.wc-produto-editorial #ps-selecionar-variacao [data-eixo-rotulo] { width: 100%; font-family: var(--wc-rotulo); letter-spacing: .14em; text-transform: uppercase; font-size: .75rem !important; }
.wc-produto-editorial #ps-selecionar-variacao [data-variacao-chip-pdp][data-variacao-cor] { width: 42px !important; height: 42px !important; }
.wc-produto-editorial #ps-selecionar-variacao [data-variacao-chip-pdp]:not([data-variacao-cor]) { border-radius: 0 !important; font-family: var(--wc-rotulo); font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }

/* quantidade + comprar: bloco único de 56px */
.wc-produto-editorial #ps-comprar-ancora > .flex:has([data-adicionar-carrinho]) { gap: 0 !important; margin-top: 1.5rem !important; align-items: stretch !important; }
.wc-produto-editorial #ps-comprar-ancora [data-quantidade] { width: 72px !important; min-height: 56px; text-align: center; font-family: var(--wc-rotulo); font-weight: 700; font-size: 1.05rem !important; border: 1.5px solid var(--wc-tinta) !important; border-right: 0 !important; }
.wc-produto-editorial #ps-comprar-ancora [data-adicionar-carrinho] { min-height: 56px; font-size: 1rem !important; letter-spacing: .18em; transition: background .25s !important; }
.wc-produto-editorial #ps-comprar-ancora [data-adicionar-carrinho]:hover { background: var(--wc-azul) !important; }

/* selos de confiança (template do tema → inseridos abaixo do Comprar) */
.wc-produto-editorial .wc-selos { display: grid; list-style: none; margin: 1.1rem 0 0; padding: 0; gap: .55rem; }
.wc-produto-editorial .wc-selos li { display: flex; align-items: center; gap: .6rem; font-family: var(--wc-rotulo); font-weight: 500; font-size: .95rem; color: var(--wc-tinta); }
.wc-produto-editorial .wc-selos li::before {
    content: ''; width: 20px; height: 20px; flex: none; background: var(--wc-azul);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.5 16.2 5.3 12l-1.4 1.4 5.6 5.6 11-11-1.4-1.4z'/%3E%3C/svg%3E") center / contain no-repeat;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.5 16.2 5.3 12l-1.4 1.4 5.6 5.6 11-11-1.4-1.4z'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* formas de pagamento e CEP: mais discretos */
.wc-produto-editorial main:has(#ps-comprar-ancora) .rounded-lg.bg-neutral-50:has(img[src*="/pagamento/"]) { background: transparent !important; border-width: 1px 0 0 !important; padding-inline: 0 !important; margin-top: 1.5rem !important; }
.wc-produto-editorial main:has(#ps-comprar-ancora) .rounded-lg.bg-neutral-50:has(img[src*="/pagamento/"]) .rounded-full { display: none; }
.wc-produto-editorial main:has(#ps-comprar-ancora) .rounded-lg.bg-neutral-50:has(img[src*="/pagamento/"]) p { font-family: var(--wc-rotulo); letter-spacing: .14em; }
.wc-produto-editorial #ps-preco-cep { border-width: 1px 0 !important; padding-inline: 0 !important; padding-left: 0 !important; }
.wc-produto-editorial #ps-preco-cep label { font-family: var(--wc-rotulo); letter-spacing: .14em; text-transform: uppercase; font-size: .72rem !important; }
.wc-produto-editorial #ps-preco-cep input { flex: 1 1 auto; width: auto !important; min-height: 44px; }
.wc-produto-editorial #ps-preco-cep button { min-height: 44px; background: var(--wc-tinta); color: #fff; border-color: var(--wc-tinta) !important; font-family: var(--wc-rotulo); font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }

/* descrição + medidas: cartões lado a lado (2026-09-26, achado real do Ricardo — a seção
"Descrição" tinha virado largura total sozinha, sem avisar: o seletor antigo
(`:has(> p.whitespace-pre-line)`) combinava com a estrutura ANTIGA de texto puro; a troca pro
editor WYSIWYG (mesma sessão) trocou o conteúdo pra HTML de verdade dentro de um `<div>`, sem
NENHUM `<p class="whitespace-pre-line">` — o seletor parou de bater com QUALQUER coisa, e a
seção caiu no fallback `grid-column: 1/-1` da regra genérica acima. `#ps-secao-descricao`/
`#ps-secao-medidas` (ids fixos, ver produto.blade.php) não dependem de qual marcação o
conteúdo usa por dentro — imunes a essa classe de bug de novo, mesmo princípio já usado em
`#ps-galeria-produto` mais acima neste arquivo. Troquei TAMBÉM o `:has(> .grid > div > p + p)`
que Medidas usava (nunca quebrou sozinho, mas precisou sair por um motivo à parte: pra
resolver "Descrição sem Medidas ao lado deve virar largura total" eu precisava de um seletor
tipo `:has(+ section:has(...))" — e `:has()` dentro de `:has()` é INVÁLIDO pela spec (testado
ao vivo: o navegador descarta a regra inteira em silêncio, `matches()` lança
"not a valid selector", sem erro nenhum visível em produção). Com os 2 ids fixos, o "tem
Medidas depois?" vira `:has(+ #ps-secao-medidas)` — só 1 nível de `:has()`, sem essa
armadilha. */
@media (min-width: 1024px) {
    .wc-produto-editorial main:has(#ps-comprar-ancora) { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 1rem; align-content: start; }
    .wc-produto-editorial main:has(#ps-comprar-ancora) > * { grid-column: 1 / -1; }
    .wc-produto-editorial main:has(#ps-comprar-ancora) > #ps-secao-descricao,
    .wc-produto-editorial main:has(#ps-comprar-ancora) > #ps-secao-medidas { grid-column: auto; }
    /* Sem Medidas (produto sem `meta_dados.medidas` preenchido) — Descrição fica sozinha,
    volta a ocupar a largura toda em vez de sobrar um vão vazio ao lado. Especificidade MAIOR
    que a regra de cima (o `:not(:has(...))` soma mais um id à conta) garante que esta vence
    quando aplicável, sem depender de ordem no arquivo. */
    .wc-produto-editorial main:has(#ps-comprar-ancora) > #ps-secao-descricao:not(:has(+ #ps-secao-medidas)) { grid-column: 1 / -1; }
}
.wc-produto-editorial main:has(#ps-comprar-ancora) > #ps-secao-descricao,
.wc-produto-editorial main:has(#ps-comprar-ancora) > #ps-secao-medidas {
    border: 0 !important; background: var(--wc-nevoa); padding: 2rem 1.5rem !important; margin-top: 1rem !important;
}
@media (min-width: 640px) {
    .wc-produto-editorial main:has(#ps-comprar-ancora) > #ps-secao-descricao,
    .wc-produto-editorial main:has(#ps-comprar-ancora) > #ps-secao-medidas { padding: 2.75rem 2.5rem !important; }
    .wc-produto-editorial main:has(#ps-comprar-ancora) > .grid + section { margin-top: 4.5rem !important; }
}
.wc-produto-editorial main:has(#ps-comprar-ancora) > #ps-secao-descricao > div > p { font-size: 1.05rem !important; line-height: 1.75; color: #33343a !important; }
.wc-produto-editorial main:has(#ps-comprar-ancora) > #ps-secao-medidas > .grid { grid-template-columns: 1fr !important; gap: 0 !important; }
.wc-produto-editorial main:has(#ps-comprar-ancora) > #ps-secao-medidas > .grid > div {
    display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; text-align: left !important; border: 0 !important; border-bottom: 1px solid #d9d9d5 !important; padding: 1rem 0 !important;
}
.wc-produto-editorial main:has(#ps-comprar-ancora) > #ps-secao-medidas > .grid > div > p:first-child { font-family: var(--wc-rotulo); letter-spacing: .14em; text-transform: uppercase; font-size: .78rem !important; color: var(--wc-cinza) !important; }
.wc-produto-editorial main:has(#ps-comprar-ancora) > #ps-secao-medidas > .grid > div > p + p { margin: 0 !important; font-family: var(--wc-display); font-weight: 800 !important; font-size: 1.9rem !important; line-height: 1; }
.wc-produto-editorial #ps-compre-tambem, .wc-produto-editorial [data-avaliacoes-secao] { border-top: 0 !important; margin-top: 4.5rem !important; }
.wc-produto-editorial [data-avaliacoes-secao] > h2 { font-size: clamp(2.2rem, 5vw, 3.4rem) !important; }
.wc-produto-editorial #ps-barra-fixa-mobile [data-adicionar-carrinho] { border-radius: 0 !important; min-height: 46px; padding-inline: 1.4rem !important; }
.wc-produto-editorial #ps-barra-fixa-mobile img { border-radius: 0 !important; background: var(--wc-nevoa); mix-blend-mode: multiply; }
@media (min-width: 640px) { .wc-sobre-fecho { margin-bottom: 6rem; } }

/* PDP editorial · Medidas interativas (2026-09-26, substitui o desenho cotado A/B/C + régua
fita — pedido do Ricardo, visual aprovado externamente e adaptado de um pacote pronto
Blade+CSS+JS vanilla). Prefixo `wc-md-*`/`wc-medida*` (não o `ps-mi__*` original do pacote) pra
ficar consistente com o resto do arquivo. Cores do SVG mantidas como no pacote (cinzas neutros
de armação/lente) — só o destaque (régua, valor, seleção) usa `--wc-azul`, o token de cor do
tema, no lugar do verde genérico do pacote. */
.wc-produto-editorial .wc-medidas-intro { margin: .5rem 0 1.5rem; color: var(--wc-cinza); font-size: 1rem; }
.wc-produto-editorial .wc-medidas-opcoes { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(135px, 100%), 1fr)); gap: 0; margin: 0; padding: 0; }
.wc-produto-editorial .wc-medida-escolha {
    appearance: none; background: transparent; border: 0; border-bottom: 1px solid var(--wc-linha); padding: 1rem .6rem;
    color: var(--wc-cinza); font: inherit; text-align: center; min-height: 76px; overflow-wrap: anywhere;
}
.wc-produto-editorial button.wc-medida-escolha { cursor: pointer; }
.wc-produto-editorial .wc-medida-escolha span, .wc-produto-editorial .wc-medida-escolha strong { display: block; }
.wc-produto-editorial .wc-medida-escolha span { font-family: var(--wc-rotulo); letter-spacing: .1em; text-transform: uppercase; font-size: .78rem; }
.wc-produto-editorial .wc-medida-escolha strong { margin-top: .35rem; font-family: var(--wc-display); font-weight: 800; font-size: 1.4rem; color: var(--wc-tinta); line-height: 1.1; font-variant-numeric: tabular-nums; }
.wc-produto-editorial .wc-medida-escolha[aria-pressed="true"] { box-shadow: inset 0 -3px var(--wc-azul); }
.wc-produto-editorial .wc-medida-escolha[aria-pressed="true"] span { font-weight: 700; color: var(--wc-tinta); }
.wc-produto-editorial .wc-medida-escolha:focus-visible { outline: 2px solid var(--wc-tinta); outline-offset: -5px; }
@media (hover: hover) { .wc-produto-editorial button.wc-medida-escolha:hover { background: var(--wc-nevoa); } }
.wc-produto-editorial .wc-medidas-cena { position: relative; margin: .5rem auto 0; max-width: 900px; }
.wc-produto-editorial .wc-medidas-svg { width: 100%; height: auto; display: block; overflow: visible; color: var(--wc-azul); }
.wc-produto-editorial .wc-md-frame { fill: #858683; stroke: #434642; stroke-width: 2; stroke-linejoin: round; }
.wc-produto-editorial .wc-md-lens { fill: #b5b6b3; stroke: #555853; stroke-width: 1.7; }
.wc-produto-editorial .wc-md-rear { fill: #9d9e9b; stroke: #555853; stroke-width: 1.7; stroke-linejoin: round; }
.wc-produto-editorial .wc-md-detail { fill: none; stroke: #727670; stroke-width: 1.8; }
.wc-produto-editorial .wc-md-dimension { fill: none; stroke: currentColor; stroke-width: 1.7; }
.wc-produto-editorial .wc-md-extension { stroke-dasharray: 5 5; opacity: .75; }
.wc-produto-editorial .wc-md-ruler { stroke: var(--wc-cinza); stroke-width: 1; }
.wc-produto-editorial .wc-medida-valor {
    position: absolute; top: 75.64%; left: 50%; transform: translate(-50%, -50%); padding: .2rem .75rem; background: var(--wc-papel);
    color: var(--wc-azul); font-family: var(--wc-display); font-weight: 800; font-size: clamp(1.05rem, 2.5vw, 1.55rem); white-space: nowrap; border-radius: 3px;
}
.wc-produto-editorial [data-active-parte="haste"] .wc-medida-valor { left: 55.45%; }
.wc-produto-editorial [data-active-parte="altura"] .wc-medida-valor { left: 0; top: 9%; transform: none; }
.wc-produto-editorial .wc-medidas-descricao { margin: 0 auto 1.1rem; text-align: center; font-size: .9rem; line-height: 1.5; color: var(--wc-cinza); max-width: 60ch; }
.wc-produto-editorial .wc-medidas-aviso { margin: 0; text-align: center; color: var(--wc-cinza); font-size: .85rem; line-height: 1.6; }
.wc-produto-editorial .wc-medidas-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
@media (prefers-reduced-motion: no-preference) {
    .wc-produto-editorial .wc-md-dimension { animation: wc-medida-entra .2s ease-out; }
    @keyframes wc-medida-entra { from { opacity: .4; transform: translateY(3px); } to { opacity: 1; transform: translateY(0); } }
}
@media (max-width: 480px) {
    /* Robustecido (2026-09-29, achado do Ricardo — clique em "largura" as vezes nao
    respondia no celular real, nunca reproduzido em teste automatizado, mas o :has() abaixo
    era a unica dependencia fragil real encontrada no componente): a regra antiga so virava 3
    colunas quando o navegador suporta :has() E o grupo tem EXATAMENTE 3 filhos — qualquer um
    dos dois faltando (navegador sem :has(), ou produto com 2 ou 4 medidas reconhecidas)
    silenciosamente caia pra 2 colunas, deixando o ultimo item sozinho numa linha estranha.
    auto-fit com minimo pequeno se comporta igual ao desktop (linha ~1175), sempre cabe 3
    colunas iguais num celular de verdade, sem depender de contar filho nenhum. */
    /* Mesmo padrao ja usado no desktop (linha ~1175: minmax(min(135px,100%),1fr)), so com um
    minimo bem menor calibrado pro menor telefone real ainda em uso (~320px de viewport, ~240px
    de largura util depois do padding da pagina — confirmado ao vivo): 3 x 70px = 210px cabe
    dentro de 240px com folga, sempre 3 colunas reais e iguais, sem depender de contar filho
    nenhum. (minmax(0,...) foi testado e descartado — cria dezenas de trilhas fantasma de 0px
    que o navegador aceita sem erro, mas é um comportamento mais fragil de se inspecionar/
    depurar depois do que um minimo real em px, mesmo funcionando visualmente igual aqui.) */
    .wc-produto-editorial .wc-medidas-opcoes { grid-template-columns: repeat(auto-fit, minmax(min(70px, 100%), 1fr)); }
    .wc-produto-editorial .wc-medida-escolha { padding: .75rem .3rem; }
    .wc-produto-editorial .wc-medida-escolha span { font-size: .68rem; }
    .wc-produto-editorial .wc-medida-escolha strong { font-size: 1.05rem; }
}
@media (forced-colors: active) {
    .wc-produto-editorial .wc-md-frame, .wc-produto-editorial .wc-md-rear, .wc-produto-editorial .wc-md-lens { fill: Canvas; stroke: CanvasText; }
    .wc-produto-editorial .wc-md-dimension, .wc-produto-editorial .wc-md-ruler { color: CanvasText; }
    .wc-produto-editorial .wc-medida-escolha[aria-pressed="true"] { border-bottom: 3px solid Highlight; }
}
@media (min-width: 1024px) { .wc-produto-editorial main:has(#ps-comprar-ancora) > #ps-secao-descricao { align-self: start; } }

/* ==========================================================================
   MENU DO CELULAR (#ps-menu-mobile) — branco, títulos em etiqueta com filete,
   categorias grandes numeradas, subcategorias em fichas, área do cliente em 3 blocos.
   ========================================================================== */
#ps-menu-mobile { background: #fff !important; color: var(--wc-tinta) !important; width: min(88vw, 370px) !important; max-width: none !important; padding: 0 !important; box-shadow: 0 0 60px rgba(0,0,0,.35) !important; }
#ps-menu-mobile-backdrop { background: rgba(8,12,30,.55) !important; backdrop-filter: blur(2px); }
#ps-menu-mobile .wc-mm-topo { display: flex; align-items: center; min-height: 68px; padding: .75rem 1.25rem; border-bottom: 1px solid var(--wc-linha); }
#ps-menu-mobile .wc-mm-topo img { height: 38px; width: auto; }
#ps-menu-fechar { position: absolute; top: 12px; right: 12px; border-radius: 0 !important; width: 44px; height: 44px; display: grid; place-items: center; border: 1.5px solid var(--wc-tinta) !important; transition: background .2s, color .2s; }
#ps-menu-fechar:hover, #ps-menu-fechar:focus-visible { background: var(--wc-tinta) !important; color: #fff; }
/* títulos de seção: etiqueta preta com quadrado azul + filete até a borda */
#ps-menu-mobile > div > h2 {
    display: flex !important; align-items: center; gap: .75rem; border: 0 !important; padding: 0 1.25rem !important; opacity: 1 !important;
    font-family: var(--wc-rotulo) !important; font-weight: 700 !important; font-size: .74rem !important; letter-spacing: .24em !important; color: var(--wc-tinta);
}
#ps-menu-mobile > div > h2 > svg { display: none; }
#ps-menu-mobile > div > h2::before { content: ''; width: 9px; height: 9px; flex: none; background: var(--wc-azul); }
#ps-menu-mobile > div > h2::after { content: ''; flex: 1; height: 1.5px; background: var(--wc-tinta); }
#ps-menu-mobile > div:not(.wc-mm-topo):not(.wc-mm-fim) { margin-top: 0 !important; padding: 1.25rem 0 .25rem; }
/* categorias */
#ps-menu-mobile > div > .mt-2 { counter-reset: wc-cat; margin-top: .9rem !important; border-top: 1px solid var(--wc-linha); }
#ps-menu-mobile > div > .mt-2 > div, #ps-menu-mobile > div > .mt-2 > a { border-color: var(--wc-linha) !important; }
#ps-menu-mobile .ps-menu-categoria-toggle, #ps-menu-mobile > div > .mt-2 > div > a, #ps-menu-mobile > div > .mt-2 > a {
    position: relative; display: flex !important; align-items: center; gap: .8rem; padding: .95rem 1.25rem !important;
    font-family: var(--wc-display) !important; font-weight: 800 !important; font-size: 1.55rem !important; line-height: 1; letter-spacing: .01em !important; color: var(--wc-tinta);
    transition: background .22s, color .22s, padding .25s var(--wc-ease);
}
/* Numeração 01/02/03/04 removida (2026-09-25, pedido do Ricardo — não fazia sentido pro
menu de categorias). ::before mantido só como seletor morto pra não desmontar a regra de
:hover::before logo abaixo (que também muda a cor no hover); sem `content`, não gera caixa. */
#ps-menu-mobile .ps-menu-categoria-toggle::before, #ps-menu-mobile > div > .mt-2 > div > a::before, #ps-menu-mobile > div > .mt-2 > a::before {
    content: none;
}
#ps-menu-mobile .ps-menu-categoria-toggle svg { margin-left: auto; width: 20px !important; height: 20px !important; }
#ps-menu-mobile .ps-menu-categoria-toggle:hover, #ps-menu-mobile .ps-menu-categoria-toggle:focus-visible, #ps-menu-mobile .ps-menu-categoria-toggle:has(svg.rotate-180),
#ps-menu-mobile > div > .mt-2 > div > a:hover, #ps-menu-mobile > div > .mt-2 > a:hover,
#ps-menu-mobile > div > .mt-2 > div > a:focus-visible, #ps-menu-mobile > div > .mt-2 > a:focus-visible {
    background: var(--wc-tinta); color: #fff; padding-left: 1.6rem !important; outline: 0;
}
#ps-menu-mobile .ps-menu-categoria-toggle:hover::before, #ps-menu-mobile .ps-menu-categoria-toggle:has(svg.rotate-180)::before,
#ps-menu-mobile > div > .mt-2 a:hover::before, #ps-menu-mobile > div > .mt-2 a:focus-visible::before { color: #8fa2ff; }
/* subcategorias em fichas 2 colunas */
#ps-menu-mobile .ps-menu-submenu:not(.hidden) { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .45rem; padding: .9rem 1.25rem 1.1rem !important; background: var(--wc-nevoa); }
#ps-menu-mobile .ps-menu-submenu > * { border: 0 !important; }
#ps-menu-mobile .ps-menu-submenu a {
    display: flex !important; align-items: center; min-height: 44px; padding: .55rem .7rem !important; background: #fff; border: 1px solid var(--wc-linha) !important;
    font-family: var(--wc-rotulo); font-weight: 700; font-size: .78rem !important; letter-spacing: .08em !important; line-height: 1.15; opacity: 1 !important; transition: background .2s, color .2s, border-color .2s;
}
#ps-menu-mobile .ps-menu-submenu a:hover, #ps-menu-mobile .ps-menu-submenu a:focus-visible { background: var(--wc-azul) !important; border-color: var(--wc-azul) !important; color: #fff !important; outline: 0; }
/* área do cliente: 3 blocos */
#ps-menu-mobile > div > .mt-3 { display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .5rem; padding: 0 1.25rem; margin-top: .9rem !important; }
#ps-menu-mobile > div > .mt-3 > * { margin: 0 !important; }
#ps-menu-mobile > div > .mt-3 > a {
    display: grid !important; justify-items: center; align-content: center; gap: .5rem; min-height: 88px; padding: .7rem .35rem !important; text-align: center; border-radius: 0 !important; border: 1.5px solid var(--wc-tinta);
    font-family: var(--wc-rotulo); font-weight: 700; font-size: .72rem !important; letter-spacing: .08em; text-transform: uppercase; line-height: 1.15; transition: background .2s, color .2s;
}
#ps-menu-mobile > div > .mt-3 > a svg { width: 24px !important; height: 24px !important; }
#ps-menu-mobile > div > .mt-3 > a:hover, #ps-menu-mobile > div > .mt-3 > a:focus-visible { background: var(--wc-tinta) !important; color: #fff; outline: 0; }
/* faixa de bandana no fim */
#ps-menu-mobile .wc-mm-fim { position: relative; margin-top: auto; padding: 1.4rem 1.25rem; display: grid; gap: .1rem; color: #fff; background: #0b1c49 url('img/bandana-720.webp') center 30% / cover; isolation: isolate; }
#ps-menu-mobile .wc-mm-fim::before { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(6,14,38,.85), rgba(6,14,38,.35)); }
#ps-menu-mobile .wc-mm-fim span:first-child { font-family: var(--wc-display); font-weight: 800; font-size: 1.6rem; line-height: 1; text-transform: uppercase; }
#ps-menu-mobile .wc-mm-fim span:last-child { font-family: var(--wc-rotulo); font-weight: 700; font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; opacity: .85; }
#ps-menu-mobile > div:has(> .mt-3) { padding-bottom: 1.5rem !important; }
/* com o menu aberto, o botão flutuante do chat não cobre o painel */
body:has(#ps-menu-mobile:not(.ps-menu-fechado)) #ps-chat-abrir { opacity: 0; pointer-events: none; }

/* Vitrine: "Ver todos os modelos" com destaque */
.wc-ver-todos { min-height: 56px; padding: 1rem 2.4rem; gap: .75rem; font-size: .95rem; letter-spacing: .18em; }
.wc-ver-todos svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: transform .3s var(--wc-ease); }
.wc-ver-todos:hover { background: var(--wc-azul) !important; border-color: var(--wc-azul) !important; color: #fff !important; }
.wc-ver-todos:hover svg { transform: translateX(5px); }
@media (max-width: 639px) { .wc-ver-todos { width: 100%; } }

/* História com foto: celular = foto no topo (recorte quadrado no rosto) que funde no preto;
   desktop = foto sangrando à esquerda, texto à direita. */
.wc-historia-com-foto { padding: 0 !important; display: grid; }
.wc-historia-foto { position: relative; margin: 0; aspect-ratio: 1 / 1; overflow: hidden; }
.wc-historia-foto img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 20%; }
.wc-js .wc-historia-foto img { transform: scale(1.06); transition: transform 2.2s var(--wc-ease); }
.wc-js .wc-historia-com-foto:has(.wc-revelar.is-visivel) .wc-historia-foto img { transform: none; }
.wc-historia-foto::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(14,14,14,0) 50%, var(--wc-tinta) 98%); }
.wc-historia-com-foto .wc-historia-miolo { width: 100%; margin-top: -2.5rem; padding: 0 1rem 5.5rem; }
@media (min-width: 640px) and (max-width: 1023px) {
    .wc-historia-foto { aspect-ratio: 16 / 11; }
    .wc-historia-foto img { object-position: 50% 24%; }
    .wc-historia-com-foto .wc-historia-miolo { padding: 0 3rem 7rem; }
}
@media (min-width: 1024px) {
    .wc-historia-com-foto { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); min-height: 660px; }
    .wc-historia-foto { aspect-ratio: auto; }
    .wc-historia-foto img { object-position: 50% 30%; }
    .wc-historia-foto::after { background: linear-gradient(90deg, rgba(14,14,14,0) 62%, var(--wc-tinta) 100%); }
    .wc-historia-com-foto .wc-historia-miolo { margin: 0; max-width: 46rem; align-content: center; padding: 6rem 3.5rem 8rem; }
    .wc-historia-com-foto .wc-historia-titulo { font-size: clamp(3.2rem, 5vw, 5.4rem); }
}

/* ==========================================================================
   BLOG (estilo nativo "editorial") — sem cabeçalho gigante; filtro de categorias em fichas,
   destaque com título sobre a foto, demais posts em grade 2×, post com leitura confortável.
   ========================================================================== */
/* cabeçalho "Blog da loja / Histórias…" fica só pra leitores de tela e SEO (o h1 continua lá) */
.ps-blog-editorial > div:first-child:has(> h1) { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; padding: 0 !important; border: 0 !important; }
body:has(.ps-blog-editorial) main { padding-top: 0 !important; }
/* fichas de categoria */
.ps-blog-editorial > nav.border-b { border-color: var(--wc-linha) !important; padding-block: 1rem !important; }
.ps-blog-editorial > nav.border-b > div { max-width: 72rem !important; justify-content: flex-start !important; gap: .5rem !important; }
.ps-blog-editorial > nav.border-b > div::before { content: 'Blog'; margin-right: .75rem; font-family: var(--wc-display); font-weight: 800; font-size: 1.9rem; line-height: 1; letter-spacing: .01em; color: var(--wc-tinta); }
.ps-blog-editorial > nav.border-b a { display: inline-flex; align-items: center; min-height: 38px; padding: .45rem .95rem; border: 1.5px solid var(--wc-linha); color: var(--wc-tinta) !important; font-family: var(--wc-rotulo); letter-spacing: .12em; transition: background .2s, border-color .2s, color .2s; }
.ps-blog-editorial > nav.border-b a:hover { border-color: var(--wc-tinta); }
.ps-blog-editorial > nav.border-b a.text-\[var\(--loja-cor-primaria\)\] { background: var(--wc-tinta); border-color: var(--wc-tinta); color: #fff !important; }
.ps-blog-editorial > .grid { padding-top: 2.25rem !important; }
/* selo de data: quadrado preto */
.ps-blog-editorial .absolute.rounded-full:has(> span + span) { border-radius: 0 !important; background: var(--wc-tinta) !important; border: 0 !important; box-shadow: none !important; }
.ps-blog-editorial .absolute.rounded-full:has(> span + span) span { color: #fff !important; font-family: var(--wc-rotulo); }
.ps-blog-editorial .absolute.rounded-full:has(> span + span) span:first-child { font-family: var(--wc-display); font-size: 1.35rem !important; font-weight: 800 !important; }
.ps-blog-editorial .absolute.rounded-full:has(> span + span) span:last-child { color: #8fa2ff !important; letter-spacing: .12em; }
.ps-blog-editorial .rounded-xl, .ps-blog-editorial .rounded-lg { border-radius: 0 !important; }
/* post em destaque: título sobre a foto a partir de 768px */
.ps-blog-editorial .min-w-0 > a.group.mb-14 .aspect-\[16\/10\] { background: #111 !important; }
@media (min-width: 768px) {
    .ps-blog-editorial .min-w-0 > a.group.mb-14 { position: relative; overflow: hidden; }
    .ps-blog-editorial .min-w-0 > a.group.mb-14 .relative .absolute { top: 1.5rem; bottom: auto !important; left: 1.5rem !important; }
    .ps-blog-editorial .min-w-0 > a.group.mb-14 > div.mt-10 {
        position: absolute; left: 0; right: 0; bottom: 0; margin: 0 !important; max-width: none !important; padding: 5rem 2.25rem 2.25rem;
        background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.82) 70%);
    }
    .ps-blog-editorial .min-w-0 > a.group.mb-14 > div.mt-10 h2 { color: #fff !important; max-width: 18ch; font-size: clamp(2.2rem, 3.6vw, 3.2rem) !important; }
    .ps-blog-editorial .min-w-0 > a.group.mb-14 > div.mt-10 p:last-child { color: rgba(255,255,255,.85) !important; max-width: 56ch; }
    .ps-blog-editorial .min-w-0 > a.group.mb-14 > div.mt-10 p:first-child { display: inline-block; background: var(--wc-azul); color: #fff !important; padding: .3rem .6rem; letter-spacing: .16em; }
}
.ps-blog-editorial .min-w-0 > a.group h2, .ps-blog-editorial article h2.ps-blog-serif { text-decoration: none !important; }
.ps-blog-editorial a.group:hover h2 { color: var(--wc-azul) !important; }
.ps-blog-editorial .min-w-0 > a.group.mb-14 { margin-bottom: 3rem !important; }
/* demais posts: grade 2× */
.ps-blog-editorial .min-w-0 > .space-y-14 { display: grid; gap: 2.75rem; }
@media (min-width: 640px) { .ps-blog-editorial .min-w-0 > .space-y-14 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 3rem 1.5rem; } }
.ps-blog-editorial .min-w-0 > .space-y-14 > * { margin: 0 !important; border: 0 !important; padding: 0 !important; }
.ps-blog-editorial .min-w-0 > .space-y-14 .relative.mb-8 { margin-bottom: 1.6rem !important; }
.ps-blog-editorial .min-w-0 > .space-y-14 .aspect-\[16\/9\] { aspect-ratio: 4 / 3; background: var(--wc-nevoa) !important; }
.ps-blog-editorial .min-w-0 > .space-y-14 h2 { font-size: 1.65rem !important; }
.ps-blog-editorial .min-w-0 > .space-y-14 span.inline-block { color: var(--wc-tinta) !important; border-bottom: 2px solid var(--wc-azul); padding-bottom: 2px; letter-spacing: .14em !important; }
/* barra lateral */
.ps-blog-editorial aside > div:first-child { border-color: var(--wc-linha) !important; background: var(--wc-nevoa); }
.ps-blog-editorial aside h3 { font-family: var(--wc-rotulo); font-weight: 700 !important; letter-spacing: .2em !important; color: var(--wc-tinta) !important; }
.ps-blog-editorial aside ul { border-color: var(--wc-linha) !important; }

/* ---- página do post ---- */
.ps-blog-editorial > nav:not(.border-b) { font-family: var(--wc-rotulo); font-size: .72rem !important; letter-spacing: .14em; text-transform: uppercase; }
.ps-blog-editorial header > a:first-child { display: inline-block; background: var(--wc-azul); color: #fff !important; padding: .35rem .7rem; letter-spacing: .16em !important; }
.ps-blog-editorial header h1.ps-blog-serif { font-size: clamp(2.4rem, 6vw, 4.4rem) !important; line-height: .92 !important; }
.ps-blog-editorial header .ps-curtir-btn { border-radius: 0 !important; }
.ps-blog-editorial header + .relative { max-width: none !important; margin-top: 2.25rem !important; }
.ps-blog-editorial header + .relative .aspect-\[16\/9\] { background: #111 !important; }
.ps-blog-editorial .ps-blog-prose { font-size: 1.08rem !important; }
.ps-blog-editorial .ps-blog-prose > p:first-child { font-size: 1.28rem; line-height: 1.65; color: var(--wc-tinta); }
.ps-blog-editorial .ps-blog-prose h2 { position: relative; padding-left: 1rem; font-size: clamp(1.8rem, 3.4vw, 2.4rem) !important; margin-top: 2.75rem !important; }
.ps-blog-editorial .ps-blog-prose h2::before { content: ''; position: absolute; left: 0; top: .08em; bottom: .12em; width: 4px; background: var(--wc-azul); }
.ps-blog-editorial .ps-blog-prose blockquote { border-left: 4px solid var(--wc-azul) !important; font-style: normal !important; font-family: var(--wc-display); text-transform: uppercase; font-size: 1.6rem; line-height: 1.1; color: var(--wc-tinta) !important; }
.ps-blog-editorial .ps-blog-prose a { color: var(--wc-azul) !important; text-underline-offset: 3px; }
/* tags em fichas */
.ps-blog-editorial .ps-blog-sans > .border-t > p a { display: inline-block; margin: .2rem .15rem; padding: .3rem .65rem; border: 1px solid var(--wc-linha); color: var(--wc-tinta) !important; font-family: var(--wc-rotulo); font-size: .8rem; letter-spacing: .06em; text-decoration: none !important; }
.ps-blog-editorial .ps-blog-sans > .border-t > p a:hover { background: var(--wc-tinta); color: #fff !important; border-color: var(--wc-tinta); }
.ps-blog-editorial .ps-blog-sans > .border-t > p span.text-neutral-300 { display: none; }
.ps-blog-editorial [aria-label^="Compartilhar"], .ps-blog-editorial [data-copiar-link-post] { border-radius: 0 !important; width: 42px !important; height: 42px !important; }
.ps-blog-editorial h2.ps-blog-serif.text-xl { font-size: 1.9rem !important; }
.ps-blog-editorial [data-comentario-form] input, .ps-blog-editorial [data-comentario-form] textarea { border-radius: 0 !important; min-height: 46px; }
.ps-blog-editorial [data-comentario-form] button[type="submit"] { border-radius: 0 !important; background: var(--wc-tinta) !important; min-height: 48px; padding-inline: 1.6rem !important; font-family: var(--wc-rotulo); letter-spacing: .14em; text-transform: uppercase; }
/* barra de progresso de leitura (JS) */
.wc-leitura { position: fixed; left: 0; top: 0; z-index: 60; height: 3px; width: 100%; background: var(--wc-azul); transform-origin: 0 50%; transform: scaleX(0); pointer-events: none; }
@media (min-width: 1024px) { .wc-historia-com-foto .wc-historia-marca { font-size: clamp(6rem, 11vw, 11.5rem); } }
.ps-blog-editorial > nav.border-b > div { padding-inline: 0; }
@media (min-width: 640px) { .ps-blog-editorial > nav.border-b > div { padding-inline: 1.5rem; } }
@media (min-width: 1024px) { .ps-blog-editorial > nav.border-b > div { padding-inline: 2rem; } }
.ps-blog-editorial aside .rounded-full { border-radius: 0 !important; }
#ps-menu-mobile.ps-menu-fechado { box-shadow: none !important; }
#ps-menu-mobile.ps-menu-fechado { box-shadow: none !important; }
/* "Ver todos os modelos" no fim das subcategorias (JS; link da categoria-mãe) */
#ps-menu-mobile .ps-menu-submenu a.wc-mm-ver-todos {
    grid-column: 1 / -1; justify-content: center; gap: .6rem; min-height: 54px; margin-top: .35rem; background: var(--wc-tinta) !important; border-color: var(--wc-tinta) !important; color: #fff !important;
    font-size: .88rem !important; letter-spacing: .18em !important; text-transform: uppercase;
}
#ps-menu-mobile .ps-menu-submenu a.wc-mm-ver-todos svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: transform .3s var(--wc-ease); }
#ps-menu-mobile .ps-menu-submenu a.wc-mm-ver-todos:hover, #ps-menu-mobile .ps-menu-submenu a.wc-mm-ver-todos:focus-visible { background: var(--wc-azul) !important; border-color: var(--wc-azul) !important; }
#ps-menu-mobile .ps-menu-submenu a.wc-mm-ver-todos:hover svg { transform: translateX(4px); }

/* Instagram no celular: 2 cartões por vez em carrossel (JS troca a cada 5 s) */
.wc-insta-pontos { display: none; }
@media (max-width: 639px) {
    .wc-insta-fotos { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: calc(50% - .3rem); overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; overscroll-behavior-x: contain; }
    .wc-insta-fotos::-webkit-scrollbar { display: none; }
    .wc-insta-fotos > li { scroll-snap-align: start; }
    .wc-insta-fotos > li:nth-child(odd) { scroll-snap-stop: always; }
    .wc-insta-pontos { order: 1; display: flex; justify-content: center; gap: .35rem; margin-top: .75rem; }
    .wc-insta-pontos button { width: 26px; height: 24px; padding: 0; border: 0; background: none; cursor: pointer; position: relative; }
    .wc-insta-pontos button::before { content: ''; position: absolute; left: 0; right: 0; top: 50%; height: 3px; margin-top: -1.5px; background: var(--wc-linha); transition: background .3s; }
    .wc-insta-pontos button[aria-current="true"]::before { background: var(--wc-tinta); }
}

/* Rodapé editorial no desktop: logo menor, logo depois do "Sobre nós" (no celular — e tablet
   retrato, ver comentário acima — ele segue fechando a página) */
@media (min-width: 640px) and (orientation: landscape) {
    .wc-rodape-editorial footer[data-ps-regiao="rodape"] > div:last-child::before { display: none; }
    .wc-rodape-editorial footer[data-ps-regiao="rodape"] > div:last-child { border-top: 1px solid rgba(255,255,255,.12) !important; }
    .wc-rodape-editorial footer[data-ps-regiao="rodape"] > .ps-container-largo > div:first-child::after {
        content: ''; display: block; width: 150px; height: 84px; margin-top: 1.75rem; background: url('img/locs-logo-branco.webp') left center / contain no-repeat; opacity: .95;
    }
}

/* ==========================================================================
   ÁREA DO CLIENTE (7 páginas nativas: entrar, acesso, painel, pedidos, pedido, pontos,
   favoritos). html.wc-conta-<página> vem do JS; sem JS a página nativa segue com o
   acabamento básico do tema.
   ========================================================================== */
html.wc-conta body { overflow-x: clip; }
html.wc-conta main .rounded-full:not([id^="ps-conta-avatar"]):not(.ps-pd-timeline-item *) { border-radius: 0 !important; }
html.wc-conta main input:not([type="checkbox"]):not([type="radio"]), html.wc-conta main select {
    min-height: 50px; border: 1.5px solid var(--wc-linha) !important; border-radius: 0 !important; font-size: 1rem !important; padding-inline: .9rem !important; background: #fff; transition: border-color .2s, box-shadow .2s;
}
html.wc-conta main input:focus, html.wc-conta main select:focus { outline: 0; border-color: var(--wc-tinta) !important; box-shadow: 0 0 0 3px rgba(29,58,224,.18) !important; }
html.wc-conta main label { font-family: var(--wc-rotulo); font-weight: 700 !important; font-size: .72rem !important; letter-spacing: .16em; text-transform: uppercase; color: var(--wc-tinta) !important; }
html.wc-conta main button[type="submit"], #ps-pontos-resgatar {
    min-height: 54px; border-radius: 0 !important; background: var(--wc-tinta) !important; color: #fff !important; font-family: var(--wc-rotulo); font-weight: 700 !important; letter-spacing: .16em; text-transform: uppercase; transition: background .25s !important;
}
html.wc-conta main button[type="submit"]:hover, #ps-pontos-resgatar:hover { background: var(--wc-azul) !important; opacity: 1 !important; }

/* ---------- faixa preta com título e abas (páginas logadas) ---------- */
.wc-conta-faixa { position: relative; isolation: isolate; width: 100vw; margin-left: calc(50% - 50vw); margin-top: -2rem; margin-bottom: 2.5rem; background: var(--wc-tinta); color: #fff; overflow: hidden; }
.wc-conta-faixa::before { content: ''; position: absolute; inset: 0 0 0 45%; z-index: -1; background: url('img/bandana.webp') center / cover no-repeat; opacity: .5; -webkit-mask: linear-gradient(90deg, transparent, #000 70%); mask: linear-gradient(90deg, transparent, #000 70%); }
.wc-conta-faixa-miolo { max-width: 64rem; margin: 0 auto; padding: 2.25rem 1rem 0; }
@media (min-width: 640px) { .wc-conta-faixa-miolo { padding-top: 3rem; } }
.wc-conta-faixa .wc-conta-trilha { gap: .5rem !important; font-family: var(--wc-rotulo); font-size: .72rem !important; letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.55) !important; }
.wc-conta-faixa .wc-conta-trilha a:hover { color: #fff !important; }
.wc-conta-faixa .wc-conta-trilha span:last-child { color: #fff !important; }
.wc-conta-faixa h1, .wc-conta-faixa .wc-conta-faixa-titulo {
    margin: .4rem 0 0 !important; font-family: var(--wc-display) !important; font-weight: 800 !important; text-transform: uppercase; font-size: clamp(2.6rem, 7vw, 4.6rem) !important; line-height: .9 !important; letter-spacing: .005em; color: #fff !important;
}
/* painel: avatar + "Olá, fulano!" */
.wc-conta-faixa .wc-conta-ola { gap: 1.1rem !important; }
.wc-conta-faixa #ps-conta-avatar { width: 64px !important; height: 64px !important; border-radius: 0 !important; background: var(--wc-azul) !important; color: #fff !important; font-family: var(--wc-display); font-size: 1.9rem !important; font-weight: 800 !important; }
.wc-conta-faixa #ps-conta-saudacao { margin: 0 !important; font-size: clamp(2.2rem, 6vw, 3.8rem) !important; white-space: normal; overflow: visible; }
.wc-conta-faixa #ps-conta-email-sub { color: rgba(255,255,255,.65) !important; font-size: .95rem !important; margin-top: .25rem; }
/* abas */
.wc-conta-abas { display: flex; gap: 1.75rem; margin-top: 1.9rem; overflow-x: auto; scrollbar-width: none; border-top: 1px solid rgba(255,255,255,.14); }
.wc-conta-abas::-webkit-scrollbar { display: none; }
.wc-conta-abas a { flex: none; display: inline-flex; align-items: center; gap: .5rem; min-height: 54px; padding: 0 .1rem; border-bottom: 3px solid transparent; color: rgba(255,255,255,.62); font-family: var(--wc-rotulo); font-weight: 700; font-size: .8rem; letter-spacing: .16em; text-transform: uppercase; text-decoration: none; transition: color .2s, border-color .2s; }
.wc-conta-abas a svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linejoin: round; stroke-linecap: round; }
.wc-conta-abas a:hover, .wc-conta-abas a:focus-visible { color: #fff; outline: 0; }
.wc-conta-abas a[aria-current="page"] { color: #fff; border-bottom-color: var(--wc-azul); }
@media (max-width: 639px) { .wc-conta-abas { gap: 1.25rem; } .wc-conta-abas a { font-size: .74rem; letter-spacing: .12em; } }
/* largura útil das páginas logadas */
html.wc-conta:not(.wc-conta-entrar):not(.wc-conta-acesso) main > div.mx-auto { max-width: 64rem !important; }
html.wc-conta main > div.mx-auto > h1, html.wc-conta-favoritos main > h1 { display: none; }

/* cartões base */
html.wc-conta main .rounded-xl, html.wc-conta main .rounded-lg, html.wc-conta main .rounded-2xl { border-radius: 0 !important; }
html.wc-conta main .border-neutral-200 { border-color: var(--wc-linha) !important; }
html.wc-conta main h2.text-sm { font-family: var(--wc-rotulo); font-weight: 700 !important; font-size: .78rem !important; letter-spacing: .2em; text-transform: uppercase; color: var(--wc-tinta) !important; }

/* ---------- entrar / acesso: foto à esquerda, formulário à direita ---------- */
html.wc-conta-entrar main, html.wc-conta-acesso main { padding-top: 1rem !important; }
.wc-conta-arte { position: relative; overflow: hidden; background: var(--wc-tinta); color: #fff; min-height: 220px; margin: -1rem -1rem 2rem; }
.wc-conta-arte img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 22%; }
.wc-conta-arte::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(14,14,14,.1) 20%, rgba(14,14,14,.92) 100%); }
.wc-conta-arte-texto { position: absolute; z-index: 1; left: 0; right: 0; bottom: 0; padding: 1.25rem 1rem; }
.wc-conta-arte-sobre { margin: 0; display: inline-block; background: var(--wc-azul); padding: .3rem .6rem; font-family: var(--wc-rotulo); font-weight: 700; font-size: .7rem; letter-spacing: .2em; text-transform: uppercase; }
.wc-conta-arte-titulo { margin: .6rem 0 0; font-family: var(--wc-display); font-weight: 800; text-transform: uppercase; font-size: clamp(1.9rem, 7vw, 3.6rem); line-height: .92; max-width: 14ch; }
.wc-conta-arte ul { display: none; }
@media (min-width: 1024px) {
    html.wc-conta-entrar main, html.wc-conta-acesso main { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 27rem); gap: 4.5rem; align-items: center; max-width: 76rem; padding-top: 2.5rem !important; padding-bottom: 4rem !important; }
    .wc-conta-arte { margin: 0; min-height: 640px; align-self: stretch; }
    .wc-conta-arte-texto { padding: 2.5rem; }
    .wc-conta-arte ul { display: grid; gap: .55rem; list-style: none; margin: 1.4rem 0 0; padding: 0; }
    .wc-conta-arte li { display: flex; align-items: center; gap: .6rem; font-family: var(--wc-rotulo); font-size: 1.02rem; font-weight: 500; }
    .wc-conta-arte li::before { content: ''; width: 18px; height: 2px; background: var(--wc-azul); flex: none; }
    html.wc-conta-entrar main > div.max-w-sm, html.wc-conta-acesso main > div.max-w-sm { max-width: none !important; margin: 0 !important; }
}
html.wc-conta-entrar main > div.max-w-sm > h1, html.wc-conta-acesso main > div.max-w-sm > h1 {
    display: block !important; text-align: left !important; font-family: var(--wc-display) !important; font-weight: 800 !important; text-transform: uppercase; font-size: clamp(2.3rem, 5vw, 3.2rem) !important; line-height: .92 !important;
}
html.wc-conta-acesso main > div.max-w-sm > p { text-align: left !important; font-size: .98rem !important; margin-top: .75rem !important; }
html.wc-conta-entrar main > div.max-w-sm > .flex:has(#ps-aba-entrar-botao) { padding: 0 !important; border: 1.5px solid var(--wc-tinta) !important; margin-top: 1.5rem !important; }
#ps-aba-entrar-botao, #ps-aba-criar-botao { border-radius: 0 !important; min-height: 48px; font-size: .82rem; }
#ps-aba-entrar-botao[data-aba-ativa="1"], #ps-aba-criar-botao[data-aba-ativa="1"] { background: var(--wc-tinta) !important; color: #fff !important; }
#ps-aba-entrar > p, #ps-aba-criar > p { text-align: left !important; }
#ps-conta-entrar-form, #ps-conta-criar-form, #ps-conta-acesso-form { border: 0 !important; padding: 0 !important; background: transparent !important; margin-top: 1.25rem !important; }
#ps-conta-entrar-form > * + *, #ps-conta-criar-form > * + *, #ps-conta-acesso-form > * + * { margin-top: 1.1rem !important; }
#ps-conta-entrar-form a, html.wc-conta-acesso main > div.max-w-sm > p:last-child a { color: var(--wc-tinta); text-decoration: underline; text-underline-offset: 3px; font-size: .85rem; }
html.wc-conta-acesso main > div.max-w-sm > p:last-child { text-align: left !important; }

/* ---------- painel ---------- */
#ps-conta-painel > .grid a { border: 1.5px solid var(--wc-linha) !important; padding: 1.25rem !important; transition: background .25s, color .25s, border-color .25s, transform .25s var(--wc-ease) !important; box-shadow: none !important; }
#ps-conta-painel > .grid a svg { color: var(--wc-azul); }
#ps-conta-painel > .grid a p:first-of-type { font-family: var(--wc-display); font-weight: 800 !important; font-size: 3rem !important; line-height: 1; margin-top: .6rem !important; }
#ps-conta-painel > .grid a p:last-of-type { font-family: var(--wc-rotulo); font-weight: 700; letter-spacing: .18em; text-transform: uppercase; font-size: .72rem !important; color: var(--wc-cinza) !important; }
#ps-conta-painel > .grid a:hover { background: var(--wc-tinta) !important; border-color: var(--wc-tinta) !important; transform: translateY(-2px); }
#ps-conta-painel > .grid a:hover p, #ps-conta-painel > .grid a:hover svg { color: #fff !important; }
/* cartão de pontos = cartão de sócio com bandana */
#ps-conta-pontos-card, #ps-pontos-painel > div:first-child { position: relative; isolation: isolate; overflow: hidden; background: #0b1c49 !important; color: #fff !important; }
#ps-conta-pontos-card::before, #ps-pontos-painel > div:first-child::before { content: ''; position: absolute; inset: 0; z-index: -2; background: url('img/bandana-720.webp') center / cover no-repeat; }
#ps-conta-pontos-card::after, #ps-pontos-painel > div:first-child::after { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(110deg, rgba(8,12,30,.94) 25%, rgba(11,28,73,.55) 100%); }
#ps-conta-pontos-card { padding: 1.4rem 1.5rem !important; }
#ps-conta-pontos-saldo { font-family: var(--wc-display); font-weight: 800 !important; font-size: 3.2rem !important; line-height: 1; margin: .2rem 0; }
#ps-conta-pontos-card span.uppercase { font-family: var(--wc-rotulo); letter-spacing: .2em !important; font-weight: 700 !important; }
#ps-conta-ultimo-pedido > a { border: 1.5px solid var(--wc-linha) !important; border-left: 5px solid var(--wc-azul) !important; padding: 1.25rem 1.4rem !important; box-shadow: none !important; transition: border-color .2s, transform .25s var(--wc-ease) !important; }
#ps-conta-ultimo-pedido > a:hover { border-color: var(--wc-tinta) !important; border-left-color: var(--wc-azul) !important; transform: translateY(-2px); }
#ps-conta-ultimo-pedido p.text-sm.font-semibold { font-family: var(--wc-display); font-weight: 800 !important; font-size: 1.7rem !important; text-transform: uppercase; line-height: 1; }
#ps-conta-ultimo-pedido p.font-bold { font-family: var(--wc-display); font-size: 1.5rem !important; }
#ps-conta-painel > div:has(#ps-conta-nome), #ps-conta-painel > div:has(#ps-endereco-form) { padding: 1.5rem !important; border: 1.5px solid var(--wc-linha) !important; }
#ps-conta-painel dl > div { padding: .7rem 0; border-bottom: 1px dashed var(--wc-linha); margin: 0 !important; }
#ps-conta-painel dl > div:last-child { border-bottom: 0; }
#ps-conta-painel dt { font-family: var(--wc-rotulo); font-weight: 700; font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wc-cinza) !important; }
#ps-endereco-editar-btn { border: 1.5px solid var(--wc-tinta) !important; padding: .45rem .8rem; color: var(--wc-tinta) !important; font-family: var(--wc-rotulo); letter-spacing: .14em; text-transform: uppercase; text-decoration: none !important; }
#ps-endereco-editar-btn:hover { background: var(--wc-tinta); color: #fff !important; }
#ps-conta-sair { min-height: 50px; border: 1.5px solid var(--wc-tinta) !important; color: var(--wc-tinta) !important; font-family: var(--wc-rotulo); font-weight: 700 !important; letter-spacing: .16em; text-transform: uppercase; }
#ps-conta-sair:hover { background: var(--wc-tinta) !important; color: #fff !important; }
@media (min-width: 1024px) {
    #ps-conta-painel:not(.hidden) { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); column-gap: 1.5rem; row-gap: 1rem; grid-template-areas: "stats dados" "pontos dados" "ultimo ender" "sair ender"; align-items: start; }
    #ps-conta-painel > * { margin-top: 0 !important; }
    #ps-conta-painel > .grid { grid-area: stats; }
    #ps-conta-painel > #ps-conta-pontos-card { grid-area: pontos; }
    #ps-conta-painel > #ps-conta-ultimo-pedido { grid-area: ultimo; }
    #ps-conta-painel > div:has(#ps-conta-nome) { grid-area: dados; }
    #ps-conta-painel > div:has(#ps-endereco-form) { grid-area: ender; }
    #ps-conta-painel > #ps-conta-sair { grid-area: sair; }
}

/* ---------- pedidos: cartões tipo ingresso ---------- */
#ps-pedidos-lista { display: grid; gap: .9rem; }
#ps-pedidos-lista > * + * { margin-top: 0 !important; }
#ps-pedidos-lista > a { position: relative; border: 1.5px solid var(--wc-linha) !important; padding: 1.4rem 1.5rem !important; box-shadow: none !important; transition: border-color .2s, transform .25s var(--wc-ease), box-shadow .25s !important; }
#ps-pedidos-lista > a::before { content: ''; position: absolute; left: -1.5px; top: -1.5px; bottom: -1.5px; width: 5px; background: var(--wc-tinta); }
#ps-pedidos-lista > a:hover { border-color: var(--wc-tinta) !important; transform: translateY(-2px); box-shadow: 0 14px 28px -18px rgba(0,0,0,.35) !important; }
#ps-pedidos-lista > a p.text-sm.font-semibold { font-family: var(--wc-display); font-weight: 800 !important; font-size: 1.9rem !important; text-transform: uppercase; line-height: 1; }
#ps-pedidos-lista > a p.font-bold { font-family: var(--wc-display); font-size: 1.55rem !important; }
#ps-pedidos-lista > a p.text-xs:last-child { background: var(--wc-nevoa); padding: .3rem .55rem; font-family: var(--wc-rotulo); letter-spacing: .06em; color: var(--wc-tinta) !important; }
#ps-pedidos-lista > a > svg { width: 22px; height: 22px; transition: transform .25s var(--wc-ease); }
#ps-pedidos-lista > a:hover > svg { transform: translateX(4px); }
html.wc-conta main span.rounded-full.px-2\.5 { border-radius: 0 !important; font-family: var(--wc-rotulo); font-weight: 700 !important; letter-spacing: .12em; text-transform: uppercase; font-size: .68rem !important; padding: .3rem .55rem !important; }
html.wc-conta main .bg-violet-100 { background: rgba(29,58,224,.1) !important; color: var(--wc-azul) !important; }

/* ---------- detalhe do pedido ---------- */
#ps-pd-conteudo > div:first-child { background: var(--wc-tinta) !important; border: 0 !important; color: #fff; text-align: left !important; padding: 2rem 1.5rem !important; display: grid; grid-template-columns: auto 1fr; column-gap: 1.25rem; align-items: center; }
#ps-pd-conteudo > div:first-child > div:first-child { grid-row: span 3; margin: 0 !important; width: 64px !important; height: 64px !important; border-radius: 0 !important; background: var(--wc-azul) !important; }
#ps-pd-conteudo > div:first-child > div:first-child svg { color: #fff !important; }
#ps-pd-conteudo > div:first-child p { color: rgba(255,255,255,.7) !important; margin-left: 0 !important; max-width: none !important; }
#ps-pd-conteudo > div:first-child p.uppercase { font-family: var(--wc-rotulo); letter-spacing: .18em !important; margin-top: 0 !important; }
#ps-pd-conteudo > div:first-child h1 { color: #fff !important; font-family: var(--wc-display) !important; font-weight: 800 !important; text-transform: uppercase; font-size: clamp(2rem, 5vw, 3rem) !important; line-height: .95 !important; margin-top: .3rem !important; }
#ps-pd-conteudo > div:not(:first-child):not(:last-child) { border: 1.5px solid var(--wc-linha) !important; padding: 1.5rem !important; }
/* linha do tempo: bolinhas pretas, atual em azul; horizontal a partir de 768px */
#ps-pd-conteudo .ps-pd-timeline-item .bg-emerald-500 { background: var(--wc-tinta) !important; }
#ps-pd-conteudo .ps-pd-timeline-item .ring-emerald-100 { background: var(--wc-azul) !important; box-shadow: 0 0 0 5px rgba(29,58,224,.18) !important; --tw-ring-color: transparent !important; }
#ps-pd-conteudo .ps-pd-timeline-item .bg-emerald-50 { background: var(--wc-azul) !important; color: #fff !important; border-radius: 0 !important; }
#ps-pd-conteudo .ps-pd-timeline-item p.text-sm { font-family: var(--wc-rotulo); font-weight: 700 !important; letter-spacing: .06em; text-transform: uppercase; font-size: .85rem !important; }
@media (min-width: 768px) {
    #ps-pd-conteudo ol { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); margin-top: 1.5rem !important; }
    #ps-pd-conteudo .ps-pd-timeline-item { flex-direction: column; align-items: center; text-align: center; padding: 0 .4rem !important; gap: .7rem !important; }
    #ps-pd-conteudo .ps-pd-timeline-item > span.absolute { left: 50% !important; top: 11px !important; width: 100% !important; height: 2px !important; }
    #ps-pd-conteudo .ps-pd-timeline-item > div { padding-top: 0 !important; }
    #ps-pd-conteudo .ps-pd-timeline-item p { justify-content: center; flex-direction: column; gap: .35rem !important; }
}
.ps-pd-item-linha img { border-radius: 0 !important; width: 64px !important; height: 64px !important; background: var(--wc-nevoa); mix-blend-mode: multiply; border: 0 !important; }
.ps-pd-item-linha > span:first-of-type > span { color: var(--wc-tinta) !important; font-weight: 600; }
#ps-pd-conteudo div.border-t.text-base { font-family: var(--wc-display); font-size: 1.6rem !important; text-transform: uppercase; }
#ps-pd-conteudo > div:last-child a { display: inline-flex; min-height: 50px; align-items: center; padding: 0 1.5rem; border: 1.5px solid var(--wc-tinta); color: var(--wc-tinta) !important; font-family: var(--wc-rotulo); letter-spacing: .14em; text-transform: uppercase; text-decoration: none !important; }
#ps-pd-conteudo > div:last-child a:hover { background: var(--wc-tinta); color: #fff !important; }
@media (min-width: 1024px) {
    #ps-pd-conteudo:not(.hidden) { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); column-gap: 1.25rem; row-gap: 1.25rem; grid-template-areas: "hero hero" "anda anda" "itens ender" "itens pag" "volta volta"; align-items: start; }
    #ps-pd-conteudo > * { margin-top: 0 !important; }
    #ps-pd-conteudo > div:nth-child(1) { grid-area: hero; }
    #ps-pd-conteudo > div:nth-child(2) { grid-area: anda; }
    #ps-pd-conteudo > div:nth-child(3) { grid-area: itens; }
    #ps-pd-conteudo > div:nth-child(4) { grid-area: ender; }
    #ps-pd-conteudo > div:nth-child(5) { grid-area: pag; }
    #ps-pd-conteudo > div:nth-child(6) { grid-area: volta; }
}

/* ---------- pontos ---------- */
#ps-pontos-painel > div:first-child { text-align: left !important; padding: 2rem 1.75rem !important; margin-top: 0 !important; min-height: 220px; display: flex; flex-direction: column; justify-content: flex-end; }
#ps-pontos-painel > div:first-child > p.uppercase { font-family: var(--wc-rotulo); font-weight: 700 !important; letter-spacing: .22em !important; }
#ps-pontos-saldo { font-family: var(--wc-display); font-weight: 800 !important; font-size: clamp(4rem, 12vw, 6rem) !important; line-height: .9 !important; }
#ps-pontos-valor { display: inline-block; align-self: flex-start; margin-top: 1rem !important; background: #fff; color: var(--wc-tinta); padding: .35rem .65rem; font-family: var(--wc-rotulo); font-weight: 700 !important; letter-spacing: .06em; }
#ps-pontos-painel > div:first-child > p:nth-child(3) { font-family: var(--wc-rotulo); letter-spacing: .2em; text-transform: uppercase; }
#ps-pontos-expiracao-aviso { border-radius: 0 !important; border-left: 4px solid #d97706; }
#ps-pontos-painel > div:not(:first-child):not(#ps-pontos-expiracao-aviso):not(#ps-pontos-cupom-novo) { border: 1.5px solid var(--wc-linha) !important; padding: 1.5rem !important; }
#ps-pontos-input { font-family: var(--wc-display); font-size: 1.4rem !important; }
#ps-pontos-extrato > div { padding: 1rem 0 !important; }
#ps-pontos-extrato span.tabular-nums { font-family: var(--wc-display); font-weight: 800 !important; font-size: 1.5rem !important; color: var(--wc-azul) !important; }
#ps-pontos-cupom-novo { border-radius: 0 !important; border-color: var(--wc-azul) !important; background: rgba(29,58,224,.06) !important; }
#ps-pontos-cupom-codigo { font-family: var(--wc-display); font-size: 2.4rem !important; color: var(--wc-tinta) !important; }
@media (min-width: 1024px) {
    #ps-pontos-painel:not(.hidden) { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 1.25rem; row-gap: 1rem; grid-template-areas: "saldo trocar" "expira trocar" "cupom cupom" "hist hist"; align-items: start; }
    #ps-pontos-painel > * { margin-top: 0 !important; }
    #ps-pontos-painel > div:nth-child(1) { grid-area: saldo; }
    #ps-pontos-painel > #ps-pontos-expiracao-aviso { grid-area: expira; }
    #ps-pontos-painel > div:nth-child(3) { grid-area: trocar; align-self: stretch; }
    #ps-pontos-painel > #ps-pontos-cupom-novo { grid-area: cupom; }
    #ps-pontos-painel > div:nth-child(5) { grid-area: hist; }
}

/* ---------- favoritos ---------- */
html.wc-conta-favoritos main { padding-top: 2rem !important; }
#ps-favoritos-grid { gap: 2rem 1rem !important; margin-top: 0 !important; }
.ps-favoritos-card .aspect-square { border: 0 !important; background: var(--wc-nevoa) !important; }
.ps-favoritos-card img { mix-blend-mode: multiply; transition: transform .6s var(--wc-ease); }
.ps-favoritos-card:hover img { transform: scale(1.06); }
.ps-favoritos-card a > p:first-of-type { margin-top: .8rem !important; font-family: var(--wc-rotulo); font-weight: 700 !important; font-size: .95rem !important; letter-spacing: .03em; text-transform: uppercase; line-height: 1.2; }
.ps-favoritos-card a > p:last-of-type { font-family: var(--wc-rotulo); font-weight: 700 !important; font-size: 1.05rem !important; color: var(--wc-tinta) !important; }
.ps-favoritos-card [data-favoritar-produto] { border-radius: 0 !important; width: 40px !important; height: 40px !important; box-shadow: none !important; background: #fff !important; }

/* ---------- Confirmação do pedido (componente "Locs", 2026-09-27) ----------
Sem !important em cascata aqui de propósito — o CSS do próprio componente
(`public/vendor/locs-order/locs-order.css`) já é isolado sob `.lc-root`, feito pra ser incluído
como bloco fechado, não pra receber sobrescrita do tema por cima. Esta regra é a ÚNICA ponte
necessária: zera o padding vertical do `<main>` NATIVO (mesmo padrão já usado em `#wc-home`/
`.wc-sobre` acima neste arquivo) pra o componente conseguir ocupar a tela cheia logo abaixo do
header real da loja, sem a faixa vazia que o `py-8` do layout compartilhado deixaria. */
body:has([data-locs-order]) main { padding-top: 0 !important; padding-bottom: 0 !important; }
/* Mesmo princípio de `body:has(#wc-home)`/`body:has(.wc-sobre)` acima (margin-top zerada no
rodapé) — sem isso, o `mt-16` fixo do rodapé compartilhado (`storefront/layout.blade.php`)
sobrava como uma faixa branca solta entre o fim da foto de fundo do componente (`.lc-root`,
que já cobre 100% da altura do `<main>`) e o início do rodapé escuro, achado real testando a
página de pedido finalizado ao vivo (2026-09-27, Ricardo). */
body:has([data-locs-order]) footer[data-ps-regiao="rodape"] { margin-top: 0 !important; }
#ps-favoritos-vazio, #ps-pedidos-vazio { padding: 2.5rem 1.5rem; border: 1.5px dashed var(--wc-linha); text-align: center; font-size: 1rem !important; }
