Ir ao conteúdo
SEED engenhariaDesign System

Tokens

5-b. A TINTA SOBRE FUNDO DE MARCA — três tokens, um por fundo

seed-tokens.md v1.23 · §05-bseção 8 de 1705-b-a-tinta-sobre-fundo-de-marca-tres-tokens-um-por.md · MD5 3a48591a

Título completo no canon: A TINTA SOBRE FUNDO DE MARCA — três tokens, um por fundo (v1.15, 2026-08-17) · ⚠ PARCIALMENTE SUPERSEDIDO PELO §5-d

Esta seção SUPERSEDE a "Regra crítica reformulada" do §5 e é o estado VIGENTE. Ela fecha a MR-P1 (decisão do Rafael) e a MR-P2 (defeito medido na mesma edição). Registro completo, com a prova de reprovação das guardas, no validacao/MANIFESTO.md §86.

O que estava errado não era um valor — era a ARQUITETURA. Até a v1.14 um único token de tinta (text-on-brand) servia três fundos de marca com necessidades opostas. O gêmeo de JSON descrevia esse token, com essas palavras, como "texto sobre action.primary" — isto é, o próprio gêmeo declarava para qual fundo ele havia sido feito, e ele estava sendo consumido em outros dois.

Fundo Valor branco #FFFFFF escura #00352F
marca chapadasurface-brand #11B0A0 nos dois temas 2,71 4,99
marca profundasurface-brand-deep claro #006C62 6,32 2,14
marca profunda escuro #005048 9,37 1,45
botão primárioaction-primary claro #098475 4,60 2,95
botão primário escuro #66D1C2 1,83 7,39

Piso 4,50 (SC 1.4.3, texto normal). Nenhum valor único satisfaz as três linhas. O token acertava o botão primário — o fundo para o qual nasceu — e errava os outros dois, um defeito em cada tema: branco sobre a marca chapada media 2,71 no claro (MR-P1, medido por pixel em 9 artefatos) e tinta escura sobre a marca profunda media 1,45 no escuro (MR-P2, medido por pixel em 3 textos do tela-tabela.html — o contador dentro de botão e a página corrente do rodapé). Lacuna de token, a mesma família do BT-P6.

O ESTADO VIGENTE — três tintas, e o nome diz o fundo:

Token Claro Escuro Mede Use sobre
--seed-text-on-brand #00352F #00352F 4,99 nos dois surface-brand (#11B0A0) — a marca chapada
--seed-text-on-brand-deep (novo) #FFFFFF #FFFFFF 6,32 · 9,37 surface-brand-deep — a marca profunda
--seed-text-on-action-primary (novo) #FFFFFF #00352F 4,60 · 7,39 action-primary — o botão primário

A REGRA, em uma frase: sobre a marca chapada a tinta é escura, nos dois temas e em qualquer tamanho — branco ali não é permitido nem em 24px, nem em 19px bold. Sobre a marca profunda, e sobre o botão primário no tema claro, a tinta é branca. Sobre o botão primário no tema escuro, escura. O amarelo mantém a regra absoluta: sempre texto escuro (cinza-900), nunca branco.

Por que text-on-brand não inverte com o tema: porque surface-brand não inverte — vale #11B0A0 nos dois temas, por decisão de identidade. Tinta que inverte sobre fundo que não inverte é exatamente o defeito que o contrato BT3 mede.

O botão primário NÃO muda de aparência nesta edição: os valores de text-on-action-primary são exatamente os que a tinta única tinha.

ALTERNATIVAS DESCARTADAS, com o número que as descarta:

  • trocar só o valor claro da tinta única — consertaria a MR-P1 e abriria o mesmo defeito no botão primário claro, que cairia de 4,60 para 2,95;
  • parar de usar a marca chapada como fundo de texto, mandando tudo para a marca profunda — muda a identidade visual (o turquesa médio é a cor da marca em herói e selo) e contraria a decisão do Rafael, que manteve a marca chapada e trocou a tinta;
  • calcular a tinta no consumidor — não existe cálculo condicional em custom property, e empurrar a escolha para o consumidor foi o que produziu a lacuna;
  • manter a tinta única e só acrescentar os dois nomes novos, deixando a antiga como legado depreciado — seria mais seguro contra consumidor esquecido, e foi descartado porque a migração é enumerável por comando e porque nome que engana é o mecanismo que gerou este defeito.

COMO A MIGRAÇÃO FOI FEITA, por REGRA e não por arquivo: o token era consumido sobre fundos diferentes dentro do mesmo arquivo, então substituição global trocaria certo por errado em massa. O script validacao/migra-tinta-marca.py percorre bloco de regra CSS e escolhe a tinta pelo fundo declarado na mesma regra — 39 consumos sobre a marca chapada, 28 sobre o botão primário, 4 sobre a marca profunda e 1 caso de fundo transparent que ele não tocou e imprimiu para decisão humana.

GUARDA QUE PROVA ESTA REGRA: validacao/guarda-tinta-marca.mjs, contrato MR1, alvo de pasta, nos dois temas. Ela mede duas coisas: o piso da SC 1.4.3 e a mão da tinta (a luminância da tinta tem de ser menor que a da marca — porque a decisão não foi "passe do piso", foi "tinta escura"). Placar em 2026-08-17: 23 PASS · 0 FAIL · 73 [n/a] em 48 artefatos × 2 temas, com 49 textos assentando sobre a marca chapada e zero violando. Contrato sem guarda é contrato sem prova.

Esc