Espaçamento

Base 8. Todo padding, margin e gap é múltiplo de 8. Ajustes ópticos de 2 ou 4px são exceção documentada.

Princípio

Todo espaçamento de layout — padding, margin, gap — é múltiplo de 8. A base 8 divide e multiplica de forma uniforme em toda a grade, produz alinhamento consistente entre componentes de origens diferentes e elimina decisões ad-hoc. Os valores 2 e 4px existem como exceção para ajustes ópticos de glifo — não como unidades de layout.

Escala

Onze tokens, nenhum fora da escala documentada. Cada valor tem papel declarado; usar um token fora do papel preferido é sempre preferível a inventar um valor novo.

  1. --space-22px

    Ajuste óptico muito fino. Underline offset, espaçamento entre borda e conteúdo em casos de alinhamento de glifo. Nunca decisão de layout.

  2. --space-44px

    Ajuste óptico de glifo e gap interno de ícone. Exceção aceita da base 8 — apenas quando o alinhamento tipográfico exigir. Nunca em decisões de layout de componente.

  3. --space-88px

    Gap mínimo de layout. Espaçamento entre itens próximos dentro de um componente — ex.: gap entre ícone e texto num label, padding de chip, gap de itens numa lista densa.

  4. --space-1212px

    Exceção documentada: metade de --space-24, necessária em composições de grade de 2 colunas com gap centrado via calc(50% - 12px). Não é múltiplo de 8 — uso restrito à situação documentada. Justificativa obrigatória em comentário quando aplicado fora desse contexto.

  5. --space-1616px

    Padding médio e gap de itens. Espaçamento interno de componentes de porte médio — padding vertical de card compacto, gap entre itens de uma lista com respiro, margem entre um ícone e seu label em nav.

  6. --space-2424px

    Padding de card compacto e gap de seções curtas. Separação entre blocos de conteúdo dentro de um card, margem entre cards num grupo, padding horizontal de componente de tamanho médio.

  7. --space-3232px

    Padding interno de cards de destaque (size=lg) e margem entre blocos. Cards de destaque/card-mãe usam --card-padding = --space-32 via size=lg; cards padrão (size=md) usam --space-24. Fora de Card, --space-32 fica reservado a espaçamentos estruturais de página. (Default do --card-padding mudou pra --space-24 em Epic #517 S4 / D-Card-1.)

  8. --space-4848px

    Padding de card largo e margem entre sections curtas. Padding horizontal do container de conteúdo em desktop, margem entre sections de conteúdo próximas em hierarquia — ex.: entre o dashboard e a lista de compromissos.

  9. --space-6464px

    Padding vertical de section. Espaçamento interno vertical de seções de página — separa visualmente blocos de conteúdo distintos sem perder a coesão da tela.

  10. --space-9696px

    Padding vertical de hero e section grande. Respiro de seção que precisa ancorar visualmente uma transição de narrativa — intro de onboarding, bloco de destaque em landing.

  11. --space-128128px

    Padding vertical de hero de landing. Valor máximo da escala — reservado ao hero de comunicação externa onde o respiro tem função de impacto visual. Não entra em telas de produto.

Tokens semânticos de componente

Tokens que referenciam valores da escala de espaçamento mas declaram intenção de uso específica. Preferir estes tokens quando o contexto for um componente nomeado — a semântica do nome comunica a decisão de design; o valor subjacente continua sendo o da escala.

TokenValorReferênciaPapel
--card-padding24pxvar(--space-24)Padding interno padrão do container Card (size=md). Cards de destaque/card-mãe (size=lg) sobrescrevem pra --space-32. Mudou de 32px pra 24px em Epic #517 S4 / D-Card-1.

Regras de uso

  • Layout, padding, margin e gap: sempre múltiplos de 8. Qualquer decisão de espaçamento estrutural começa na escala e fica na escala. Não há exceção para "ficou visualmente melhor" sem documentação.
  • --space-4: só ajuste óptico de glifo. Nunca decisão de layout. Se o espaçamento mínimo de layout precisar ser 4px, o componente precisa ser revisado — provavelmente o valor correto é 8px.
  • --space-2: ajuste óptico muito fino. Underline offset, compensação de borda em alinhamento de glifo. Escopo mais restrito ainda que o 4px — não entrar em padding ou margin de qualquer elemento de layout.
  • --space-12: exceção documentada para metade de 24. Uso correto: composições de grade com calc(50% - 12px) quando o gap total é --space-24. Fora desse contexto, adicionar justificativa em comentário ou reconsiderar o design.
  • Valores fora da escala são violação. Espaçamentos em 5, 6, 7, 9, 10, 11, 13, 14, 15, 17 px — e qualquer outro valor não listado nos tokens — não existem no produto. Se um valor parece necessário, reavalie o componente antes de criar um token novo.
  • Ajustes óticos exigem justificativa em comentário. Quando 2 ou 4px forem usados, o comentário no código deve explicar qual problema óptico específico está sendo resolvido. Sem comentário, o valor é tratado como bug na revisão.
  • Quando precisar de mais separação, aumenta o padding — não a linha. Hairlines e bordas não ganham espessura para suprir falta de espaço. O espaçamento resolve a separação; a linha sinaliza divisão estrutural. Ver .claude/ui-design/examples.md §2.3 (hairline como silêncio estrutural).

Exemplo de composição

Um Commitment Card padrão aplica padding, gap e border-radius todos saídos da escala de tokens. Os valores se combinam e produzem o ritmo visual sem nenhum número ad-hoc.

Conta de luz · mai

Vence em 15/mai. R$ 127,30.

Pagar
padding
--card-padding (= --space-24)
gap
--space-16
border-radius
--radius-lg

Anti-padrões referenciados

Anti-padrão com relação direta a decisões de espaçamento. O arquivo-fonte está em .claude/ui-design/anti-patterns.md. Link permanente será atualizado quando a seção de anti-padrões visuais for publicada.

  • #12 — Espaçamento fora da escala estruturalAplicar padding, margin ou gap em valores não presentes na escala de tokens — 13px, 17px, 22px. Cada valor fora da escala acumula desalinhamento que se multiplica conforme o número de componentes cresce. Uma tela com trinta elementos e cinco espaçamentos fora da escala produz grade desordenada mesmo sem que cada desvio seja perceptível isoladamente.

Consultar .claude/ui-design/anti-patterns.md na íntegra para demais anti-padrões visuais.