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.
--space-22pxAjuste óptico muito fino. Underline offset, espaçamento entre borda e conteúdo em casos de alinhamento de glifo. Nunca decisão de layout.
--space-44pxAjuste ó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.
--space-88pxGap 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.
--space-1212pxExceção documentada: metade de
--space-24, necessária em composições de grade de 2 colunas com gap centrado viacalc(50% - 12px). Não é múltiplo de 8 — uso restrito à situação documentada. Justificativa obrigatória em comentário quando aplicado fora desse contexto.--space-1616pxPadding 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.
--space-2424pxPadding 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.
--space-3232pxPadding interno de cards de destaque (
size=lg) e margem entre blocos. Cards de destaque/card-mãe usam--card-padding=--space-32viasize=lg; cards padrão (size=md) usam--space-24. Fora de Card,--space-32fica reservado a espaçamentos estruturais de página. (Default do--card-paddingmudou pra--space-24em Epic #517 S4 / D-Card-1.)--space-4848pxPadding 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.
--space-6464pxPadding 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.
--space-9696pxPadding 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.
--space-128128pxPadding 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.
| Token | Valor | Referência | Papel |
|---|---|---|---|
--card-padding | 24px | var(--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 comcalc(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.
- 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.