Ir ao conteúdo
SEED engenharia

Componentes

73. HV-P5 FECHADA — a tinta de marca não sobrevive a NENHUMA superfície de interação, e isso é um número

estávelseed-componentes.md v2.00 · §73seção 150 de 18473-hv-p5-fechada-a-tinta-de-marca-nao-sobrevive-a.md · MD5 c44c6b83

Título completo no canon: HV-P5 FECHADA — a tinta de marca não sobrevive a NENHUMA superfície de interação, e isso é um número (2026-08-20, nona parte) · nasce --seed-text-brand-strong — estável

Em uma frase: A tinta de marca não sobrevive a superfície de interação: sobre sobrevoo e superfície suave use text-brand-strong, nunca text-link nem text-brand.

O que esta seção NÃO cobre: O token é TINTA: onde o defeito é a superfície, ele não resolve — fronteira declarada na seção. — se é disto que você precisa, não preencha em silêncio: gere o pedido de cobertura (https://ds.seed.eng.br/pedidos/).

(decisão registrada — ver Histórico da seção)

73.1 O que a pendência dizia, e onde ela errava#

(decisão registrada — ver Histórico da seção)

73.2 O número que tira a decisão do campo da preferência#

--seed-text-brand e --seed-text-link valem #098475 no claro. Eles medem 4,60 sobre a página branca — 0,10 acima do piso 4,5 — e caem abaixo do piso assim que a superfície deixa de ser branco puro:

superfície valor mede com #098475
surface-page · surface-raised #FFFFFF 4,60 ✅
surface-subtle · action-neutral-hover #F2F6F9 4,23 ❌
action-neutral-active · surface-sunken #E3EBF0 3,81 ❌
row-selected-bg #E8FBF7 4,28 ❌

O NÚMERO QUE FECHA: para #098475 alcançar 4,5, o fundo precisa de luminância ≥ 0,978 — o cinza neutro mais escuro que serve é #FDFDFD, dois passos do branco puro. Não existe superfície de interação possível para aquela tinta. Logo escurecer a tinta no estado não é escolha estética: é a única saída que não desliga o estado.

⚠ E há uma consequência que reordena a HV-P4: os dois tokens que nasceram na v1.18 (action-neutral-hover e action-neutral-active) são exatamente as superfícies que derrubam a tinta de marca. Aplicar a gramática HV1-d ao acervo sem o token novo teria CRIADO casos de HV1-c em massa. A HV-P5 não era só anterior à HV-P4 por ser norma: era pré-requisito técnico dela — e isso não estava escrito em lugar nenhum.

73.3 O RITO de três rodadas#

rodada fonte o que ela estabelece
R1 canon Carbon (IBM) tem exatamente este par: $link-primary (Blue 60 #0f62fe) e $link-primary-hover (Blue 70 #0043ce), "Hover color for $link-primary"; e $link-secondary (Blue 70), "Secondary link color for lower contrast backgrounds"
R1 canon Carbon, issue #7647 nomeia o mesmo caso fundador, verbatim: "The current link color for selected rows and rows with hover doesn't have enough visual contrast" → resposta: token mais escuro, #0043CE claro / #A6C8FF escuro
R2 mercado GOV.UK Elements #546 defeito idêntico — hover #2b8cc4 sobre branco = 3,72 — resolvido escurecendo a paleta em 2019
R2 mercado eBay Playbook define o véu de estado (4% por estado) e não diz nada sobre a legibilidade do conteúdo sobre o véu — o outro lado da conclusão do §71.2
R3 normas WebAIM, verbatim "the 3:1 contrast rule does not (or should not) apply to the hover, focus, or active states... the 4.5:1 (or 7:1) contrast requirement to the background does apply to all link states"

73.4 O contrato HV1-e e o token que nasceu#

# Cláusula Régua Natureza
HV1-e A tinta cujo piso foi verificado num ÚNICO fundo não serve a estado. Toda tinta consumida por controle tem de medir ≥4,5 (texto) contra todas as superfícies de interação que o design system declara — surface-subtle, action-neutral-hover, action-neutral-active, surface-sunken, row-selected-bg —, não só contra a página tabela tinta × superfície, medida no gêmeo norma, derivada da SC 1.4.3
token (gêmeos v1.19) claro escuro mede no claro
--seed-text-brand-strong #006C62 #66D1C2 6,32 página · 5,82 surface-subtle · 5,24 action-neutral-active · 5,89 row-selected-bg

NENHUM HEX NOVO: no claro é o valor de surface-brand-deep e de action-primary-hover; no escuro é o mesmo de text-brand (#66D1C2, que já media 8,31 a 10,16 sobre todas as superfícies escuras). No tema escuro nada muda de aparência em nenhum pixel.

(decisão registrada — ver Histórico da seção)

73.5 A gramática de consumo — onde este token entra, e onde NÃO entra#

situação tinta por quê
link/rótulo de marca em repouso, sobre a página text-link / text-brand 4,60, passa — nada muda
o mesmo link quando a linha muda de fundo (tr:hover, tr.selecionada) text-brand-strong 4,23 e 4,28 → 5,82 e 5,89
botão fantasma de marca no seu próprio sobrevoo text-brand-strong 4,23 → 5,82
tinta de marca sobre superfície suave em REPOUSO (surface-subtle #F2F6F9, surface-brand-subtle #E8FBF7) — chip preenchido (§22), avatar com inicial (§32), item ativo ou contador do shell (§46), rótulo de cabeçalho de folha text-brand-strong 4,23 e 4,28 → 5,82 e 5,89 — regra fixada por veredito (V-CT9 = a, 2026-09-15, MANIFESTO §224.1); censo CT-P9 (MANIFESTO §223.3): 208 de 208 HTML, zero ocorrências vivas
tinta de marca sobre superfície elevada branca text-brand surface-raised é #FFFFFF no claro: 4,60, passa
<strong>/<b> dentro de texto que já é 700 (título-insight do painel, h2 de bancada, contador em mono) text-brand-strong, peso herdado a casa não carrega 800/900: o bolder não tem face e o negrito é invisível; a ênfase passa a ser a tinta — veredito dele (V-FT2.1 = b, 2026-09-15, MANIFESTO §226.1); regra TP1-d-1 no §75.8
tema escuro, qualquer superfície text-brand ou text-brand-strong — mesmo valor 8,31 a 10,16, já passava

O QUE ESTE TOKEN NÃO RESOLVE, e é fronteira declarada: ele é tinta. Onde o defeito é a superfície carregar texto — a marca chapada #11B0A0 com texto branco em cima, 2,71 — a saída é a que o §5-d já fixou no gate de 2026-08-18: descer a superfície para surface-brand-strong #098475 (4,60), não escurecer a tinta. Ali a opção de tinta escura (#00352F, 4,99) foi a opção D e ficou VETADA pelo Rafael.

73.6 O achado que a HV1 NÃO pode ver — o estado de SELEÇÃO#

Ao consertar .linha-abrir, medi o par que a guarda não produz: text-link sobre row-selected-bg (#E8FBF7) = 4,28, abaixo do piso. A HV1 produz :hover e :active; ela nunca produz SELEÇÃO. É a outra metade do caso fundador do Carbon ("selected rows and rows with hover"), e entrou no mesmo conserto.

Fica como pendência de dimensão inteira (SE-P1): nenhum instrumento desta casa produz o estado de SELEÇÃO para medir contraste. A CT1 cobre repouso/hover/ativo/foco; a HV1 cobre hover/ativo. Seleção é estado de DADO, não de ponteiro — e por isso escapou dos dois eixos.

73.7 Os consertos, com número, e o que ficou intocado#

(registro movido para o Histórico da seção — REV-P7)

73.8 Pendências#

# Pendência Por que fica
HV-P6 a HV1-c não aplica o degrau de texto grande da SC 1.4.3 (≥24px, ou ≥18,66px com peso ≥700 → piso 3,00) medido: 0 vereditos mudariam hoje — o maior alvo que reprova mede 14px. Ficou de fora de propósito, para a prova de inércia do 41º defeito ser legível
SE-P1 nenhum instrumento produz o estado de SELEÇÃO para medir contraste é um eixo novo, não uma correção: seleção é estado de dado
CC-P9 as 46 folhas restantes do seed-design-system.html 24 da família amarelo/dourado (única pergunta de gate), 8 dos mostruários de cor do próprio documento, 6 dos números decorativos, 6 do defeito de régua da CC-P10, 2 defeitos reais dentro de mockup em SVG
CC-P10 o contraste-composicao.mjs resolve o fundo de elemento com gradiente subindo até o ancestral branco, em vez de recusar a medição como a HV1 faz medido no pixel: 6 folhas, 4 falsos positivos e 2 defeitos reais
ES-P1 nenhuma guarda mede COLISÃO DE ESPECIFICIDADE — todas medem o resultado ela já produziu três defeitos em três partes: o avatar da barra (§71.7), a página corrente da paginação e o título da coluna de marca
TK-P1 o bloco de tokens injetado declara de qual versão do gêmeo nasceu, e ninguém mede a defasagem medido: o acervo declara seis versões — v1.5 (1) · v1.7 (2) · v1.8 (1) · v1.9 (15) · v1.12 (1) · v1.17 (23) · v1.19 (3)
Esc