Componentes
73. HV-P5 FECHADA — a tinta de marca não sobrevive a NENHUMA superfície de interação, e isso é um número
seed-componentes.md v2.00 · §73seção 150 de 18473-hv-p5-fechada-a-tinta-de-marca-nao-sobrevive-a.md · MD5 c44c6b83Tí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
#098475alcanç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-hovereaction-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) |