/* =====================================================================
   GVSX Mod — estilos do tema (além do theme.json)
   Tokens vêm do theme.json: --wp--preset--color--{base|surface|surface-2|border|contrast|muted|primary|primary-bright|secondary}
   ===================================================================== */

:root {
  --gvsx-green: var(--wp--preset--color--primary);
  --gvsx-neon: var(--wp--preset--color--primary-bright);
  --gvsx-cyan: var(--wp--preset--color--secondary);
  --gvsx-radius: 16px;
  --gvsx-glass: rgba(255, 255, 255, 0.03);
  --gvsx-glass-border: rgba(255, 255, 255, 0.07);
}

html { scroll-behavior: smooth; }
body { -webkit-font-smoothing: antialiased; }
img, video { max-width: 100%; height: auto; }

/* Seções da home: respiro padrão */
.gvsx-section { padding-top: var(--wp--preset--spacing--50); padding-bottom: var(--wp--preset--spacing--40); }
.gvsx-section h2 { margin-bottom: 0.5rem; }
.gvsx-section h2 + p { margin-top: 0; margin-bottom: var(--wp--preset--spacing--40); }

/* Botões */
.wp-element-button, .wp-block-button__link { transition: transform .15s ease, box-shadow .15s ease, background-color .15s ease; }
.wp-element-button:hover, .wp-block-button__link:hover { transform: translateY(-1px); box-shadow: 0 8px 24px rgba(0, 120, 28, 0.35); }
.gvsx-btn .wp-block-button__link { text-transform: uppercase; }
.gvsx-btn--lg .wp-block-button__link { padding: 1.05rem 2.2rem; }

/* ---------------- Cabeçalho ----------------
   Desktop (≥ 1100px): logo à esquerda, menu horizontal centralizado, ícones à direita.
   O grupo vem do editor com display:flex; aqui vira grid de 3 colunas (1fr auto 1fr)
   para o menu ficar centrado na página, e não "no que sobrou" entre logo e ícones. */
.gvsx-header { position: sticky; top: 0; z-index: 90; background: rgba(10, 10, 10, 0.92); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
.gvsx-header .gvsx-header__inner { display: grid; grid-template-columns: minmax(190px, 1fr) auto minmax(110px, 1fr); align-items: center; column-gap: 1.5rem; min-height: 84px; padding-top: 6px; padding-bottom: 6px; }
.gvsx-header .gvsx-logo { justify-self: start; margin: 0; }
.gvsx-header .gvsx-header__icons { justify-self: end; gap: 1.1rem; }
.gvsx-logo img { height: auto; display: block; }
/* Sem o retângulo de contorno ao CLICAR (o Twenty Twenty-Five e o WooCommerce põem outline em QUALQUER :focus,
   inclusive por clique do mouse). Fica só para navegação por teclado, via :focus-visible — que é exatamente a
   diferença que o navegador já sabe fazer: quem clica não vê contorno, quem navega com Tab continua vendo onde
   está. Antes a regra valia só para a e button dentro de .wp-site-blocks, e por isso escapavam o botão flutuante
   (que fica fora), os elementos do WooCommerce Blocks, os <summary> do FAQ e o que tem tabindex. */
a:focus:not(:focus-visible),
button:focus:not(:focus-visible),
summary:focus:not(:focus-visible),
label:focus:not(:focus-visible),
[tabindex]:focus:not(:focus-visible),
[role="button"]:focus:not(:focus-visible),
.wp-block-button__link:focus:not(:focus-visible),
.wc-block-components-button:focus:not(:focus-visible),
.wc-block-components-product-image a:focus:not(:focus-visible) { outline: none; box-shadow: none; }
.gvsx-logo a:focus-visible { outline: 2px solid var(--gvsx-neon); outline-offset: 4px; border-radius: 6px; }
/* Faixa RGB: mesmas cores do token gvsx-rainbow, com o verde repetido no fim para o ladrilho fechar o ciclo —
   sem isso a emenda entre o amarelo e o verde daria um salto visível a cada volta. Mesma mecânica do gvsx-shine:
   ladrilho de 200% e deslocamento de 200%. O token do theme.json continua intacto para quem mais o usa. */
.gvsx-rainbow { height: 4px; background-image: linear-gradient(90deg, #00E676 0%, #00AFC7 20%, #6D388B 40%, #FF4D4D 60%, #FFD600 80%, #00E676 100%); background-size: 200% 100%; background-repeat: repeat-x; animation: gvsx-rainbow 9s linear infinite; }
@keyframes gvsx-rainbow { from { background-position: 200% 0; } to { background-position: 0% 0; } }
@media (prefers-reduced-motion: reduce) { .gvsx-rainbow { animation: none; } }
/* Itens do menu (como na Shopify: 14px, texto claro, sem caixa alta). Em telas mais estreitas
   (tablet / navegador em pé) o menu continua visível: os itens quebram em 2 linhas, centralizados. */
.gvsx-nav { font-size: 0.9rem; font-weight: 500; }
.gvsx-nav .wp-block-navigation__container { gap: 0.35rem 1.75rem; flex-wrap: wrap; justify-content: center; }
.gvsx-nav .wp-block-navigation-item__content { color: rgba(255, 255, 255, 0.9); white-space: nowrap; transition: color .15s ease; }
.gvsx-nav .wp-block-navigation-item__content:hover, .gvsx-nav .current-menu-item > .wp-block-navigation-item__content { color: var(--gvsx-neon); text-decoration: none; }
.gvsx-nav .wp-block-navigation__responsive-container-open svg,
.wc-block-customer-account__account-icon, .wc-block-mini-cart__button svg { color: var(--wp--preset--color--contrast); fill: currentColor; }
.wc-block-mini-cart__button { color: var(--wp--preset--color--contrast) !important; }
.wc-block-mini-cart__badge { background: var(--gvsx-neon); color: #062b12; border: none; font-weight: 700; }
/* Ícone do carrinho: link para a página do carrinho, com contador */
.gvsx-cart-link { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; color: var(--wp--preset--color--contrast); border-radius: 50%; transition: background .15s ease, color .15s ease; }
.gvsx-cart-link:hover { color: var(--gvsx-neon); background: rgba(255, 255, 255, 0.06); text-decoration: none; }
.gvsx-cart-link svg { display: block; }
.gvsx-cart-link__count { position: absolute; top: 2px; right: 0; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; background: var(--gvsx-neon); color: #062b12; font-size: 0.68rem; font-weight: 800; line-height: 18px; text-align: center; }
.gvsx-cart-link__count[hidden] { display: none; }
.wc-block-customer-account__account-icon, .gvsx-header .wp-block-woocommerce-customer-account a { color: var(--wp--preset--color--contrast); }
.wp-block-navigation__responsive-container.is-menu-open { background: var(--wp--preset--color--surface); }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { gap: 1rem; font-size: 1.25rem; flex-wrap: nowrap; }
/* Entre 600 e 1099px: mesma disposição do desktop, com logo menor e itens mais compactos. */
@media (max-width: 1099px) {
  .gvsx-header .gvsx-header__inner { grid-template-columns: minmax(150px, auto) 1fr minmax(90px, auto); column-gap: 1rem; }
  .gvsx-logo img { max-width: 150px; }
  .gvsx-nav { font-size: 0.82rem; }
  .gvsx-nav .wp-block-navigation__container { gap: 0.25rem 1.1rem; }
}
/* Só no celular (< 600px, onde o próprio WordPress recolhe o menu): botão à esquerda, logo ao centro, ícones à direita */
@media (max-width: 599px) {
  .gvsx-header .gvsx-header__inner { grid-template-columns: 1fr auto 1fr; column-gap: 0.75rem; min-height: 68px; }
  .gvsx-header .gvsx-nav { order: 1; justify-self: start; }
  .gvsx-header .gvsx-logo { order: 2; justify-self: center; }
  .gvsx-header .gvsx-header__icons { order: 3; }
  .gvsx-logo img { max-width: 130px; }
}

/* ---------------- Hero ---------------- */
.gvsx-hero { margin-top: var(--wp--preset--spacing--30); overflow: hidden; }
.gvsx-hero .wp-block-cover__inner-container { text-shadow: 0 2px 18px rgba(0, 0, 0, 0.55); }
.gvsx-hero__rating { margin-bottom: 0.25rem; font-weight: 600; letter-spacing: 0.02em; }
.gvsx-hero__title { margin: 0.25rem 0 0.5rem; text-transform: uppercase; letter-spacing: -0.02em; }
.gvsx-hero__subtitle { margin: 0 auto 0.5rem; max-width: 760px; font-weight: 500; }
.gvsx-hero__trust { margin: 0; font-size: var(--wp--preset--font-size--small); }
/* Cantos arredondados em qualquer largura (pedido: versão em pé igual à do desktop); no celular só a altura e o botão encolhem. */
@media (max-width: 599px) {
  .gvsx-hero { min-height: 480px !important; }
  .gvsx-hero .gvsx-btn--lg .wp-block-button__link { font-size: 0.95rem; padding: 0.9rem 1.4rem; }
}

/* ---------------- Faixa rolante ---------------- */
.gvsx-ticker { overflow: hidden; margin: var(--wp--preset--spacing--20) auto 0; background: var(--gvsx-green); color: #fff; font-weight: 700; font-style: italic; font-size: 1.05rem; border-radius: 12px; max-width: var(--wp--style--global--wide-size, 1500px); }
.gvsx-ticker__track { display: flex; width: max-content; gap: 0; animation: gvsx-ticker 34s linear infinite; padding: 0.9rem 0; }
.gvsx-ticker__track span { padding: 0 3rem; white-space: nowrap; }
.gvsx-ticker:hover .gvsx-ticker__track { animation-play-state: paused; }
@keyframes gvsx-ticker { from { transform: translateX(0); } to { transform: translateX(-33.333%); } }
@media (prefers-reduced-motion: reduce) { .gvsx-ticker__track { animation: none; } }
@media (max-width: 599px) { .gvsx-ticker { font-size: 0.95rem; } .gvsx-ticker__track span { padding: 0 1.75rem; } }

/* ---------------- Benefícios (vídeo + texto) ----------------
   Mídia com altura fixa e recorte (object-fit: cover), como o "multirow" médio do Shrine:
   medido na loja Shopify a 1920px = 650×460; aqui a coluna de 50% dá ~682×460. */
.gvsx-feature { margin-bottom: var(--wp--preset--spacing--50); }
.gvsx-feature:last-child { margin-bottom: 0; }
.gvsx-feature__video, .gvsx-feature__image { margin: 0; border-radius: var(--gvsx-radius); }
.gvsx-feature__video video, .gvsx-feature__image img { border-radius: var(--gvsx-radius); display: block; width: 100%; height: 460px; object-fit: cover; }
@media (max-width: 781px) {
  .gvsx-feature--reverse .wp-block-column:first-child { order: 2; }
  .gvsx-feature { margin-bottom: var(--wp--preset--spacing--40); }
}
@media (max-width: 599px) {
  .gvsx-feature__video video, .gvsx-feature__image img { height: 296px; }
}

/* ---------------- Antes/depois ----------------
   .gvsx-ba__img--full = GVSX Mod (fundo, aparece à direita); .gvsx-ba__clip = Original (recorte à esquerda). */
.gvsx-ba { position: relative; width: 100%; max-width: 1100px; margin: 0 auto; aspect-ratio: 16 / 9; overflow: hidden; border-radius: var(--gvsx-radius); user-select: none; background: #000; }
.gvsx-ba__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; max-width: none; }
.gvsx-ba__clip { position: absolute; inset: 0 auto 0 0; height: 100%; overflow: hidden; }
.gvsx-ba__handle { position: absolute; top: 0; bottom: 0; width: 3px; background: #fff; transform: translateX(-50%); pointer-events: none; box-shadow: 0 0 12px rgba(0, 0, 0, 0.6); }
.gvsx-ba__knob { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 46px; height: 46px; border-radius: 50%; background: var(--gvsx-green); color: #fff; display: grid; place-items: center; font-size: 20px; font-weight: 700; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.45); }
.gvsx-ba__label { position: absolute; top: 14px; padding: 6px 12px; border-radius: 999px; background: rgba(0, 0, 0, 0.6); color: #fff; font-size: 0.8rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; pointer-events: none; }
.gvsx-ba__label--before { left: 14px; }
.gvsx-ba__label--after { right: 14px; background: var(--gvsx-green); }
.gvsx-ba__range { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: ew-resize; -webkit-appearance: none; appearance: none; }

/* ---------------- Produtos ----------------
   Uma linha só. O WooCommerce monta a grade com auto-fill calculado para gap de 1.25em; qualquer
   outro gap quebra a conta e o 5º produto cai para a linha de baixo (era o que acontecia).
   Desktop: 5 colunas fixas. Celular: os 5 em uma faixa horizontal com rolagem (como a Shopify). */
/* O visual dos cards vem de .gvsx-cards (seção "Loja e página do produto"); aqui só a grade da home. */
.gvsx-products .gvsx-cards .wc-block-product-template.wc-block-product-template__responsive { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 1rem; }
.gvsx-products .wc-block-components-product-sale-badge, .wc-block-components-product-sale-badge { background: var(--gvsx-cyan); color: #04222a; border: none; }
/* Telas estreitas: faixa horizontal. A janela de rolagem recorta o que passa das bordas, então ela
   ganha folga vertical (devolvida com margem negativa) para o halo dos cards não terminar "seco".
   O corte era 781px, e entre 782px e ~1250px as seis colunas espremiam o card a ponto de o rótulo
   "COMPRAR NA PRÉ-VENDA" precisar de três linhas (medido: card de 126px a 900px de janela). Subiu para 1199px:
   daí para baixo a faixa horizontal, daí para cima a grade de seis, onde o card tem 176px e o botão sobra
   16px de folga sobre o mínimo de duas linhas. */
@media (max-width: 1199px) {
  .gvsx-products .gvsx-cards .wc-block-product-template.wc-block-product-template__responsive { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 0.9rem; padding: 60px var(--wp--preset--spacing--30) 150px; margin: -60px calc(-1 * var(--wp--preset--spacing--30)) -150px; scroll-padding-left: var(--wp--preset--spacing--30); scrollbar-width: none; -webkit-overflow-scrolling: touch; }
  .gvsx-products .gvsx-cards .wc-block-product-template.wc-block-product-template__responsive::-webkit-scrollbar { display: none; }
  .gvsx-products .gvsx-cards .wc-block-product { flex: 0 0 auto; width: min(64vw, 240px); scroll-snap-align: start; }
}
/* Celular: um produto por vez, sem pedaço do próximo aparecendo na borda.
   A conta: a janela de rolagem ocupa a tela inteira e tem a calha como padding, então o card em border-box com
   width:100% mede exatamente a largura útil da página (390 - 48 = 342px num aparelho de 390). Com o gap igual à
   calha, o card seguinte começa exatamente na borda direita da tela — nem um pixel dele aparece. Um gap menor
   deixaria uma fresta (com 0,9rem sobravam 9,6px do próximo à mostra). */
@media (max-width: 599px) {
  .gvsx-products .gvsx-cards .wc-block-product-template.wc-block-product-template__responsive { gap: var(--wp--preset--spacing--30); }
  .gvsx-products .gvsx-cards .wc-block-product { box-sizing: border-box; width: 100%; }
}
/* Setas da faixa de produtos (criadas pelo gvsx.js). Sobem sobre a margem negativa que a faixa usa para não
   recortar o halo dos cards, senão ficariam a 150px de distância deles. */
.gvsx-products__nav { margin-top: 0; }
/* Só existem enquanto existe faixa para rolar: na grade os seis produtos já aparecem e a seta não leva a lugar
   nenhum. O seletor repete as duas classes de propósito — o elemento tem .gvsx-carousel__nav também, e a regra
   `.gvsx-carousel__nav { display: flex }` vem mais adiante no arquivo; com a mesma especificidade ela ganharia
   por ordem e as setas nunca sumiriam (era o que acontecia até a 0.7.9). */
@media (min-width: 1200px) { .gvsx-carousel__nav.gvsx-products__nav { display: none; } }

/* ---------------- Avaliações (carrossel) ----------------
   Uma linha, 2,5 cartões visíveis no desktop, setas nas laterais e avanço automático (JS).
   A janela rola nativamente (scroll-snap), então também funciona no toque; a barra fica escondida.
   O padding vertical + margem negativa é para a janela não recortar o halo verde dos cartões. */
.gvsx-reviews__summary .gvsx-stars, .gvsx-review__stars { color: #00b67a; letter-spacing: 0.1em; }
.gvsx-carousel { position: relative; --gvsx-carousel-gap: 1.25rem; --gvsx-carousel-visible: 2.5; --gvsx-carousel-bleed: 96px; }
/* A folga (bleed) é a área extra da janela em que o halo pode aparecer; a margem negativa devolve o espaço
   e o scroll-padding faz os cartões encaixarem na posição original. Embaixo é maior porque o halo cai para baixo.
   Nas laterais a folga precisa cobrir o alcance do halo no hover (--gvsx-d-float-hi: desfoque 104px com spread -38px
   = 66px para cada lado); com 48px o halo do cartão da ponta era cortado em linha reta (v0.5.0: 96px). */
.gvsx-carousel__viewport { overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; -webkit-overflow-scrolling: touch; padding: 60px var(--gvsx-carousel-bleed) 160px; margin: -60px calc(-1 * var(--gvsx-carousel-bleed)) -160px; scroll-padding-left: var(--gvsx-carousel-bleed); scroll-padding-right: var(--gvsx-carousel-bleed); }
.gvsx-carousel__viewport::-webkit-scrollbar { display: none; }
.gvsx-carousel__track { display: flex; gap: var(--gvsx-carousel-gap); list-style: none; margin: 0; padding: 0; align-items: stretch; }
/* Espaçador no fim da trilha: sem ele a rolagem terminava com o último cartão colado na borda da janela e o halo
   dele era cortado em linha reta (a janela só rola até o fim do conteúdo; a folga da direita não contava). v0.5.1 */
.gvsx-carousel__track::after { content: ""; flex: 0 0 var(--gvsx-carousel-bleed); }
.gvsx-carousel__slide { flex: 0 0 calc((100% - (var(--gvsx-carousel-visible) - 1) * var(--gvsx-carousel-gap)) / var(--gvsx-carousel-visible)); scroll-snap-align: start; display: flex; margin: 0; padding: 0; }
.gvsx-carousel__slide > * { width: 100%; }
/* Setas abaixo dos cartões (v0.5.1): nas laterais elas ficavam em cima do texto dos cartões das pontas. */
.gvsx-carousel__nav { position: relative; z-index: 3; display: flex; justify-content: center; gap: 12px; margin-top: 1.4rem; }
.gvsx-carousel__arrow { position: static; transform: none; width: 46px; height: 46px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, 0.14); background: rgba(10, 10, 10, 0.85); color: #fff; font-size: 0; cursor: pointer; display: grid; place-items: center; transition: background .2s ease, border-color .2s ease, opacity .2s ease, transform .2s ease; padding: 0; }
.gvsx-carousel__arrow svg { width: 20px; height: 20px; display: block; }
.gvsx-carousel__arrow:hover { background: var(--gvsx-green); border-color: var(--gvsx-green); transform: translateY(-2px); }
.gvsx-review { background: var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); border-radius: var(--gvsx-radius); padding: 1.5rem; text-align: center; display: flex; flex-direction: column; gap: 0.5rem; transition: translate .3s cubic-bezier(0.2, 0.7, 0.3, 1), box-shadow .3s ease; }
.gvsx-review:hover { translate: 0 -6px; }
.gvsx-review__stars { font-size: 1.2rem; }
.gvsx-review__title { margin: 0; font-size: 1.05rem; }
.gvsx-review p { margin: 0; color: var(--wp--preset--color--muted); font-size: 0.95rem; line-height: 1.6; flex: 1; }
.gvsx-review__author { font-weight: 700; font-style: italic; color: var(--gvsx-neon); }
/* Até 600px vale o mesmo desenho do desktop (2,5 cartões); no celular passa a 1 cartão por vez.
   A sangria desce para a calha da página, e isso é obrigatório, não estético: com 56px a janela do carrossel
   media 454px num aparelho de 390 e passava 32px da borda direita. Quem segurava esse estouro era o
   `body { overflow-x: clip }` lá em cima — que Safari só entende a partir da versão 16. Onde ele não vale, o
   navegador encolhe a página inteira para caber e tudo aparece deslocado para a esquerda, com uma faixa vazia
   à direita. Com a sangria igual à calha, a janela mede exatamente a largura da tela e não há o que conter.
   Como efeito colateral bom, o cartão passa a medir os mesmos 342px das outras seções da página. */
@media (max-width: 599px) {
  .gvsx-carousel { --gvsx-carousel-visible: 1; --gvsx-carousel-gap: var(--wp--preset--spacing--30); --gvsx-carousel-bleed: var(--wp--preset--spacing--30); }
  .gvsx-carousel__arrow { width: 42px; height: 42px; }
}

/* ---------------- CTA final (dentro da tabela) e newsletter ---------------- */
.gvsx-newsletter { color: var(--wp--preset--color--contrast); }
.gvsx-newsletter__form-placeholder { opacity: 0.7; font-size: 0.85rem; }

/* ---------------- Rodapé ----------------
   Completo (4 colunas) só na página inicial. Nas demais páginas o MESMO bloco (parts/footer.html, editável em
   Aparência > Editor > Padrões > Rodapé) fica compacto: a coluna "Sobre o patch" some, e horários, contato e links
   viram três blocos curtos lado a lado, com os links em linha (pedido de 16/09). Os espaçamentos ficam aqui, não no bloco. */
.gvsx-footer { background: var(--wp--preset--color--surface); border-top: 1px solid var(--wp--preset--color--border); margin-top: var(--wp--preset--spacing--50); padding-top: var(--wp--preset--spacing--40); padding-bottom: var(--wp--preset--spacing--20); }
.gvsx-footer h3 { margin-bottom: 0.6rem; }
.gvsx-footer a { color: var(--wp--preset--color--muted); }
.gvsx-footer a:hover { color: var(--gvsx-neon); text-decoration: none; }
.gvsx-footer__links { line-height: 1.75; }
/* Home (v0.7.3): a coluna "Links" tem 12 itens; empilhados um a um ela ficava três vezes mais alta
   que as vizinhas e esticava o rodapé inteiro. Aqui as colunas passam a ser uma grade equilibrada e a
   lista de links se divide em duas colunas — mesma informação, metade da altura. */
.gvsx-footer__cols { display: grid; grid-template-columns: 1.3fr 0.9fr 1.1fr 1.7fr; gap: 1.2rem 2.5rem; }
.gvsx-footer__cols > .wp-block-column { flex-basis: auto !important; }
.gvsx-footer__links { column-count: 2; column-gap: 1.8rem; }
.gvsx-footer__links a { display: inline-block; }

.gvsx-footer__sep { margin: var(--wp--preset--spacing--40) 0 var(--wp--preset--spacing--20); opacity: 1; }
.gvsx-chip { display: inline-block; border: 1px solid var(--wp--preset--color--border); border-radius: 999px; padding: 2px 10px; margin: 0 2px; background: var(--wp--preset--color--surface-2); color: var(--wp--preset--color--contrast); }
.gvsx-social .wp-social-link { background: transparent; }
/* Rodapé compacto (todas as páginas, menos a inicial — o WordPress põe a classe "home" no <body> da página inicial) */
body:not(.home) .gvsx-footer { margin-top: var(--wp--preset--spacing--40); padding-top: var(--wp--preset--spacing--30); padding-bottom: var(--wp--preset--spacing--20); }
body:not(.home) .gvsx-footer__cols { display: grid; grid-template-columns: max-content max-content minmax(0, 1fr); gap: 1rem 3rem; }
body:not(.home) .gvsx-footer__cols > .wp-block-column:first-child { display: none; } /* "Sobre o patch": só na home */
body:not(.home) .gvsx-footer h3 { font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em; color: var(--wp--preset--color--muted); margin: 0 0 0.35rem; }
body:not(.home) .gvsx-footer__cols p { font-size: var(--wp--preset--font-size--x-small); line-height: 1.7; margin: 0; }
body:not(.home) .gvsx-footer__cols .gvsx-social { margin-top: 0.45rem; }
body:not(.home) .gvsx-footer__links { line-height: 1.9; }
body:not(.home) .gvsx-footer__links br { display: none; }
body:not(.home) .gvsx-footer__links { column-count: initial; } /* nas internas os links já correm em linha */
body:not(.home) .gvsx-footer__links a { white-space: nowrap; }
body:not(.home) .gvsx-footer__links a:not(:last-child)::after { content: "·"; margin: 0 0.6em; color: var(--wp--preset--color--muted); opacity: 0.6; }
body:not(.home) .gvsx-footer__sep { margin: var(--wp--preset--spacing--30) 0 var(--wp--preset--spacing--20); }
@media (max-width: 1099px) {
  body:not(.home) .gvsx-footer__cols { grid-template-columns: max-content minmax(0, 1fr); gap: 1rem 2.5rem; }
  body:not(.home) .gvsx-footer__cols > .wp-block-column:last-child { grid-column: 1 / -1; }
}
@media (max-width: 781px) {
  body:not(.home) .gvsx-footer__cols { grid-template-columns: minmax(0, 1fr); gap: 1rem; }
  body:not(.home) .gvsx-footer__cols > .wp-block-column:last-child { grid-column: auto; }
}

/* ---------------- WhatsApp flutuante (só na home; ver functions.php) ---------------- */
#gvsx-wa-float { position: fixed; left: 20px; bottom: 20px; z-index: 2147483000; width: 60px; height: 60px; border-radius: 50%; background: #25D366; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 16px rgba(0,0,0,.35), 0 0 0 0 rgba(37,211,102,.6); cursor: pointer; text-decoration: none; transition: transform .2s ease, box-shadow .2s ease; animation: gvsxWaPulse 2.4s infinite; }
#gvsx-wa-float:hover { transform: scale(1.08); box-shadow: 0 6px 22px rgba(0,0,0,.45); }
#gvsx-wa-float svg { width: 30px; height: 30px; display: block; }
@keyframes gvsxWaPulse { 0% { box-shadow: 0 4px 16px rgba(0,0,0,.35), 0 0 0 0 rgba(37,211,102,.55); } 70% { box-shadow: 0 4px 16px rgba(0,0,0,.35), 0 0 0 14px rgba(37,211,102,0); } 100% { box-shadow: 0 4px 16px rgba(0,0,0,.35), 0 0 0 0 rgba(37,211,102,0); } }
#gvsx-wa-float .gvsx-wa-tip { position: absolute; left: 72px; background: #ffffff; color: #111; font-size: 13px; font-weight: 600; padding: 8px 12px; border-radius: 8px; white-space: nowrap; box-shadow: 0 4px 14px rgba(0,0,0,.25); opacity: 0; transform: translateX(-8px); transition: opacity .2s ease, transform .2s ease; pointer-events: none; }
#gvsx-wa-float:hover .gvsx-wa-tip { opacity: 1; transform: translateX(0); }
#gvsx-wa-float .gvsx-wa-tip::after { content: ""; position: absolute; left: -6px; top: 50%; transform: translateY(-50%); border-width: 6px 6px 6px 0; border-style: solid; border-color: transparent #fff transparent transparent; }
@media (max-width: 749px) { #gvsx-wa-float { left: 16px; bottom: 16px; width: 56px; height: 56px; } #gvsx-wa-float svg { width: 28px; height: 28px; } #gvsx-wa-float .gvsx-wa-tip { display: none; } }
@media (prefers-reduced-motion: reduce) { #gvsx-wa-float { animation: none; } }

/* =====================================================================
   EFEITOS PORTADOS DA LOJA SHOPIFY (gvsx-light-mode.css, blocos 12, 13 e 16; theme.liquid)
   1) Halo verde (sombra) atrás de hero, mídias, faixa, tabela, cards e botões
   2) "Respiração": flutuação contínua de hero, vídeos e antes/depois (+ elevação no hover)
   3) Brilho passando nos títulos
   4) Texto do hero em loop (estados usados pelo JS) e canvas das partículas
   ===================================================================== */

/* ---- 1) Halo verde: sobre #0A0A0A sombra preta é invisível; o volume vem de um halo na cor da marca ---- */
:root {
  --gvsx-d-glow: 0, 230, 118;
  /* Cards: mesma "cauda" longa dos blocos grandes (o halo se dissolve em ~100 px, sem terminar seco), só mais suave. */
  --gvsx-d-card: 0 1px 2px rgba(0, 0, 0, 0.45), 0 14px 34px -10px rgba(var(--gvsx-d-glow), 0.22), 0 40px 90px -30px rgba(var(--gvsx-d-glow), 0.30);
  --gvsx-d-card-hi: 0 2px 6px rgba(0, 0, 0, 0.5), 0 22px 46px -12px rgba(var(--gvsx-d-glow), 0.32), 0 60px 110px -34px rgba(var(--gvsx-d-glow), 0.42);
  --gvsx-d-float: 0 2px 8px rgba(0, 0, 0, 0.5), 0 16px 34px -10px rgba(var(--gvsx-d-glow), 0.26), 0 46px 82px -34px rgba(var(--gvsx-d-glow), 0.34);
  --gvsx-d-float-hi: 0 4px 12px rgba(0, 0, 0, 0.55), 0 24px 46px -12px rgba(var(--gvsx-d-glow), 0.34), 0 66px 104px -38px rgba(var(--gvsx-d-glow), 0.44);
}
/* blocos grandes */
.gvsx-hero, .gvsx-feature__video, .gvsx-feature__image, .gvsx-ba, .gvsx-ticker, .gvsx-review, .gvsx-newsletter, .gvsx-compare-table { box-shadow: var(--gvsx-d-float); }
.gvsx-hero:hover, .gvsx-feature__video:hover, .gvsx-feature__image:hover, .gvsx-ba:hover, .gvsx-review:hover { box-shadow: var(--gvsx-d-float-hi); }
/* cards e itens */
.gvsx-step-card, .gvsx-faq-item, .gvsx-products .wc-block-product { box-shadow: var(--gvsx-d-card); }
.gvsx-step-card:hover, .gvsx-faq-item:hover, .gvsx-faq-item.gvsx-faq-open, .gvsx-products .wc-block-product:hover { box-shadow: var(--gvsx-d-card-hi); }
/* botão do comparativo: o halo é o mesmo verde do gradiente, então ele "acende" */
.gvsx-compare-cta { box-shadow: 0 10px 26px -10px rgba(var(--gvsx-d-glow), 0.55); }
.gvsx-compare-cta:hover { box-shadow: 0 16px 38px -12px rgba(var(--gvsx-d-glow), 0.7); }
/* o halo não pode ser recortado pelas próprias seções (overflow) nem pisado pela seção seguinte.
   Atenção: o CSS portado da Shopify (mais abaixo neste arquivo) tinha overflow:hidden em .gvsx-compare e .gvsx-steps,
   e por vir depois vencia esta regra — os overflow:hidden foram removidos de lá (v0.2.3). */
.gvsx-compare, .gvsx-steps { overflow: visible; }
/* As duas declarações são de propósito: `clip` é o certo (não cria caixa de rolagem, então não quebra os
   position:sticky da página do produto), mas o Safari só o entende a partir da 16. Navegador que não conhece
   `clip` descarta a segunda linha e fica com `hidden`, que segura do mesmo jeito o que passa da borda — sem ele,
   a sangria do carrossel no desktop (96px) vira rolagem lateral e a página aparece deslocada. */
body { overflow-x: hidden; overflow-x: clip; }
.gvsx-hero, .gvsx-feature__video, .gvsx-feature__image, .gvsx-ba, .gvsx-ticker, .gvsx-compare-table, .gvsx-step-card, .gvsx-review { position: relative; z-index: 2; }
.gvsx-hero { z-index: 2; } /* o cabeçalho fixo está em 90; o mini-carrinho e menus, acima disso */

/* ---- 2) "Respiração": flutuação por transform (keyframes) + elevação no hover por translate/scale,
        propriedades independentes que se compõem, sem uma anular a outra. Durações e atrasos
        diferentes para os blocos não subirem e descerem todos juntos. ---- */
@keyframes gvsx-float {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50% { transform: translate3d(0, calc(var(--gvsx-float-amp, 6px) * -1), 0); }
}
.gvsx-float { animation: gvsx-float var(--gvsx-float-dur, 7.5s) ease-in-out infinite var(--gvsx-float-delay, 0s); transition: translate .35s cubic-bezier(0.2, 0.7, 0.3, 1), scale .35s cubic-bezier(0.2, 0.7, 0.3, 1), box-shadow .35s ease; --gvsx-float-amp: 7px; }
.gvsx-float--alt { --gvsx-float-delay: -2.6s; }
.gvsx-float--ba { --gvsx-float-amp: 6px; --gvsx-float-dur: 8s; --gvsx-float-delay: -1.2s; }
.gvsx-float--hero { --gvsx-float-amp: 4px; --gvsx-float-dur: 9s; } /* o hero é enorme: amplitude menor e ciclo mais lento */
.gvsx-float:hover { animation-play-state: paused; translate: 0 -9px; }
.gvsx-float--hero:hover { translate: 0 -5px; scale: 1.004; } /* subir 9px numa caixa de 650px não lê como elevação */
.gvsx-float--ba:hover { translate: 0 -6px; }
/* a mídia do vídeo (wp:video) tem margem própria do núcleo; zera para a coluna centrar como antes */
.wp-block-video.gvsx-feature__video { margin: 0; }

/* ---- 3) Brilho passando nos títulos: o texto vira "janela" para um gradiente quase todo da própria
        cor (currentColor) com uma faixa verde no meio; animar a posição faz a faixa atravessar o texto.
        Ladrilho de 200% e deslocamento de 200% → loop contínuo sem salto. Só onde o navegador
        suporta background-clip: text; senão o texto fica normal (nunca invisível). ---- */
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  @keyframes gvsx-shine { from { background-position: 200% 0; } to { background-position: 0% 0; } }
  :root { --gvsx-shine-rgb: 0, 195, 100; --gvsx-shine-a: 0.95; }
  .gvsx-shine,
  .gvsx-compare-title span,
  .gvsx-compare-footer h3 span,
  .gvsx-reviews__summary strong,
  .gvsx-faq-answer-inner strong,
  .gvsx-faq-item.gvsx-faq-open .gvsx-faq-q-left > span:not(.gvsx-faq-icon-q) {
    background-image: linear-gradient(100deg, currentColor 0 42%, rgba(var(--gvsx-shine-rgb), var(--gvsx-shine-a)) 50%, currentColor 58% 100%);
    background-size: 200% 100%;
    background-repeat: repeat-x;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    text-shadow: none;
    animation: gvsx-shine 5.5s linear infinite;
  }
  /* -webkit-text-fill-color é herdado: filhos sem gradiente próprio ficariam invisíveis */
  .gvsx-shine > *:not(strong) { -webkit-text-fill-color: currentColor; background-image: none; }
  /* nos trechos que já são verdes, uma faixa verde seria invisível: a faixa vira branca */
  .gvsx-compare-title span, .gvsx-compare-footer h3 span, .gvsx-faq-answer-inner strong,
  .gvsx-faq-item.gvsx-faq-open .gvsx-faq-q-left > span:not(.gvsx-faq-icon-q) { --gvsx-shine-rgb: 255, 255, 255; }
}

/* ---- 4) Hero: estados do texto em loop (JS) ----
   Com JS ativo (html.gvsx-js) o texto já nasce invisível — sem isso ele aparecia por ~1 s até o script
   rodar. O escurecimento do vídeo (has-background-dim-60) só entra junto com o texto (.gvsx-hero--text-shown). */
.gvsx-hero .wp-block-cover__inner-container { will-change: opacity, transform; }
html.gvsx-js .gvsx-hero .wp-block-cover__inner-container:not(.gvsx-hero-shown) { opacity: 0; transform: translateY(28px); pointer-events: none; }
.gvsx-hero-hidden { opacity: 0 !important; transform: translateY(28px); pointer-events: none; }
.gvsx-hero-shown { opacity: 1 !important; transform: translateY(0); }
.gvsx-hero .wp-block-cover__background { transition: opacity 1.2s ease-out; }
html.gvsx-js .gvsx-hero:not(.gvsx-hero--text-shown) .wp-block-cover__background { opacity: 0; }

/* ---- Partículas: canvas fixo por cima do conteúdo, abaixo do cabeçalho (90) e dos menus ---- */
/* Sem porcentagem: num elemento `fixed`, o 100% se resolve contra a viewport, e numa página que o navegador
   encolheu para caber essa viewport é a VISUAL (maior que a de layout) — o canvas ficava mais largo que a tela,
   e como elemento fixo ele escapa do `body { overflow-x: clip }`. Com `auto` ele usa o próprio tamanho de
   bitmap, que o gvsx.js define a partir de document.documentElement.clientWidth (a viewport de layout, que o
   zoom não altera). Assim o canvas nunca passa da borda. */
#gvsx-particles { position: fixed; top: 0; left: 0; width: auto; height: auto; pointer-events: none; z-index: 3; opacity: 0.45; mix-blend-mode: screen; }

/* Acessibilidade: quem pede menos movimento recebe tudo parado (a elevação no hover perde só a transição) */
@media (prefers-reduced-motion: reduce) {
  .gvsx-float, .gvsx-review { animation: none; transition: none; }
  .gvsx-float:hover, .gvsx-review:hover { translate: none; scale: none; }
  .gvsx-shine, .gvsx-compare-title span, .gvsx-compare-footer h3 span, .gvsx-reviews__summary strong, .gvsx-faq-answer-inner strong,
  .gvsx-faq-item.gvsx-faq-open .gvsx-faq-q-left > span:not(.gvsx-faq-icon-q) { animation: none; background-image: none; -webkit-text-fill-color: currentColor; }
  #gvsx-particles { display: none; }
}

/* =====================================================================
   LOJA (/shop/) E PÁGINA DO PRODUTO
   ===================================================================== */

/* ---- Cabeçalho da loja ---- */
.gvsx-kicker { display: inline-block; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.22em; text-transform: uppercase; color: var(--gvsx-neon); background: rgba(0, 230, 118, 0.1); border: 1px solid rgba(0, 230, 118, 0.22); border-radius: 999px; padding: 6px 16px; margin: 0 auto 0.9rem; }
.gvsx-shop__hero { padding-top: var(--wp--preset--spacing--40); padding-bottom: var(--wp--preset--spacing--30); text-align: center; }
.gvsx-shop__hero .gvsx-kicker { display: inline-block; }
.gvsx-shop__title { margin: 0 0 0.6rem; }
.gvsx-shop__subtitle { margin: 0 auto 1.1rem; max-width: 640px; }
.gvsx-trust { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.gvsx-trust li { font-size: 0.8rem; font-weight: 600; color: var(--wp--preset--color--contrast); background: var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); border-radius: 999px; padding: 7px 14px; }
.gvsx-shop .wc-block-store-notices:empty { display: none; }

/* ---- Cards de produto ("vivos": halo, elevação, zoom da imagem, brilho passando, entrada animada) ----
   Usados na loja (4 por linha), nos relacionados e reaproveitados na home (.gvsx-products). */
/* grid-auto-rows: 1fr iguala a altura de TODAS as linhas, não só das células de cada linha. Sem isso, uma linha
   só com produtos sem avaliação (o Mod 27 em pré-venda) fica mais baixa que a de baixo e os botões desencontram
   entre linhas. Na faixa horizontal do mobile o template vira flex e a declaração é ignorada. */
.gvsx-cards .wc-block-product-template.wc-block-product-template__responsive { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.4rem; grid-auto-rows: 1fr; }
.gvsx-cards .wc-block-product { position: relative; z-index: 2; display: flex; flex-direction: column; background: linear-gradient(180deg, rgba(255, 255, 255, 0.045) 0%, rgba(255, 255, 255, 0.02) 100%); border: 1px solid var(--gvsx-glass-border); border-radius: 20px; padding: 0.9rem 0.9rem 1.2rem; box-shadow: var(--gvsx-d-card); transition: translate .35s cubic-bezier(0.2, 0.7, 0.3, 1), border-color .35s ease, box-shadow .35s ease; overflow: hidden; }
.gvsx-cards .wc-block-product::before { content: ""; position: absolute; inset: -1px; border-radius: inherit; padding: 1px; background: linear-gradient(135deg, rgba(0, 230, 118, 0.7), rgba(0, 175, 199, 0.35) 45%, transparent 70%); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; opacity: 0; transition: opacity .35s ease; pointer-events: none; }
.gvsx-cards .wc-block-product:hover { translate: 0 -8px; border-color: rgba(0, 230, 118, 0.3); box-shadow: var(--gvsx-d-card-hi); }
.gvsx-cards .wc-block-product:hover::before { opacity: 1; }
.gvsx-cards .gvsx-card__media { position: relative; overflow: hidden; border-radius: 14px; margin: 0; }
.gvsx-cards .gvsx-card__media img { border-radius: 14px; display: block; width: 100%; transition: transform .6s cubic-bezier(0.2, 0.7, 0.3, 1); }
.gvsx-cards .wc-block-product:hover .gvsx-card__media img { transform: scale(1.06); }
/* brilho passando na imagem ao passar o mouse */
.gvsx-cards .gvsx-card__media::after { content: ""; position: absolute; top: 0; bottom: 0; left: -70%; width: 45%; background: linear-gradient(105deg, transparent, rgba(255, 255, 255, 0.22), transparent); transform: skewX(-18deg); pointer-events: none; opacity: 0; }
.gvsx-cards .wc-block-product:hover .gvsx-card__media::after { animation: gvsx-card-shine .9s ease forwards; }
@keyframes gvsx-card-shine { from { left: -70%; opacity: 0; } 15% { opacity: 1; } to { left: 130%; opacity: 0; } }
.gvsx-cards .gvsx-card__title a { color: var(--wp--preset--color--contrast); text-decoration: none; font-weight: 700; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.gvsx-cards .gvsx-card__title a:hover { color: var(--gvsx-neon); }
.gvsx-cards .gvsx-card__rating, .gvsx-cards .wc-block-components-product-rating { justify-content: center; margin: 0 0 0.35rem; }
.gvsx-cards .wc-block-components-product-rating .wc-block-components-product-rating__stars { color: rgba(255, 255, 255, 0.17); }
/* margin-top: auto joga a sobra de altura do card para CIMA do preço, ou seja, para o lugar onde estariam as
   estrelas de quem ainda não tem avaliação e para a segunda linha do título de quem tem título curto. Preço e
   botão ficam colados na base, na mesma altura em todos os cards da linha. */
.gvsx-cards .gvsx-card__price { color: var(--gvsx-neon); font-weight: 800; margin: auto 0 0.8rem; }
/* O preço é o que o card tem de mais importante e vinha do mesmo tamanho do título e do botão, o que deixava o
   card sem hierarquia.
   O tamanho vai nos VALORES, não na caixa: a caixa é .wc-block-components-product-price, que o bloco marca com
   has-medium-font-size, e o WordPress escreve essa classe utilitária com !important
   (`.has-medium-font-size{font-size:var(--wp--preset--font-size--medium)!important}`) — qualquer tamanho posto
   nela perde, por mais específico que o seletor seja. Nos spans de dentro não há concorrente, então basta a
   declaração normal. A line-height continua na caixa, onde o !important não alcança.
   1,25rem é o maior tamanho que ainda deixa "R$ 99,90 R$ 79,90" numa linha só no card mais estreito que o site
   realmente usa (6 colunas a 1280px: 161px úteis; o par mede ~152px com o preço antigo a 0,9rem). */
.gvsx-cards .gvsx-card__price .wc-block-components-product-price { line-height: 1.3; }
.gvsx-cards .gvsx-card__price .woocommerce-Price-amount,
.gvsx-cards .gvsx-card__price .gvsx-free { font-size: 1.25rem; }
.gvsx-cards .gvsx-card__price del .woocommerce-Price-amount { font-size: 0.9rem; }
.gvsx-cards .gvsx-card__price del, .gvsx-cards .gvsx-card__price .wc-block-components-product-price__regular { color: var(--wp--preset--color--muted); font-weight: 500; }
/* O padding lateral vem de 1,6rem do tema. Como o botão é width:100%, ele não muda nada no desenho — só aperta a
   caixa onde o texto pode quebrar, e era o que fazia "COMPRAR NA PRÉ-VENDA" pedir uma terceira linha em card
   estreito. Com 0,7rem o mínimo para duas linhas cai de 159px para 129px, sem diferença visível no botão. */
.gvsx-cards .gvsx-card__button .wp-block-button__link { width: 100%; text-align: center; background: linear-gradient(135deg, #00a12e, #00c853); box-shadow: 0 8px 22px -10px rgba(0, 230, 118, 0.7); text-transform: uppercase; letter-spacing: 0.04em; font-size: 0.85rem; padding-inline: 0.7rem; }
/* Todo botão ocupa duas linhas, que é o que "COMPRAR NA PRÉ-VENDA" precisa na largura do card. Sem isso um botão
   de uma linha ("BAIXAR GRÁTIS") fica mais baixo e, mesmo colado na base, não alinha com os de duas linhas. O
   item flex de altura 2lh força a caixa de conteúdo; o padding do botão continua vindo do tema, seja ele qual for
   (a unidade lh é a própria line-height do botão — 3.3em é só o valor de hoje, para navegador sem suporte). */
.gvsx-cards .gvsx-card__button .wp-block-button__link::after { content: ""; display: block; width: 0; height: 3.3em; height: 2lh; }
.gvsx-cards .gvsx-card__button .wp-block-button__link:hover { background: linear-gradient(135deg, #00b836, #00e676); color: #052e16; box-shadow: 0 14px 30px -10px rgba(0, 230, 118, 0.9); }
/* "Ver carrinho" sob o botão do card não existe mais: comprar já abre o carrinho e "1 no carrinho" também (gvsx.js, v0.5.1) */
.gvsx-cards .gvsx-card__button .added_to_cart, .wc-block-components-product-button .added_to_cart { display: none !important; }
.gvsx-free { color: var(--gvsx-neon); font-weight: 800; }
/* entrada animada: só quando o JS está rodando (html.gvsx-js); ele adiciona .gvsx-in quando o card entra na tela */
html.gvsx-js .gvsx-cards .wc-block-product:not(.gvsx-in) { opacity: 0; transform: translateY(22px); }
.gvsx-cards .wc-block-product { transition: opacity .6s ease, transform .6s cubic-bezier(0.2, 0.7, 0.3, 1), translate .35s cubic-bezier(0.2, 0.7, 0.3, 1), border-color .35s ease, box-shadow .35s ease; }
.gvsx-cards .wp-block-query-pagination { margin-top: var(--wp--preset--spacing--40); }
.gvsx-shop__after a { color: var(--gvsx-neon); }
@media (max-width: 1024px) { .gvsx-cards .wc-block-product-template.wc-block-product-template__responsive { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; } }
@media (max-width: 781px) {
  .gvsx-cards .wc-block-product-template.wc-block-product-template__responsive { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.8rem; }
  .gvsx-cards .wc-block-product { padding: 0.7rem 0.7rem 1rem; border-radius: 16px; }
  .gvsx-cards .gvsx-card__button .wp-block-button__link { font-size: 0.78rem; padding: 0.75rem 0.8rem; }
}
@media (max-width: 420px) { .gvsx-cards .wc-block-product-template.wc-block-product-template__responsive { grid-template-columns: 1fr; } }

/* ---- Página do produto ---- */
.gvsx-product { padding-top: var(--wp--preset--spacing--20); }
.gvsx-crumbs .woocommerce-breadcrumb, .woocommerce-breadcrumb { color: var(--wp--preset--color--muted); font-size: 0.8rem; margin: 0 0 var(--wp--preset--spacing--30); }
.woocommerce-breadcrumb a { color: var(--gvsx-neon); }
.gvsx-product__top { margin-bottom: var(--wp--preset--spacing--50); }
.gvsx-product__media { position: relative; }
@media (min-width: 782px) { .gvsx-product__media { position: sticky; top: 150px; align-self: flex-start; } }
/* Selo único da página do produto (o PHP reescreve o bloco da galeria: ver GVSX_Preorder::gallery_badge).
   Fundo escuro próprio em vez de translúcido: o selo fica sobre a arte do produto, que muda de imagem para
   imagem, e só um fundo opaco garante o contraste do texto em qualquer uma delas. */
.gvsx-badge { position: absolute; top: 14px; left: 14px; z-index: 4; display: inline-flex; align-items: center; padding: 7px 14px; border-radius: 999px; background: rgba(8, 8, 8, 0.82); border: 1px solid; font-size: 0.72rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; line-height: 1; box-shadow: 0 6px 18px -8px rgba(0, 0, 0, 0.9); }
.gvsx-badge--pre { color: #6fe3f2; border-color: rgba(0, 175, 199, 0.55); }
.gvsx-badge--sale { color: var(--gvsx-neon); border-color: rgba(0, 230, 118, 0.55); }
.gvsx-gallery .woocommerce-product-gallery { position: relative; z-index: 2; border-radius: 22px; box-shadow: var(--gvsx-d-float); animation: gvsx-float 8s ease-in-out infinite; --gvsx-float-amp: 6px; }
.gvsx-gallery .woocommerce-product-gallery:hover { animation-play-state: paused; }
.gvsx-gallery .woocommerce-product-gallery__wrapper { border-radius: 22px; overflow: hidden; }
.gvsx-gallery .woocommerce-product-gallery__image img { display: block; width: 100%; height: auto; }
.gvsx-gallery .woocommerce-product-gallery__trigger { background: rgba(10, 10, 10, 0.75) !important; border-radius: 50%; }
.gvsx-gallery .woocommerce-product-gallery__trigger img { display: none; }
.gvsx-gallery .woocommerce-product-gallery__trigger::before { border-color: #fff !important; }
.gvsx-gallery .woocommerce-product-gallery__trigger::after { background: #fff !important; }
.gvsx-product__trust { list-style: none; margin: 1.1rem 0 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.gvsx-product__trust li { font-size: 0.78rem; font-weight: 600; color: var(--wp--preset--color--muted); background: var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); border-radius: 12px; padding: 9px 12px; }
.gvsx-product__title { margin: 0 0 0.6rem; font-size: clamp(1.6rem, 2.6vw, 2.35rem); line-height: 1.15; }
.gvsx-product__rating { margin: 0 0 0.6rem; }
.gvsx-product__rating .wc-block-components-product-rating__stars { color: rgba(255, 255, 255, 0.17); }
.gvsx-product__rating .wc-block-components-product-rating__reviews_count, .gvsx-product__rating a { color: var(--wp--preset--color--muted); font-size: 0.85rem; }
.gvsx-product__price { color: var(--gvsx-neon); font-weight: 800; margin: 0 0 0.9rem; }
.gvsx-product__price del { color: var(--wp--preset--color--muted); font-weight: 500; font-size: 0.6em; margin-right: 0.4rem; }
.gvsx-product__summary { color: var(--wp--preset--color--muted); font-size: 1rem; line-height: 1.65; margin: 0 0 1.3rem; }
.gvsx-product__summary p { margin: 0 0 0.6rem; }
/* formulário: quantidade discreta + botão grande com pulso de brilho */
.gvsx-product__form form.cart { display: flex; flex-wrap: wrap; align-items: stretch; gap: 10px; margin: 0 0 0.9rem; }
.gvsx-product__form .quantity { display: flex; }
.gvsx-product__form .quantity.hidden { display: none; } /* venda de 1 em 1: o WooCommerce manda a quantidade como campo oculto */
.gvsx-product__form .quantity input.qty { width: 74px; height: 100%; min-height: 60px; text-align: center; border-radius: 12px; font-weight: 700; font-size: 1rem; }
.gvsx-product__form .single_add_to_cart_button { flex: 1 1 260px; min-height: 60px; font-size: 1.05rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; border-radius: 12px; background: linear-gradient(135deg, #00a12e 0%, #00e676 100%); color: #052e16; border: 0; cursor: pointer; position: relative; overflow: hidden; box-shadow: 0 14px 34px -12px rgba(0, 230, 118, 0.75), 0 0 0 0 rgba(0, 230, 118, 0.45); animation: gvsx-cta-pulse 2.6s ease-out infinite; transition: transform .2s ease, box-shadow .2s ease, filter .2s ease; }
.gvsx-product__form .single_add_to_cart_button::after { content: ""; position: absolute; top: 0; bottom: 0; left: -60%; width: 40%; background: linear-gradient(105deg, transparent, rgba(255, 255, 255, 0.45), transparent); transform: skewX(-18deg); animation: gvsx-cta-shine 3.2s ease-in-out infinite; }
.gvsx-product__form .single_add_to_cart_button:hover { transform: translateY(-2px); filter: brightness(1.06); box-shadow: 0 20px 44px -12px rgba(0, 230, 118, 0.95); }
.gvsx-product__form .single_add_to_cart_button:disabled, .gvsx-product__form .single_add_to_cart_button.disabled { opacity: 0.55; animation: none; }
@keyframes gvsx-cta-pulse { 0% { box-shadow: 0 14px 34px -12px rgba(0, 230, 118, 0.75), 0 0 0 0 rgba(0, 230, 118, 0.45); } 70% { box-shadow: 0 14px 34px -12px rgba(0, 230, 118, 0.75), 0 0 0 16px rgba(0, 230, 118, 0); } 100% { box-shadow: 0 14px 34px -12px rgba(0, 230, 118, 0.75), 0 0 0 0 rgba(0, 230, 118, 0); } }
@keyframes gvsx-cta-shine { 0%, 55% { left: -60%; } 85%, 100% { left: 130%; } }
.gvsx-product__form .wc-stripe-payment-request-wrapper, .gvsx-product__form .wc-stripe-express-checkout-element, .gvsx-product__form #wc-stripe-express-checkout-element, .gvsx-product__form .wc-stripe-express-checkout-button-separator { display: none !important; }
.gvsx-pay { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 0 0 1.1rem; font-size: 0.8rem; color: var(--wp--preset--color--muted); }
.gvsx-pay__label { margin-right: 4px; }
.gvsx-steps3 { list-style: none; margin: 0 0 1.2rem; padding: 14px 12px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; background: var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); border-radius: 14px; position: relative; counter-reset: none; }
.gvsx-steps3 li { text-align: center; font-size: 0.74rem; color: var(--wp--preset--color--muted); position: relative; }
.gvsx-steps3 li b { display: block; color: var(--wp--preset--color--contrast); font-weight: 700; margin-top: 6px; }
.gvsx-steps3__icon { display: inline-grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: rgba(0, 230, 118, 0.1); border: 1px solid rgba(0, 230, 118, 0.3); color: var(--gvsx-neon); position: relative; z-index: 1; }
.gvsx-steps3__icon svg { width: 20px; height: 20px; }
.gvsx-steps3 li:not(:last-child)::after { content: ""; position: absolute; top: 21px; left: calc(50% + 24px); right: calc(-50% + 24px); height: 2px; background: linear-gradient(90deg, rgba(0, 230, 118, 0.55), rgba(0, 230, 118, 0.15)); }
.gvsx-product__meta { font-size: 0.78rem; color: var(--wp--preset--color--muted); margin: 0 0 1.4rem; }
.gvsx-product__meta a { color: var(--wp--preset--color--muted); }
.gvsx-product__meta a:hover { color: var(--gvsx-neon); }
/* descrição: título + acordeão (montado pelo JS a partir de h4 + lista) */
.gvsx-product__desc { border-top: 1px solid var(--wp--preset--color--border); padding-top: 1.4rem; }
.gvsx-product__desc-title { font-size: 1.25rem; margin: 0 0 0.9rem; }
.gvsx-product__content h4 { font-size: 0.95rem; margin: 1.2rem 0 0.4rem; letter-spacing: 0.02em; }
.gvsx-product__content ul, .gvsx-product__content ol { margin: 0 0 0.6rem 1.1rem; color: var(--wp--preset--color--muted); font-size: 0.92rem; line-height: 1.6; }
.gvsx-product__content li { margin: 0.15rem 0; }
.gvsx-product__content p { color: var(--wp--preset--color--muted); font-size: 0.95rem; }
.gvsx-acc { border: 1px solid var(--gvsx-glass-border); border-radius: 14px; background: var(--gvsx-glass); margin: 0 0 8px; overflow: hidden; transition: border-color .25s ease, box-shadow .25s ease; }
.gvsx-acc[open] { border-color: rgba(0, 230, 118, 0.3); box-shadow: var(--gvsx-d-card); }
.gvsx-acc summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 10px; padding: 13px 16px; font-weight: 700; font-size: 0.88rem; color: var(--wp--preset--color--contrast); }
.gvsx-acc summary::-webkit-details-marker { display: none; }
.gvsx-acc summary .gvsx-acc__count { margin-left: auto; font-size: 0.7rem; font-weight: 700; color: var(--gvsx-neon); background: rgba(0, 230, 118, 0.1); border: 1px solid rgba(0, 230, 118, 0.22); border-radius: 999px; padding: 2px 8px; flex: none; }
.gvsx-acc summary .gvsx-acc__plus { width: 22px; height: 22px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, 0.18); display: grid; place-items: center; font-size: 15px; line-height: 1; color: var(--gvsx-neon); flex: none; transition: transform .25s ease, background .25s ease; }
.gvsx-acc[open] summary .gvsx-acc__plus { transform: rotate(45deg); background: rgba(0, 230, 118, 0.12); }
.gvsx-acc__body { padding: 0 16px 14px 16px; }
.gvsx-acc__body ul, .gvsx-acc__body ol { margin: 0 0 0 1.1rem; }
.gvsx-acc__body ul.gvsx-cols { columns: 2; column-gap: 24px; }
.gvsx-acc__body ul.gvsx-cols li { break-inside: avoid; }
.gvsx-product__content h4.gvsx-acc-h { display: none; }
/* avaliações (modelo clássico do WooCommerce dentro do bloco Product Reviews) */
.gvsx-product__reviews { margin: 0 0 var(--wp--preset--spacing--50); }
.gvsx-product__reviews .woocommerce-Reviews-title, .gvsx-product__reviews #reply-title { font-size: 1.35rem; font-weight: 800; margin: 0 0 1rem; }
/* Cartões de avaliação: mesma receita visual dos cards de produto (gradiente + borda de vidro + halo verde no
   hover), em duas colunas no desktop — com centenas de avaliações, uma coluna só vira uma fita interminável. */
.gvsx-product__reviews .commentlist { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; align-items: start; }
.gvsx-product__reviews .commentlist > li { margin: 0; }
.gvsx-product__reviews .commentlist .comment_container { position: relative; background: linear-gradient(180deg, rgba(255, 255, 255, 0.045) 0%, rgba(255, 255, 255, 0.02) 100%); border: 1px solid var(--gvsx-glass-border); border-radius: 18px; padding: 1.15rem 1.25rem; margin: 0; display: grid; grid-template-columns: 42px 1fr; gap: 0 14px; box-shadow: var(--gvsx-d-card); transition: border-color .3s ease, box-shadow .3s ease, translate .3s cubic-bezier(0.2, 0.7, 0.3, 1); }
.gvsx-product__reviews .commentlist .comment_container:hover { translate: 0 -3px; border-color: rgba(0, 230, 118, 0.28); box-shadow: var(--gvsx-d-card-hi); }
/* Avatar: inicial do nome num disco da marca (ver gvsx_review_avatar no functions.php). O gravatar padrão do
   WordPress é o boneco cinza "mystery", que numa parede de 365 cartões vira ruído repetido. */
.gvsx-product__reviews .commentlist img.avatar, .gvsx-product__reviews .commentlist .gvsx-avatar { grid-row: 1 / span 2; width: 42px; height: 42px; border-radius: 50%; flex: none; }
.gvsx-product__reviews .commentlist .gvsx-avatar { display: grid; place-items: center; font-weight: 800; font-size: 1.05rem; line-height: 1; color: #052e16; background: linear-gradient(135deg, #00a12e, #00e676); user-select: none; }
/* O woocommerce.css desenha uma segunda caixa em volta do texto (border 1px #e1ddE7, radius 4px, padding 1em e
   margin-left 50px para abrir espaço ao avatar flutuante). Aqui o cartão já é a caixa e o avatar é uma coluna do
   grid, então a de dentro vira moldura dupla clara sobre fundo escuro — e a margem desalinha a coluna. */
/* Os seletores do WooCommerce aqui carregam dois IDs (#reviews #comments), então as regras abaixo repetem os
   mesmos IDs para poder vencê-los na cascata — sem precisar de !important. */
.gvsx-product__reviews #reviews #comments ol.commentlist li .comment-text { min-width: 0; margin: 0; padding: 0; border: 0; border-radius: 0; }
/* align-items: stretch (padrão) para os cartões da mesma linha terminarem na mesma altura — com "start" cada um
   ficava com a altura do próprio texto e a parede virava um dente de serra. O ::before/::after do WooCommerce é um
   clearfix (content:" "; display:table) e, num container grid, conta como ITEM: ele ocupava a primeira célula e
   empurrava o primeiro cartão para a coluna da direita, deixando o vão vazio no topo. */
.gvsx-product__reviews #reviews #comments ol.commentlist { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; align-items: stretch; list-style: none; margin: 0; padding: 0; }
.gvsx-product__reviews #reviews #comments ol.commentlist::before,
.gvsx-product__reviews #reviews #comments ol.commentlist::after { content: none; display: none; }
.gvsx-product__reviews #reviews #comments ol.commentlist li { margin: 0; padding: 0; border: 0; display: flex; }
.gvsx-product__reviews #reviews #comments ol.commentlist li .comment_container { flex: 1; }
.gvsx-product__reviews #reviews #comments ol.commentlist li img.avatar { position: static; float: none; width: 42px; height: 42px; border: 0; padding: 0; background: none; box-shadow: none; }
@media (max-width: 781px) {
  .gvsx-product__reviews #reviews #comments ol.commentlist { grid-template-columns: 1fr; gap: 0.8rem; }
}
.gvsx-product__reviews .comment-text .meta { color: var(--wp--preset--color--muted); font-size: 0.78rem; margin: 0.15rem 0 0.6rem; }
.gvsx-product__reviews .comment-text .meta .woocommerce-review__author { color: var(--wp--preset--color--contrast); font-weight: 700; font-size: 0.9rem; }
.gvsx-product__reviews .comment-text .description { color: #dcdcdc; font-size: 0.93rem; line-height: 1.6; }
.gvsx-product__reviews .comment-text .description p { margin: 0 0 0.4rem; }
.gvsx-product__reviews .comment-text .description p:last-child { margin-bottom: 0; }
/* O título da avaliação (primeira linha, em negrito — ver GVSX_Reviews::build_content) ganha porte de subtítulo. */
.gvsx-product__reviews .comment-text .description p:first-child strong { display: block; color: var(--wp--preset--color--contrast); font-size: 1rem; font-weight: 700; margin-bottom: 0.3rem; }
.gvsx-product__reviews .commentlist .star-rating { margin: 0 0 0.1rem; }
@media (max-width: 781px) {
  .gvsx-product__reviews .commentlist { grid-template-columns: 1fr; gap: 0.8rem; }
  .gvsx-product__reviews .commentlist .comment_container { padding: 1rem; border-radius: 16px; }
}
/* Paginação das avaliações. O woocommerce.css desenha uma caixa única com divisórias (border no <ul>, border-right
   em cada <li>) usando seletores com dois IDs — daí os mesmos IDs aqui, senão só parte do estilo pegava e o
   resultado era o quadriculado claro sobre o fundo escuro. */
.gvsx-product__reviews #reviews #comments nav.woocommerce-pagination { margin: 1.8rem 0 0; text-align: center; }
.gvsx-product__reviews #reviews #comments nav.woocommerce-pagination ul { list-style: none; display: inline-flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin: 0; padding: 0; border: 0; border-radius: 0; white-space: normal; }
.gvsx-product__reviews #reviews #comments nav.woocommerce-pagination ul li { margin: 0; padding: 0; border: 0; float: none; overflow: visible; display: block; }
.gvsx-product__reviews #reviews #comments nav.woocommerce-pagination ul li a.page-numbers,
.gvsx-product__reviews #reviews #comments nav.woocommerce-pagination ul li span.page-numbers {
  display: grid; place-items: center; box-sizing: border-box; min-width: 42px; height: 42px; padding: 0 12px; margin: 0;
  border-radius: 12px; border: 1px solid var(--gvsx-glass-border); background: rgba(0, 0, 0, 0.28);
  color: var(--wp--preset--color--muted); text-decoration: none; font-weight: 700; font-size: 0.88rem; line-height: 1;
  transition: color .2s ease, border-color .2s ease, background .2s ease, transform .2s ease;
}
.gvsx-product__reviews #reviews #comments nav.woocommerce-pagination ul li a.page-numbers:hover { color: var(--gvsx-neon); border-color: rgba(0, 230, 118, 0.42); background: rgba(0, 230, 118, 0.08); transform: translateY(-1px); }
.gvsx-product__reviews #reviews #comments nav.woocommerce-pagination ul li span.page-numbers.current { color: #052e16; background: linear-gradient(135deg, #00a12e, #00e676); border-color: transparent; box-shadow: 0 8px 20px -10px rgba(0, 230, 118, 0.8); }
.gvsx-product__reviews #reviews #comments nav.woocommerce-pagination ul li span.page-numbers.dots { background: none; border-color: transparent; min-width: 26px; padding: 0; }
/* ---- Estrelas (avaliações, cards e página do produto) ----
   O WooCommerce desenha duas camadas com a fonte "star": ::before são as cinco estrelas de FUNDO e span::before
   são as PREENCHIDAS, recortadas por uma largura em %. A regra anterior pintava as duas camadas de #ffcc00, então
   uma nota 4 aparecia como cinco estrelas cheias — a nota real sumia. Agora o fundo é discreto e só o
   preenchimento é dourado, com um brilho leve para destacar sobre o fundo escuro da loja. */
.gvsx-product__reviews .star-rating::before,
.gvsx-cards .wc-block-components-product-rating__stars::before,
.gvsx-product__rating .wc-block-components-product-rating__stars::before { color: rgba(255, 255, 255, 0.17); opacity: 1; }
/* O brilho vem de drop-shadow, não de text-shadow: as cinco estrelas são glifos colados, e um text-shadow
   desfocado soma o halo de todas e vira um retângulo dourado atrás delas (era o "bloco" da v0.7.6). */
.gvsx-product__reviews .star-rating span::before,
.gvsx-cards .wc-block-components-product-rating__stars span::before,
.gvsx-product__rating .wc-block-components-product-rating__stars span::before { color: #FFC53D; text-shadow: none; }
/* ...e fica numa camada POR FORA da caixa das estrelas (.gvsx-starglow, montada no functions.php). A caixa das
   estrelas tem overflow:hidden — é ela que esconde o texto acessível que o WooCommerce escreve dentro do <span>
   ("Avaliado como 4.84 de 5, com base em...") — então um filtro aplicado nela ou no <span> é recortado na borda
   e o halo vira de novo um retângulo (era o corte da v0.7.7). Por fora, o filtro recebe o desenho já recortado e
   espalha o brilho sem limite; o texto continua escondido. */
.gvsx-starglow { display: inline-block; vertical-align: middle; line-height: 0; filter: drop-shadow(0 0 4px rgba(255, 197, 61, 0.6)) drop-shadow(0 0 10px rgba(255, 197, 61, 0.28)); }
/* A letter-spacing do corpo do site (-0.1px) encolhe o avanço de cada glifo e desalinha a conta de meia estrela
   feita no functions.php, que mede em avanços de glifo (1,050781em). Aqui ela é zerada nas três caixas. */
.gvsx-product__reviews .star-rating,
.gvsx-cards .wc-block-components-product-rating__stars,
.gvsx-product__rating .wc-block-components-product-rating__stars { letter-spacing: 0; }
.gvsx-product__reviews .star-rating { float: none; }

/* Nota ao lado das estrelas: "4,84 em 365 avaliações" (montada no filtro render_block_woocommerce/product-rating
   do functions.php, junto com a meia estrela e a camada do brilho). */
.gvsx-product__rating .wc-block-components-product-rating__container,
.gvsx-cards .wc-block-components-product-rating__container { display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.gvsx-rating__note { display: inline-flex; align-items: baseline; gap: 5px; font-size: 0.85rem; color: var(--wp--preset--color--muted); line-height: 1; }
.gvsx-rating__note b { color: var(--wp--preset--color--contrast); font-weight: 800; font-size: 0.95rem; }
/* No card a frase inteira não cabe ao lado das estrelas (medido: 142px de texto para 185px de largura útil), então
   lá a nota é "4,84 (365)" e a frase completa fica só para o leitor de tela (.gvsx-sr). */
.gvsx-cards .gvsx-rating__note { font-size: 0.76rem; }
.gvsx-cards .gvsx-rating__note b { font-size: 0.84rem; }
/* Visível só para leitores de tela. */
.gvsx-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.gvsx-product__reviews .woocommerce-noreviews { color: var(--wp--preset--color--muted); }
.gvsx-product__reviews #review_form_wrapper { margin-top: 1.5rem; background: var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); border-radius: 16px; padding: 1.4rem; }
.gvsx-product__reviews .comment-form p { margin: 0 0 0.9rem; }
.gvsx-product__reviews .comment-form label { display: block; font-size: 0.85rem; color: var(--wp--preset--color--muted); margin-bottom: 4px; }
.gvsx-product__reviews .comment-form textarea, .gvsx-product__reviews .comment-form input[type="text"], .gvsx-product__reviews .comment-form input[type="email"] { width: 100%; border-radius: 10px; padding: 10px 12px; }
.gvsx-product__reviews .comment-form .stars a { color: var(--gvsx-neon); }
.gvsx-product__reviews .comment-form-cookies-consent { display: flex; gap: 8px; align-items: flex-start; }
.gvsx-product__reviews .comment-form-cookies-consent input { margin-top: 5px; }
.gvsx-product__reviews .comment-form-cookies-consent label { display: inline; }
.gvsx-product__reviews .form-submit .submit { border-radius: 10px; }
.gvsx-related__title { margin: 0 0 1.4rem; }
/* barra fixa de compra (montada pelo JS quando o botão sai da tela) */
.gvsx-buybar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 95; background: rgba(10, 10, 10, 0.94); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-top: 1px solid rgba(255, 255, 255, 0.08); transform: translateY(110%); transition: transform .35s cubic-bezier(0.2, 0.7, 0.3, 1); }
.gvsx-buybar.is-visible { transform: translateY(0); }
.gvsx-buybar__inner { max-width: 1400px; margin: 0 auto; padding: 10px var(--wp--preset--spacing--30); display: flex; align-items: center; gap: 14px; }
.gvsx-buybar__img { width: 48px; height: 48px; border-radius: 10px; object-fit: cover; flex: none; }
.gvsx-buybar__text { min-width: 0; flex: 1; }
.gvsx-buybar__title { font-weight: 700; font-size: 0.9rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gvsx-buybar__price { color: var(--gvsx-neon); font-weight: 800; font-size: 0.95rem; }
.gvsx-buybar__btn { flex: none; border: 0; cursor: pointer; border-radius: 10px; padding: 12px 22px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; font-size: 0.85rem; color: #052e16; background: linear-gradient(135deg, #00a12e, #00e676); box-shadow: 0 10px 26px -10px rgba(0, 230, 118, 0.8); }
.gvsx-buybar__btn:hover { filter: brightness(1.06); }
body.gvsx-has-buybar #gvsx-wa-float { bottom: 88px; }
@media (max-width: 781px) {
  .gvsx-product__top { margin-bottom: var(--wp--preset--spacing--40); }
  /* Em coluna única a galeria fica encostada à esquerda: o WooCommerce limita
     .woocommerce .wp-block-woocommerce-product-image-gallery a max-width 512px (product-image-gallery.css), e numa
     coluna de 683px sobravam 171px só do lado direito. Centraliza sem mexer no limite — no desktop a galeria vive
     numa coluna de 42%, onde o limite não sobra e nada muda. */
  .gvsx-product__media .gvsx-gallery { margin-inline: auto; }
  .gvsx-product__trust { grid-template-columns: 1fr 1fr; margin-bottom: 1.2rem; }
  .gvsx-product__form .single_add_to_cart_button { flex-basis: 100%; }
  .gvsx-steps3 li b { font-size: 0.7rem; }
  .gvsx-buybar__img, .gvsx-buybar__title { display: none; }
  .gvsx-buybar__inner { padding: 8px var(--wp--preset--spacing--20); }
  .gvsx-acc__body ul.gvsx-cols { columns: 1; }
}

/* ---- Carrinho (página de confirmação antes do pagamento) ----
   Estrutura (v0.5.0): topo (selo, título, etapas) → duas colunas: à esquerda os itens em cards e, logo abaixo, a oferta
   da Instalação Remota (.gvsx-bump, HTML do plugin; o gvsx.js a move para dentro da coluna — sem JS ela fica acima);
   à direita o resumo fixo com o botão → selos e "voltar". O bloco de carrinho é montado pelo React do WooCommerce, por
   isso os seletores repetem as classes dele (e a especificidade das regras dele). */
.gvsx-cart__hero { padding-top: var(--wp--preset--spacing--40); padding-bottom: var(--wp--preset--spacing--30); text-align: center; }
.gvsx-cart__hero .gvsx-kicker { display: inline-block; }
.gvsx-cart__title { margin: 0 0 0.5rem; }
.gvsx-cart__subtitle { margin: 0 auto 1.2rem; max-width: 640px; }
.gvsx-progress { list-style: none; margin: 0 auto; padding: 0; display: flex; justify-content: center; gap: 0; flex-wrap: wrap; }
.gvsx-progress li { display: flex; align-items: center; gap: 8px; font-size: 0.78rem; font-weight: 600; color: var(--wp--preset--color--muted); padding: 0 14px; position: relative; }
.gvsx-progress li + li::before { content: ""; position: absolute; left: -12px; width: 24px; height: 1px; background: var(--wp--preset--color--border); }
.gvsx-progress li span { display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; border: 1px solid var(--wp--preset--color--border); font-size: 0.72rem; font-weight: 800; }
.gvsx-progress li.is-done { color: var(--gvsx-neon); }
.gvsx-progress li.is-done span { background: rgba(0, 230, 118, 0.15); border-color: rgba(0, 230, 118, 0.5); color: var(--gvsx-neon); }
.gvsx-progress li.is-current { color: var(--wp--preset--color--contrast); }
.gvsx-progress li.is-current span { background: var(--gvsx-neon); border-color: var(--gvsx-neon); color: #052e16; box-shadow: 0 0 16px rgba(0, 230, 118, 0.6); }
/* Avisos (regra de 1 patch por pedido, licença ativa etc.): mesma largura do conteúdo, com respiro do topo */
.gvsx-cart .wc-block-store-notices:empty { display: none; }
.gvsx-cart .wp-block-woocommerce-store-notices, .gvsx-cart .wc-block-components-notices { max-width: 1400px; margin-left: auto; margin-right: auto; }
.gvsx-cart .wc-block-components-notice-banner { margin-bottom: 1.2rem; }
/* Carrinho vazio: o topo "Confirme o seu pedido" e os selos não fazem sentido — ficam só o aviso e o link para a loja.
   (body.gvsx-cart-empty vem do PHP no carregamento; .is-empty é posto pelo JS quando o último item sai.) */
body.gvsx-cart-empty .gvsx-cart__hero, body.gvsx-cart-empty .gvsx-cart__after, .gvsx-cart.is-empty .gvsx-cart__hero, .gvsx-cart.is-empty .gvsx-cart__after { display: none; }
.gvsx-cart .wp-block-woocommerce-empty-cart-block { padding: var(--wp--preset--spacing--60) 0 var(--wp--preset--spacing--50); }
.gvsx-cart .wc-block-cart__empty-cart__title { font-size: 1.5rem; font-weight: 800; color: var(--wp--preset--color--contrast); }
.gvsx-cart .wp-block-woocommerce-empty-cart-block a { color: var(--gvsx-neon); }
/* Duas colunas (o WooCommerce usa 65% + 35% com padding interno; sem gap extra, senão estoura os 100% — v0.2.2) */
.gvsx-cart .wc-block-cart.is-large .wc-block-cart__main { width: 62%; padding-right: 2.25rem; }
.gvsx-cart .wc-block-cart.is-large .wc-block-cart__sidebar { width: 38%; }
/* Rótulo da coluna dos itens (faz par com "Resumo do pedido" à direita) */
.gvsx-cart .wc-block-cart__main::before { content: "Itens do pedido"; display: block; font-size: 0.74rem; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--wp--preset--color--muted); margin: 0.15rem 0 0.9rem 0.2rem; }
/* Linhas do carrinho como cards. Os seletores repetem "table.wc-block-cart-items .wc-block-cart-items__row" porque
   as regras do WooCommerce têm essa forma (especificidade 0,3,1) e, sem isso, venciam as nossas. */
.gvsx-cart .wc-block-cart__main .wc-block-cart-items { border-bottom: 0; } /* linha solta que o WooCommerce põe sob a tabela */
.gvsx-cart .wc-block-cart-items thead { display: none; }
.gvsx-cart table.wc-block-cart-items .wc-block-cart-items__row { display: grid; grid-template-columns: 104px minmax(0, 1fr) auto; gap: 0.25rem 1.15rem; align-items: center; background: var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); border-radius: 18px; padding: 1rem 1.25rem 1rem 1rem; margin: 0 0 12px; box-shadow: var(--gvsx-d-card); }
.gvsx-cart table.wc-block-cart-items .wc-block-cart-items__row td { padding: 0; border: 0; background: transparent; }
.gvsx-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__image img { width: 104px; height: 104px; object-fit: cover; border-radius: 14px; display: block; }
.gvsx-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-components-product-name { color: var(--wp--preset--color--contrast); font-weight: 700; font-size: 1rem; line-height: 1.35; text-decoration: none; max-width: none; }
.gvsx-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-components-product-name:hover { color: var(--gvsx-neon); }
.gvsx-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__prices { display: none; } /* preço unitário duplicava o total (sempre 1 unidade) */
.gvsx-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-components-product-metadata { margin-top: 0.35rem; }
.gvsx-cart .wc-block-components-product-metadata__description, .gvsx-cart .wc-block-components-product-metadata__description p { color: var(--wp--preset--color--muted); font-size: 0.85rem; line-height: 1.5; margin: 0; }
/* "Remover": o WooCommerce mostra só a lixeira; aqui ganha o texto ao lado (o aria-label continua o dele) */
.gvsx-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__quantity { margin-top: 0.55rem; }
.gvsx-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__quantity .wc-block-cart-item__remove-link { display: inline-flex; align-items: center; gap: 4px; width: auto; height: auto; min-width: 0; margin-left: -6px; padding: 5px 10px 5px 6px; border-radius: 8px; color: var(--wp--preset--color--muted); font-size: 0.8rem; font-weight: 600; line-height: 1; text-decoration: none; transition: color .15s ease, background .15s ease; } /* o WooCommerce fixa 24×24 no botão; com o texto, o ícone sumia */
.gvsx-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__quantity .wc-block-cart-item__remove-link svg { flex: none; width: 18px; height: 18px; }
.gvsx-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__quantity .wc-block-cart-item__remove-link::after { content: "Remover"; }
.gvsx-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__quantity .wc-block-cart-item__remove-link:hover { color: var(--wp--preset--color--danger); background: rgba(255, 77, 77, 0.08); text-decoration: none; }
.gvsx-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__total { text-align: right; align-self: center; }
.gvsx-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__total .wc-block-components-product-price { color: var(--gvsx-neon); font-weight: 800; font-size: 1.15rem; white-space: nowrap; }
/* Oferta da Instalação Remota dentro da coluna dos itens (movida pelo JS) */
.gvsx-cart .wc-block-cart__main .gvsx-bump { margin: 0.35rem 0 0; }
/* Resumo: card fixo à direita (o WooCommerce só dava padding à esquerda; título, total e botão ficavam colados nas bordas) */
.gvsx-cart .wc-block-cart .wc-block-cart__sidebar { box-sizing: border-box; margin: 0; padding: 1.5rem 1.5rem 1.6rem; background: var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); border-radius: 20px; box-shadow: var(--gvsx-d-float); align-self: flex-start; position: sticky; top: 180px; }
.gvsx-cart .wc-block-cart:not(.is-large) .wc-block-cart__sidebar { position: static; margin-top: 1.25rem; }
/* no carrinho estreito o WooCommerce esconde o título "Resumo do pedido"; o card ganha o seu */
.gvsx-cart .wc-block-cart:not(.is-large) .wc-block-cart__sidebar::before { content: "Resumo do pedido"; display: block; font-size: 1.1rem; font-weight: 800; color: var(--wp--preset--color--contrast); margin: 0 0 0.6rem; }
.gvsx-cart .wc-block-cart__totals-title, .gvsx-cart .wc-block-components-totals-wrapper .wc-block-components-title, .gvsx-cart .wp-block-woocommerce-cart-order-summary-heading-block .wc-block-components-title { margin: 0; font-size: 1.1rem; font-weight: 800; text-transform: none; letter-spacing: 0; color: var(--wp--preset--color--contrast); padding: 0 0 0.6rem; border: 0; }
.gvsx-cart .wc-block-components-totals-wrapper { border-color: rgba(255, 255, 255, 0.08); padding: 0.85rem 0; }
.gvsx-cart .wc-block-components-totals-wrapper:empty { display: none; }
.gvsx-cart .wc-block-components-totals-item { color: var(--wp--preset--color--muted); font-size: 0.9rem; padding: 0; }
.gvsx-cart .wc-block-components-totals-footer-item { color: var(--wp--preset--color--contrast); padding: 0; }
.gvsx-cart .wc-block-components-totals-footer-item .wc-block-components-totals-item__label { font-size: 1rem; font-weight: 800; }
.gvsx-cart .wc-block-components-totals-footer-item .wc-block-components-totals-item__value { color: var(--gvsx-neon); font-size: 1.4rem; font-weight: 800; }
.gvsx-cart .wc-block-components-totals-footer-item .wc-block-components-totals-item__description { font-size: 0.78rem; color: var(--wp--preset--color--muted); }
/* cupom: linha discreta que abre o campo */
.gvsx-cart .wc-block-components-totals-coupon { padding: 0; }
.gvsx-cart .wc-block-components-totals-coupon .wc-block-components-panel__button { color: var(--wp--preset--color--muted); font-size: 0.88rem; font-weight: 600; padding: 0.15rem 0; transition: color .15s ease; }
.gvsx-cart .wc-block-components-totals-coupon .wc-block-components-panel__button:hover { color: var(--gvsx-neon); }
.gvsx-cart .wc-block-components-totals-coupon .wc-block-components-panel__content { padding-top: 0.6rem; }
.gvsx-cart .wc-block-components-totals-coupon__form .wc-block-components-text-input input { border-radius: 10px; min-height: 46px; }
.gvsx-cart .wc-block-components-totals-coupon__form .wc-block-components-totals-coupon__button { border-radius: 10px; min-height: 46px; }
/* botão principal */
.gvsx-cart .wc-block-cart__submit { margin: 1rem 0 0; }
.gvsx-cart .wc-block-cart__submit-button { background: linear-gradient(135deg, #00a12e 0%, #00e676 100%) !important; color: #052e16 !important; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; font-size: 1rem; min-height: 58px; border-radius: 12px; box-shadow: 0 14px 34px -12px rgba(0, 230, 118, 0.75); animation: gvsx-cta-pulse 2.6s ease-out infinite; transition: transform .2s ease, filter .2s ease; }
.gvsx-cart .wc-block-cart__submit-button:hover { transform: translateY(-2px); filter: brightness(1.06); }
.gvsx-cart .wc-block-cart__payment-method-icons { opacity: 0.85; justify-content: center; }
/* no celular o WooCommerce fixa o botão no rodapé da tela (fundo branco por padrão): faixa escura com desfoque */
.gvsx-cart .wc-block-cart .wc-block-cart__submit-container--sticky { background: rgba(8, 10, 9, 0.9); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); border-top: 1px solid var(--gvsx-glass-border); padding: 12px 16px; }
.gvsx-cart .wc-block-cart .wc-block-cart__submit-container--sticky::before { display: none; }
.gvsx-cart__after { margin-top: var(--wp--preset--spacing--40); text-align: center; }
.gvsx-cart__after .gvsx-trust { margin-bottom: 0.8rem; }
.gvsx-cart__after a { color: var(--gvsx-neon); }
/* Carrinho estreito: com menos de 700px de largura o WooCommerce troca a grade das linhas (classes .is-medium/.is-small/
   .is-mobile e um @container), com regras mais específicas que as nossas — a linha virava "80px 132px" e o total caía em
   cima da descrição. Aqui a grade é redefinida com seletor mais forte: imagem | produto | total; no celular o total desce. */
.gvsx-cart .wc-block-cart:is(.is-medium, .is-small, .is-mobile) table.wc-block-cart-items:not(.wc-block-mini-cart-items) .wc-block-cart-items__row { grid-template-columns: 84px minmax(0, 1fr) auto; column-gap: 1rem; row-gap: 0.4rem; padding: 1rem; border-bottom: 1px solid var(--gvsx-glass-border); }
.gvsx-cart .wc-block-cart:is(.is-medium, .is-small, .is-mobile) table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__image { grid-column: 1; grid-row: 1; padding-right: 0; align-self: center; }
.gvsx-cart .wc-block-cart:is(.is-medium, .is-small, .is-mobile) table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__image img { width: 84px; height: 84px; }
.gvsx-cart .wc-block-cart:is(.is-medium, .is-small, .is-mobile) table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__product { grid-column: 2; grid-row: 1; align-self: center; }
.gvsx-cart .wc-block-cart:is(.is-medium, .is-small, .is-mobile) table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__total { grid-column: 3; grid-row: 1; align-self: center; text-align: right; }
.gvsx-cart .wc-block-cart:is(.is-small, .is-mobile) table.wc-block-cart-items:not(.wc-block-mini-cart-items) .wc-block-cart-items__row { grid-template-columns: 72px minmax(0, 1fr); }
.gvsx-cart .wc-block-cart:is(.is-small, .is-mobile) table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__image { align-self: start; }
.gvsx-cart .wc-block-cart:is(.is-small, .is-mobile) table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__image img { width: 72px; height: 72px; }
.gvsx-cart .wc-block-cart:is(.is-small, .is-mobile) table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__product { align-self: start; }
.gvsx-cart .wc-block-cart:is(.is-small, .is-mobile) table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__total { grid-column: 2; grid-row: 2; text-align: left; }
@media (max-width: 781px) {
  .gvsx-progress li { padding: 0 8px; font-size: 0.72rem; }
  .gvsx-progress li + li::before { display: none; }
  .gvsx-cart .wc-block-cart .wc-block-cart__sidebar { padding: 1.25rem 1.2rem 1.35rem; }
}

/* ============================================================
   Minha conta (área do cliente) — HTML no plugin gvsx-mod (GVSX_Account).
   Inspirada na praticidade da FC Mania, com desenho próprio: cabeçalho da conta,
   abas com ícones no topo e um card por patch (serial oculto + revelar/copiar, validade, download).
   Escopo: body.woocommerce-account (classe que o WooCommerce põe em TODAS as telas da conta), e não o
   modelo de página — assim o visual vale mesmo se a página cair no modelo genérico. O modelo
   page-minha-conta.html só tira o título da página e dá a classe .gvsx-account ao <main>.
   ============================================================ */
:root { --gvsx-acc-gap: 1.5rem; }
body.woocommerce-account main .woocommerce { max-width: 1080px; }
/* Empilha cabeçalho → abas → conteúdo (o WooCommerce põe navegação e conteúdo lado a lado com float). */
body.woocommerce-account main .woocommerce { display: flex; flex-direction: column; gap: var(--gvsx-acc-gap); }
body.woocommerce-account main .woocommerce::before, body.woocommerce-account main .woocommerce::after { content: none; display: none; }
body.woocommerce-account .woocommerce-MyAccount-navigation, body.woocommerce-account .woocommerce-MyAccount-content { float: none; width: 100%; margin: 0; }
body.woocommerce-account .wp-block-post-title { display: none; } /* o cabeçalho da conta já diz "Minha conta" */

/* ---- Cabeçalho da conta ---- */
.gvsx-account__head { display: grid; grid-template-columns: auto 1fr auto; grid-template-areas: "avatar who logout" "avatar stats logout"; align-items: center; column-gap: 1.25rem; row-gap: 0.35rem; padding: 1.6rem 1.8rem; border-radius: 20px; background: linear-gradient(135deg, rgba(0, 230, 118, 0.10), rgba(0, 175, 199, 0.05)), var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); box-shadow: var(--gvsx-d-float); position: relative; z-index: 2; }
.gvsx-account__avatar { grid-area: avatar; align-self: start; width: 72px; height: 72px; border-radius: 50%; display: grid; place-items: center; background: linear-gradient(135deg, var(--gvsx-green), var(--gvsx-neon)); color: #052e16; box-shadow: 0 10px 26px -10px rgba(var(--gvsx-d-glow), 0.75); }
.gvsx-account__avatar span { font-size: 1.55rem; font-weight: 800; letter-spacing: 0.02em; }
.gvsx-account__who { grid-area: who; min-width: 0; }
.gvsx-account__who .gvsx-kicker { margin: 0 0 0.5rem; }
.gvsx-account__hello { margin: 0; font-size: 1.55rem; font-weight: 800; line-height: 1.15; color: var(--wp--preset--color--contrast); }
.gvsx-account__email { margin: 0.2rem 0 0; color: var(--wp--preset--color--muted); font-size: 0.9rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gvsx-account__stats { grid-area: stats; list-style: none; margin: 0.6rem 0 0; padding: 0.7rem 0 0; display: flex; flex-wrap: wrap; gap: 0.4rem 1.6rem; border-top: 1px solid rgba(255, 255, 255, 0.07); }
.gvsx-account__stats li { font-size: 0.85rem; color: var(--wp--preset--color--muted); }
.gvsx-account__stats b { color: var(--wp--preset--color--contrast); font-weight: 800; }
.gvsx-account__logout { grid-area: logout; align-self: start; font-size: 0.8rem; font-weight: 600; color: var(--wp--preset--color--muted); border: 1px solid var(--gvsx-glass-border); border-radius: 999px; padding: 7px 16px; transition: color .15s ease, border-color .15s ease; white-space: nowrap; }
.gvsx-account__logout:hover { color: var(--wp--preset--color--danger); border-color: var(--wp--preset--color--danger); text-decoration: none; }

/* ---- Abas (a navegação padrão do WooCommerce, redesenhada) ---- */
body.woocommerce-account .woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 6px; display: flex; flex-direction: row; flex-wrap: wrap; gap: 6px; background: var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); border-radius: 16px; }
body.woocommerce-account .woocommerce-MyAccount-navigation li { margin: 0; padding: 0; list-style: none; }
body.woocommerce-account .woocommerce-MyAccount-navigation li:first-child { padding-top: 0; }
body.woocommerce-account .woocommerce-MyAccount-navigation li a { display: inline-flex; align-items: center; gap: 9px; white-space: nowrap; padding: 11px 18px; border: 0; border-radius: 11px; background: transparent; color: var(--wp--preset--color--muted); font-weight: 600; font-size: 0.9rem; line-height: 1.2; text-decoration: none; transition: color .15s ease, background .15s ease; }
body.woocommerce-account .woocommerce-MyAccount-navigation li a::before { content: ""; width: 18px; height: 18px; flex: none; background-color: currentColor; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: center; mask-position: center; -webkit-mask-size: contain; mask-size: contain; }
body.woocommerce-account .woocommerce-MyAccount-navigation li a:hover { color: var(--wp--preset--color--contrast); background: rgba(255, 255, 255, 0.06); }
body.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a { color: #052e16; background: linear-gradient(135deg, var(--gvsx-green), var(--gvsx-neon)); box-shadow: 0 10px 22px -10px rgba(var(--gvsx-d-glow), 0.85); text-decoration: none; } /* o CSS de tema de blocos do WooCommerce sublinha o item ativo */
/* Troca de guia (v0.5.1): a guia clicada acende enquanto a página carrega; na chegada, o bloco verde (.gvsx-tabs__pill,
   criado pelo gvsx.js) desliza da guia anterior até a atual e só então a guia ativa assume o fundo. */
body.woocommerce-account .woocommerce-MyAccount-navigation ul { position: relative; }
body.woocommerce-account .woocommerce-MyAccount-navigation li a { position: relative; z-index: 1; }
body.woocommerce-account .woocommerce-MyAccount-navigation li.is-pending a { color: var(--gvsx-neon); background: rgba(0, 230, 118, 0.08); }
body.woocommerce-account .woocommerce-MyAccount-navigation ul.is-sliding li.is-active a { color: var(--wp--preset--color--muted); background: transparent; box-shadow: none; transition: color .2s ease .28s; }
.gvsx-tabs__pill { position: absolute; z-index: 0; border-radius: 11px; background: linear-gradient(135deg, var(--gvsx-green), var(--gvsx-neon)); box-shadow: 0 10px 22px -10px rgba(var(--gvsx-d-glow), 0.85); pointer-events: none; transition: left .42s cubic-bezier(0.2, 0.7, 0.2, 1), top .42s cubic-bezier(0.2, 0.7, 0.2, 1), width .42s cubic-bezier(0.2, 0.7, 0.2, 1), height .42s cubic-bezier(0.2, 0.7, 0.2, 1); }
/* Ícones (máscaras SVG na cor do texto). Seletores com li + classe do item para vencerem a regra-base do ::before. */
body.woocommerce-account .woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--dashboard a::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='7' rx='1.5'/%3E%3Crect x='14' y='3' width='7' height='7' rx='1.5'/%3E%3Crect x='3' y='14' width='7' height='7' rx='1.5'/%3E%3Crect x='14' y='14' width='7' height='7' rx='1.5'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='7' rx='1.5'/%3E%3Crect x='14' y='3' width='7' height='7' rx='1.5'/%3E%3Crect x='3' y='14' width='7' height='7' rx='1.5'/%3E%3Crect x='14' y='14' width='7' height='7' rx='1.5'/%3E%3C/svg%3E"); }
body.woocommerce-account .woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--orders a::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 2h9l4 4v16l-3-1.5L13 22l-2-1.5L9 22l-2-1.5L6 22z'/%3E%3Cpath d='M9 7h6M9 11h6M9 15h4'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 2h9l4 4v16l-3-1.5L13 22l-2-1.5L9 22l-2-1.5L6 22z'/%3E%3Cpath d='M9 7h6M9 11h6M9 15h4'/%3E%3C/svg%3E"); }
body.woocommerce-account .woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--edit-account a::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c0-4 4-6 8-6s8 2 8 6'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c0-4 4-6 8-6s8 2 8 6'/%3E%3C/svg%3E"); }
body.woocommerce-account .woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--edit-address a::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 22s7-6.5 7-12a7 7 0 1 0-14 0c0 5.5 7 12 7 12z'/%3E%3Ccircle cx='12' cy='10' r='2.5'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 22s7-6.5 7-12a7 7 0 1 0-14 0c0 5.5 7 12 7 12z'/%3E%3Ccircle cx='12' cy='10' r='2.5'/%3E%3C/svg%3E"); }
body.woocommerce-account .woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--suporte a::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15a2 2 0 0 1-2 2H8l-4 4V5a2 2 0 0 1 2-2h13a2 2 0 0 1 2 2z'/%3E%3Cpath d='M9.5 9.5a2.5 2.5 0 0 1 4.2 1.8c0 1.7-2.2 2-2.2 2.7'/%3E%3Cpath d='M11.5 16h.01'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15a2 2 0 0 1-2 2H8l-4 4V5a2 2 0 0 1 2-2h13a2 2 0 0 1 2 2z'/%3E%3Cpath d='M9.5 9.5a2.5 2.5 0 0 1 4.2 1.8c0 1.7-2.2 2-2.2 2.7'/%3E%3Cpath d='M11.5 16h.01'/%3E%3C/svg%3E"); }
body.woocommerce-account .woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--customer-logout a::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4'/%3E%3Cpath d='M16 17l5-5-5-5'/%3E%3Cpath d='M21 12H9'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4'/%3E%3Cpath d='M16 17l5-5-5-5'/%3E%3Cpath d='M21 12H9'/%3E%3C/svg%3E"); }

/* ---- Conteúdo (sem caixa em volta: os cards são as caixas) ---- */
body.woocommerce-account .woocommerce-MyAccount-content { background: transparent; border: 0; border-radius: 0; padding: 0; }
body.woocommerce-account .woocommerce-MyAccount-content > .woocommerce-notices-wrapper:not(:empty), body.woocommerce-account .woocommerce-MyAccount-content > .woocommerce-info, body.woocommerce-account .woocommerce-MyAccount-content > .woocommerce-message { margin-bottom: 1.2rem; }
.gvsx-patches-head { margin: 0.2rem 0 1.4rem; }
.gvsx-patches-title { margin: 0; font-size: 1.4rem; font-weight: 800; color: var(--wp--preset--color--contrast); }
.gvsx-patches-sub { margin: 0.45rem 0 0; color: var(--wp--preset--color--muted); font-size: 0.9rem; max-width: 62ch; line-height: 1.6; }
.gvsx-patches-sub a { color: var(--gvsx-neon); }

/* ---- Card do patch ---- */
.gvsx-patches { display: grid; grid-template-columns: 1fr; gap: 1.4rem; }
.gvsx-patch { display: grid; grid-template-columns: 136px 1fr; gap: 1.5rem; padding: 1.4rem; border-radius: 20px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.02)); border: 1px solid var(--gvsx-glass-border); box-shadow: var(--gvsx-d-card); position: relative; z-index: 2; transition: box-shadow .35s ease, border-color .35s ease; }
.gvsx-patch:hover { box-shadow: var(--gvsx-d-card-hi); border-color: rgba(0, 230, 118, 0.25); }
.gvsx-patch--expired .gvsx-patch__img { filter: grayscale(0.5) brightness(0.85); }
.gvsx-patch__media { position: relative; }
.gvsx-patch__img { width: 136px; height: 136px; object-fit: cover; border-radius: 14px; display: block; }
.gvsx-patch__body { min-width: 0; }
.gvsx-patch__top { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 0.7rem; }
.gvsx-patch__plan { font-size: 0.72rem; font-weight: 700; letter-spacing: 0.06em; color: var(--wp--preset--color--muted); text-transform: uppercase; }
.gvsx-patch__title { margin: 0 0 0.35rem; font-size: 1.12rem; font-weight: 800; line-height: 1.3; }
.gvsx-patch__title a { color: var(--wp--preset--color--contrast); text-decoration: none; }
.gvsx-patch__title a:hover { color: var(--gvsx-neon); }
.gvsx-patch__version { margin: 0 0 0.9rem; font-size: 0.86rem; color: var(--wp--preset--color--muted); }
.gvsx-patch__version b { color: var(--wp--preset--color--contrast); font-weight: 700; }
.gvsx-patch__meta { display: flex; flex-wrap: wrap; gap: 0.6rem 2rem; margin: 0 0 0.9rem; }
.gvsx-patch__meta > div { margin: 0; }
.gvsx-patch__meta dt { margin: 0 0 0.15rem; font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--wp--preset--color--muted); }
.gvsx-patch__meta dd { margin: 0; font-size: 0.94rem; font-weight: 600; color: var(--wp--preset--color--contrast); }
.gvsx-patch__meta dd small { font-weight: 500; color: var(--wp--preset--color--muted); }
.gvsx-patch__meta dd a { color: var(--gvsx-neon); }
.gvsx-patch__bar { height: 6px; border-radius: 999px; background: rgba(255, 255, 255, 0.09); overflow: hidden; margin: 0 0 1.1rem; max-width: 340px; }
.gvsx-patch__bar i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--gvsx-green), var(--gvsx-neon)); }
.gvsx-patch--expiring .gvsx-patch__bar i { background: linear-gradient(90deg, #d98a00, #ffb300); }
.gvsx-patch__note { margin: 0 0 0.9rem; font-size: 0.88rem; color: var(--wp--preset--color--muted); line-height: 1.55; max-width: 60ch; }
.gvsx-patch__note a { color: var(--gvsx-neon); }
.gvsx-patch__foot { margin: 0.8rem 0 0; font-size: 0.8rem; color: var(--wp--preset--color--muted); }

/* Serial: oculto por padrão; olho revela, ícone copia (JS no plugin) */
.gvsx-serial { margin: 0 0 1.1rem; padding: 0.85rem 0.95rem; border-radius: 14px; background: rgba(0, 0, 0, 0.28); border: 1px dashed rgba(0, 230, 118, 0.35); }
.gvsx-serial--expired { border-color: rgba(255, 255, 255, 0.14); }
.gvsx-serial__label { display: block; font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--wp--preset--color--muted); margin-bottom: 0.5rem; }
.gvsx-serial__row { display: flex; align-items: center; gap: 10px; }
.gvsx-serial__key { flex: 1; min-width: 0; margin: 0; padding: 9px 12px; border-radius: 9px; background: rgba(0, 0, 0, 0.35); font-family: ui-monospace, "SF Mono", "Roboto Mono", Menlo, Consolas, monospace; font-size: 1rem; font-weight: 700; letter-spacing: 0.08em; color: var(--gvsx-neon); overflow-x: auto; white-space: nowrap; scrollbar-width: none; }
.gvsx-serial__key::-webkit-scrollbar { display: none; }
.gvsx-serial--expired .gvsx-serial__key { color: var(--wp--preset--color--muted); }
.gvsx-serial__btn { flex: none; position: relative; display: inline-grid; place-items: center; width: 40px; height: 40px; border-radius: 10px; border: 1px solid var(--gvsx-glass-border); background: rgba(255, 255, 255, 0.04); color: var(--wp--preset--color--contrast); cursor: pointer; padding: 0; transition: color .15s ease, border-color .15s ease, background .15s ease; }
.gvsx-serial__btn:hover { color: var(--gvsx-neon); border-color: rgba(0, 230, 118, 0.4); background: rgba(0, 230, 118, 0.08); }
.gvsx-serial__btn svg { grid-area: 1 / 1; display: block; }
.gvsx-serial__btn .gvsx-i-eye-off { display: none; }
.gvsx-serial.is-revealed .gvsx-serial__btn[data-gvsx-reveal] .gvsx-i-eye { display: none; }
.gvsx-serial.is-revealed .gvsx-serial__btn[data-gvsx-reveal] .gvsx-i-eye-off { display: block; }
.gvsx-serial__copy .gvsx-i-check { display: none; color: var(--gvsx-neon); }
.gvsx-serial__copy.is-done .gvsx-i-copy { display: none; }
.gvsx-serial__copy.is-done .gvsx-i-check { display: block; }
.gvsx-serial__copy.is-done { color: var(--gvsx-neon); border-color: rgba(0, 230, 118, 0.5); }
.gvsx-serial__tip { position: absolute; bottom: calc(100% + 8px); right: 0; font-size: 0.72rem; font-weight: 700; color: var(--gvsx-neon); background: var(--wp--preset--color--surface-2); border: 1px solid var(--gvsx-glass-border); border-radius: 8px; padding: 4px 9px; white-space: nowrap; pointer-events: none; }
.gvsx-serial__tip:empty { display: none; }

/* Ações do card */
.gvsx-patch__actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.gvsx-btn { display: inline-flex; align-items: center; gap: 8px; border-radius: 11px; padding: 12px 20px; font-weight: 700; font-size: 0.88rem; line-height: 1; cursor: pointer; border: 1px solid transparent; text-decoration: none; transition: transform .15s ease, filter .15s ease, background .15s ease, color .15s ease, border-color .15s ease; }
.gvsx-btn--primary { color: #052e16; background: linear-gradient(135deg, #00a12e, #00e676); box-shadow: 0 12px 28px -12px rgba(0, 230, 118, 0.8); }
.gvsx-btn--primary:hover { transform: translateY(-2px); filter: brightness(1.06); text-decoration: none; color: #052e16; }
.gvsx-btn--ghost { color: var(--wp--preset--color--contrast); background: rgba(255, 255, 255, 0.04); border-color: var(--gvsx-glass-border); }
.gvsx-btn--ghost:hover { color: var(--gvsx-neon); border-color: rgba(0, 230, 118, 0.4); text-decoration: none; }

/* Chips de estado */
.gvsx-patch .gvsx-chip { display: inline-block; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.02em; border-radius: 999px; padding: 5px 12px; margin: 0; border: 1px solid var(--gvsx-glass-border); background: var(--wp--preset--color--surface-2); color: var(--wp--preset--color--contrast); }
.gvsx-chip.is-ok { color: var(--gvsx-neon); background: rgba(0, 230, 118, 0.12); border-color: rgba(0, 230, 118, 0.4); }
.gvsx-chip.is-warn { color: #ffce6b; background: rgba(255, 179, 0, 0.12); border-color: rgba(255, 179, 0, 0.42); }
.gvsx-chip.is-bad { color: #ff8a8a; background: rgba(255, 77, 77, 0.12); border-color: rgba(255, 77, 77, 0.42); }
.gvsx-chip.is-info { color: #6fe3f2; background: rgba(0, 175, 199, 0.14); border-color: rgba(0, 175, 199, 0.42); }

/* Estado vazio */
.gvsx-empty { text-align: center; padding: 3rem 1.5rem; border-radius: 20px; background: var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); box-shadow: var(--gvsx-d-card); }
.gvsx-empty__icon { font-size: 2.6rem; margin-bottom: 0.5rem; }
.gvsx-empty h3 { margin: 0 0 0.5rem; font-size: 1.2rem; color: var(--wp--preset--color--contrast); }
.gvsx-empty p { margin: 0 auto; max-width: 46ch; color: var(--wp--preset--color--muted); }
.gvsx-empty__actions { margin-top: 1.4rem; display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }

/* ---- Suporte ---- */
.gvsx-support__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.2rem; }
.gvsx-support__card { display: flex; flex-direction: column; gap: 0.5rem; padding: 1.4rem; border-radius: 18px; background: var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); box-shadow: var(--gvsx-d-card); text-decoration: none; transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease; }
.gvsx-support__card:hover { transform: translateY(-3px); box-shadow: var(--gvsx-d-card-hi); border-color: rgba(0, 230, 118, 0.3); text-decoration: none; }
.gvsx-support__icon { width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; background: rgba(0, 230, 118, 0.12); margin-bottom: 0.3rem; }
.gvsx-support__icon::before { content: ""; width: 22px; height: 22px; background-color: var(--gvsx-neon); -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: center; mask-position: center; -webkit-mask-size: contain; mask-size: contain; }
.gvsx-support__card--whatsapp .gvsx-support__icon::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M12 2a10 10 0 0 0-8.6 15l-1.3 4.7 4.8-1.3A10 10 0 1 0 12 2zm0 2a8 8 0 1 1-4.1 14.9l-.4-.2-2.5.7.7-2.4-.3-.4A8 8 0 0 1 12 4zm4.3 10.2c-.2-.1-1.3-.7-1.5-.7l-.5.6-.4.5c-.2.1-.4.1-.7 0a6.5 6.5 0 0 1-3.2-2.8c-.2-.4 0-.5.2-.7l.4-.5.2-.4v-.4L9.9 8c-.1-.4-.3-.3-.5-.3h-.4c-.2 0-.5.1-.7.3-.9.9-.9 2.3.1 3.6a9 9 0 0 0 4.9 4c.7.2 1.2.2 1.7.1.5-.1 1.3-.6 1.5-1.1.2-.5.2-.9.1-1z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M12 2a10 10 0 0 0-8.6 15l-1.3 4.7 4.8-1.3A10 10 0 1 0 12 2zm0 2a8 8 0 1 1-4.1 14.9l-.4-.2-2.5.7.7-2.4-.3-.4A8 8 0 0 1 12 4zm4.3 10.2c-.2-.1-1.3-.7-1.5-.7l-.5.6-.4.5c-.2.1-.4.1-.7 0a6.5 6.5 0 0 1-3.2-2.8c-.2-.4 0-.5.2-.7l.4-.5.2-.4v-.4L9.9 8c-.1-.4-.3-.3-.5-.3h-.4c-.2 0-.5.1-.7.3-.9.9-.9 2.3.1 3.6a9 9 0 0 0 4.9 4c.7.2 1.2.2 1.7.1.5-.1 1.3-.6 1.5-1.1.2-.5.2-.9.1-1z'/%3E%3C/svg%3E"); }
.gvsx-support__card--discord .gvsx-support__icon::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M19.5 5.5A16 16 0 0 0 15.5 4l-.3.5c1.4.4 2.6 1 3.7 1.7A13 13 0 0 0 5.1 6.2 14 14 0 0 1 8.8 4.5L8.5 4A16 16 0 0 0 4.5 5.5C2.3 8.8 1.7 12 2 15.2A16 16 0 0 0 6.8 18l.6-1c-.5-.2-1-.5-1.5-.8l.4-.3a11.4 11.4 0 0 0 9.6 0l.4.3c-.5.3-1 .6-1.5.8l.6 1a16 16 0 0 0 4.8-2.8c.4-3.7-.6-7-2.7-9.7zM9 14c-.8 0-1.4-.7-1.4-1.6S8.2 10.8 9 10.8s1.4.7 1.4 1.6S9.8 14 9 14zm6 0c-.8 0-1.4-.7-1.4-1.6s.6-1.6 1.4-1.6 1.4.7 1.4 1.6S15.8 14 15 14z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M19.5 5.5A16 16 0 0 0 15.5 4l-.3.5c1.4.4 2.6 1 3.7 1.7A13 13 0 0 0 5.1 6.2 14 14 0 0 1 8.8 4.5L8.5 4A16 16 0 0 0 4.5 5.5C2.3 8.8 1.7 12 2 15.2A16 16 0 0 0 6.8 18l.6-1c-.5-.2-1-.5-1.5-.8l.4-.3a11.4 11.4 0 0 0 9.6 0l.4.3c-.5.3-1 .6-1.5.8l.6 1a16 16 0 0 0 4.8-2.8c.4-3.7-.6-7-2.7-9.7zM9 14c-.8 0-1.4-.7-1.4-1.6S8.2 10.8 9 10.8s1.4.7 1.4 1.6S9.8 14 9 14zm6 0c-.8 0-1.4-.7-1.4-1.6s.6-1.6 1.4-1.6 1.4.7 1.4 1.6S15.8 14 15 14z'/%3E%3C/svg%3E"); }
.gvsx-support__card--email .gvsx-support__icon::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='M3 7l9 6 9-6'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='M3 7l9 6 9-6'/%3E%3C/svg%3E"); }
.gvsx-support__title { font-weight: 800; font-size: 1.05rem; color: var(--wp--preset--color--contrast); }
.gvsx-support__text { font-size: 0.86rem; color: var(--wp--preset--color--muted); line-height: 1.55; flex: 1; }
.gvsx-support__cta { font-weight: 700; font-size: 0.88rem; color: var(--gvsx-neon); margin-top: 0.2rem; }
.gvsx-support__self { margin-top: 1.6rem; padding: 1.4rem 1.6rem; border-radius: 18px; background: var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); }
.gvsx-support__self h3 { margin: 0 0 0.7rem; font-size: 1rem; color: var(--wp--preset--color--contrast); }
.gvsx-support__self ul { margin: 0; padding-left: 1.1rem; display: grid; gap: 0.5rem; }
.gvsx-support__self li { color: var(--wp--preset--color--muted); font-size: 0.9rem; line-height: 1.55; }
.gvsx-support__self a { color: var(--gvsx-neon); }

/* ---- Telas padrão do WooCommerce dentro da conta (pedidos, detalhe do pedido, dados, endereço) ---- */
body.woocommerce-account .woocommerce-MyAccount-content h2, body.woocommerce-account .woocommerce-MyAccount-content h3 { color: var(--wp--preset--color--contrast); }
body.woocommerce-account .woocommerce-MyAccount-content > p:first-child { margin-top: 0; }
body.woocommerce-account .woocommerce-Address, body.woocommerce-account .woocommerce-EditAccountForm { max-width: 680px; }
body.woocommerce-account .woocommerce-Addresses .woocommerce-Address { max-width: none; }
body.woocommerce-account table.woocommerce-orders-table, body.woocommerce-account table.shop_table { width: 100%; border-collapse: separate; border-spacing: 0; border: 1px solid var(--gvsx-glass-border); border-radius: 16px; overflow: hidden; background: var(--gvsx-glass); }
body.woocommerce-account table.woocommerce-orders-table th, body.woocommerce-account table.shop_table th { background: rgba(255, 255, 255, 0.04); color: var(--wp--preset--color--muted); font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.08em; padding: 0.9rem 1.1rem; text-align: left; border: 0 !important; }
body.woocommerce-account table.woocommerce-orders-table td, body.woocommerce-account table.shop_table td { padding: 0.95rem 1.1rem; border: 0 !important; border-top: 1px solid var(--gvsx-glass-border) !important; color: var(--wp--preset--color--contrast); font-size: 0.9rem; vertical-align: middle; }
body.woocommerce-account table.woocommerce-orders-table a, body.woocommerce-account table.shop_table a { color: var(--gvsx-neon); }
/* status do pedido, colorido pela classe da linha */
body.woocommerce-account .woocommerce-orders-table__cell-order-status { font-weight: 700; }
body.woocommerce-account .woocommerce-orders-table__row--status-completed .woocommerce-orders-table__cell-order-status, body.woocommerce-account .woocommerce-orders-table__row--status-processing .woocommerce-orders-table__cell-order-status { color: var(--gvsx-neon); }
body.woocommerce-account .woocommerce-orders-table__row--status-on-hold .woocommerce-orders-table__cell-order-status, body.woocommerce-account .woocommerce-orders-table__row--status-pending .woocommerce-orders-table__cell-order-status { color: #ffce6b; }
body.woocommerce-account .woocommerce-orders-table__row--status-pre-ordered .woocommerce-orders-table__cell-order-status { color: #6fe3f2; }
body.woocommerce-account .woocommerce-orders-table__row--status-cancelled .woocommerce-orders-table__cell-order-status, body.woocommerce-account .woocommerce-orders-table__row--status-failed .woocommerce-orders-table__cell-order-status, body.woocommerce-account .woocommerce-orders-table__row--status-refunded .woocommerce-orders-table__cell-order-status { color: #ff8a8a; }
/* botões padrão (Visualizar, Pagar, Salvar) — Pagar e os de envio em destaque, os demais discretos */
body.woocommerce-account .woocommerce a.button, body.woocommerce-account .woocommerce button.button, body.woocommerce-account .woocommerce input.button, body.woocommerce-account .woocommerce .woocommerce-button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; border-radius: 10px; padding: 9px 16px; font-weight: 700; font-size: 0.84rem; line-height: 1.2; background: rgba(255, 255, 255, 0.05); border: 1px solid var(--gvsx-glass-border); color: var(--wp--preset--color--contrast); transition: color .15s ease, border-color .15s ease, filter .15s ease; }
body.woocommerce-account .woocommerce a.button:hover, body.woocommerce-account .woocommerce .woocommerce-button:hover { color: var(--gvsx-neon); border-color: rgba(0, 230, 118, 0.4); background: rgba(255, 255, 255, 0.05); }
body.woocommerce-account .woocommerce a.button.pay, body.woocommerce-account .woocommerce button.button[type="submit"], body.woocommerce-account .woocommerce .woocommerce-Button[type="submit"], body.woocommerce-account .woocommerce .woocommerce-form-login__submit, body.woocommerce-account .woocommerce .woocommerce-form-register__submit { color: #052e16 !important; background: linear-gradient(135deg, #00a12e, #00e676) !important; border: 0; box-shadow: 0 12px 28px -12px rgba(0, 230, 118, 0.8); padding: 12px 22px; }
body.woocommerce-account .woocommerce a.button.pay:hover, body.woocommerce-account .woocommerce button.button[type="submit"]:hover { filter: brightness(1.06); }
body.woocommerce-account .woocommerce-orders-table__cell-order-actions .button + .button { margin-left: 8px; }
/* formulários */
body.woocommerce-account .woocommerce form .form-row { margin-bottom: 1rem; }
body.woocommerce-account .woocommerce form .form-row label { display: block; font-size: 0.82rem; font-weight: 600; color: var(--wp--preset--color--muted); margin-bottom: 0.4rem; }
body.woocommerce-account .woocommerce form .form-row .required { color: var(--gvsx-neon); text-decoration: none; }
body.woocommerce-account .woocommerce form .form-row input.input-text, body.woocommerce-account .woocommerce form .form-row select, body.woocommerce-account .woocommerce form .form-row textarea, body.woocommerce-account .woocommerce form .form-row .select2-container .select2-selection { width: 100%; background: rgba(0, 0, 0, 0.25) !important; border: 1px solid var(--gvsx-glass-border) !important; border-radius: 10px; padding: 12px 14px; color: var(--wp--preset--color--contrast) !important; font: inherit; min-height: 46px; }
body.woocommerce-account .woocommerce form .form-row input.input-text:focus, body.woocommerce-account .woocommerce form .form-row select:focus, body.woocommerce-account .woocommerce form .form-row textarea:focus { outline: none; border-color: var(--gvsx-neon) !important; box-shadow: 0 0 0 3px rgba(0, 230, 118, 0.15); }
body.woocommerce-account .woocommerce form .form-row .show-password-input { top: 50%; transform: translateY(-50%); right: 12px; }
body.woocommerce-account .woocommerce form fieldset { border: 1px solid var(--gvsx-glass-border); border-radius: 14px; padding: 1.1rem 1.3rem 0.4rem; margin: 1.4rem 0 1.2rem; }
body.woocommerce-account .woocommerce form legend { color: var(--wp--preset--color--contrast); font-weight: 700; padding: 0 0.5rem; }
body.woocommerce-account .woocommerce form .woocommerce-form-row em, body.woocommerce-account .woocommerce form .form-row .description { color: var(--wp--preset--color--muted); font-size: 0.8rem; }
body.woocommerce-account .woocommerce-Addresses .woocommerce-Address-title { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 0.8rem; }
body.woocommerce-account .woocommerce-Addresses address { padding: 1.1rem 1.3rem; border-radius: 14px; background: var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); font-style: normal; line-height: 1.7; color: var(--wp--preset--color--muted); }
body.woocommerce-account .woocommerce-customer-details address { font-style: normal; }

/* ---- Página do pedido (Pedidos › Ver pedido) — HTML em GVSX_Order_View (v0.5.0) ----
   Cabeçalho (número, situação, datas) → [pagamento pendente: um QR Code / boleto com prazo e cancelar] →
   itens à esquerda; pagamento (forma, total, nota fiscal) e cobrança à direita. Sem serial e sem download aqui. */
.gvsx-order { display: flex; flex-direction: column; gap: 1.25rem; }
.gvsx-order__back { align-self: flex-start; font-size: 0.86rem; font-weight: 600; color: var(--wp--preset--color--muted); text-decoration: none; }
.gvsx-order__back:hover { color: var(--gvsx-neon); text-decoration: none; }
.gvsx-order__head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1rem 1.5rem; }
.gvsx-order__headmain { min-width: 0; }
.gvsx-order__headmain .gvsx-kicker { margin: 0 0 0.5rem; }
.gvsx-order__title { margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 12px; font-size: 1.7rem; font-weight: 800; line-height: 1.15; color: var(--wp--preset--color--contrast); }
.gvsx-order .gvsx-chip { display: inline-block; font-size: 0.74rem; font-weight: 700; letter-spacing: 0.02em; border-radius: 999px; padding: 6px 12px; border: 1px solid var(--gvsx-glass-border); background: var(--wp--preset--color--surface-2); color: var(--wp--preset--color--contrast); line-height: 1.2; vertical-align: middle; }
.gvsx-order__dates { margin: 0.55rem 0 0; display: flex; flex-wrap: wrap; gap: 0.3rem 1.4rem; font-size: 0.88rem; color: var(--wp--preset--color--muted); }
.gvsx-order__dates b { color: var(--wp--preset--color--contrast); font-weight: 600; }
.gvsx-order__headactions { display: flex; flex-wrap: wrap; gap: 10px; }
.gvsx-order__card { padding: 1.4rem 1.5rem; border-radius: 20px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.02)); border: 1px solid var(--gvsx-glass-border); box-shadow: var(--gvsx-d-card); position: relative; z-index: 2; }
.gvsx-order__card > h3 { margin: 0 0 1rem; font-size: 0.76rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--wp--preset--color--muted); }
.gvsx-order__grid { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(300px, 1fr); gap: 1.25rem; align-items: start; }
.gvsx-order__side { display: flex; flex-direction: column; gap: 1.25rem; }
.gvsx-order__notice { margin: 0; padding: 1rem 1.2rem; border-radius: 14px; background: rgba(0, 175, 199, 0.08); border: 1px solid rgba(0, 175, 199, 0.3); color: var(--wp--preset--color--contrast); font-size: 0.9rem; line-height: 1.55; }
.gvsx-order__notice--muted { background: var(--gvsx-glass); border-color: var(--gvsx-glass-border); color: var(--wp--preset--color--muted); }
.gvsx-order__notice a { color: var(--gvsx-neon); }
/* itens */
.gvsx-order__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 1rem; }
.gvsx-order__item { display: grid; grid-template-columns: 72px minmax(0, 1fr) auto; gap: 1rem; align-items: center; }
.gvsx-order__thumb img { width: 72px; height: 72px; object-fit: cover; border-radius: 12px; display: block; }
.gvsx-order__itemname { margin: 0; font-weight: 700; color: var(--wp--preset--color--contrast); line-height: 1.35; }
.gvsx-order__itemname a { color: inherit; text-decoration: none; }
.gvsx-order__itemname a:hover { color: var(--gvsx-neon); }
.gvsx-order__itemmeta { margin: 0.25rem 0 0; font-size: 0.82rem; color: var(--wp--preset--color--muted); }
.gvsx-order__itemtotal { font-weight: 800; color: var(--gvsx-neon); white-space: nowrap; }
.gvsx-order__hint { margin: 1.1rem 0 0; padding-top: 0.95rem; border-top: 1px solid var(--gvsx-glass-border); font-size: 0.86rem; line-height: 1.5; color: var(--wp--preset--color--muted); }
.gvsx-order__hint a { color: var(--gvsx-neon); }
/* pagamento (totais) */
.gvsx-order__totals { margin: 0; display: flex; flex-direction: column; gap: 0.55rem; }
.gvsx-order__totals > div { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; font-size: 0.9rem; color: var(--wp--preset--color--muted); }
.gvsx-order__totals dt, .gvsx-order__totals dd { margin: 0; }
.gvsx-order__totals dd { color: var(--wp--preset--color--contrast); font-weight: 600; text-align: right; }
.gvsx-order__total { margin-top: 0.3rem; padding-top: 0.85rem; border-top: 1px solid var(--gvsx-glass-border); }
.gvsx-order__total dt { color: var(--wp--preset--color--contrast); font-weight: 800; font-size: 1rem; }
.gvsx-order__total dd { color: var(--gvsx-neon); font-size: 1.3rem; font-weight: 800; }
.gvsx-order__nf { margin: 1rem 0 0; padding-top: 0.9rem; border-top: 1px solid var(--gvsx-glass-border); display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 0.88rem; font-weight: 600; color: var(--wp--preset--color--contrast); }
.gvsx-order__nf small { flex-basis: 100%; font-size: 0.8rem; font-weight: 500; color: var(--wp--preset--color--muted); }
/* cobrança */
.gvsx-order__name { margin: 0 0 0.3rem; font-weight: 700; color: var(--wp--preset--color--contrast); }
.gvsx-order__address { font-style: normal; font-size: 0.9rem; line-height: 1.6; color: var(--wp--preset--color--muted); }
.gvsx-order__contact { list-style: none; margin: 0.85rem 0 0; padding: 0.85rem 0 0; border-top: 1px solid var(--gvsx-glass-border); display: flex; flex-direction: column; gap: 0.3rem; font-size: 0.88rem; color: var(--wp--preset--color--muted); overflow-wrap: anywhere; }
.gvsx-order__muted { margin: 0; font-size: 0.9rem; line-height: 1.55; color: var(--wp--preset--color--muted); }
.gvsx-order__muted b { color: var(--wp--preset--color--contrast); font-weight: 600; }
.gvsx-order__note p { margin: 0; color: var(--wp--preset--color--muted); }
/* pagamento pendente: um QR Code (ou boleto) com prazo, atualização automática e cancelamento */
.gvsx-order__pay { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 1.5rem 2rem; align-items: start; border-color: rgba(255, 179, 0, 0.35); background: linear-gradient(135deg, rgba(255, 179, 0, 0.07), rgba(255, 255, 255, 0.02)); }
.gvsx-order__pay--pix-expired, .gvsx-order__pay--boleto-expired, .gvsx-order__pay--other { border-color: rgba(255, 77, 77, 0.3); background: linear-gradient(135deg, rgba(255, 77, 77, 0.06), rgba(255, 255, 255, 0.02)); }
.gvsx-order__qr { padding: 12px; background: #fff; border-radius: 16px; line-height: 0; justify-self: center; box-shadow: 0 10px 30px -12px rgba(0, 0, 0, 0.7); }
.gvsx-order__qr img { width: 220px; height: 220px; display: block; }
.gvsx-order__paybody { min-width: 0; }
.gvsx-order__paybody--wide { grid-column: 1 / -1; }
.gvsx-order__paybody h3 { margin: 0 0 0.7rem; font-size: 1.25rem; font-weight: 800; letter-spacing: 0; text-transform: none; color: var(--wp--preset--color--contrast); }
.gvsx-order__paybody h3 .woocommerce-Price-amount { color: var(--gvsx-neon); }
.gvsx-order__steps { margin: 0 0 1rem; padding-left: 1.2rem; display: grid; gap: 0.35rem; font-size: 0.9rem; line-height: 1.5; color: var(--wp--preset--color--muted); }
.gvsx-order__steps b { color: var(--wp--preset--color--contrast); font-weight: 600; }
.gvsx-order__copy { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 0.9rem; }
body.woocommerce-account .gvsx-order__code { flex: 1 1 220px; min-width: 0; min-height: 46px; padding: 10px 12px; border-radius: 10px; background: rgba(0, 0, 0, 0.35) !important; border: 1px solid var(--gvsx-glass-border) !important; color: var(--wp--preset--color--contrast) !important; font-family: ui-monospace, "SF Mono", "Roboto Mono", Menlo, Consolas, monospace; font-size: 0.82rem; }
.gvsx-order__copy .gvsx-btn.is-done { color: var(--gvsx-neon); border-color: rgba(0, 230, 118, 0.5); }
.gvsx-order__deadline { margin: 0 0 0.55rem; font-size: 0.9rem; font-weight: 600; color: #ffce6b; }
.gvsx-order__deadline b { color: var(--wp--preset--color--contrast); }
.gvsx-order__auto { margin: 0; display: flex; align-items: center; gap: 9px; font-size: 0.84rem; color: var(--wp--preset--color--muted); }
.gvsx-order__dot { flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--gvsx-neon); animation: gvsx-dot 1.6s ease-out infinite; }
@keyframes gvsx-dot { 0% { box-shadow: 0 0 0 0 rgba(0, 230, 118, 0.6); } 100% { box-shadow: 0 0 0 10px rgba(0, 230, 118, 0); } }
.gvsx-order__actions { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 0.9rem; }
.gvsx-order__cancel { grid-column: 1 / -1; padding-top: 1rem; border-top: 1px solid var(--gvsx-glass-border); }
.gvsx-order__cancel-open { background: none; border: 0; padding: 0; font: inherit; font-size: 0.84rem; font-weight: 600; color: var(--wp--preset--color--muted); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.gvsx-order__cancel-open:hover { color: var(--wp--preset--color--danger); }
.gvsx-order__cancel-confirm p { margin: 0 0 0.8rem; font-size: 0.9rem; line-height: 1.55; color: var(--wp--preset--color--muted); }
.gvsx-order__cancel-confirm b { color: var(--wp--preset--color--contrast); }
.gvsx-order__cancel-confirm .gvsx-order__actions { margin: 0; }
.gvsx-btn--danger { color: #fff; background: linear-gradient(135deg, #b71c1c, #ff4d4d); box-shadow: 0 12px 28px -12px rgba(255, 77, 77, 0.7); }
.gvsx-btn--danger:hover { color: #fff; filter: brightness(1.06); text-decoration: none; }
@media (max-width: 860px) {
  .gvsx-order__grid { grid-template-columns: 1fr; }
  .gvsx-order__pay { grid-template-columns: 1fr; }
  .gvsx-order__qr { justify-self: start; }
}
@media (max-width: 560px) {
  .gvsx-order__title { font-size: 1.4rem; }
  .gvsx-order__card { padding: 1.15rem; }
  .gvsx-order__item { grid-template-columns: 56px minmax(0, 1fr); }
  .gvsx-order__thumb img { width: 56px; height: 56px; }
  .gvsx-order__itemtotal { grid-column: 2; }
  .gvsx-order__qr { justify-self: center; }
  .gvsx-order__headactions .gvsx-btn { flex: 1 1 auto; justify-content: center; }
}

/* ---- Entrar (acesso por código, sem senha) — HTML em GVSX_Passwordless::render_form() ----
   Um card centrado, título com a marca, um campo, um botão. Efeitos contidos: halo suave atrás do card
   e o brilho passando só no nome da marca. */
body.woocommerce-account:not(.logged-in) main .woocommerce { display: block; max-width: 100%; }
.gvsx-auth { position: relative; max-width: 580px; margin: 0.4rem auto 0; } /* v0.5.0: bloco maior (era 480px) para os campos respirarem */
.gvsx-auth__glow { position: absolute; left: 50%; top: -60px; width: 820px; height: 520px; transform: translateX(-50%); background: radial-gradient(closest-side, rgba(0, 230, 118, 0.14), rgba(0, 230, 118, 0.04) 55%, transparent 72%); pointer-events: none; z-index: 0; }
.gvsx-auth__card { position: relative; z-index: 1; padding: 2.8rem 2.8rem 2.3rem; border-radius: 26px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.055), rgba(255, 255, 255, 0.025)); border: 1px solid rgba(255, 255, 255, 0.09); box-shadow: var(--gvsx-d-float); text-align: center; }
.gvsx-auth__brand img { width: 108px; height: auto; display: block; margin: 0 auto 1.2rem; }
.gvsx-auth__title { margin: 0 0 0.7rem; font-size: 2.05rem; line-height: 1.15; font-weight: 800; letter-spacing: -0.01em; color: var(--wp--preset--color--contrast); }
.gvsx-auth__brandname { color: var(--gvsx-neon); white-space: nowrap; }
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  .gvsx-auth__brandname { background-image: linear-gradient(100deg, var(--gvsx-neon) 0 42%, #ffffff 50%, var(--gvsx-neon) 58% 100%); background-size: 200% 100%; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; animation: gvsx-shine 5.5s linear infinite; }
}
.gvsx-auth__sub { margin: 0 auto 1.9rem; max-width: 42ch; color: var(--wp--preset--color--muted); font-size: 1rem; line-height: 1.6; }
.gvsx-auth__email { color: var(--wp--preset--color--contrast); font-weight: 700; overflow-wrap: anywhere; }
.gvsx-auth__form { text-align: left; }
.gvsx-auth__label { display: block; font-size: 0.84rem; font-weight: 600; color: var(--wp--preset--color--muted); margin: 0 0 0.5rem; }
.gvsx-auth__input { box-sizing: border-box; width: 100%; min-height: 60px; padding: 16px 18px; border-radius: 14px; background: rgba(0, 0, 0, 0.32); border: 1px solid rgba(255, 255, 255, 0.11); color: var(--wp--preset--color--contrast); font: inherit; font-size: 1.06rem; transition: border-color .15s ease, box-shadow .15s ease; }
.gvsx-auth__input::placeholder { color: rgba(255, 255, 255, 0.35); }
.gvsx-auth__input:focus { outline: none; border-color: var(--gvsx-neon); box-shadow: 0 0 0 4px rgba(0, 230, 118, 0.14); }
.gvsx-auth__submit { width: 100%; justify-content: center; min-height: 60px; font-size: 1.02rem; border-radius: 14px; margin-top: 1.1rem; }
.gvsx-auth__msg { margin: 0 0 1.2rem; padding: 0.85rem 1rem; border-radius: 12px; font-size: 0.9rem; line-height: 1.45; text-align: left; border: 1px solid; }
.gvsx-auth__msg--error { color: #ff9a9a; background: rgba(255, 77, 77, 0.1); border-color: rgba(255, 77, 77, 0.35); }
.gvsx-auth__msg--ok { color: var(--gvsx-neon); background: rgba(0, 230, 118, 0.1); border-color: rgba(0, 230, 118, 0.35); }
.gvsx-auth__legal { margin: 1.4rem 0 0; font-size: 0.8rem; color: var(--wp--preset--color--muted); line-height: 1.55; }
.gvsx-auth__legal a { color: var(--wp--preset--color--contrast); text-decoration: underline; text-underline-offset: 3px; }
.gvsx-auth__hint { margin: 0.9rem 0 0; font-size: 0.86rem; color: var(--wp--preset--color--muted); line-height: 1.5; }
.gvsx-auth__hint b { color: var(--wp--preset--color--contrast); font-weight: 600; }
/* código: 6 caixas */
.gvsx-otp { display: flex; justify-content: center; gap: 12px; margin: 0.3rem 0 1.1rem; }
.gvsx-otp__digit { box-sizing: border-box; width: 62px; height: 72px; padding: 0; text-align: center; font-family: ui-monospace, "SF Mono", "Roboto Mono", Menlo, Consolas, monospace; font-size: 1.75rem; font-weight: 800; border-radius: 12px; background: rgba(0, 0, 0, 0.32); border: 1px solid rgba(255, 255, 255, 0.12); color: var(--gvsx-neon); caret-color: var(--gvsx-neon); transition: border-color .15s ease, box-shadow .15s ease; }
.gvsx-otp__digit:focus { outline: none; border-color: var(--gvsx-neon); box-shadow: 0 0 0 4px rgba(0, 230, 118, 0.14); }
.gvsx-otp__digit.is-filled { border-color: rgba(0, 230, 118, 0.45); }
.gvsx-auth__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.5rem 1.6rem; margin-top: 1.2rem; }
.gvsx-auth__inline { display: inline; margin: 0; }
.gvsx-auth__link { background: none; border: 0; padding: 0; color: var(--gvsx-neon); font: inherit; font-size: 0.9rem; font-weight: 600; cursor: pointer; }
.gvsx-auth__link:hover:not(:disabled) { text-decoration: underline; text-underline-offset: 3px; }
.gvsx-auth__link:disabled { color: var(--wp--preset--color--muted); cursor: default; }
.gvsx-auth .gvsx-trust { margin: 1.5rem 0 0; position: relative; z-index: 1; }
.gvsx-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; opacity: 0; }
/* Dados da conta: e-mail só para leitura (é a chave de acesso) */
body.woocommerce-account .gvsx-account-email input[readonly] { color: var(--wp--preset--color--muted) !important; background: rgba(255, 255, 255, 0.03) !important; cursor: not-allowed; }
body.woocommerce-account .gvsx-account-email__note { display: block; margin-top: 0.4rem; font-size: 0.8rem; color: var(--wp--preset--color--muted); }
body.woocommerce-account .gvsx-account-email__note a { color: var(--gvsx-neon); }
@media (max-width: 600px) {
  .gvsx-auth__card { padding: 2.1rem 1.5rem 1.8rem; border-radius: 22px; }
  .gvsx-auth__title { font-size: 1.7rem; }
  .gvsx-otp { gap: 8px; }
  .gvsx-otp__digit { width: 50px; height: 62px; font-size: 1.5rem; }
}
@media (max-width: 400px) {
  .gvsx-auth__card { padding: 1.8rem 1.15rem 1.5rem; }
  .gvsx-otp { gap: 6px; }
  .gvsx-otp__digit { width: 44px; height: 56px; font-size: 1.35rem; }
}

/* ---- Responsivo ---- */
@media (max-width: 782px) {
  .gvsx-account__head { grid-template-columns: auto 1fr; grid-template-areas: "avatar who" "stats stats" "logout logout"; padding: 1.4rem 1.4rem; }
  .gvsx-account__logout { justify-self: start; margin-top: 0.2rem; }
  .gvsx-support__grid { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .gvsx-patch { grid-template-columns: 1fr; padding: 1.2rem; }
  .gvsx-patch__media { max-width: 136px; }
  .gvsx-account__hello { font-size: 1.3rem; }
  .gvsx-patch__actions .gvsx-btn { flex: 1 1 auto; justify-content: center; }
  body.woocommerce-account .woocommerce-MyAccount-navigation li { flex: 1 1 auto; }
  body.woocommerce-account .woocommerce-MyAccount-navigation li a { width: 100%; justify-content: center; }
}

/* ---------------- WooCommerce: ajustes gerais no escuro ---------------- */
/* Avisos (0.7.14): prefixo "body" para vencer o CSS do WooCommerce em qualquer ordem de carga. Em página cujo modelo não
   tem bloco do WooCommerce (o checkout e as páginas legais), o wc-blocks.css sai no rodapé, DEPOIS deste arquivo; com a
   mesma especificidade, o fundo claro dele (#fff0f0 no erro) vencia e o texto branco daqui ficava ilegível (contraste
   1,1:1 medido em 19/09 numa página legal; no checkout, visto pelo Vinícius no aviso da regra de recompra). */
.woocommerce-notices-wrapper .woocommerce-message, body .wc-block-components-notice-banner { border-radius: 12px; }
body .wc-block-components-notice-banner.is-success { background: rgba(0, 230, 118, 0.08); border-color: var(--gvsx-neon); color: var(--wp--preset--color--contrast); }
body .wc-block-components-notice-banner.is-error { background: rgba(255, 77, 77, 0.08); border-color: var(--wp--preset--color--danger); color: var(--wp--preset--color--contrast); }
body .wc-block-components-notice-banner.is-info { background: rgba(0, 175, 199, 0.08); border-color: var(--gvsx-cyan); color: var(--wp--preset--color--contrast); }
.wc-block-components-button:not(.is-link), .wc-block-components-checkout-place-order-button { background: var(--gvsx-green) !important; color: #fff !important; border-radius: 6px; font-weight: 700; }
.wc-block-components-text-input input, .wc-block-components-textarea textarea, .wc-block-components-select select, .wc-block-components-country-input select, input.input-text, select, textarea { background: var(--wp--preset--color--surface) !important; color: var(--wp--preset--color--contrast) !important; border-color: var(--wp--preset--color--border) !important; }
.wc-block-components-text-input label, .wc-block-components-form .wc-block-components-text-input label { color: var(--wp--preset--color--muted); }
.wc-block-components-checkout-step__title, .wc-block-components-title { color: var(--wp--preset--color--contrast); }
.wc-block-components-order-summary, .wc-block-components-sidebar { background: var(--gvsx-glass); border-radius: var(--gvsx-radius); }
.woocommerce table.shop_table, .wc-block-components-totals-wrapper { border-color: var(--wp--preset--color--border); }
.woocommerce table.shop_table th, .woocommerce table.shop_table td { border-color: var(--wp--preset--color--border) !important; }
/* (as regras antigas da navegação/conteúdo da Minha conta saíram daqui: ver a seção "Minha conta (área do cliente)") */
.woocommerce .button, .woocommerce a.button, .woocommerce button.button, .woocommerce input.button { background: var(--gvsx-green); color: #fff; border-radius: 6px; font-weight: 700; }
.woocommerce .button:hover, .woocommerce a.button:hover { background: #009A24; color: #fff; }
.lmfwc-myaccount-license-key, code { background: var(--wp--preset--color--surface-2); color: var(--gvsx-neon); padding: 2px 8px; border-radius: 6px; font-weight: 700; letter-spacing: 0.04em; }
.woocommerce-info, .woocommerce-message, .woocommerce-error { background: var(--gvsx-glass); color: var(--wp--preset--color--contrast); border-top-color: var(--gvsx-neon); border-radius: 12px; }
.woocommerce-error { border-top-color: var(--wp--preset--color--danger); }
/* ===== compare (portado da loja Shopify — código próprio da GVSX) ===== */
/* ============================================
   TABELA COMPARATIVA - ESTILOS
   ============================================ */

.gvsx-compare {
  background: transparent;
  color: #eaf6ef;
  padding: 20px 20px;
  font-family: inherit;
  position: relative;
  /* sem overflow:hidden (vinha da Shopify): recortava o halo da tabela comparativa na borda da seção */
}

/* Glow de fundo decorativo.
   A largura é limitada à seção de propósito. Com os 600px fixos que vinham da Shopify, este pseudo-elemento
   ficava mais largo que a própria seção em tela estreita — centrado, ele sobrava ~80px para cada lado — e como
   .gvsx-compare é `overflow: visible` (de propósito, para não recortar o halo da tabela), esses 80px viravam
   largura de documento. Ninguém via nada, porque é um gradiente quase transparente e o `overflow-x` do body
   impede a rolagem; mas o CELULAR vê: o Chrome mede o conteúdo no carregamento, encontra a página mais larga que
   a tela e encolhe tudo para caber. Era a causa do site aparecendo deslocado, com faixa vazia à direita e
   arrastável. Medido num aparelho de 440px: documento 543px para uma tela de 485 → escala 0,893, que é
   exatamente a escala observada no aparelho do Vinícius (0,9001). Com min(), o glow continua com 600px onde há
   espaço e encolhe junto com a seção onde não há. */
.gvsx-compare::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: min(600px, 100%);
  height: 600px;
  background: radial-gradient(circle, rgba(0,230,118,0.04) 0%, transparent 70%);
  pointer-events: none;
}

.gvsx-compare-container {
  max-width: 1000px;
  margin: 0 auto;
  position: relative;
  z-index: 1;
}

/* Header */
.gvsx-compare-header {
  text-align: center;
  margin-bottom: 50px;
}

.gvsx-compare-badge {
  display: inline-block;
  background: rgba(0, 230, 118, 0.12);
  color: #00e676;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 3px;
  text-transform: uppercase;
  padding: 6px 20px;
  border-radius: 50px;
  border: 1px solid rgba(0, 230, 118, 0.25);
  margin-bottom: 20px;
}

.gvsx-compare-title {
  font-family: inherit; font-weight: 800;
  font-size: clamp(28px, 5vw, 44px);
  font-weight: 700;
  margin: 0 0 14px 0;
  line-height: 1.2;
}

.gvsx-compare-title span {
  color: #00e676;
  font-size: 0.7em;
  text-shadow: 0 0 20px rgba(0, 230, 118, 0.3);
}

.gvsx-compare-subtitle {
  opacity: 0.7;
  font-size: 16px;
  margin: 0;
}

/* Tabela */
.gvsx-compare-table {
  border-radius: 16px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,0.06);
  background: rgba(255,255,255,0.015);
  backdrop-filter: blur(5px);
}

/* Row */
.gvsx-compare-row {
  display: grid;
  grid-template-columns: 1.3fr 1fr 1fr;
  border-bottom: 1px solid rgba(255,255,255,0.05);
  transition: background 0.3s ease, transform 0.3s ease;
}

.gvsx-compare-row:last-child {
  border-bottom: none;
}

.gvsx-compare-row:not(.gvsx-compare-row-header):hover {
  background: rgba(0, 230, 118, 0.03);
}

/* Animação de entrada das rows */
.gvsx-compare-row[data-gvsx-anim] {
  opacity: 0;
  transform: translateX(-20px);
  transition: opacity 0.5s ease, transform 0.5s ease, background 0.3s ease;
}

.gvsx-compare-row.gvsx-row-visible {
  opacity: 1;
  transform: translateX(0);
}

/* Header row */
.gvsx-compare-row-header {
  background: linear-gradient(135deg, rgba(0,230,118,0.12) 0%, rgba(0,140,204,0.08) 100%);
  font-weight: 700;
  font-size: 15px;
  text-transform: uppercase;
  letter-spacing: 1px;
}

.gvsx-compare-row-header .gvsx-compare-us {
  position: relative;
  color: #00e676;
}

.gvsx-compare-brand-badge {
  position: absolute;
  top: -1px;
  right: 10px;
  background: linear-gradient(135deg, #00c853, #00e676);
  color: #000;
  font-size: 9px;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 0 0 6px 6px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
}

/* Colunas */
.gvsx-compare-col {
  padding: 20px 24px;
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  line-height: 1.5;
}

.gvsx-compare-label {
  font-weight: 600;
  color: #fff;
}

.gvsx-compare-icon {
  font-size: 20px;
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,0.04);
  border-radius: 8px;
  flex-shrink: 0;
}

.gvsx-compare-us {
  color: rgba(255,255,255,0.85);
  border-left: 1px solid rgba(0, 230, 118, 0.08);
  border-right: 1px solid rgba(0, 230, 118, 0.08);
  background: rgba(0, 230, 118, 0.02);
}

.gvsx-compare-them {
  color: rgba(255,255,255,0.5);
}

/* Check e Cross */
.gvsx-check {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: rgba(0, 230, 118, 0.15);
  color: #00e676;
  font-size: 13px;
  font-weight: bold;
  flex-shrink: 0;
  box-shadow: 0 0 10px rgba(0, 230, 118, 0.15);
}

.gvsx-cross {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: rgba(255, 82, 82, 0.12);
  color: #ff5252;
  font-size: 13px;
  font-weight: bold;
  flex-shrink: 0;
}

/* Footer CTA */
.gvsx-compare-footer {
  text-align: center;
  margin-top: 60px;
  position: relative;
}

.gvsx-compare-footer-glow {
  position: absolute;
  top: -10px;
  left: 50%;
  transform: translateX(-50%);
  width: 300px;
  height: 2px;
  background: linear-gradient(90deg, transparent, rgba(0,230,118,0.5), transparent);
}

.gvsx-compare-footer h3 {
  font-family: inherit; font-weight: 800;
  font-size: clamp(20px, 3.5vw, 28px);
  font-weight: 700;
  margin: 0 0 12px 0;
  line-height: 1.3;
}

.gvsx-compare-footer h3 span {
  color: #00e676;
  text-shadow: 0 0 20px rgba(0, 230, 118, 0.25);
}

.gvsx-compare-footer p {
  opacity: 0.7;
  font-size: 15px;
  margin: 0 0 30px 0;
}

.gvsx-compare-cta {
  display: inline-flex;
  align-items: center;
  padding: 16px 50px;
  background: linear-gradient(135deg, #00c853, #00e676);
  color: #0a0a0a;
  font-family: inherit; font-weight: 800;
  font-size: 15px;
  font-weight: 700;
  border-radius: 10px;
  text-decoration: none;
  letter-spacing: 1px;
  text-transform: uppercase;
  transition: all 0.3s ease;
  box-shadow: 0 0 25px rgba(0, 200, 83, 0.3), 0 8px 25px rgba(0, 0, 0, 0.3);
  position: relative;
  overflow: hidden;
}

.gvsx-compare-cta::before {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
  transition: left 0.6s ease;
}

.gvsx-compare-cta:hover {
  transform: translateY(-3px) scale(1.02);
  box-shadow: 0 0 40px rgba(0, 200, 83, 0.5), 0 15px 35px rgba(0, 0, 0, 0.4);
  color: #0a0a0a;
  text-decoration: none;
}

.gvsx-compare-cta:hover::before {
  left: 100%;
}

/* MOBILE */
@media (max-width: 768px) {
  .gvsx-compare { padding: 50px 15px; }

  .gvsx-compare-row {
    grid-template-columns: 1fr;
    gap: 0;
  }

  .gvsx-compare-row-header { display: none; }

  .gvsx-compare-col {
    padding: 12px 18px;
  }

  .gvsx-compare-label {
    background: rgba(255,255,255,0.03);
    border-bottom: none;
    padding-bottom: 8px;
  }

  .gvsx-compare-us {
    border-left: 3px solid rgba(0, 230, 118, 0.3);
    border-right: none;
    padding-left: 18px;
  }

  .gvsx-compare-them {
    border-left: 3px solid rgba(255, 82, 82, 0.2);
    padding-left: 18px;
    padding-bottom: 16px;
  }

  .gvsx-compare-brand-badge { display: none; }
}

/* ===== steps (portado da loja Shopify — código próprio da GVSX) ===== */
/* ============================================
   COMO FUNCIONA - ESTILOS
   ============================================ */

.gvsx-steps {
  background: transparent;
  color: #eaeaea;
  padding: 20px 20px;
  font-family: inherit;
  position: relative;
  /* sem overflow:hidden (vinha da Shopify): recortava o halo verde dos cards "Como funciona" na borda da seção */
}

.gvsx-steps::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(0,230,118,0.2), transparent);
}

.gvsx-steps-container {
  max-width: 1100px;
  margin: 0 auto;
  position: relative;
}

/* Header */
.gvsx-steps-header {
  text-align: center;
  margin-bottom: 60px;
}

.gvsx-steps-badge {
  display: inline-block;
  background: rgba(0, 230, 118, 0.1);
  color: #00e676;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 3px;
  text-transform: uppercase;
  padding: 6px 18px;
  border-radius: 50px;
  border: 1px solid rgba(0, 230, 118, 0.2);
  margin-bottom: 18px;
}

.gvsx-steps-title {
  font-family: inherit; font-weight: 800;
  font-size: clamp(30px, 5vw, 42px);
  margin: 0 0 12px 0;
  line-height: 1.2;
}

.gvsx-steps-subtitle {
  opacity: 0.65;
  font-size: 16px;
  margin: 0;
}

/* Grid dos cards */
.gvsx-steps-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 30px;
  position: relative;
  z-index: 2;
}

/* Card individual */
.gvsx-step-card {
  text-align: center;
  padding: 40px 20px 30px;
  border-radius: 16px;
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.04);
  position: relative;
  transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  opacity: 0;
  transform: translateY(30px);
}

.gvsx-step-card.gvsx-step-visible {
  opacity: 1;
  transform: translateY(0);
}

.gvsx-step-card:hover {
  background: rgba(0, 230, 118, 0.03);
  border-color: rgba(0, 230, 118, 0.15);
  transform: translateY(-6px);
  /* box-shadow do hover vem do halo verde (--gvsx-d-card-hi), definido na seção de efeitos */
}

/* Número do passo */
.gvsx-step-number-wrap {
  position: relative;
  margin-bottom: 10px;
}

.gvsx-step-number {
  font-family: inherit; font-weight: 800;
  font-size: 48px;
  color: rgba(0, 230, 118, 0.08);
  line-height: 1;
  user-select: none;
  transition: color 0.3s ease;
}

.gvsx-step-card:hover .gvsx-step-number {
  color: rgba(0, 230, 118, 0.15);
}

/* (.gvsx-step-dot — a bolinha verde que aparecia no hover — removida a pedido, v0.1.1) */

/* Ícone */
.gvsx-step-icon-wrap {
  position: relative;
  display: inline-block;
  margin-bottom: 20px;
}

.gvsx-step-icon {
  width: 68px;
  height: 68px;
  border-radius: 16px;
  background: rgba(0, 230, 118, 0.08);
  border: 1px solid rgba(0, 230, 118, 0.15);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto;
  position: relative;
  z-index: 2;
  transition: all 0.3s ease;
}

.gvsx-step-card:hover .gvsx-step-icon {
  background: rgba(0, 230, 118, 0.12);
  border-color: rgba(0, 230, 118, 0.3);
  box-shadow: 0 0 20px rgba(0, 230, 118, 0.15);
  transform: scale(1.08);
}

.gvsx-step-icon-glow {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 90px;
  height: 90px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(0,230,118,0.08) 0%, transparent 70%);
  z-index: 1;
  opacity: 0;
  transition: opacity 0.3s ease;
}

.gvsx-step-card:hover .gvsx-step-icon-glow {
  opacity: 1;
}

/* Texto */
.gvsx-step-name {
  font-family: inherit; font-weight: 800;
  font-size: 16px;
  margin: 0 0 10px 0;
  color: #fff;
  letter-spacing: 0.5px;
}

.gvsx-step-desc {
  font-size: 13px;
  opacity: 0.65;
  line-height: 1.7;
  margin: 0;
}

/* MOBILE */
@media (max-width: 900px) {
  .gvsx-steps { padding: 50px 15px; }
  .gvsx-steps-grid {
    grid-template-columns: 1fr 1fr;
    gap: 20px;
  }
  .gvsx-steps-timeline { display: none; }
}

@media (max-width: 500px) {
  .gvsx-steps-grid {
    grid-template-columns: 1fr;
    gap: 16px;
  }
  .gvsx-step-card {
    padding: 30px 20px 25px;
  }
}

/* ===== faq (portado da loja Shopify — código próprio da GVSX) ===== */
/* ============================================
   FAQ - ESTILOS
   ============================================ */

.gvsx-faq-section {
  background: transparent;
  color: #eaeaea;
  padding: 20px 20px;
  font-family: inherit;
  position: relative;
}

.gvsx-faq-section::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(0,230,118,0.2), transparent);
}

.gvsx-faq-container {
  max-width: 780px;
  margin: 0 auto;
}

/* Header */
.gvsx-faq-header {
  text-align: center;
  margin-bottom: 50px;
}

.gvsx-faq-badge {
  display: inline-block;
  background: rgba(0, 230, 118, 0.1);
  color: #00e676;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 3px;
  text-transform: uppercase;
  padding: 6px 18px;
  border-radius: 50px;
  border: 1px solid rgba(0, 230, 118, 0.2);
  margin-bottom: 18px;
}

.gvsx-faq-title {
  font-family: inherit; font-weight: 800;
  font-size: clamp(28px, 5vw, 40px);
  margin: 0 0 12px 0;
}

.gvsx-faq-subtitle {
  opacity: 0.6;
  font-size: 15px;
  margin: 0;
}

/* FAQ List */
.gvsx-faq-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* FAQ Item */
.gvsx-faq-item {
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 14px;
  overflow: hidden;
  background: rgba(255,255,255,0.015);
  transition: all 0.3s ease;
  opacity: 0;
  transform: translateY(15px);
}

.gvsx-faq-item.gvsx-faq-visible {
  opacity: 1;
  transform: translateY(0);
}

.gvsx-faq-item:hover {
  border-color: rgba(0, 230, 118, 0.15);
  background: rgba(0, 230, 118, 0.015);
}

.gvsx-faq-item.gvsx-faq-open {
  border-color: rgba(0, 230, 118, 0.25);
  background: rgba(0, 230, 118, 0.02);
  /* box-shadow vem do halo verde (--gvsx-d-card-hi), definido na seção de efeitos */
}

/* Question button */
.gvsx-faq-question {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 24px;
  background: none;
  border: none;
  color: #fff;
  cursor: pointer;
  font-family: inherit;
  font-size: 15px;
  font-weight: 600;
  text-align: left;
  gap: 16px;
  transition: color 0.3s ease;
}

.gvsx-faq-item.gvsx-faq-open .gvsx-faq-question {
  color: #00e676;
}

.gvsx-faq-q-left {
  display: flex;
  align-items: center;
  gap: 14px;
}

.gvsx-faq-icon-q {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: rgba(0, 230, 118, 0.08);
  color: #00e676;
  font-family: inherit; font-weight: 800;
  font-size: 14px;
  flex-shrink: 0;
  transition: all 0.3s ease;
}

.gvsx-faq-item.gvsx-faq-open .gvsx-faq-icon-q {
  background: rgba(0, 230, 118, 0.15);
  box-shadow: 0 0 10px rgba(0, 230, 118, 0.15);
}

/* Toggle icon (+ / -) */
.gvsx-faq-toggle {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.gvsx-faq-plus {
  position: relative;
  width: 14px;
  height: 14px;
}

.gvsx-faq-plus::before,
.gvsx-faq-plus::after {
  content: '';
  position: absolute;
  background: rgba(255,255,255,0.5);
  transition: all 0.3s ease;
}

.gvsx-faq-plus::before {
  width: 14px;
  height: 2px;
  top: 6px;
  left: 0;
}

.gvsx-faq-plus::after {
  width: 2px;
  height: 14px;
  top: 0;
  left: 6px;
}

.gvsx-faq-item.gvsx-faq-open .gvsx-faq-plus::before {
  background: #00e676;
}

.gvsx-faq-item.gvsx-faq-open .gvsx-faq-plus::after {
  transform: rotate(90deg);
  opacity: 0;
}

/* Answer */
.gvsx-faq-answer {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.gvsx-faq-item.gvsx-faq-open .gvsx-faq-answer {
  max-height: 300px;
}

.gvsx-faq-answer-inner {
  padding: 0 24px 22px 70px;
  opacity: 0;
  transform: translateY(-8px);
  transition: opacity 0.3s ease 0.1s, transform 0.3s ease 0.1s;
}

.gvsx-faq-item.gvsx-faq-open .gvsx-faq-answer-inner {
  opacity: 1;
  transform: translateY(0);
}

.gvsx-faq-answer-inner p {
  font-size: 14px;
  line-height: 1.8;
  opacity: 0.75;
  margin: 0;
}

.gvsx-faq-answer-inner strong {
  color: #00e676;
}

/* CTA bottom */
.gvsx-faq-cta-wrap {
  text-align: center;
  margin-top: 40px;
  padding-top: 30px;
  border-top: 1px solid rgba(255,255,255,0.05);
}

.gvsx-faq-cta-wrap p {
  font-size: 14px;
  opacity: 0.6;
}

.gvsx-faq-discord-link {
  color: #7289da;
  text-decoration: none;
  font-weight: 600;
  transition: all 0.3s ease;
}

.gvsx-faq-discord-link:hover {
  color: #99aab5;
  text-shadow: 0 0 10px rgba(114, 137, 218, 0.4);
}

.gvsx-faq-whatsapp-link {
  color: #25d366;
  text-decoration: none;
  font-weight: 600;
  transition: all 0.3s ease;
}

.gvsx-faq-whatsapp-link:hover {
  color: #4ae07f;
  text-shadow: 0 0 10px rgba(37, 211, 102, 0.4);
}

/* MOBILE */
@media (max-width: 600px) {
  .gvsx-faq-section { padding: 50px 15px; }
  .gvsx-faq-question {
    padding: 16px 18px;
    font-size: 14px;
  }
  .gvsx-faq-answer-inner {
    padding: 0 18px 18px 18px;
  }
  .gvsx-faq-icon-q { display: none; }
}

/* =====================================================================
   Indicador de processamento (v0.5.0) — bloco no centro da tela com ícone girando e o status da ação
   ("Enviando código...", "Entrando...", "Saindo..."). Criado e controlado pelo gvsx.js (window.GVSXLoader).
   Fica acima de tudo (o cabeçalho está em 90; o botão fixo do carrinho, em 9999).
   ===================================================================== */
.gvsx-loader { position: fixed; inset: 0; z-index: 100000; display: grid; place-items: center; padding: 24px; background: rgba(4, 6, 5, 0.58); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); opacity: 0; visibility: hidden; transition: opacity .22s ease, visibility 0s linear .22s; }
.gvsx-loader.is-visible { opacity: 1; visibility: visible; transition: opacity .18s ease; }
.gvsx-loader__box { display: flex; flex-direction: column; align-items: center; gap: 16px; min-width: 210px; max-width: min(340px, 100%); padding: 28px 32px 24px; border-radius: 22px; background: linear-gradient(180deg, rgba(22, 26, 24, 0.98), rgba(12, 14, 13, 0.98)); border: 1px solid rgba(255, 255, 255, 0.1); box-shadow: 0 2px 10px rgba(0, 0, 0, 0.6), 0 28px 70px -22px rgba(var(--gvsx-d-glow), 0.4); transform: translateY(10px) scale(0.96); transition: transform .24s cubic-bezier(0.2, 0.7, 0.3, 1); text-align: center; }
.gvsx-loader.is-visible .gvsx-loader__box { transform: none; }
/* anel na cor da marca com cauda em degradê, girando */
.gvsx-loader__spin { width: 50px; height: 50px; border-radius: 50%; background: conic-gradient(from 0deg, rgba(var(--gvsx-d-glow), 0) 0 18%, var(--gvsx-neon) 100%); -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 6px), #000 calc(100% - 5px)); mask: radial-gradient(farthest-side, transparent calc(100% - 6px), #000 calc(100% - 5px)); animation: gvsx-spin 0.9s linear infinite; filter: drop-shadow(0 0 8px rgba(var(--gvsx-d-glow), 0.55)); }
@keyframes gvsx-spin { to { transform: rotate(360deg); } }
.gvsx-loader__text { font-size: 0.98rem; font-weight: 700; color: var(--wp--preset--color--contrast); letter-spacing: 0.01em; }
.gvsx-loader__sub { margin-top: -8px; font-size: 0.78rem; color: var(--wp--preset--color--muted); }
@media (prefers-reduced-motion: reduce) {
  .gvsx-loader__spin { animation-duration: 1.8s; }
  .gvsx-loader__box { transform: none; transition: none; }
}

/* =====================================================================
   Checkout em 3 etapas (v0.6.0) — HTML no plugin (GVSX_Checkout + templates/checkout/*), sobre o checkout clássico
   do WooCommerce. Cabeçalho enxuto (modelo page-checkout.html), fluxo à esquerda, resumo fixo à direita.
   ===================================================================== */
/* ---- cabeçalho e rodapé enxutos ---- */
.gvsx-cohead { position: sticky; top: 0; z-index: 90; background: rgba(10, 10, 10, 0.92); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.gvsx-cohead__inner { min-height: 72px; padding-top: 8px; padding-bottom: 8px; }
.gvsx-cohead__logo { margin: 0; }
.gvsx-cohead__logo img { height: auto; display: block; }
.gvsx-cohead__back, .gvsx-cohead__secure { display: inline-flex; align-items: center; gap: 7px; font-size: 0.84rem; font-weight: 600; color: var(--wp--preset--color--muted); text-decoration: none; min-width: 110px; }
.gvsx-cohead__back:hover { color: var(--gvsx-neon); text-decoration: none; }
.gvsx-cohead__secure { justify-content: flex-end; color: var(--gvsx-neon); }
.gvsx-cofoot { padding: 1.4rem 0 1.6rem; border-top: 1px solid var(--gvsx-glass-border); }
.gvsx-cofoot__text { margin: 0; font-size: 0.8rem; color: var(--wp--preset--color--muted); }
.gvsx-cofoot__text a { color: var(--wp--preset--color--muted); text-decoration: none; }
.gvsx-cofoot__text a:hover { color: var(--gvsx-neon); }
body.woocommerce-checkout .gvsx-checkout .wp-block-post-title { display: none; }
body.woocommerce-checkout .gvsx-checkout .entry-content { max-width: 1140px; margin-left: auto; margin-right: auto; }

/* ---- grade: fluxo + resumo ---- */
.gvsx-co { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 1.5rem 2.25rem; align-items: start; }
.gvsx-co__main { min-width: 0; }
.gvsx-co__side { position: sticky; top: 92px; }
/* véu do WooCommerce enquanto processa: escuro, não branco */
.gvsx-co .blockUI.blockOverlay { background: rgba(6, 8, 7, 0.55) !important; opacity: 1 !important; border-radius: 20px; }

/* ---- topo: etapas, barra e mensagem ---- */
.gvsx-co__top { margin-bottom: 1.4rem; }
.gvsx-co__progress { list-style: none; margin: 0 0 0.75rem; padding: 0; display: flex; gap: 0.25rem 1.5rem; flex-wrap: wrap; }
.gvsx-co__progress li { display: flex; align-items: center; gap: 8px; font-size: 0.78rem; font-weight: 600; color: var(--wp--preset--color--muted); transition: color .3s ease; }
.gvsx-co__progress li span { display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; border: 1px solid var(--wp--preset--color--border); font-size: 0.72rem; font-weight: 800; transition: background .3s ease, border-color .3s ease, color .3s ease, box-shadow .3s ease; }
.gvsx-co__progress li.is-current { color: var(--wp--preset--color--contrast); }
.gvsx-co__progress li.is-current span { background: var(--gvsx-neon); border-color: var(--gvsx-neon); color: #052e16; box-shadow: 0 0 16px rgba(var(--gvsx-d-glow), 0.6); }
.gvsx-co__progress li.is-done { color: var(--gvsx-neon); }
.gvsx-co__progress li.is-done span { background: rgba(var(--gvsx-d-glow), 0.15); border-color: rgba(var(--gvsx-d-glow), 0.5); color: var(--gvsx-neon); font-size: 0; }
.gvsx-co__progress li.is-done span::after { content: "✓"; font-size: 0.72rem; }
.gvsx-co__bar { height: 6px; border-radius: 999px; background: rgba(255, 255, 255, 0.08); overflow: hidden; margin-bottom: 1.3rem; }
.gvsx-co__bar i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--gvsx-green), var(--gvsx-neon)); box-shadow: 0 0 14px rgba(var(--gvsx-d-glow), 0.6); transition: width .55s cubic-bezier(0.2, 0.7, 0.2, 1); }
.gvsx-co__headline { margin: 0 0 0.45rem; font-size: clamp(1.45rem, 2.4vw, 1.9rem); line-height: 1.2; font-weight: 800; letter-spacing: -0.01em; color: var(--wp--preset--color--contrast); }
.gvsx-co__headline b { color: var(--gvsx-neon); }
.gvsx-co__sub { margin: 0; font-size: 0.98rem; line-height: 1.55; color: var(--wp--preset--color--muted); max-width: 60ch; }

/* ---- pagamento expresso (Stripe) ---- */
.gvsx-co__express { margin: 0 0 1rem; }
.gvsx-co__express:empty { display: none; }
.gvsx-co:not([data-step="1"]) .gvsx-co__express, .gvsx-co.is-paying .gvsx-co__express { display: none; }

/* ---- etapas ---- */
.gvsx-co__step { margin: 0 0 1rem; }
.gvsx-co__step[hidden] { display: none; }
.gvsx-co__step.is-enter .gvsx-co__card { animation: gvsx-co-in .38s cubic-bezier(0.2, 0.7, 0.2, 1) both; }
@keyframes gvsx-co-in { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
.gvsx-co__card { position: relative; z-index: 2; padding: 1.6rem 1.7rem 1.5rem; border-radius: 22px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.02)); border: 1px solid rgba(255, 255, 255, 0.09); box-shadow: var(--gvsx-d-float); }
.gvsx-co__step.is-done .gvsx-co__card { display: none; }
.gvsx-co__ask { display: flex; align-items: flex-start; gap: 14px; margin: 0 0 1.25rem; }
.gvsx-co__ask p { margin: 0; font-size: 1.05rem; line-height: 1.5; color: var(--wp--preset--color--contrast); padding: 0.75rem 1rem; border-radius: 4px 16px 16px 16px; background: rgba(var(--gvsx-d-glow), 0.08); border: 1px solid rgba(var(--gvsx-d-glow), 0.2); }
.gvsx-co__ask b { color: var(--gvsx-neon); font-weight: 700; }
.gvsx-co__avatar { flex: none; width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; font-weight: 900; font-size: 1.1rem; color: #052e16; background: linear-gradient(135deg, var(--gvsx-green), var(--gvsx-neon)); box-shadow: 0 10px 24px -10px rgba(var(--gvsx-d-glow), 0.8); }
/* Com o ícone do site no lugar da inicial: quadrado com cantos arredondados (o desenho da marca é
   quadrado — um recorte circular comeria as pontas) e sem o gradiente verde por baixo. */
.gvsx-co__avatar--logo { border-radius: 11px; background: none; object-fit: cover; box-shadow: 0 4px 14px -6px rgba(0, 0, 0, 0.8); }
.gvsx-co__hint { margin: -0.5rem 0 1.1rem 54px; font-size: 0.86rem; color: var(--wp--preset--color--muted); }
.gvsx-co__hint a { color: var(--gvsx-neon); font-weight: 600; }
.gvsx-co__trust { margin: 0.9rem 0 0; font-size: 0.8rem; color: var(--wp--preset--color--muted); text-align: center; }
.gvsx-co__trust--pay { margin-top: 0.8rem; }
/* etapa concluída vira uma linha-resumo com "Editar" */
.gvsx-co__done { display: flex; align-items: center; gap: 12px; padding: 0.85rem 1.1rem; border-radius: 14px; background: var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); animation: gvsx-co-in .3s ease both; }
.gvsx-co__donecheck { flex: none; width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; font-size: 0.75rem; font-weight: 900; color: #052e16; background: var(--gvsx-neon); }
.gvsx-co__donetext { flex: 1; min-width: 0; font-size: 0.86rem; color: var(--wp--preset--color--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gvsx-co__donetext b { color: var(--wp--preset--color--contrast); margin-right: 6px; }
.gvsx-co__edit { flex: none; background: none; border: 0; padding: 4px 8px; font: inherit; font-size: 0.82rem; font-weight: 700; color: var(--gvsx-neon); cursor: pointer; border-radius: 8px; }
.gvsx-co__edit:hover { background: rgba(var(--gvsx-d-glow), 0.1); }

/* ---- campos (marcação padrão do WooCommerce: p.form-row > label + span.woocommerce-input-wrapper > input) ---- */
/* (prefixo body.woocommerce-checkout .gvsx-co: as regras do WooCommerce para .form-row-first/-last (width 47%, float), padding 3px e label line-height 2 têm especificidade maior que uma classe só) */
.gvsx-co__fields { display: grid; grid-template-columns: 1fr 1fr; gap: 0.9rem 1rem; }
body.woocommerce-checkout .gvsx-co .gvsx-co__fields .form-row { margin: 0; padding: 0; float: none; width: auto; overflow: visible; grid-column: 1 / -1; position: relative; }
body.woocommerce-checkout .gvsx-co .gvsx-co__fields .form-row-first, body.woocommerce-checkout .gvsx-co .gvsx-co__fields .form-row-last { grid-column: auto; }
body.woocommerce-checkout .gvsx-co .gvsx-co__fields .form-row.gvsx-co__hidden { display: none; }
body.woocommerce-checkout .gvsx-co .gvsx-co__fields .form-row.woocommerce-invalid label, body.woocommerce-checkout .gvsx-co .gvsx-co__fields .form-row.woocommerce-invalid label abbr { color: #ff9a9a; }
body.woocommerce-checkout .gvsx-co .gvsx-co__fields label { display: block; font-size: 0.82rem; line-height: 1.4; font-weight: 600; color: var(--wp--preset--color--muted); margin: 0 0 0.4rem; }
body.woocommerce-checkout .gvsx-co .gvsx-co__fields label .required { color: var(--gvsx-neon); text-decoration: none; }
body.woocommerce-checkout .gvsx-co .gvsx-co__fields label .optional { color: var(--wp--preset--color--muted); font-weight: 500; font-size: 0.75rem; }
.gvsx-co__fields .woocommerce-input-wrapper { display: block; }
body.woocommerce-checkout .gvsx-co .select2-container { width: 100% !important; } /* o select2 do tipo de pessoa é iniciado com a etapa 2 escondida e fica com largura "auto" */
body.woocommerce-checkout .gvsx-co input.input-text, body.woocommerce-checkout .gvsx-co select, body.woocommerce-checkout .gvsx-co textarea, body.woocommerce-checkout .gvsx-co .select2-container .select2-selection--single { box-sizing: border-box; width: 100%; min-height: 54px; padding: 13px 16px; border-radius: 12px; background: rgba(0, 0, 0, 0.32) !important; border: 1px solid rgba(255, 255, 255, 0.11) !important; color: var(--wp--preset--color--contrast) !important; font: inherit; font-size: 1rem; transition: border-color .15s ease, box-shadow .15s ease; }
body.woocommerce-checkout .gvsx-co input.input-text::placeholder { color: rgba(255, 255, 255, 0.35); }
body.woocommerce-checkout .gvsx-co input.input-text:focus, body.woocommerce-checkout .gvsx-co select:focus, body.woocommerce-checkout .gvsx-co textarea:focus { outline: none; border-color: var(--gvsx-neon) !important; box-shadow: 0 0 0 4px rgba(var(--gvsx-d-glow), 0.14); }
body.woocommerce-checkout .gvsx-co .form-row.woocommerce-invalid input.input-text, body.woocommerce-checkout .gvsx-co .form-row.woocommerce-invalid select { border-color: rgba(255, 77, 77, 0.7) !important; }
body.woocommerce-checkout .gvsx-co .form-row.woocommerce-validated input.input-text, body.woocommerce-checkout .gvsx-co .form-row.woocommerce-validated select { border-color: rgba(var(--gvsx-d-glow), 0.45) !important; }
body.woocommerce-checkout .gvsx-co select { appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23B9B9B9' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") !important; background-repeat: no-repeat !important; background-position: right 14px center !important; background-size: 18px !important; padding-right: 42px; }
body.woocommerce-checkout .gvsx-co .select2-container .select2-selection--single { display: flex; align-items: center; height: auto; }
body.woocommerce-checkout .gvsx-co .select2-container--default .select2-selection--single .select2-selection__rendered { color: var(--wp--preset--color--contrast); line-height: 1.4; padding: 0; }
body.woocommerce-checkout .gvsx-co .select2-container--default .select2-selection--single .select2-selection__arrow { height: 100%; right: 10px; }
.select2-container--default .select2-dropdown { background: var(--wp--preset--color--surface-2, #161616); border-color: var(--gvsx-glass-border); color: var(--wp--preset--color--contrast); border-radius: 12px; overflow: hidden; }
.select2-container--default .select2-results__option--highlighted[aria-selected] { background: var(--gvsx-green); }
.select2-container--default .select2-search--dropdown .select2-search__field { background: rgba(0, 0, 0, 0.3); color: var(--wp--preset--color--contrast); border-color: var(--gvsx-glass-border); border-radius: 8px; }
.gvsx-co__fieldhint { grid-column: 1 / -1; margin: -0.45rem 0 0; font-size: 0.78rem; line-height: 1.45; color: var(--wp--preset--color--muted); }
.gvsx-co__err, .gvsx-co .checkout-inline-error-message { display: block; margin: 0.4rem 0 0; font-size: 0.8rem; color: #ff9a9a; }
.gvsx-co .form-row.woocommerce-invalid .gvsx-co__err + .checkout-inline-error-message { display: none; }
.gvsx-co .woocommerce-account-fields { margin-top: 0.9rem; }
.gvsx-co .woocommerce-account-fields .form-row { margin: 0 0 0.9rem; }
/* botões de navegação */
.gvsx-co__next { width: 100%; justify-content: center; min-height: 58px; margin-top: 1.25rem; font-size: 1rem; border-radius: 14px; text-transform: uppercase; letter-spacing: 0.04em; }
.gvsx-co__next svg { transition: transform .2s ease; }
.gvsx-co__next:hover svg { transform: translateX(4px); }
.gvsx-co__nav { display: flex; align-items: center; gap: 1rem; margin-top: 1.25rem; }
.gvsx-co__nav .gvsx-co__next { margin-top: 0; flex: 1; }
.gvsx-co__back { background: none; border: 0; padding: 0.6rem 0.2rem; font: inherit; font-size: 0.86rem; font-weight: 600; color: var(--wp--preset--color--muted); cursor: pointer; white-space: nowrap; }
.gvsx-co__back:hover { color: var(--gvsx-neon); }
.gvsx-co__navback { margin: 0.4rem 0 0; }

/* ---- avisos do WooCommerce dentro do fluxo ---- */
.gvsx-co .woocommerce-NoticeGroup { margin: 0 0 1rem; }
.gvsx-co .woocommerce-error, .gvsx-co .woocommerce-message, .gvsx-co .woocommerce-info, .gvsx-checkout .woocommerce-notices-wrapper .woocommerce-error, .gvsx-checkout .woocommerce-notices-wrapper .woocommerce-message, .gvsx-checkout .woocommerce-notices-wrapper .woocommerce-info { list-style: none; margin: 0 0 1rem; padding: 0.9rem 1.1rem; border-radius: 14px; font-size: 0.9rem; line-height: 1.5; border: 1px solid; }
.gvsx-co .woocommerce-error, .gvsx-checkout .woocommerce-notices-wrapper .woocommerce-error { color: #ffb3b3; background: rgba(255, 77, 77, 0.1); border-color: rgba(255, 77, 77, 0.35); }
.gvsx-co .woocommerce-message, .gvsx-checkout .woocommerce-notices-wrapper .woocommerce-message { color: var(--wp--preset--color--contrast); background: rgba(var(--gvsx-d-glow), 0.1); border-color: rgba(var(--gvsx-d-glow), 0.35); }
.gvsx-co .woocommerce-info, .gvsx-checkout .woocommerce-notices-wrapper .woocommerce-info { color: var(--wp--preset--color--contrast); background: rgba(0, 175, 199, 0.1); border-color: rgba(0, 175, 199, 0.35); }
.gvsx-co .woocommerce-error li, .gvsx-checkout .woocommerce-error li { margin: 0 0 0.35rem; }
.gvsx-co .woocommerce-error li:last-child { margin-bottom: 0; }
.gvsx-co .woocommerce-error a, .gvsx-co .woocommerce-message a { color: var(--gvsx-neon); }
/* 0.7.15: o mesmo vale para os avisos do topo da página (.woocommerce-notices-wrapper, fora do .gvsx-co), onde a Stripe
   insere os erros do cartão: o padding reduzido acima deixava o ícone do WooCommerce (::before, absoluto a 1,5em) sobre o texto. */
.gvsx-co .woocommerce-error::before, .gvsx-co .woocommerce-message::before, .gvsx-co .woocommerce-info::before, .gvsx-checkout .woocommerce-notices-wrapper .woocommerce-error::before, .gvsx-checkout .woocommerce-notices-wrapper .woocommerce-message::before, .gvsx-checkout .woocommerce-notices-wrapper .woocommerce-info::before { display: none; }
/* o botão "Ver carrinho" do aviso "adicionado ao carrinho" (só aparece quando se chega ao checkout por ?add-to-cart=): vira link */
.gvsx-checkout .woocommerce-notices-wrapper .woocommerce-message a.button { float: none; display: inline; margin: 0 0.5rem 0 0; padding: 0; background: none; border: 0; box-shadow: none; font: inherit; font-weight: 700; color: var(--gvsx-neon); text-decoration: underline; text-underline-offset: 3px; }

/* ---- etapa 3: itens ---- */
.gvsx-co__label { margin: 0 0 1rem; font-size: 0.76rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--wp--preset--color--muted); }
.gvsx-co__review { margin: 0 0 1rem; }
.gvsx-co__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.85rem; }
.gvsx-co__item { display: grid; grid-template-columns: 64px minmax(0, 1fr) auto; gap: 0.9rem; align-items: center; }
.gvsx-co__thumb img { width: 64px; height: 64px; object-fit: cover; border-radius: 12px; display: block; }
.gvsx-co__itembody { min-width: 0; }
.gvsx-co__itemname { display: block; font-weight: 700; line-height: 1.35; color: var(--wp--preset--color--contrast); }
.gvsx-co__itemmeta { display: block; margin-top: 0.15rem; font-size: 0.8rem; color: var(--wp--preset--color--muted); }
.gvsx-co__item .variation, .gvsx-co__item dl { margin: 0.2rem 0 0; font-size: 0.8rem; color: var(--wp--preset--color--muted); }
.gvsx-co__remove { background: none; border: 0; padding: 0; margin-top: 0.15rem; font: inherit; font-size: 0.78rem; color: var(--wp--preset--color--muted); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.gvsx-co__remove:hover { color: var(--wp--preset--color--danger); }
.gvsx-co__itemtotal { font-weight: 800; color: var(--gvsx-neon); white-space: nowrap; }
/* cupom */
.gvsx-co__coupon { margin: 1.1rem 0 0; padding-top: 1rem; border-top: 1px solid var(--gvsx-glass-border); }
.gvsx-co__couponopen { background: none; border: 0; padding: 0; font: inherit; font-size: 0.88rem; color: var(--wp--preset--color--muted); cursor: pointer; }
.gvsx-co__couponopen span { color: var(--gvsx-neon); font-weight: 700; margin-left: 4px; }
.gvsx-co__couponform { display: flex; gap: 10px; }
.gvsx-co__couponform[hidden] { display: none; }
body.woocommerce-checkout .gvsx-co .gvsx-co__couponform input.input-text { min-height: 48px; text-transform: uppercase; }
.gvsx-co__couponform .gvsx-btn { flex: none; min-height: 48px; }
.gvsx-co__couponok { margin: 0; display: flex; align-items: center; justify-content: space-between; gap: 1rem; font-size: 0.88rem; color: var(--wp--preset--color--contrast); }
.gvsx-co__couponok b { color: var(--gvsx-neon); }
.gvsx-co__couponremove { background: none; border: 0; padding: 0; font: inherit; font-size: 0.8rem; color: var(--wp--preset--color--muted); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.gvsx-co__couponmsg { margin: 0.45rem 0 0; font-size: 0.8rem; color: #ff9a9a; }
.gvsx-co__couponmsg.is-ok { color: var(--gvsx-neon); }
.gvsx-co__couponmsg:empty { display: none; }
/* totais */
.gvsx-co__totals { margin: 1rem 0 0; padding-top: 1rem; border-top: 1px solid var(--gvsx-glass-border); display: flex; flex-direction: column; gap: 0.5rem; }
.gvsx-co__totals > div { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; font-size: 0.9rem; color: var(--wp--preset--color--muted); }
.gvsx-co__totals dt, .gvsx-co__totals dd { margin: 0; }
.gvsx-co__totals dd { color: var(--wp--preset--color--contrast); font-weight: 600; }
.gvsx-co__total { margin-top: 0.3rem; padding-top: 0.8rem; border-top: 1px solid var(--gvsx-glass-border); }
.gvsx-co__total dt { color: var(--wp--preset--color--contrast); font-weight: 800; font-size: 1rem; }
.gvsx-co__total dd { color: var(--gvsx-neon); font-size: 1.35rem; font-weight: 800; }
.gvsx-co__totals .includes_tax, .gvsx-co__totals small { font-size: 0.75rem; color: var(--wp--preset--color--muted); font-weight: 500; }

/* ---- etapa 3: formas de pagamento ---- */
.gvsx-co__payment { margin: 0; }
/* neutraliza o visual padrão do WooCommerce para #payment (seletores com ID: .woocommerce-checkout #payment ...) */
body.woocommerce-checkout #payment.gvsx-co__payment { background: transparent; border-radius: 0; }
body.woocommerce-checkout #payment.gvsx-co__payment ul.payment_methods { padding: 0; border: 0; margin: 0 0 1.2rem; }
body.woocommerce-checkout #payment.gvsx-co__payment ul.payment_methods li { line-height: 1.4; padding: 0; margin: 0; border: 0; text-align: left; }
body.woocommerce-checkout #payment.gvsx-co__payment div.form-row { padding: 0; margin: 0; }
/* fundo opaco de propósito: a Stripe lê a cor de fundo de li.wc_payment_method .payment_box para desenhar o formulário do cartão (claro/escuro) */
body.woocommerce-checkout #payment.gvsx-co__payment div.payment_box { position: relative; width: 100%; margin: 0.5rem 0 0 0; padding: 0.95rem 1.1rem; border-radius: 14px; background: #151515; border: 1px solid var(--gvsx-glass-border); font-size: 0.88rem; line-height: 1.5; color: var(--wp--preset--color--muted); }
body.woocommerce-checkout #payment.gvsx-co__payment div.payment_box img.logo { display: none; } /* logo Pix/boleto da Stone: o card já tem o ícone */
body.woocommerce-checkout #payment.gvsx-co__payment div.payment_box .woocommerce-SavedPaymentMethods[data-count="0"] .woocommerce-SavedPaymentMethods-new { display: none; } /* sem cartão salvo, "usar um novo método" é a única opção (o WooCommerce remove essa linha; aqui ela ficou) */
body.woocommerce-checkout #payment.gvsx-co__payment div.payment_box::before { display: none; content: none; }
body.woocommerce-checkout #payment.gvsx-co__payment div.payment_box .wc-credit-card-form, body.woocommerce-checkout #payment.gvsx-co__payment div.payment_box fieldset { border: 0; padding: 0; margin: 0; }
body.woocommerce-checkout #payment.gvsx-co__payment div.payment_box .form-row { margin: 0 0 0.8rem; padding: 0; }
body.woocommerce-checkout #payment.gvsx-co__payment div.payment_box p { margin: 0 0 0.6rem; }
body.woocommerce-checkout #payment.gvsx-co__payment div.payment_box p:last-child { margin-bottom: 0; }
body.woocommerce-checkout #payment.gvsx-co__payment div.payment_box #wcmp-checkout-errors ul:empty { display: none; }
.gvsx-co__methods { list-style: none; margin: 0 0 1.2rem; padding: 0; display: flex; flex-direction: column; gap: 0.7rem; }
.gvsx-co__method { margin: 0; padding: 0; position: relative; }
.gvsx-co__method > input[type="radio"] { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; pointer-events: none; }
.gvsx-co__methodlabel { display: grid; grid-template-columns: 46px minmax(0, 1fr) 24px; align-items: center; gap: 14px; padding: 0.95rem 1.1rem; border-radius: 16px; background: rgba(0, 0, 0, 0.22); border: 1px solid rgba(255, 255, 255, 0.1); cursor: pointer; transition: border-color .2s ease, background .2s ease, box-shadow .2s ease, transform .2s ease; }
.gvsx-co__methodlabel:hover { border-color: rgba(var(--gvsx-d-glow), 0.4); transform: translateY(-1px); }
.gvsx-co__method > input:checked + .gvsx-co__methodlabel { border-color: var(--gvsx-neon); background: rgba(var(--gvsx-d-glow), 0.08); box-shadow: 0 0 0 4px rgba(var(--gvsx-d-glow), 0.1), 0 14px 30px -14px rgba(var(--gvsx-d-glow), 0.55); }
.gvsx-co__method > input:focus-visible + .gvsx-co__methodlabel { outline: 2px solid var(--gvsx-neon); outline-offset: 3px; }
.gvsx-co__methodicon { width: 46px; height: 46px; border-radius: 12px; display: grid; place-items: center; background: rgba(255, 255, 255, 0.05); color: var(--wp--preset--color--contrast); transition: background .2s ease, color .2s ease; }
.gvsx-co__methodicon svg { width: 24px; height: 24px; }
.gvsx-co__method > input:checked + .gvsx-co__methodlabel .gvsx-co__methodicon { background: rgba(var(--gvsx-d-glow), 0.16); color: var(--gvsx-neon); }
.gvsx-co__methodtext { min-width: 0; }
.gvsx-co__methodtitle { display: block; font-weight: 700; color: var(--wp--preset--color--contrast); line-height: 1.3; }
.gvsx-co__methodtitle img { display: none; }
.gvsx-co__methodbadge { display: inline-block; margin-left: 8px; padding: 2px 8px; border-radius: 999px; font-style: normal; font-size: 0.66rem; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; color: #052e16; background: var(--gvsx-neon); vertical-align: middle; }
.gvsx-co__methodsub { display: block; margin-top: 0.15rem; font-size: 0.8rem; line-height: 1.4; color: var(--wp--preset--color--muted); }
.gvsx-co__methodradio { width: 22px; height: 22px; border-radius: 50%; border: 2px solid rgba(255, 255, 255, 0.25); position: relative; transition: border-color .2s ease; }
.gvsx-co__method > input:checked + .gvsx-co__methodlabel .gvsx-co__methodradio { border-color: var(--gvsx-neon); }
.gvsx-co__method > input:checked + .gvsx-co__methodlabel .gvsx-co__methodradio::after { content: ""; position: absolute; inset: 4px; border-radius: 50%; background: var(--gvsx-neon); box-shadow: 0 0 10px rgba(var(--gvsx-d-glow), 0.8); }
body.woocommerce-checkout #payment.gvsx-co__payment div.payment_box .woocommerce-SavedPaymentMethods { list-style: none; margin: 0 0 0.6rem; padding: 0; display: flex; flex-direction: column; gap: 0.5rem; }
body.woocommerce-checkout #payment.gvsx-co__payment div.payment_box .woocommerce-SavedPaymentMethods li { display: flex; align-items: center; gap: 10px; padding: 0.6rem 0.8rem; border-radius: 10px; background: rgba(255, 255, 255, 0.04); border: 1px solid var(--gvsx-glass-border); color: var(--wp--preset--color--contrast); }
body.woocommerce-checkout #payment.gvsx-co__payment div.payment_box .woocommerce-SavedPaymentMethods input[type="radio"] { accent-color: var(--gvsx-neon); margin: 0; }
body.woocommerce-checkout #payment.gvsx-co__payment div.payment_box .woocommerce-SavedPaymentMethods label { margin: 0; font-size: 0.88rem; }
body.woocommerce-checkout #payment.gvsx-co__payment div.payment_box label { color: var(--wp--preset--color--muted); font-size: 0.82rem; }
body.woocommerce-checkout #payment.gvsx-co__payment div.payment_box .wc-stripe-payment-method-instruction { margin: 0 0 0.8rem; font-size: 0.8rem; }
.gvsx-co__free { margin: 0 0 1rem; font-size: 0.95rem; color: var(--wp--preset--color--contrast); }
.gvsx-co__free b { color: var(--gvsx-neon); }
/* termos + botão */
.gvsx-co__place { margin: 0; padding: 0; }
.gvsx-co .woocommerce-terms-and-conditions-wrapper { margin: 0 0 0.9rem; }
.gvsx-co .woocommerce-privacy-policy-text p, .gvsx-co .gvsx-co__terms, .gvsx-co .woocommerce-terms-and-conditions-checkbox-text { font-size: 0.8rem; line-height: 1.5; color: var(--wp--preset--color--muted); }
.gvsx-co .woocommerce-privacy-policy-text p, .gvsx-co .gvsx-co__terms { margin: 0 0 0.6rem; }
.gvsx-co .woocommerce-privacy-policy-text a, .gvsx-co .gvsx-co__terms a, .gvsx-co .woocommerce-terms-and-conditions-checkbox-text a { color: var(--wp--preset--color--contrast); text-decoration: underline; text-underline-offset: 3px; }
.gvsx-co .woocommerce-terms-and-conditions-wrapper .form-row { margin: 0; padding: 0; }
.gvsx-co .woocommerce-terms-and-conditions-wrapper .checkbox { display: flex; align-items: flex-start; gap: 10px; font-size: 0.84rem; color: var(--wp--preset--color--muted); cursor: pointer; }
.gvsx-co .woocommerce-terms-and-conditions-wrapper input[type="checkbox"] { width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--gvsx-neon); flex: none; }
.gvsx-co .woocommerce-terms-and-conditions-wrapper .woocommerce-invalid .checkbox { color: #ff9a9a; }
body.woocommerce-checkout .gvsx-co #place_order { display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; min-height: 62px; padding: 0 1.4rem; border: 0; border-radius: 14px; font: inherit; font-size: 1.02rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; color: #052e16 !important; background: linear-gradient(135deg, #00a12e 0%, #00e676 100%) !important; box-shadow: 0 14px 34px -12px rgba(var(--gvsx-d-glow), 0.75); animation: gvsx-cta-pulse 2.6s ease-out infinite; cursor: pointer; transition: transform .2s ease, filter .2s ease; }
body.woocommerce-checkout .gvsx-co #place_order:hover { transform: translateY(-2px); filter: brightness(1.06); }
body.woocommerce-checkout .gvsx-co #place_order::before { content: ""; flex: none; width: 18px; height: 18px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23052e16' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='10' width='16' height='11' rx='2'/%3E%3Cpath d='M8 10V7a4 4 0 0 1 8 0v3'/%3E%3C/svg%3E") center / contain no-repeat; }
.gvsx-co .place-order noscript { display: block; margin-bottom: 0.8rem; font-size: 0.8rem; color: var(--wp--preset--color--muted); }

/* ---- oferta da Instalação Remota (checkbox) — carrinho e checkout ---- */
.gvsx-bump { position: relative; display: grid; grid-template-columns: 26px 76px minmax(0, 1fr); align-items: center; gap: 14px; margin: 1.1rem 0 0; padding: 14px 16px 14px 14px; border-radius: 18px; border: 1px solid rgba(var(--gvsx-d-glow), 0.28); background: linear-gradient(135deg, rgba(var(--gvsx-d-glow), 0.10), rgba(0, 175, 199, 0.06)); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.45), 0 14px 30px -12px rgba(var(--gvsx-d-glow), 0.26); cursor: pointer; transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease; }
.gvsx-bump:hover { transform: translateY(-1px); border-color: rgba(var(--gvsx-d-glow), 0.45); }
.gvsx-bump.is-checked { border-color: var(--gvsx-neon); box-shadow: 0 0 0 3px rgba(var(--gvsx-d-glow), 0.12), 0 14px 30px -12px rgba(var(--gvsx-d-glow), 0.4); }
.gvsx-bump[hidden] { display: none; }
.gvsx-bump__check { position: relative; width: 26px; height: 26px; }
.gvsx-bump__check input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.gvsx-bump__check i { position: absolute; inset: 0; border-radius: 8px; border: 2px solid rgba(255, 255, 255, 0.35); background: rgba(0, 0, 0, 0.25); transition: background .2s ease, border-color .2s ease; }
.gvsx-bump__check i::after { content: ""; position: absolute; left: 8px; top: 3px; width: 6px; height: 12px; border: solid #052e16; border-width: 0 3px 3px 0; transform: rotate(45deg) scale(0); transition: transform .2s cubic-bezier(0.2, 0.7, 0.2, 1); }
.gvsx-bump__check input:checked + i { background: var(--gvsx-neon); border-color: var(--gvsx-neon); box-shadow: 0 0 14px rgba(var(--gvsx-d-glow), 0.6); }
.gvsx-bump__check input:checked + i::after { transform: rotate(45deg) scale(1); }
.gvsx-bump__check input:focus-visible + i { outline: 2px solid var(--gvsx-neon); outline-offset: 3px; }
.gvsx-bump__check input:disabled + i { opacity: 0.6; }
.gvsx-bump__media { display: block; }
.gvsx-bump__img { width: 76px; height: 76px; border-radius: 14px; object-fit: cover; display: block; }
.gvsx-bump__body { min-width: 0; display: block; }
.gvsx-bump__kicker { display: block; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--gvsx-neon); margin-bottom: 0.15rem; }
.gvsx-bump__title { display: block; font-weight: 800; font-size: 0.98rem; color: var(--wp--preset--color--contrast); line-height: 1.3; }
.gvsx-bump__price { color: var(--gvsx-neon); margin-left: 4px; white-space: nowrap; }
.gvsx-bump__text { display: block; margin-top: 0.25rem; color: var(--wp--preset--color--muted); font-size: 0.82rem; line-height: 1.45; }
.gvsx-bump__state { display: block; margin-top: 0.4rem; font-size: 0.8rem; font-weight: 600; }
.gvsx-bump__on { display: none; color: var(--gvsx-neon); }
.gvsx-bump__off { color: var(--wp--preset--color--muted); }
.gvsx-bump.is-checked .gvsx-bump__on { display: inline; }
.gvsx-bump.is-checked .gvsx-bump__off { display: none; }
.gvsx-bump__msg { display: block; font-size: 0.8rem; color: #ff9a9a; }
.gvsx-bump__msg:empty { display: none; }

/* ---- resumo fixo ---- */
.gvsx-co__sidetoggle { display: none; }
.gvsx-co__sidebody { padding: 1.4rem 1.5rem 1.5rem; border-radius: 20px; background: var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); box-shadow: var(--gvsx-d-float); position: relative; z-index: 2; }
.gvsx-co__sidetitle { margin: 0 0 1rem; font-size: 1.05rem; font-weight: 800; color: var(--wp--preset--color--contrast); }
.gvsx-co__sideitems { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.75rem; }
.gvsx-co__sideitems li { display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; gap: 10px; align-items: center; font-size: 0.86rem; color: var(--wp--preset--color--contrast); }
.gvsx-co__sideitems img { width: 48px; height: 48px; border-radius: 10px; object-fit: cover; display: block; }
.gvsx-co__sideitems span { line-height: 1.35; }
.gvsx-co__sideitems b { color: var(--gvsx-neon); white-space: nowrap; }
.gvsx-co__sidetotals { margin: 1rem 0 0; padding-top: 0.9rem; border-top: 1px solid var(--gvsx-glass-border); display: flex; flex-direction: column; gap: 0.45rem; }
.gvsx-co__sidetotals > div { display: flex; justify-content: space-between; gap: 1rem; font-size: 0.86rem; color: var(--wp--preset--color--muted); }
.gvsx-co__sidetotals dt, .gvsx-co__sidetotals dd { margin: 0; }
.gvsx-co__sidetotals dd { color: var(--wp--preset--color--contrast); font-weight: 600; }
.gvsx-co__sidetotals > div.is-total { margin-top: 0.3rem; padding-top: 0.7rem; border-top: 1px solid var(--gvsx-glass-border); }
.gvsx-co__sidetotals > div.is-total dt { color: var(--wp--preset--color--contrast); font-weight: 800; }
.gvsx-co__sidetotals > div.is-total dd { color: var(--gvsx-neon); font-size: 1.25rem; font-weight: 800; }
.gvsx-co__sidetrust { margin: 1.1rem 0 0; justify-content: flex-start; }
.gvsx-co__sidetrust li { font-size: 0.74rem; padding: 6px 11px; }
.gvsx-co__sideback { margin: 1rem 0 0; font-size: 0.82rem; }
.gvsx-co__sideback a { color: var(--wp--preset--color--muted); text-decoration: none; }
.gvsx-co__sideback a:hover { color: var(--gvsx-neon); }

/* ---- Pix / boleto na página ---- */
.gvsx-co__pay[hidden] { display: none; }
.gvsx-co__pixcard { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 1.5rem 2rem; align-items: start; border-color: rgba(var(--gvsx-d-glow), 0.35); animation: gvsx-co-in .4s ease both; }
.gvsx-co__qr { padding: 12px; background: #fff; border-radius: 18px; line-height: 0; justify-self: center; box-shadow: 0 0 0 6px rgba(var(--gvsx-d-glow), 0.12), 0 20px 50px -20px rgba(0, 0, 0, 0.8); }
.gvsx-co__qr img { width: 240px; height: 240px; display: block; }
.gvsx-co__paybody { min-width: 0; }
.gvsx-co__paybody--wide { grid-column: 1 / -1; }
.gvsx-co__paybody h3 { margin: 0 0 0.8rem; font-size: 1.3rem; font-weight: 800; color: var(--wp--preset--color--contrast); }
.gvsx-co__paybody h3 b { color: var(--gvsx-neon); }
.gvsx-co__steps3 { margin: 0 0 1rem; padding-left: 1.2rem; display: grid; gap: 0.35rem; font-size: 0.92rem; line-height: 1.5; color: var(--wp--preset--color--muted); }
.gvsx-co__steps3 b { color: var(--wp--preset--color--contrast); font-weight: 600; }
.gvsx-co__copy { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 0.9rem; }
body.woocommerce-checkout .gvsx-co .gvsx-co__copy input.input-text { flex: 1 1 220px; min-height: 48px; font-family: ui-monospace, "SF Mono", "Roboto Mono", Menlo, Consolas, monospace; font-size: 0.8rem; }
.gvsx-co__copy .gvsx-btn { min-height: 48px; }
.gvsx-co__copy .gvsx-btn.is-done { color: var(--gvsx-neon); border-color: rgba(var(--gvsx-d-glow), 0.5); }
.gvsx-co__deadline { margin: 0 0 0.6rem; font-size: 0.9rem; font-weight: 600; color: #ffce6b; }
.gvsx-co__deadline b { color: var(--wp--preset--color--contrast); }
.gvsx-co__waiting { margin: 0; display: flex; align-items: center; gap: 9px; font-size: 0.86rem; color: var(--wp--preset--color--muted); }
.gvsx-co__waiting a { color: var(--gvsx-neon); }
.gvsx-co__dot { flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--gvsx-neon); animation: gvsx-dot 1.6s ease-out infinite; }
.gvsx-co__actions { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 0.9rem; }
.gvsx-co__paylinks { margin: 1rem 0 0; text-align: center; font-size: 0.84rem; color: var(--wp--preset--color--muted); }
.gvsx-co__paylinks a { color: var(--gvsx-neon); }
.gvsx-co.is-paying .gvsx-co__side .gvsx-co__sideback { display: none; }

/* ---- responsivo ---- */
@media (max-width: 960px) {
  .gvsx-co { grid-template-columns: 1fr; gap: 1rem; }
  .gvsx-co__side { position: static; order: -1; }
  .gvsx-co__sidetoggle { display: flex; align-items: center; gap: 10px; width: 100%; padding: 0.85rem 1.1rem; border-radius: 14px; background: var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); color: var(--wp--preset--color--contrast); font: inherit; font-size: 0.9rem; font-weight: 600; cursor: pointer; text-align: left; }
  .gvsx-co__sidetoggle b { margin-left: auto; color: var(--gvsx-neon); font-weight: 800; }
  .gvsx-co__sidetoggle svg { transition: transform .2s ease; }
  .gvsx-co.is-summary-open .gvsx-co__sidetoggle svg { transform: rotate(180deg); }
  .gvsx-co__sidebody { display: none; margin-top: 0.6rem; }
  .gvsx-co.is-summary-open .gvsx-co__sidebody { display: block; }
  .gvsx-co__sidetitle { display: none; }
  .gvsx-co__pixcard { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .gvsx-cohead__back span, .gvsx-cohead__secure span { display: none; }
  .gvsx-cohead__back, .gvsx-cohead__secure { min-width: 40px; }
  .gvsx-co__card { padding: 1.25rem 1.1rem 1.2rem; border-radius: 18px; }
  .gvsx-co__fields { grid-template-columns: 1fr; }
  .gvsx-co__fields .form-row-first, .gvsx-co__fields .form-row-last { grid-column: 1 / -1; }
  .gvsx-co__ask p { font-size: 0.98rem; }
  .gvsx-co__hint { margin-left: 0; }
  .gvsx-co__progress { gap: 0.25rem 0.9rem; }
  .gvsx-co__progress li { font-size: 0.72rem; }
  .gvsx-co__nav { flex-direction: column-reverse; align-items: stretch; }
  .gvsx-co__nav .gvsx-co__back { text-align: center; }
  .gvsx-co__methodlabel { grid-template-columns: 40px minmax(0, 1fr) 22px; gap: 10px; padding: 0.85rem 0.9rem; }
  .gvsx-co__methodicon { width: 40px; height: 40px; }
  .gvsx-bump { grid-template-columns: 26px minmax(0, 1fr); }
  .gvsx-bump__media { display: none; }
  .gvsx-co__qr img { width: 200px; height: 200px; }
  .gvsx-co__donetext { white-space: normal; }
}

/* =====================================================================
   Página de agradecimento (v0.6.1) — HTML no plugin (GVSX_Thankyou, shortcode [gvsx_order_received]),
   template do tema templates/order-confirmation.html (substitui o "order-confirmation" do WooCommerce).
   ===================================================================== */
.gvsx-cohead__account:hover { color: var(--wp--preset--color--contrast); text-decoration: none; }
.gvsx-thanks { max-width: 860px; margin: 0 auto; display: grid; gap: 1.1rem; }
.gvsx-thanks > * { animation: gvsx-co-in .45s ease both; }
.gvsx-thanks > *:nth-child(2) { animation-delay: .08s; }
.gvsx-thanks > *:nth-child(3) { animation-delay: .16s; }
.gvsx-thanks > *:nth-child(4) { animation-delay: .24s; }
.gvsx-thanks > *:nth-child(5) { animation-delay: .32s; }
.gvsx-thanks__card { padding: 1.5rem 1.6rem; border-radius: 22px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.02)); border: 1px solid var(--gvsx-glass-border); box-shadow: var(--gvsx-d-card); position: relative; }
.gvsx-thanks__h2 { margin: 0 0 1rem; font-size: 1.05rem; font-weight: 800; letter-spacing: -0.01em; color: var(--wp--preset--color--contrast); }
.gvsx-thanks__h2 span { color: var(--wp--preset--color--muted); font-weight: 600; }
.gvsx-thanks__actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.gvsx-thanks__actions--main { margin-top: 1.1rem; }
.gvsx-thanks__actions--main .gvsx-btn { min-height: 52px; padding: 0 1.4rem; font-size: 0.95rem; }
.gvsx-thanks__note { margin: 1rem 0 0; font-size: 0.9rem; line-height: 1.55; color: var(--wp--preset--color--muted); }
.gvsx-thanks__note b, .gvsx-thanks__note a { color: var(--wp--preset--color--contrast); }
.gvsx-thanks__note a { text-decoration: underline; text-underline-offset: 3px; }

/* topo */
.gvsx-thanks__hero { text-align: center; padding: 1.2rem 0 0.4rem; }
.gvsx-thanks__check { display: inline-grid; place-items: center; width: 84px; height: 84px; margin: 0 auto 1rem; border-radius: 50%; color: var(--gvsx-neon); background: rgba(var(--gvsx-d-glow), 0.1); box-shadow: 0 0 0 10px rgba(var(--gvsx-d-glow), 0.06), 0 18px 50px -14px rgba(var(--gvsx-d-glow), 0.7); animation: gvsx-thanks-pop .6s cubic-bezier(.2,.9,.3,1.3) both; }
.gvsx-thanks__ring { stroke-dasharray: 183; stroke-dashoffset: 183; animation: gvsx-thanks-draw .7s ease-out .15s forwards; }
.gvsx-thanks__tick { stroke-dasharray: 40; stroke-dashoffset: 40; animation: gvsx-thanks-draw .45s ease-out .65s forwards; }
@keyframes gvsx-thanks-draw { to { stroke-dashoffset: 0; } }
@keyframes gvsx-thanks-pop { from { opacity: 0; transform: scale(.6); } to { opacity: 1; transform: none; } }
.gvsx-thanks__badge { display: inline-block; padding: 5px 12px; border-radius: 999px; font-size: 0.7rem; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; color: #052e16; background: var(--gvsx-neon); }
.gvsx-thanks__badge.is-info { color: #04262b; background: #6fe3f2; }
.gvsx-thanks__badge.is-warn { color: #2b1d00; background: #ffce6b; }
.gvsx-thanks__badge.is-bad { color: #fff; background: #ff4d4d; }
.gvsx-thanks__badge.is-muted { color: var(--wp--preset--color--contrast); background: rgba(255, 255, 255, 0.08); }
.gvsx-thanks__title { margin: 0.8rem 0 0.5rem; font-size: clamp(1.7rem, 4.2vw, 2.5rem); font-weight: 800; letter-spacing: -0.02em; line-height: 1.12; color: var(--wp--preset--color--contrast); }
.gvsx-thanks__sub { margin: 0 auto; max-width: 620px; font-size: 1rem; line-height: 1.55; color: var(--wp--preset--color--muted); }
.gvsx-thanks__sub b, .gvsx-thanks__sub a { color: var(--wp--preset--color--contrast); }
.gvsx-thanks__sub a { text-decoration: underline; text-underline-offset: 3px; }
.gvsx-thanks__hero .gvsx-thanks__actions { justify-content: center; margin-top: 1.2rem; }

/* card do item: serial + download */
.gvsx-thanks__items { display: grid; gap: 1.1rem; }
.gvsx-thanks__item { overflow: hidden; }
.gvsx-thanks__item::before { content: ""; position: absolute; inset: -40% auto auto -20%; width: 60%; height: 120%; background: radial-gradient(closest-side, rgba(var(--gvsx-d-glow), 0.12), transparent 70%); pointer-events: none; }
.gvsx-thanks__item--preorder::before { background: radial-gradient(closest-side, rgba(0, 175, 199, 0.14), transparent 70%); }
.gvsx-thanks__itemhead { display: flex; gap: 1.1rem; align-items: center; position: relative; }
.gvsx-thanks__thumb { flex: none; width: 92px; height: 92px; border-radius: 16px; overflow: hidden; background: #000; border: 1px solid var(--gvsx-glass-border); box-shadow: 0 10px 30px -14px rgba(0, 0, 0, 0.9); }
.gvsx-thanks__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gvsx-thanks__itemtext { min-width: 0; }
.gvsx-thanks__itemname { margin: 0 0 0.35rem; font-size: 1.15rem; font-weight: 800; letter-spacing: -0.01em; line-height: 1.25; color: var(--wp--preset--color--contrast); }
.gvsx-thanks__itemmeta { margin: 0; display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 0.84rem; color: var(--wp--preset--color--muted); }
.gvsx-thanks__itemmeta b { color: var(--wp--preset--color--contrast); font-weight: 600; }
.gvsx-thanks__serial { position: relative; margin-top: 1.2rem; padding: 1rem 1.1rem 0.95rem; border-radius: 16px; background: rgba(0, 0, 0, 0.35); border: 1px solid rgba(var(--gvsx-d-glow), 0.35); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.02), 0 0 0 4px rgba(var(--gvsx-d-glow), 0.05); }
.gvsx-thanks__label { display: block; margin: 0 0 0.55rem; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--gvsx-neon); }
.gvsx-thanks__serialrow { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.gvsx-thanks__key { flex: 1 1 260px; min-width: 0; padding: 0.7rem 0.9rem; border-radius: 10px; background: rgba(255, 255, 255, 0.04); border: 1px dashed rgba(255, 255, 255, 0.16); font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: clamp(1rem, 2.6vw, 1.25rem); font-weight: 700; letter-spacing: 0.08em; color: var(--wp--preset--color--contrast); overflow-wrap: anywhere; user-select: all; }
.gvsx-thanks__copy { flex: none; min-height: 46px; }
.gvsx-thanks__copy.is-done { color: var(--gvsx-neon); border-color: rgba(var(--gvsx-d-glow), 0.5); }
.gvsx-thanks__hint { display: block; margin-top: 0.6rem; font-size: 0.8rem; color: var(--wp--preset--color--muted); }
.gvsx-thanks__download { animation: gvsx-cta-pulse 2.6s ease-out infinite; }
.gvsx-thanks__download svg { flex: none; }

/* passos, resumo, suporte */
.gvsx-thanks__steps { margin: 0 0 1.1rem; padding: 0; list-style: none; counter-reset: gvsx-step; display: grid; gap: 0.7rem; }
.gvsx-thanks__steps li { counter-increment: gvsx-step; display: flex; gap: 12px; align-items: flex-start; font-size: 0.92rem; line-height: 1.5; color: var(--wp--preset--color--muted); }
.gvsx-thanks__steps li > span { padding-top: 5px; }
.gvsx-thanks__steps li::before { content: counter(gvsx-step); flex: none; width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; font-size: 0.85rem; font-weight: 800; color: #052e16; background: var(--gvsx-neon); box-shadow: 0 6px 16px -6px rgba(var(--gvsx-d-glow), 0.8); }
.gvsx-thanks__steps b { color: var(--wp--preset--color--contrast); }
.gvsx-thanks__summaryhead { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 12px; margin-bottom: 0.4rem; }
.gvsx-thanks__summaryhead .gvsx-thanks__h2 { margin: 0; }
.gvsx-thanks__lines { list-style: none; margin: 0.6rem 0 0; padding: 0; }
.gvsx-thanks__lines li { display: flex; justify-content: space-between; gap: 1rem; padding: 0.7rem 0; border-bottom: 1px solid var(--gvsx-glass-border); font-size: 0.92rem; color: var(--wp--preset--color--contrast); }
.gvsx-thanks__lines small { color: var(--wp--preset--color--muted); }
.gvsx-thanks__lines b { white-space: nowrap; font-weight: 700; }
.gvsx-thanks__totals { margin: 0.6rem 0 1.1rem; padding: 0; display: grid; gap: 0.45rem; }
.gvsx-thanks__totals div { display: flex; justify-content: space-between; gap: 1rem; font-size: 0.9rem; color: var(--wp--preset--color--muted); }
.gvsx-thanks__totals dt, .gvsx-thanks__totals dd { margin: 0; }
.gvsx-thanks__totals .is-total { margin-top: 0.4rem; padding-top: 0.7rem; border-top: 1px solid var(--gvsx-glass-border); font-size: 1.05rem; font-weight: 800; color: var(--wp--preset--color--contrast); }
.gvsx-thanks__totals .is-total dd, .gvsx-thanks__totals .is-total .woocommerce-Price-amount { color: var(--gvsx-neon); }
.gvsx-thanks__support { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.1rem 1.4rem; border-radius: 18px; border: 1px dashed var(--gvsx-glass-border); }
.gvsx-thanks__support > div:first-child { display: grid; gap: 2px; font-size: 0.9rem; color: var(--wp--preset--color--muted); }
.gvsx-thanks__support b { color: var(--wp--preset--color--contrast); }
.gvsx-thanks .gvsx-order__pay { border-radius: 22px; }
.gvsx-thanks .gvsx-order__cancel-open { margin-top: 0.2rem; }
@media (max-width: 600px) {
  .gvsx-thanks__card { padding: 1.2rem 1.1rem; border-radius: 18px; }
  .gvsx-thanks__itemhead { gap: 0.9rem; }
  .gvsx-thanks__thumb { width: 72px; height: 72px; border-radius: 14px; }
  .gvsx-thanks__itemname { font-size: 1.02rem; }
  .gvsx-thanks__actions--main .gvsx-btn { width: 100%; justify-content: center; }
  .gvsx-thanks__copy { width: 100%; justify-content: center; }
  .gvsx-thanks__support { flex-direction: column; align-items: stretch; text-align: center; }
  .gvsx-thanks__support .gvsx-thanks__actions { justify-content: center; }
  .gvsx-thanks .gvsx-order__pay { grid-template-columns: 1fr; }
}

/* ------------------------------------------------------------------ */
/* Páginas legais — template "page-legal" (v0.6.4)                    */
/* Texto corrido a 780px; tabelas/listas herdadas da Shopify.         */
/* ------------------------------------------------------------------ */
.gvsx-legal .gvsx-legal__title { margin: 0 0 0.5rem; font-size: clamp(1.75rem, 3.4vw, 2.5rem); font-weight: 800; letter-spacing: -0.02em; line-height: 1.15; }
.gvsx-legal .gvsx-legal__content { color: #D9D9D9; font-size: 1rem; line-height: 1.7; }
.gvsx-legal .gvsx-legal__content > * { margin-top: 0; margin-bottom: 1.1rem; }
.gvsx-legal .gvsx-legal__content > p:first-child { margin: 0 0 1.8rem; padding-bottom: 1.1rem; border-bottom: 1px solid var(--gvsx-glass-border); color: var(--wp--preset--color--muted); font-size: 0.88rem; }
.gvsx-legal .gvsx-legal__content > p:first-child em { font-style: normal; }
.gvsx-legal .gvsx-legal__content h2 { margin: 2.4rem 0 0.9rem; font-size: 1.35rem; font-weight: 800; letter-spacing: -0.015em; color: var(--wp--preset--color--contrast); scroll-margin-top: 110px; }
.gvsx-legal .gvsx-legal__content h3 { margin: 1.7rem 0 0.6rem; font-size: 1.08rem; font-weight: 700; color: var(--wp--preset--color--contrast); }
.gvsx-legal .gvsx-legal__content strong { color: var(--wp--preset--color--contrast); font-weight: 700; }
.gvsx-legal .gvsx-legal__content a { color: var(--gvsx-neon); text-decoration: underline; text-decoration-color: rgba(0, 230, 118, 0.35); text-underline-offset: 3px; }
.gvsx-legal .gvsx-legal__content a:hover { text-decoration-color: currentColor; }
.gvsx-legal .gvsx-legal__content ul, .gvsx-legal .gvsx-legal__content ol { padding-left: 1.45rem; }
.gvsx-legal .gvsx-legal__content li { margin: 0 0 0.5rem; padding-left: 0.15rem; }
.gvsx-legal .gvsx-legal__content li::marker { color: var(--gvsx-neon); font-weight: 700; }
.gvsx-legal .wp-block-table { margin: 0 0 1.4rem; overflow-x: auto; border: 1px solid var(--gvsx-glass-border); border-radius: 14px; background: var(--gvsx-glass); }
.gvsx-legal .wp-block-table table { width: 100%; margin: 0; border-collapse: collapse; font-size: 0.93rem; line-height: 1.55; }
.gvsx-legal .wp-block-table th, .gvsx-legal .wp-block-table td { padding: 0.7rem 0.95rem; border: 0; border-bottom: 1px solid var(--gvsx-glass-border); text-align: left; vertical-align: top; }
.gvsx-legal .wp-block-table tbody tr:last-child td { border-bottom: 0; }
.gvsx-legal .wp-block-table thead th { background: rgba(255, 255, 255, 0.04); color: var(--wp--preset--color--contrast); font-size: 0.78rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; }
.gvsx-legal .wp-block-table td strong { color: var(--wp--preset--color--contrast); }
@media (max-width: 600px) {
  .gvsx-legal .gvsx-legal__content { font-size: 0.96rem; }
  .gvsx-legal .gvsx-legal__content h2 { margin-top: 2rem; font-size: 1.2rem; }
  .gvsx-legal .wp-block-table table { font-size: 0.86rem; }
  .gvsx-legal .wp-block-table th, .gvsx-legal .wp-block-table td { padding: 0.55rem 0.7rem; }
}

/* ============================================================
   ÁREA DO AFILIADO (v0.7.0) — painel, cadastro e acesso.
   Reaproveita o cabeçalho da conta (.gvsx-account__head e filhos), os chips, os botões, o cartão de
   serial (.gvsx-serial, aqui usado para o link de indicação) e o estado vazio. O que é novo aqui são as
   abas (as da conta estão presas a body.woocommerce-account), as tabelas e o formulário de duas colunas.
   ============================================================ */
.gvsx-af { max-width: 1080px; margin: 0 auto; display: flex; flex-direction: column; gap: 1.5rem; }
.gvsx-af--auth { max-width: 760px; }
.gvsx-af > .gvsx-auth__msg { margin: 0; }

/* ---- Abas ---- */
.gvsx-af__tabs ul { list-style: none; margin: 0; padding: 6px; display: flex; flex-wrap: wrap; gap: 6px; background: var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); border-radius: 16px; }
.gvsx-af__tabs li { margin: 0; padding: 0; }
.gvsx-af__tabs a { display: inline-flex; align-items: center; gap: 9px; white-space: nowrap; padding: 11px 18px; border-radius: 11px; color: var(--wp--preset--color--muted); font-weight: 600; font-size: 0.9rem; line-height: 1.2; text-decoration: none; transition: color .15s ease, background .15s ease; }
.gvsx-af__tabs a::before { content: ""; width: 18px; height: 18px; flex: none; background-color: currentColor; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: center; mask-position: center; -webkit-mask-size: contain; mask-size: contain; }
.gvsx-af__tabs a:hover { color: var(--wp--preset--color--contrast); background: rgba(255, 255, 255, 0.06); text-decoration: none; }
.gvsx-af__tabs li.is-active a { color: #052e16; background: linear-gradient(135deg, var(--gvsx-green), var(--gvsx-neon)); box-shadow: 0 10px 22px -10px rgba(var(--gvsx-d-glow), 0.85); text-decoration: none; }
.gvsx-af__tab--resumo a::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='7' rx='1.5'/%3E%3Crect x='14' y='3' width='7' height='7' rx='1.5'/%3E%3Crect x='3' y='14' width='7' height='7' rx='1.5'/%3E%3Crect x='14' y='14' width='7' height='7' rx='1.5'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='7' rx='1.5'/%3E%3Crect x='14' y='3' width='7' height='7' rx='1.5'/%3E%3Crect x='3' y='14' width='7' height='7' rx='1.5'/%3E%3Crect x='14' y='14' width='7' height='7' rx='1.5'/%3E%3C/svg%3E"); }
.gvsx-af__tab--comissoes a::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2v20'/%3E%3Cpath d='M17 6.5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2v20'/%3E%3Cpath d='M17 6.5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6'/%3E%3C/svg%3E"); }
.gvsx-af__tab--visitas a::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1.5 12S5 5.5 12 5.5 22.5 12 22.5 12 19 18.5 12 18.5 1.5 12 1.5 12z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1.5 12S5 5.5 12 5.5 22.5 12 22.5 12 19 18.5 12 18.5 1.5 12 1.5 12z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E"); }
.gvsx-af__tab--pagamentos a::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='5' width='20' height='14' rx='2.5'/%3E%3Cpath d='M2 10h20'/%3E%3Cpath d='M6 15h4'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='5' width='20' height='14' rx='2.5'/%3E%3Cpath d='M2 10h20'/%3E%3Cpath d='M6 15h4'/%3E%3C/svg%3E"); }
.gvsx-af__tab--dados a::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c0-4 4-6 8-6s8 2 8 6'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c0-4 4-6 8-6s8 2 8 6'/%3E%3C/svg%3E"); }

/* ---- Cabeçalho: chip ao lado do nome ---- */
.gvsx-af__head .gvsx-account__hello { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gvsx-af .gvsx-chip { display: inline-block; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.02em; border-radius: 999px; padding: 5px 12px; margin: 0; border: 1px solid var(--gvsx-glass-border); background: var(--wp--preset--color--surface-2); color: var(--wp--preset--color--contrast); }

/* ---- Blocos ---- */
.gvsx-af__conteudo { display: flex; flex-direction: column; gap: 1.5rem; }
.gvsx-af__bloco { padding: 1.6rem 1.8rem; border-radius: 20px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.02)); border: 1px solid var(--gvsx-glass-border); box-shadow: var(--gvsx-d-card); position: relative; z-index: 2; }
.gvsx-af__bloco-head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.gvsx-af__h2 { margin: 0 0 0.45rem; font-size: 1.25rem; font-weight: 800; color: var(--wp--preset--color--contrast); }
.gvsx-af__sub { margin: 0 0 1.2rem; color: var(--wp--preset--color--muted); font-size: 0.9rem; line-height: 1.6; max-width: 66ch; }
.gvsx-af__sub b { color: var(--wp--preset--color--contrast); font-weight: 700; }
.gvsx-af__vertudo { font-size: 0.85rem; font-weight: 600; color: var(--gvsx-neon); white-space: nowrap; }
.gvsx-af__ajuda { margin: 0.5rem 0 0; font-size: 0.82rem; color: var(--wp--preset--color--muted); line-height: 1.55; }
.gvsx-af__ajuda a { color: var(--gvsx-neon); }

/* ---- Link de indicação ---- */
.gvsx-af__linkbox { margin: 1rem 0 0; }
.gvsx-af__linkbox .gvsx-serial__key { font-size: 0.92rem; letter-spacing: 0.01em; }

/* ---- Tabelas ---- */
.gvsx-af__tabela-wrap { overflow-x: auto; border: 1px solid var(--gvsx-glass-border); border-radius: 14px; background: rgba(0, 0, 0, 0.18); }
.gvsx-af__tabela { width: 100%; margin: 0; border-collapse: collapse; font-size: 0.92rem; }
.gvsx-af__tabela th, .gvsx-af__tabela td { padding: 0.75rem 1rem; border: 0; border-bottom: 1px solid var(--gvsx-glass-border); text-align: left; vertical-align: middle; white-space: nowrap; }
.gvsx-af__tabela thead th { background: rgba(255, 255, 255, 0.04); color: var(--wp--preset--color--muted); font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; }
.gvsx-af__tabela tbody tr:last-child td { border-bottom: 0; }
.gvsx-af__tabela tbody tr:hover td { background: rgba(255, 255, 255, 0.025); }
.gvsx-af__tabela .num { text-align: right; }
.gvsx-af__tabela td b { color: var(--wp--preset--color--contrast); font-weight: 800; }
.gvsx-af__url { color: var(--wp--preset--color--muted); font-family: ui-monospace, "SF Mono", "Roboto Mono", Menlo, Consolas, monospace; font-size: 0.85rem; }

/* ---- Paginação ---- */
.gvsx-af__paginacao { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 1.1rem; }
.gvsx-af__paginacao a { min-width: 38px; height: 38px; display: inline-grid; place-items: center; padding: 0 10px; border-radius: 10px; border: 1px solid var(--gvsx-glass-border); background: rgba(255, 255, 255, 0.04); color: var(--wp--preset--color--muted); font-size: 0.88rem; font-weight: 700; text-decoration: none; transition: color .15s ease, border-color .15s ease, background .15s ease; }
.gvsx-af__paginacao a:hover { color: var(--gvsx-neon); border-color: rgba(0, 230, 118, 0.4); text-decoration: none; }
.gvsx-af__paginacao a.is-active { color: #052e16; background: linear-gradient(135deg, var(--gvsx-green), var(--gvsx-neon)); border-color: transparent; }

/* ---- Formulários (cadastro e "meus dados") ---- */
.gvsx-af__form .gvsx-auth__label { margin-top: 1.05rem; }
.gvsx-af__form .gvsx-auth__label:first-of-type { margin-top: 0; }
.gvsx-af__form .gvsx-auth__label em { color: var(--gvsx-neon); font-style: normal; }
.gvsx-af__row { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1rem; }
.gvsx-af__row .gvsx-auth__label { margin-top: 1.05rem; }
.gvsx-af__legend { margin: 1.9rem 0 0.2rem; padding-top: 1.4rem; border-top: 1px solid var(--gvsx-glass-border); font-size: 0.82rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--wp--preset--color--contrast); }
.gvsx-af__legend span { margin-left: 8px; font-size: 0.68rem; font-weight: 600; letter-spacing: 0.06em; color: var(--wp--preset--color--muted); text-transform: none; }
.gvsx-af__textarea { min-height: 96px; line-height: 1.5; resize: vertical; }
select.gvsx-auth__input { appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' opacity='0.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 16px center; background-size: 20px; padding-right: 46px; }
select.gvsx-auth__input option { background: #101010; color: #fff; }
.gvsx-af__prefixo { position: relative; }
.gvsx-af__prefixo::before { content: attr(data-prefixo); position: absolute; left: 18px; top: 50%; transform: translateY(-50%); color: rgba(255, 255, 255, 0.4); font-size: 1.06rem; pointer-events: none; }
.gvsx-af__prefixo .gvsx-auth__input { padding-left: 36px; }
.gvsx-af__check { display: flex; align-items: flex-start; gap: 11px; margin: 1.5rem 0 0; font-size: 0.9rem; line-height: 1.55; color: var(--wp--preset--color--muted); cursor: pointer; }
.gvsx-af__check input { flex: none; width: 20px; height: 20px; margin: 1px 0 0; accent-color: var(--gvsx-neon); cursor: pointer; }
.gvsx-af__check a { color: var(--gvsx-neon); text-decoration: underline; text-underline-offset: 3px; }
.gvsx-af__check em { color: var(--gvsx-neon); font-style: normal; }

/* ---- Oferta (topo do cadastro) ---- */
.gvsx-af__oferta { position: relative; z-index: 1; text-align: center; margin-bottom: 1.5rem; }
.gvsx-af__oferta .gvsx-auth__title { font-size: 1.85rem; }
.gvsx-af__beneficios { list-style: none; margin: 1.3rem 0 1.1rem; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.8rem; }
.gvsx-af__beneficios li { display: flex; flex-direction: column; gap: 2px; padding: 1rem 0.8rem; border-radius: 16px; background: var(--gvsx-glass); border: 1px solid var(--gvsx-glass-border); box-shadow: var(--gvsx-d-card); }
.gvsx-af__beneficios b { font-size: 1.3rem; font-weight: 800; color: var(--gvsx-neon); line-height: 1.15; }
.gvsx-af__beneficios span { font-size: 0.78rem; color: var(--wp--preset--color--muted); line-height: 1.4; }

@media (max-width: 782px) {
  .gvsx-af__bloco { padding: 1.3rem 1.15rem; }
  .gvsx-af__row { grid-template-columns: 1fr; }
  .gvsx-af__beneficios { grid-template-columns: 1fr; gap: 0.6rem; }
  .gvsx-af__beneficios li { flex-direction: row; align-items: baseline; gap: 10px; padding: 0.8rem 1rem; }
  .gvsx-af__beneficios b { font-size: 1.1rem; }
  .gvsx-af__oferta .gvsx-auth__title { font-size: 1.5rem; }
  /* Tabelas viram cartões empilhados: cada célula ganha o próprio rótulo. */
  .gvsx-af__tabela-wrap { border: 0; background: transparent; overflow: visible; }
  .gvsx-af__tabela, .gvsx-af__tabela tbody, .gvsx-af__tabela tr, .gvsx-af__tabela td { display: block; width: 100%; }
  .gvsx-af__tabela thead { display: none; }
  .gvsx-af__tabela tr { margin-bottom: 0.8rem; border: 1px solid var(--gvsx-glass-border); border-radius: 14px; background: rgba(0, 0, 0, 0.18); overflow: hidden; }
  .gvsx-af__tabela td { display: flex; align-items: center; justify-content: space-between; gap: 1rem; white-space: normal; text-align: right; }
  .gvsx-af__tabela td::before { content: attr(data-rot); flex: none; color: var(--wp--preset--color--muted); font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; text-align: left; }
  .gvsx-af__tabela .num { text-align: right; }
  .gvsx-af__tabs a { padding: 10px 13px; font-size: 0.85rem; }
}


@media (max-width: 781px) {
  .gvsx-footer__cols { grid-template-columns: 1fr; gap: 1.6rem; }
  body.home .gvsx-footer__links { column-count: 2; }
}
