Pular para o conteúdo
Tema das demonstrações:

Gambito v1.1

O design system da Chesslab, em componentes.

Tudo o que a landing Shopify usa, extraído em tokens, classes e instruções. A 1.1 traz o que as páginas repetiram em cima disso, e o que a logo passou a fazer: o símbolo monta e pisca, o wordmark acende com o ponteiro. O nome vem da abertura de xadrez: ceder uma peça para ganhar posição.

Como o sistema pensa

Tema por seção

  • Cada seção declara data-tema: claro, névoa, pistache, escuro ou verde.
  • Componentes leem variáveis semânticas e funcionam em qualquer tema.
  • Ritmo aprovado: abertura escura, corpo claro, fecho verde.

Um recurso gráfico por seção

  • Tabuleiro, luz, trama, fragmento ou grão. Não se somam.
  • No máximo dois planos por composição.

Corte ou raio

  • O corte diagonal usa a inclinação do símbolo (2,201).
  • Nunca corte e raio no mesmo elemento. Sombra vai no wrapper.
  • Nunca cortar a assinatura oficial do logo.

Contraste e botões

  • Texto Grafite sobre Laranja e Pistache, sempre.
  • O contorno do botão não se move no hover.
  • Um botão de conversão por tela, no máximo dois.

Fundações

Cores e temas

Seis cores do kit V5 e oito de apoio. Componentes nunca usam HEX: usam --gb-* (semântico, muda com o tema) ou --cl-* (fixo por decisão de marca, como o laranja do eyebrow).

Paleta

tokens/gambito.tokens.css
Neve--cl-snow · #F7F8F2Fundo principal
Névoa Verde--cl-mist · #E5ECDDSuperfícies de apoio
Pistache Vivo--cl-pistachio · #B9D88AAssinatura e ênfase. Realce em fundos escuros
Verde Estratégia--cl-forest · #284B3CÂncora da marca. Realce em fundos claros
Grafite Verde--cl-ink · #1D2621Texto e contraste
Laranja Ação--cl-orange · #F58A52CTA, marcador do eyebrow, borda e quadrado do erro
Texto suave--cl-text-muted · #56635BApoio em fundos claros
Texto suave escuro--cl-text-muted-dark · #CCD8C7Apoio em fundos escuros
Linha--cl-border · #D5DDCFFios e contornos em claro
Linha névoa--cl-border-mist · #D3DCC9Fios e contornos na névoa
Trama--cl-trama · #496A50Trama de apoio e bloco do marcador cortado
Marca clara--cl-marca-clara · #D6E3C9Texto do marcador sobre a Trama
Linha escura--cl-linha-escuraPistache a 22%: fios em fundos escuros
Shopify--cl-shopify · #96BF48Só no ícone da notificação de pedido

Temas

[data-tema]

Cinco temas trocam só as variáveis semânticas. O texto em realce é Verde em fundos claros e Pistache em escuros. O anel de foco é verde nos temas claro e névoa (laranja fica abaixo de 3:1), pistache no escuro e no verde, grafite no pistache. No pistache, o marcador do eyebrow vira grafite (laranja vibra sobre pistache). Laranja cheio não encosta em verde cheio: no verde, a conversão e o acento viram pistache; no pistache, grafite.

claro realce

Neve. Fundo padrão do corpo da página.


nevoa realce

Névoa. Seções de respiro, manifesto, recursos.


pistache realce

Faixa de postura. Uma por página.


escuro realce

Grafite. Abertura, portfólio, rodapé.


verde realce

Verde Estratégia. Fecho com formulário.


<section class="gb-secao" data-tema="escuro">
  <div class="gb-wrap">
    <p class="gb-mono gb-eyebrow">Portfólio</p>
    <h2 class="gb-d-m">Título com <em>realce</em></h2>
  </div>
</section>
Variáveis do tema
VariávelPapel
--gb-fundofundo da seção
--gb-superficiesuperfície de apoio (campo, palco, chip)
--gb-texto / --gb-texto-suavetexto principal e de apoio
--gb-linhafios, contornos, bordas
--gb-realceênfase em título, marcos, progresso, "lab" do logo
--gb-acentoação pontual (laranja; pistache no verde; grafite no pistache)
--gb-anelanel de foco. Verde no claro e na névoa; pistache no escuro, no verde e no menu aberto
--gb-marcadorponto de 6 px do eyebrow, do princípio e da aba ativa

Fundações

Tipografia

Família pretendida: Aloevera Display (arquivos não distribuídos; ver comentário em 00-base.css). Inter é o fallback. Display em peso 500 com tracking -0,012 em (0 no mobile); corpo em 400 com entrelinha 1,7. Realce em título é cor, não itálico.

Escala

.gb-d-xl · .gb-d-l · .gb-d-m · .gb-h3 · .gb-sub · .gb-lead · .gb-small · .gb-mono
.gb-d-xl · clamp(36, 4.3vw, 62)

Seu negócio merece alto nível

.gb-d-l · clamp(32, 3.9vw, 56)

Não criamos lojas. Criamos presença.

.gb-d-m · clamp(26, 2.6vw, 40)

Recursos que tornam a compra mais simples.

.gb-h3 · clamp(22, 2vw, 32) · 600

Identidade forte

.gb-sub · clamp(19, 1.5vw, 24)

Sua loja pode ser a próxima.

.gb-lead · clamp(17, 1.25vw, 19)

Na Chesslab, criamos lojas virtuais com design personalizado e soluções criativas.

corpo · 16 / 1.7

Texto corrido de parágrafo. Entrelinha generosa, espaçamento normal, medida de 46 a 60 caracteres.

.gb-small · 14

Legenda, nota, texto do rodapé.

.gb-mono · 12 · 0.08em · caixa alta

Rótulo e numeral

Fazer

  • .gb-d-xl só no H1 da abertura.
  • Uma frase por linha no desktop: trechos em span com display:block, não <br> oculto.
  • Medida de leitura com .gb-medida-curta (30ch), .gb-medida (46ch) ou .gb-medida-longa (60ch).

Evitar

  • Itálico. O realce é cor.
  • Tracking negativo em corpo de texto.
  • Mais de duas linhas em títulos .gb-d-l no desktop.

Eyebrow e cabeçalho de seção

.gb-eyebrow · .gb-secao-topo

Ponto quadrado de 6 px e o nome da seção em mono. Sem numeração. O fio de cima (.gb-secao-topo) some quando há tabuleiro atrás, porque competiria com a malha.

  • Tokens --gb-marcador (ponto), --gb-linha (fio), --gb-texto-suave.

Posicionamento

Não criamos lojas.
Criamos presença digital de verdade.

Citação e princípio

.gb-citacao · .gb-principio

A citação é o apoio do manifesto: 22 px, cor suave, medida de 46 caracteres. O princípio é a frase de destaque com ponto laranja e legenda de apoio, usada ao lado de uma captura.

  • Acessibilidade A citação é um <blockquote>.
  • Tokens --gb-marcador (ponto do princípio), --gb-texto-suave.
A gente não acredita em tema pronto. Nem em “colocar no ar” só por colocar. Acreditamos em e-commerces com alma.

Categorias que se explicam sozinhas.

Menu e vitrine organizados como o cliente pensa, não como o estoque está.

Cartaz e marcador

.gb-cartaz · .gb-marcador

O cartaz passa dos 62 px do display: chega a 104, também limitado pela altura da tela, em peso 600. Até 700 px, no máximo 64. O marcador é a palavra com um bloco cuja borda direita usa o corte do símbolo. Bloco Trama, texto --cl-marca-clara. No pistache o bloco vira Neve e o texto, Grafite. Com data-corte, o bloco nasce vazio e preenche em 320 ms. Para uma frase por linha, cada trecho do cartaz vai num .gb-cartaz__linha, que vira bloco.

  • Acessibilidade O bloco leva aria-hidden="true": a palavra continua no texto.
  • Tokens --gb-t-cartaz, --gb-cartaz-lh, --gb-cartaz-tracking. O marcador lê --gb-marcador-cor e --gb-marcador-texto.
  • JS iniciarMarcador(): com data-corte, o bloco preenche ao entrar na tela.

O corte entra na palavra

Fundações

Layout e medidas

Contêiner de 1328 px, 12 colunas, unidade de 8 px. Gutter, gap e respiro de seção encolhem por breakpoint em tokens/gambito.tokens.css. Pontos de quebra: 1200, 1023, 950, 700 e 375 px.

Seção, wrap e grade

.gb-secao · .gb-wrap · .gb-grade · [data-col]
  • Tokens --gb-container, --gb-gutter, --gb-col-gap, --gb-secao-y.
1 / span 7
8 / span 5
1 / span 5
7 / span 6
cheia
Medidas por ponto de quebra
TokenBase≤1200≤950≤700≤375
--gb-gutter5638262017
--gb-col-gap3232321616
--gb-secao-y12896806464
--gb-altura-cabecalho88 (64 rolado)88886464
--cl-window-cut2828282222
--cl-modulo (tabuleiro)8888885656

Espaçamento, raios e elevação

  • Tokens --gb-u (8 px), --cl-radius-control, --cl-radius-card, --cl-radius-pill, --cl-window-cut, --gb-sombra-card.
8
16
24
32
48
64
88 módulo
raio 7 · controle
raio 12 · card
pill · 999
corte 28
sombra card

Fundações

Logo e símbolos

O sprite (assets/sprite.svg) vai inline no topo do <body>. Tudo em currentColor: o logo segue a cor do texto e o “lab” recebe --gb-realce. Ícones são traço de 1,6 em caixa de 20. Nunca usar ↗ ou ↑ como caractere: sempre o símbolo do sprite.

#gb-logo
#gb-simbolo
#gb-fragmento
#gb-seta-ne
#gb-seta-cima
#gb-seta-direita
#gb-fechar
#gb-pausar
#gb-tocar
#gb-check
#gb-sacola
<!-- logo: currentColor no corpo, "lab" em --gb-realce -->
<svg viewBox="0 0 430.221 79.49" role="img" aria-label="Chesslab"><use href="#gb-logo"/></svg>

<!-- ícone -->
<svg viewBox="0 0 20 20" aria-hidden="true"><use href="#gb-seta-ne"/></svg>

Fazer

  • Logo horizontal com 160 px no cabeçalho, 133 no rodapé, 136 no mobile.
  • Símbolo sozinho como marca-d'água, ícone de sucesso ou peça animada.
  • Arquivos do kit em assets/logos e assets/simbolos para peças fora do HTML.

Evitar

  • Aplicar o corte diagonal na assinatura do logo.
  • Logo Neve sobre Pistache ou Laranja.
  • Referenciar o sprite externo por URL quando precisar estilizar partes (o CSS não atravessa).

Símbolo que monta e pisca

.gb-simbolo-vivo · .gb-pisca-no-hover

O corpo aparece, a seta entra pela diagonal do corte e o olho fecha no fim, em 240 ms. A montagem toca cada vez que o símbolo entra na tela e só recomeça quando ele sai por inteiro. O olho pisca de novo quando o ponteiro ou o foco chega a um link ou botão dentro de .gb-pisca-no-hover. O JS copia as três partes do sprite: o <use> não deixa a animação alcançar o olho.

  • Acessibilidade Símbolo com significado: role="img" e aria-label. Com movimento reduzido, fica inteiro.
  • JS iniciarSimbolo(). No próprio .gb-simbolo-vivo, gb:remontar esconde e monta de novo, e gb:piscar pisca o olho (se ainda não montou, monta).

Logo que acende

.gb-logo-viva

No wordmark grande, uma luz radial segue o ponteiro fino. Sem esse ponteiro, ou com movimento reduzido, a logo fica inteira. O “lab” continua no realce do tema.

  • Acessibilidade O svg leva role="img" e aria-label="Chesslab".
  • Tokens --gb-realce no “lab”.
  • JS iniciarLogoViva(): a luz segue o ponteiro fino.

Componentes

Botões

Três famílias. Em todas, o contorno fica parado: preenchimento e seta respondem por dentro. Passe o mouse ou use Tab para ver os estados. No toque, o JS mostra o estado por 900 ms.

Conversão

.gb-botao-ref

Pill laranja com rótulo Grafite e disco Neve à direita. No hover, o contorno grafite aparece, o disco cresce até a faixa e vira o pill inteiro, o rótulo some e a seta centraliza girando 45°. No teclado o rótulo fica: o anel de foco, grafite nos temas claros e neve no escuro, marca o botão. A caixa não muda de tamanho. Laranja não encosta em verde: no tema verde e na faixa de CTA o pill vira pistache; no pistache, grafite com rótulo neve. Um por tela, no máximo dois. Variante padrão da landing: --traco (faixa laranja de 7 px).

  • Acessibilidade O ícone leva aria-hidden="true". Enviando, aria-busy="true" no botão e o “Enviando…” no .gb-formulario__aviso (role="status").
  • Tokens --gb-ease-ref nas transições do disco e do contorno.
  • JS iniciarBotoes(): no toque, o estado aparece por 900 ms (.is-preview).
Variantes do botão de conversão
VarianteUso
--tracopadrão: faixa de 7 px na cor do pill entre contorno e disco no hover
--compacto44 px de altura, faixa de 5 px, disco de 30. Cabeçalho
--grande56 px, corpo 18. Faixa de CTA
--largo100% da largura. Formulário e menu mobile
aria-busy="true"enviando: 75% de opacidade, sem ponteiro

Família V5

.gb-botao

Retangular, raio 7, 52 px. Preenchimento cresce em círculo a partir do canto inferior direito; a seta sai por cima e outra entra por baixo. Cinco cores e o secundário --suave (pill sem contorno, 12% do texto no hover). Nos temas escuro e verde, o padrão e o escuro viram pistache com texto grafite, para não sumirem no fundo. O acento é laranja; no verde vira pistache e no pistache, grafite. .gb-botao--largo ocupa 100% da largura.

  • Acessibilidade A seta leva aria-hidden="true". O --vertical acompanha aria-expanded.
  • Tokens --gb-m-button no preenchimento e na seta.
  • JS iniciarBotoes(): no toque, o estado aparece por 900 ms (.is-preview).

Fazer

  • --suave como secundário ao lado do botão de conversão.
  • --vertical + aria-expanded para expandir/recolher listas.
  • Rótulo curto, verbo no infinitivo ou imperativo.

Evitar

  • Dois botões cheios lado a lado.
  • Laranja cheio ao lado de verde ou pistache cheio.
  • Neve sobre Laranja ou Pistache.
  • Mudar tamanho, posição ou contorno no hover.

Botão-ícone

.gb-botao-icone

Redondo, 44 px, contorno fino, preenchimento leve no hover. Versão pequena de 30 px para barras (pausar, fechar). Sempre com aria-label. Texto só para o leitor de tela vai num .gb-oculto-visual: fica fora da vista e continua na árvore.

  • Acessibilidade aria-label no botão, aria-hidden="true" no svg.
  • Tokens --gb-linha (contorno), --gb-texto.
44 px
--pequeno · 30 px

Componentes

Fundos e patterns

Cinco recursos decorativos. Regra: um dominante por seção. Todos ficam em position:absolute dentro de uma .gb-secao, com aria-hidden, e o conteúdo (.gb-wrap) fica por cima com z-index:1.

Tabuleiro

.gb-tabuleiro · --claro · --escuro

Malha de 88 px (56 no mobile) com poucas casas acesas em Pistache, contraste baixo de propósito. As bordas dissolvem por máscara. Casas por --col/--lin; com data-sorteio="3-7" o JS sorteia as casas (mesma paridade: só se tocam pela diagonal) e com data-loop uma casa muda a cada 2,4 s. Usado na abertura e no fecho (escuro) e no manifesto (claro).

  • Acessibilidade A malha leva aria-hidden="true".
  • Tokens --cl-modulo (malha). Variáveis locais --modulo, --repouso e --linha-malha.
  • JS iniciarTabuleiro(): data-sorteio e data-loop.

Tabuleiro escuro + grão

Chega de lojinha amadora.

Tabuleiro claro

A Chesslab não entrega sites. Entrega lojas que vendem.

Acima, o tabuleiro claro dividindo espaço com o fragmento marca-d'água, como no manifesto da landing (é a única combinação de dois recursos aprovada, por vir da amostra clara do kit).

Luz

.gb-luz

Duas luzes largas que derivam devagar, com a geometria do palco da home: uma no alto à direita (--palco-luz-a) e outra que sobe da base à esquerda (--palco-luz-b). No escuro, laranja a 13% e pistache a 9%. No verde, Neve a 6% e pistache a 22%. Nos temas claros, laranja a 16% e pistache a 38%. Aplicar na própria seção junto com .gb-secao--recortada. Usada nos Pilares e no palco da abertura.

  • Tokens --gb-ease-inout na deriva das luzes.

Luz

A cada projeto, entregamos:

Trama

.gb-trama · .gb-trama__celula

Grade de fragmentos do símbolo em módulos de 88 px. Célula apagada: Verde a 12%; acesa (.is-on): Neve. O JS acende e apaga em ordem aleatória. Usada na faixa pistache de postura, ao lado do título.

  • Acessibilidade A grade leva aria-hidden="true".
  • JS iniciarTrama(): as células acendem em ordem aleatória.

Postura

Se sua loja vai competir com grandes marcas, ela precisa ter postura de grande. É isso que a gente constrói.

Grão, fragmento e marca-d'água

.gb-grao · .gb-fragmento · .gb-marca-dagua

.gb-grao

  • Ruído de 256 px em soft-light a 6%, num ::after da seção.
  • Só em fundos escuros (abertura, portfólio, fecho). Em claro não aparece.

.gb-fragmento

  • Fragmento do símbolo com 520 px, -18°, 10%, saindo pelo canto inferior direito.
  • A seção precisa de .gb-secao--recortada.

.gb-marca-dagua

  • Símbolo inteiro a 14% em Pistache dentro de uma faixa ou card verde.
  • Com movimento reduzido mantém 14% (não vira forma chapada).

Componentes

Janela e corte diagonal

O corte no canto superior direito é a assinatura gráfica do sistema. A inclinação vem do detalhe angular do símbolo (Δy/Δx = 2,2010869565). Toda imagem, painel e cartão de destaque passa por ele. Corte ou raio, nunca os dois.

Tamanhos e variantes

.gb-janela · --p · --m · (padrão) · --g · --viva · --verde
  • Acessibilidade Imagem decorativa com alt=""; com conteúdo, alt descritivo.
  • Tokens --cl-window-cut e --cl-cut-rise. Variável local --corte.
--p · corte 14 px
--m · corte 20 px
--viva · corte 28 px
--verde · corte 28 px
Classes da janela
ClasseCorteUso
.gb-janela--p14 pxminiaturas, captura no mobile
.gb-janela--m20 pxcapturas médias, janela de painel (22)
padrão28 px (22 no mobile)quadros de portfólio, cartão de formulário (32)
.gb-janela--g40 pxdocumento da abertura
.gb-janela--vivadobra no hovercards clicáveis: o corte cresce e a imagem aproxima 3%
.gb-janela--verdefiltroP&B + Verde multiplicado a 55%. Mídia dos painéis
.gb-janela--16x10 · .gb-janela--1x1 · .gb-janela--docproporção16:10, quadrado, 1:1,03

Moldura e capa de entrada

.gb-moldura · .gb-capa · data-reveal="janela"

Sombra e contorno fino vão no wrapper .gb-moldura (o clip-path cortaria os dois). A .gb-capa nasce cobrindo a janela no mesmo ângulo do corte e desliza para fora no reveal, enquanto a imagem assenta de 106% para 100%. Para empilhar camadas, o wrapper posicionado é o .gb-plano.

  • Acessibilidade A capa leva aria-hidden="true".
  • Tokens --gb-m-reveal, --gb-sombra-moldura.
  • JS iniciarReveal() com data-reveal="janela".

Documento

.gb-doc

A peça da abertura: folha Neve com corte de 40 px, a captura preenchendo tudo, sombra blur no mesmo recorte e véu de profundidade (--veu) para a peça de trás. A coreografia em loop fica com o GSAP da landing; aqui está a peça parada.

  • Acessibilidade Sombra e véu levam aria-hidden="true"; a captura tem alt.
Captura de uma loja

Componentes

Cards e superfícies

Painel

.gb-painel · [data-cor]

Painel opaco com o corte da identidade, janela à esquerda e texto à direita. Quatro cores da paleta, em variáveis locais (não data-tema, que mudaria o tema do cabeçalho do site). Na landing os quatro grudam (sticky) e cobrem-se pela rolagem; aqui, empilhados.

  • Tokens Variáveis locais --painel e --painel-suave, por data-cor.
  1. 01

    Identidade forte

    Criamos uma identidade digital única que transmite confiança e diferencia sua marca.

  2. 02

    Design pensado

    Seu layout é desenhado do zero, com estética e usabilidade pensadas para converter.

  3. 03

    Velocidade otimizada

    Lojas rápidas e leves, que carregam em segundos em qualquer dispositivo.

  4. 04

    Estrutura para escalar

    Base sólida para crescer, lançar produtos e suportar campanhas sem perder estabilidade.

Faixa de CTA

.gb-faixa · .gb-marca-dagua

Faixa Verde com corte, símbolo como marca-d'água, título e apoio à esquerda, botão de conversão grande à direita. Com .gb-pisca-no-hover na faixa, o olho do símbolo pisca quando o ponteiro fino passa sobre a faixa ou o foco do teclado chega ao botão. Para isso o símbolo vai com as três partes do sprite inline: dentro de um <use>, o CSS não alcança o olho.

  • Acessibilidade A marca-d’água leva aria-hidden="true".

Sua loja pode ser a próxima.

Vamos criar o seu e-commerce Shopify de alto nível.

Solicite um orçamento

Card de projeto

.gb-projeto · .gb-galeria · .gb-marca · .gb-tag

Quadro 16:10 com corte e hover vivo, marca do cliente como máscara em currentColor (segue o tema), tag opcional de parceria e legenda. Na galeria, 2 × 2 no desktop e uma coluna no mobile; a tag desce de linha quando o card tem menos de 500 px.

  • Acessibilidade A marca é um span com role="img" e aria-label; a imagem tem alt com o nome da loja.
  • Tokens --marca, --marca-w e --marca-h no style da marca. --gb-col-gap na galeria.
  • Home da loja HeyMu

    HeyMu · Loja Shopify

  • Home da loja Pé Direito

    Em parceria com

    Pé Direito · Loja Shopify

Notificação

.gb-notificacao · --escura

Toast de pedido em vidro fosco: 340 px, ícone quadrado de 40 com a sacola no verde Shopify, título, hora e texto. Variante escura para fundos claros. Marcar com role="status". Só o ícone da notificação usa a cor Shopify.

  • Acessibilidade role="status" num div (o aside não aceita esse papel); o ícone leva aria-hidden="true".
  • Tokens --gb-sombra-card, --cl-shopify no ícone.
Shopifyagora

Sua loja tem um novo pedido.

Chesslabagora

Recebemos sua solicitação.

Palco de demonstração

.gb-palco · .gb-selo

Moldura com raio 12, barra de 44 px com selo (ponto pistache com halo) e botão de pausa, e área de telas onde cada painel é um container. Altura fixa: trocar o conteúdo não muda a altura da seção. Usado nos Recursos com os componentes vivos da loja de demonstração.

  • Acessibilidade O botão de pausa tem aria-label.
  • Tokens --gb-superficie, --gb-linha. Variável local --palco-h (altura).

Loja de demonstração

Seu carrinho · 1 item

Caneca Terra · 300 mlR$ 89,00

Faltam R$ 125,00 para o frete grátis

Componentes

Campos e formulário

Rótulo em pergunta, controle de 56 px com raio 7, borda que escurece no hover, mensagem de erro com ponto laranja. Em cartão escuro, .gb-campos--escuro troca só as variáveis. Estado de sucesso com o símbolo.

Campos

.gb-campo · .gb-campos · [data-estado="erro"]

O campo-isca contra robôs, .gb-honeypot, fica fora da tela, do Tab e da árvore, e continua no envio do formulário. O readonly no campo é opcional: barra o preenchimento automático, mas o robô que digita pula o campo.

  • Acessibilidade label com for. No erro, aria-invalid="true" e aria-describedby para a mensagem. O aviso do formulário tem role="status"; o honeypot, aria-hidden="true".
  • Tokens --gb-superficie (controle), --gb-linha (borda), --gb-t-small.

Digite seu nome.

Confira o e-mail: falta o domínio.

Cartão escuro com formulário

.gb-janela .gb-cartao-escuro · .gb-campos--escuro

O fecho da landing: cartão Grafite com corte de 32 px sobre a seção verde, campos translúcidos e o botão de conversão largo. Com data-reveal="janela" e uma .gb-capa verde, entra com o wipe diagonal.

  • Tokens .gb-campos--escuro troca --gb-texto, --gb-texto-suave e --gb-anel para o fundo escuro, também dentro de uma seção clara.
  • JS iniciarReveal() com data-reveal="janela".

Chegou a hora do seu e-commerce dar o checkmate

Você está a um clique de uma loja alto nível

Sucesso

.gb-sucesso
  • Acessibilidade O ícone leva aria-hidden="true".

Recebemos sua solicitação.

Componentes

Etapas, abas e chips

Etapas

.gb-etapas · .gb-etapa · [data-progresso]

Linha do tempo: marcos quadrados de 44 px com o número em mono, ligados por fio com ponta de seta. O último marco é cheio. Cinco colunas no desktop; até 950 px a linha fica vertical. Com data-progresso e o JS, as etapas acendem pela rolagem (próximas a 40%, vistas a 100%, atual com marco cheio).

  • Acessibilidade Lista ordenada (<ol>), um título por etapa.
  • Tokens --gb-realce no marco. Variável local --colunas (padrão 5).
  • JS iniciarEtapas() com data-progresso.
  1. 1

    Descobrimos

    Conversa, briefing e coleta de referências.

  2. 2

    Desenhamos

    Layout exclusivo no Figma. Sem tema genérico.

  3. 3

    Codamos

    Tudo na Shopify com performance e responsividade.

  4. 4

    Revisamos

    Você navega, testa e aprova.

  5. 5

    Publicamos

    Loja no ar com suporte inicial.

Abas

.gb-abas · .gb-aba · .gb-abas-legenda

Seletor vertical: nome de 19 px, ponto laranja que desliza para a esquerda na ativa e texto de benefício que abre embaixo. A linha de progresso (--progresso, de 0 a 1) mostra o avanço quando o script da página anima as abas, como o GSAP da landing; o gambito.js não troca de aba sozinho. Na demonstração, a linha fica parada em 0,6. Até 950 px vira fileira de chips rolável, e o benefício vai para a .gb-abas-legenda, que já vem com o texto da aba ativa. Teclado: setas, Home e End.

  • Acessibilidade role="tablist" com aria-orientation; role="tab" com aria-selected e aria-controls; role="tabpanel" com aria-labelledby. A .gb-abas-legenda leva aria-hidden="true".
  • Tokens --gb-realce, --gb-marcador, --gb-superficie. Variável local --progresso.
  • JS iniciarAbas(). A lista dispara gb:aba a cada troca e na carga, com detail: { indice, aba, painel }; o evento não borbulha: escutar na própria lista.

Loja de demonstração

Seu carrinho · 1 item

Caneca Terra · 300 mlR$ 89,00

Faltam R$ 125,00 para o frete grátis

Chip

.gb-chip · [aria-pressed]
  • Acessibilidade aria-pressed marca o ativo; o ícone leva aria-hidden="true".
  • Tokens --gb-realce, --gb-superficie, --gb-linha.

Dúvidas

.gb-faq

Lista de <details>. Alvo de 44 px, sem o triângulo do navegador. O disco abre no realce; no escuro e no verde o texto do disco aberto é grafite, porque o realce é pistache. A resposta sai em 320 ms. Um item cujo id está na URL abre sozinho.

  • Acessibilidade <details> e <summary> nativos; a seta leva aria-hidden="true".
  • Tokens --gb-realce no disco aberto.
  • JS iniciarFaq().
O que entra no Gambito?

Peças que as páginas repetiram e a evolução do que o sistema já tinha. Um caso de uma página só fica na página.

O número de uma ficha pode ser ilustrativo?

Não. O número entra com fonte, ano e autorização.

Componentes

Ficha e depoimento

As duas peças de prova que a home e a aceleração repetiram. O número e a citação de cliente só entram na página com fonte, ano e autorização. Aqui a demonstração é a estrutura.

Ficha

.gb-ficha

Número em realce, métrica e contexto. Ocupa 5 colunas e 7. Abaixo de 700 px, empilha.

  • Tokens --gb-realce no número, --gb-t-sub na métrica.

12 colunas

Valor e contexto

A ficha ocupa 5 + 7 colunas da grade.

Depoimento com vídeo

.gb-depoimento · .gb-video

Citação ao lado da janela. O botão abre um dialog com o corte, sem raio. Com data-video (id do YouTube), o iframe só nasce no clique. Sem esse dado, o palco mostra o poster. Sem JS, fica o link alternativo. A duração, quando houver, vai num .gb-video__duracao dentro do rótulo.

  • Acessibilidade O botão tem aria-haspopup="dialog" e aria-controls; o <dialog> tem aria-label; o fechar, aria-label.
  • JS iniciarVideo().
Painel de demonstração do guia Ver a imagem

O olho achata ancorado na base.

Símbolo da Chesslab

Componentes

Motion

Quatro durações e três curvas. Tudo respeita prefers-reduced-motion: com movimento reduzido, cada peça aparece no estado final. Sem JavaScript tudo aparece. Se o JS falhar, um cão de guarda mostra tudo em 2,5 s.

320 ms--gb-m-fastcor, sublinhado, hover de link, tema do cabeçalho
420 ms--gb-m-buttonpreenchimento e seta dos botões
700 ms--gb-m-enterentrada de elementos, troca de painel, zoom de hover
900 ms--gb-m-revealcapa diagonal e assentamento da imagem
ease-out--gb-ease-outcubic-bezier(.22,.72,.2,1). Padrão
ease-inout--gb-ease-inoutcubic-bezier(.65,0,.35,1). Cabeçalho, luz
ease-ref--gb-ease-refcubic-bezier(.3,.7,.2,1). Botão de conversão

Vocabulário de entrada

[data-reveal] · [data-reveal-grupo] · [data-reveal="linha"] · [data-reveal="janela"]

Um atributo por elemento. data-reveal sobe 28 px e aparece; num data-reveal-grupo os filhos entram juntos, escalonados em 80 ms. linha desenha uma régua em X. janela desliza a capa e assenta a imagem. Títulos por linha (data-reveal-titulo) precisam do SplitText do GSAP; sem ele, caem no reveal simples. A máscara de linha dos títulos divididos é a .gb-mascara. Para a entrada genérica (troca de painel, item novo em lista), .gb-entra: sobe 10 px e aparece em 700 ms. O Repetir põe .is-resetting para voltar ao estado escondido sem transição.

  • Acessibilidade Com movimento reduzido, cada peça aparece no estado final.
  • Tokens --gb-m-enter, --gb-m-reveal, --gb-ease-out. Variável local --atraso (escalonamento).
  • JS iniciarReveal() põe gb-motion-css no <html> e, com os observadores prontos, gb-motion-pronto. Conteúdo inserido depois: chamar de novo iniciarReveal(), iniciarSimbolo() e iniciarMarcador(), ou iniciarGambito(); o que já estava ligado não muda.

Processo


Da ideia ao “pedido confirmado”

Aqui é o caminho que seguimos até as suas vendas com a nova loja.

Piscada do símbolo

.gb-simbolo__olho · .is-piscando · .gb-pisca-no-hover

O olho achata ancorado na própria base e desce 6 unidades enquanto fecha, em 240 ms. Num símbolo estático, com as três partes do sprite inline (dentro de um <use> o CSS não alcança o olho), dispara por .is-piscando, pelo ponteiro fino sobre toda a .gb-pisca-no-hover ou pelo foco do teclado num link ou botão dentro dela. A montagem completa — corpo, seta pela diagonal e piscada — é a peça .gb-simbolo-vivo, na seção Logo e símbolos. Não usa GSAP.

  • Tokens --gb-ease-inout.
  • JS Num .gb-simbolo-vivo, o evento gb:piscar pisca o olho: é o que o chip da demonstração dispara.
<div class="gb-faixa gb-pisca-no-hover">
  <svg class="gb-marca-dagua" viewBox="0 0 83 76.4" aria-hidden="true">
    <!-- as três partes de #gb-simbolo, inline: dentro de um <use> o CSS não alcança o olho -->
    <g transform="translate(-250.5 -139.8)">
      <path class="gb-simbolo__corpo" fill="currentColor" d="M288.792 140.8C268.196 140.8 251.5 157.455 251.5 178C251.5 198.545 268.196 215.2 288.792 215.2C298.713 215.2 307.728 211.334 314.409 205.031L304.554 183.948C303.724 184.128 302.862 184.224 301.978 184.224C295.287 184.224 289.863 178.813 289.863 172.139C289.863 170.485 290.196 168.91 290.798 167.475H277.527C277.191 169.072 277.014 170.727 277.014 172.424C277.014 183.934 285.142 193.548 295.985 195.871L298.097 200.388C295.231 201.575 292.088 202.23 288.792 202.23C275.377 202.23 264.502 191.382 264.502 178C264.502 164.618 275.377 153.77 288.792 153.77C298.441 153.77 306.756 159.343 310.675 167.475L319.249 156.536C312.495 147.016 301.372 140.8 288.792 140.8Z"/>
      <path class="gb-simbolo__olho" fill="currentColor" d="M300.632 172.845C303.555 172.845 305.925 170.44 305.925 167.475H295.338C295.338 170.44 297.708 172.845 300.632 172.845Z"/>
      <path class="gb-simbolo__seta" fill="currentColor" d="M325.474 195.403L332.5 185.295L324.404 167.475H310.675L318.354 184.071L309.931 195.407L325.474 195.403Z"/>
    </g>
  </svg>
  …
</div>

// ou por JS, no <svg> com as partes inline; tirar a classe no fim deixa piscar de novo
simbolo.addEventListener('animationend', () => simbolo.classList.remove('is-piscando'), { once: true });
simbolo.classList.add('is-piscando');

Referência

Regras do sistema

Regras do sistema
RegraPor quê
Texto Grafite sobre Laranja e sobre Pistache. Nunca Neve.Neve sobre Laranja dá 2,3:1; sobre Pistache, 1,5:1. Abaixo do mínimo.
Anel de foco verde nos temas claro e névoa. Pistache no escuro, no verde e no menu aberto. No botão laranja, grafite nos temas claros e neve no escuro.Laranja sobre Neve dá 2,28:1, abaixo dos 3:1 de um componente. Anel verde em volta do laranja mistura as duas cores.
Laranja cheio não encosta em verde cheio. Sobre Verde, conversão e acento viram Pistache; sobre Pistache, Grafite. No escuro o laranja fica.Laranja e verde sólidos lado a lado brigam. Decisão de 16/10/2026.
Foco por teclado no botão de conversão mantém o rótulo.O gesto de o rótulo sumir é hover e toque. Quem chega por Tab precisa ler o botão.
Erro de campo: texto na cor do tema, quadrado e borda laranja.Laranja como texto sobre Neve dá 2,28:1.
Corte diagonal ou raio no mesmo elemento.clip-path ignora border-radius. Sombra e contorno vão no wrapper.
Não aplicar o corte na assinatura do logo.Regra do kit. O corte é recurso gráfico de apoio, não parte do logotipo.
Um recurso gráfico dominante por seção; dois planos no máximo.Tabuleiro, luz, trama, fragmento e grão competem entre si e com o conteúdo.
O contorno do botão não se move no hover.Preenchimento e seta respondem por dentro. Caixa estável, sem salto de layout.
Um botão de conversão por tela; no máximo dois na página vista de cima a baixo por seção.O laranja é destaque pontual. Repetido, deixa de destacar.
Eyebrow só com o nome da seção. Sem numeração, sem emoji.Decisão da landing. Os numerais ficam para marcos e painéis.
Setas e ícones do sprite, nunca caracteres.Peso e alinhamento consistentes em qualquer fonte de fallback.
Fio do cabeçalho de seção some sobre tabuleiro.Competiria com as linhas da malha.
Tema por data-tema na seção. Painéis usam variáveis locais.O cabeçalho copia o tema da seção sob ele; um data-tema num painel o confundiria.
Uma frase por linha no desktop com span em bloco, não <br> oculto.O SplitText quebra em <br> mesmo com display:none.
Campanha: Neve + Laranja + Grafite, sem Verde ou Pistache.Territórios do kit. Institucional prioriza verdes e neutros.

Referência

Instalar e versionar

<html lang="pt-BR" class="no-js">
<head>
  <link rel="stylesheet" href="ds-gambito-v1/css/gambito.css">
  <script>document.documentElement.classList.replace('no-js', 'js');</script>
</head>
<body>
  <!-- colar aqui o conteúdo de ds-gambito-v1/assets/sprite.svg -->

  <header class="gb-cabecalho" …>
  <main id="conteudo">
    <section class="gb-secao" data-tema="escuro">…</section>
  </main>
  <footer class="gb-rodape" data-tema="escuro">…</footer>

  <script type="module">
    import { iniciarGambito } from './ds-gambito-v1/js/gambito.js';
    iniciarGambito();
  </script>
</body>

Arquivos

  • tokens/gambito.tokens.css: fonte única de cores, temas, tipografia, medidas e motion.
  • tokens/gambito.tokens.json: o mesmo em JSON para Figma ou Style Dictionary.
  • css/: um arquivo por família de componentes; gambito.css importa tudo na ordem.
  • js/gambito.js: comportamentos opcionais, sem dependências.
  • README.md: mapa completo das classes da landing para o Gambito.

Versionar

  • Novo componente ou variante: versão menor (1.2, 1.3).
  • Token ou marcação que quebra uso existente: Gambito 2.
  • Outra direção visual: sistema novo com nome de abertura de xadrez e prefixo próprio (por exemplo ds-siciliana-v1, classes sc-). Os tokens --cl-* da paleta continuam os mesmos.

O que ficou de fora

  • A interface da loja de demonstração “Casa Serra” (cliente fictício). Os nomes dos produtos aparecem só como conteúdo das demos do palco.
  • O cartão e o rabisco do cursor sobre a palavra “Shopify”.
  • A coreografia em loop da pilha de lojas e o tabuleiro em loop com GSAP: o .gb-doc e o data-loop cobrem a versão leve.
  • Órbita, vitrine, caminhos, ciclo da vaga, modal, carrossel, marquee e o easter egg do rodapé.