Skip to main content
Use o campo de CSS customizado do editor do checkout para ajustar a página de venda e as telas de resultado além do que os campos do editor cobrem. Esta página documenta o contrato de estilo v1: as variáveis e os ganchos que continuam estáveis entre as atualizações do checkout, e as regras que todo CSS precisa seguir.

Como o seu CSS é aplicado

O seu CSS vale só dentro do checkout. :root, html e body apontam para o próprio checkout, e qualquer outro seletor só acerta elementos dentro dele. Defina as variáveis em :root e estilize os blocos pelos ganchos data-checkout-part:
Num tema escuro como este, escureça também o fundo da página, com --checkout-background ou com o campo Cor de fundo do editor, senão ele continua claro. Os dois valem na página de venda e nas telas de resultado, e a variável vence o campo. Parte do texto fica sobre o fundo da página e parte sobre --checkout-surface, então escolha uma cor de texto que contraste com os dois. Os campos do cartão só acompanham essas cores no tema infoproduct; nos temas shop e stepped, mantêm o visual claro próprio.

Variáveis que você pode definir

Defina estas em :root. O padrão é o que os campos do tema mostram enquanto a variável não é definida. Outros elementos que leem a variável mantêm o próprio tom até você defini-la: no tema infoproduct, por exemplo, os campos usam #d4d4d8 e os cartões usam #e5e5e5. Definir a variável deixa os dois iguais.

Variáveis que você pode ler

Estas trazem valores dos campos do editor. Use-as dentro de var(...) nas suas regras e mude-as no editor.

Ganchos

Cada gancho é um atributo num bloco que já existe na página de venda. Aponte para ele com o seletor de atributo.
Os blocos protegidos guardam o que o comprador precisa ver: campos, preços e o botão de pagar. Se o seu CSS esconder ou cobrir esse conteúdo, o checkout desliga o seu CSS inteiro.

Telas de resultado

As variáveis de cor também valem nas telas que o comprador vê depois de pagar: Pix, cartão, boleto, assinatura, a confirmação de cada tema, o upsell e o resumo pós-checkout.
  • Fundo da página: o mesmo da página de venda. --checkout-background vence quando definida; sem ela, vale o campo Cor de fundo do editor, e com o campo vazio cada tela mantém o tom próprio, branco ou um cinza bem claro.
  • Blocos com cor própria: estes ficam como estão, seja qual for o seu CSS:
    • o cartão do QR code do Pix, as caixas de código e os botões de copiar;
    • o bloco do boleto, inclusive o QR code dele no Peru;
    • os avisos de “aguardando confirmação” dentro desses blocos;
    • o selo do cronômetro do upsell;
    • o balão do pino no mapa;
    • os painéis de status.
  • Cor terciária: quando o editor define essa cor, ela vence nos botões de recusar e aplicar, então precisa contrastar com o fundo definido pelo seu CSS.
  • Ganchos: só têm garantia na página de venda. Quando um deles também aparece numa tela de resultado, lá ele fica fora do contrato.

O que fica nos campos do editor

Defina estes no editor, não no CSS. A única exceção é o fundo da página:
  • cor primária
  • fundo da página: o campo Cor de fundo do editor, que também vale nas telas de resultado e que o seu CSS sobrescreve quando define --checkout-background
  • cor do header
  • cor e raio dos cantos do botão de pagar
  • fonte
  • logo, banner e imagens, porque url() não é permitido no CSS

Regras de estilo

Todo CSS precisa seguir estas regras. Quando alguma é quebrada, o editor não salva e lista cada problema com a linha e a coluna.
  • Tamanho: até 50 000 caracteres. O editor conta em bytes, então caracteres acentuados ocupam mais de um. Depois de restrito ao checkout, o CSS também tem teto de 150 000 caracteres.
  • At-rules: só @media, @supports, @container e @keyframes. Qualquer outra, como @import, @font-face, @namespace, @layer, @page ou @property, é recusada.
  • Sem url(), em nenhuma propriedade.
  • Funções: só estas são permitidas. Qualquer outra, como image-set(), image() ou attr(), é recusada.
    • cores: rgb(), rgba(), hsl(), hsla(), hwb(), lab(), lch(), oklab(), oklch(), color(), color-mix(), light-dark()
    • variáveis e ambiente: var(), env()
    • cálculo: calc(), -webkit-calc(), min(), max(), clamp(), round(), mod(), rem(), abs(), sign()
    • gradientes: linear-gradient(), radial-gradient(), conic-gradient(), as versões repeating- e as formas com prefixo -webkit- de todos eles
    • transformações: matrix(), matrix3d(), perspective(), rotate(), rotate3d(), rotateX(), rotateY(), rotateZ(), scale(), scale3d(), scaleX(), scaleY(), scaleZ(), skew(), skewX(), skewY(), translate(), translate3d(), translateX(), translateY(), translateZ()
    • filtros: blur(), brightness(), contrast(), grayscale(), hue-rotate(), invert(), opacity(), saturate(), sepia()
    • formas: inset(), circle(), ellipse(), polygon(), rect(), xywh()
    • tempo, grid e contadores: cubic-bezier(), steps(), minmax(), repeat(), fit-content(), counter(), counters()
  • Seletores: sem :visited, sem seletor de atributo sobre value, sem seletor que comece com um combinador, como > a, e sem ~ ou + depois de :root, html ou body.
  • Sem aninhamento: sem & e sem regras ou at-rules dentro de outra regra.
  • Propriedades: behavior, -moz-binding e -webkit-box-reflect são recusadas.
  • Alcance e ampliação: nada pode pintar muito além do próprio elemento nem ampliá-lo muito. Nas propriedades abaixo, medidas vão em px ou rem (um rem conta como 16px), ou 0, e fatores de escala em números. Medidas em em ou %, unidades de viewport, calc(), min(), max(), clamp() e var() são recusados nelas, seja numa parte do valor, na cor ou no valor inteiro.
    • box-shadow, text-shadow, outline, outline-width, outline-offset, o outset do border-image, text-decoration, text-decoration-thickness, text-underline-offset, -webkit-text-stroke e as formas com prefixo: cada medida vai até 64px. Para usar uma variável na cor, defina-a na própria propriedade, como outline-color: var(--checkout-primary).
    • filter: os raios dos blur() somam no máximo 64px, e drop-shadow() é recusada. Filtros de cor, como brightness() ou grayscale(), não têm limite e aceitam var().
    • transform, scale e zoom: cada declaração amplia no máximo 1,1×, contando scale(), matrix() e skew(). translate() e rotate() não têm limite e aceitam var() e calc(). perspective(), matrix3d() e qualquer perspective diferente de none são recusados.
  • Blocos protegidos: nada que esconda ou cubra o conteúdo de um gancho protegido. O editor não confere esta regra ao salvar: quem confere é o checkout, desligando o seu CSS, como diz o aviso abaixo dos ganchos.

Teste antes de salvar

1

Cole o seu CSS

Cole o CSS no campo de CSS customizado do editor do checkout.
2

Corrija o que o editor apontar

Cada problema mostra a linha e a coluna. Só dá para salvar quando a lista estiver vazia.
3

Confira a pré-visualização

A pré-visualização do editor aplica o mesmo CSS que o checkout publicado serve. Confira os blocos que você mudou no desktop e no celular.
4

Salve

Salve a configuração para publicar o CSS.
Se a pré-visualização aplica o seu CSS e logo depois volta ao padrão, o checkout desligou o seu CSS porque um campo, um preço ou o botão de pagar ficou invisível ou sem contraste. O caso típico é texto claro sobre o fundo da página ainda claro: defina --checkout-background ou escureça o campo Cor de fundo.

Use com uma IA

Para reproduzir o visual de outro checkout, copie o prompt abaixo na IA que você usa. Troque tudo o que está entre colchetes pelo checkout de referência e pelos valores atuais do seu editor, e anexe prints da referência. A resposta vem em duas partes: os valores vão para os campos do editor e o CSS para o campo de CSS customizado. Depois, teste na pré-visualização como acima.

Classes utilitárias

Seletores escritos sobre as classes utilitárias do checkout, como .bg-white, continuam funcionando, mas não fazem parte do contrato e podem mudar em qualquer atualização do checkout. Prefira os ganchos e as variáveis desta página.
Esta página documenta o contrato de estilo v1. Uma mudança nas variáveis ou nos ganchos sobe a versão do contrato.