Ir ao conteúdo
SEED engenhariaDesign System

Tokens · v1.23

317 tokens, uma fonte

Gerados do seed-tokens.json (formato DTCG) — o mesmo arquivo que produz o CSS, o registry do shadcn e o tokens.md dos agentes. Regra da casa: componente consome só a camada semântica; cores primitivas são repertório. Amostras nos dois temas; o botão copia o nome da variável.

Ver a paleta em rampas — uma linha por família, com âncoras e hex →

token (caminho no JSON)valor (claro / escuro)variável CSSdescrição
semantic.surface.page#FFFFFF / #0B1419--seed-surface-page fundo da pagina
semantic.surface.subtle#F2F6F9 / #141D23--seed-surface-subtle faixas alternadas, fundos de secao
semantic.surface.raised#FFFFFF / #1D272D--seed-surface-raised cards; parear com shadow.raised
semantic.surface.sunken#E3EBF0 / #0B1419--seed-surface-sunken areas rebaixadas (wells, code blocks)
semantic.surface.overlay#FFFFFF / #273137--seed-surface-overlay popovers, menus; parear com shadow.overlay
semantic.surface.brand#11B0A0 / #11B0A0--seed-surface-brand faixas de marca; texto branco apenas 24px+/bold 19px+ (3.22:1)
semantic.surface.brand-subtle#E8FBF7 / #1A3833--seed-surface-brand-subtle superficie de marca SUTIL — balao de mensagem propria, faixa de destaque leve. Nasce em 2026-08-17 pelo defeito BT-P6: nao existia semantico para isso e o artefato alcancou a primitiva --seed-turquesa-50, que nao inverte com o tema (par media 1,14 no escuro contra piso 3,00). Medido contra --seed-text-primary: 12,79 claro e 10,40 escuro, piso de texto 4,50
semantic.surface.brand-strong#098475 / #098475--seed-surface-brand-strong v1.17: superficie de marca que CARREGA TEXTO — turquesa-600, igual nos dois temas. Texto branco mede 4,60; a fronteira do controle contra a pagina mede 4,60 no claro, 4,05 sobre a pagina escura e 3,31 sobre a superficie elevada escura, todas acima do piso 3,00 da SC 1.4.11. A marca CHAPADA (surface.brand #11B0A0) continua a ancora visual e fica reservada para area SEM texto funcional.
semantic.surface.brand-deep#006C62 / #005048--seed-surface-brand-deep capas e secoes profundas; substitui o hex nao-oficial #0d8f82
semantic.surface.inverse#242E34 / #F2F6F9--seed-surface-inverse
semantic.text.primary#0B3330 / #DDECE8--seed-text-primary titulos e texto de alta enfase; substitui o #2a3942 ad-hoc do DS v1
semantic.text.secondary#2F5A54 / #A3C4BE--seed-text-secondary corpo de texto padrao
semantic.text.muted#40706A / #8FB5AD--seed-text-muted metadados, placeholders, captions - nunca corpo
semantic.text.disabled#90A6B3 / #617683--seed-text-disabled
semantic.text.brand#098475 / #66D1C2--seed-text-brand texto na cor da marca com AA garantido
semantic.text.brand-strong#006C62 / #66D1C2--seed-text-brand-strong v1.19 (2026-08-20, HV-P5): TINTA DE MARCA QUE SOBREVIVE A SUPERFICIE DE INTERACAO. text.brand mede 4,60 sobre a pagina branca — 0,10 acima do piso 4,5 — e cai abaixo do piso no instante em que a superficie deixa de ser branco puro: 4,23 sobre surface.subtle e action-neutral-hover (#F2F6F9) e 3,81 sobre action-neutral-active e surface.sunken (#E3EBF0). Medido: para #098475 alcancar 4,5 o fundo precisa de luminancia >= 0,978, ou seja o cinza neutro mais escuro que serve e #FDFDFD — NAO EXISTE superficie de interacao possivel para aquela tinta. Este token e a saida: #006C62 no claro mede 6,32 na pagina, 5,82 sobre surface.subtle e 5,24 sobre action-neutral-active. NENHUM HEX NOVO: o claro e o valor de surface.brand-deep e action.primary-hover, o escuro e o mesmo de text.brand (#66D1C2, que ja media 8,31 a 10,16 sobre todas as superficies escuras — no tema escuro nada muda). PRECEDENTE DE MERCADO: o Carbon (IBM) tem exatamente este par — $link-primary (Blue 60 #0f62fe) e $link-primary-hover (Blue 70 #0043ce), mais $link-secondary (Blue 70) descrito como "secondary link color for lower contrast backgrounds" — e a issue #7647 do Carbon nomeia o caso fundador com estas palavras: "the current link color for selected rows and rows with hover doesn't have enough visual contrast". NORMA: SC 1.4.3 vale em TODOS os estados (WebAIM, verbatim: "the 4.5:1 (or 7:1) contrast requirement to the background does apply to all link states"). ALTERNATIVA DESCARTADA, com numero: reusar action.primary-hover como tinta PASSA (5,24 a 12,85 em todas as superficies dos dois temas) e foi recusada por acoplamento de proposito — e token de FUNDO de botao; uma mudanca futura no sobrevoo do botao moveria a tinta do link em silencio. E o mesmo criterio que na v1.18 recusou action-ghost-hover para o sobrevoo neutro.
semantic.text.inverse#FFFFFF / #242E34--seed-text-inverse
semantic.text.on-brand#00352F / #00352F--seed-text-on-brand v1.15 (MR-P1): tinta sobre a marca CHAPADA (surface.brand #11B0A0). ESCURA nos dois temas porque a marca chapada nao inverte. Mede 4,99. ANTES da v1.15 este token valia #FFFFFF no claro e a sua descricao dizia texto sobre action.primary: um unico token servia tres fundos de marca com necessidades opostas, e branco sobre #11B0A0 mede 2,71, que reprova ate o piso 3,00 do texto grande. Quem serve o botao primario agora e on-action-primary.
semantic.text.on-brand-deep#FFFFFF / #FFFFFF--seed-text-on-brand-deep v1.15 (MR-P2): tinta sobre a marca PROFUNDA (surface.brand-deep #006C62 no claro, #005048 no escuro). BRANCA nos dois temas: mede 6,32 no claro e 9,37 no escuro. Nasce de defeito medido: com a tinta unica anterior o escuro punha #00352F sobre #005048 e media 1,45, em tres textos do tela-tabela.
semantic.text.on-brand-strong#FFFFFF / #FFFFFF--seed-text-on-brand-strong v1.17 (MR-P1, decisao do Rafael pela opcao B): tinta sobre surface.brand-strong (turquesa-600 #098475). BRANCA nos dois temas, mede 4,60. Foi a forma de manter o texto branco sobre a marca, que era o pedido, sem reprovar a SC 1.4.3 — o branco sobre a marca chapada #11B0A0 mede 2,71.
semantic.text.on-action-destructive#FFFFFF / #521112--seed-text-on-action-destructive v1.16 (AD-P1): tinta sobre o BOTAO destrutivo (action.destructive #C6393B no claro, #FC6F6A no escuro). Inverte com o tema: mede 5,19 no claro e 5,26 no escuro; no hover, 7,18 e 7,21. Nasce de defeito medido: antes da v1.16 a tinta ali era branca literal e media 2,76 no escuro, porque a superficie de acao CLAREIA no tema escuro. Mesma forma do papel on-error do Material Design 3.
semantic.text.on-action-primary#FFFFFF / #00352F--seed-text-on-action-primary v1.15: tinta sobre o BOTAO primario (action.primary #098475 no claro, #66D1C2 no escuro). Inverte com o tema: mede 4,60 no claro e 7,39 no escuro. Estes sao exatamente os valores que on-brand tinha antes da v1.15, entao o botao primario NAO muda de aparencia nesta edicao.
semantic.text.link#098475 / #66D1C2--seed-text-link
semantic.border.subtle#E3EBF0 / #38464F--seed-border-subtle
semantic.border.default#C8D6DF / #4D606C--seed-border-default
semantic.border.strong#90A6B3 / #788F9D--seed-border-strong
semantic.border.interactive#788F9D / #788F9D--seed-border-interactive v1.12 (fecha SH-P1/PN-P5): fronteira de componente interativo, SC 1.4.11 piso 3:1. Promocao do emprestimo declarado do cinza-500 no campo de busca do shell — medido >=3 nas seis superficies dos dois temas. Slot dark declarado de proposito (mesmo valor hoje por medicao, nao por lei de invariancia).
semantic.border.focus#00A192 / #66D1C2--seed-border-focus anel de foco - sempre visivel, 2px + offset
semantic.action.primary#098475 / #66D1C2--seed-action-primary fundo do botao primario. Light: verde institucional #098475 (4.60:1 com branco). Dark: turquesa-300 com texto turquesa-900 (7.39:1)
semantic.action.primary-hover#006C62 / #9CE4D8--seed-action-primary-hover
semantic.action.primary-active#005048 / #11B0A0--seed-action-primary-active
semantic.action.secondary-bg#E8FBF7 / #1A3833--seed-action-secondary-bg
semantic.action.secondary-text#006C62 / #66D1C2--seed-action-secondary-text
semantic.action.ghost-hover#F2F6F9 / #1D272D--seed-action-ghost-hover
semantic.action.neutral-hover#F2F6F9 / #141D23--seed-action-neutral-hover HV1 (v1.18, 2026-08-19): SOBREVOO de controle NEUTRO, qualquer que seja a superficie neutra sob ele. Nasce de medicao: 619 de 1.410 controles ativos do acervo nao tinham NENHUMA resposta ao ponteiro. Sem hex novo — e o valor de surface-subtle nos dois temas; o que nasce e o PROPOSITO com nome. NAO se reusou action-ghost-hover porque no tema escuro ele vale #1D272D, igual a surface-raised, e o hover ficaria invisivel sobre a barra elevada do shell.
semantic.action.neutral-active#E3EBF0 / #0B1419--seed-action-neutral-active HV1 (v1.18, 2026-08-19): PRESSIONADO de controle NEUTRO — um passo ADIANTE do sobrevoo, na mesma direcao, que e o canon convergente de Material Design 3, Adobe Spectrum (que registra hover e down como estados INDEPENDENTES), eBay Playbook (hover 8%, press 12%) e Sainsbury's. Nasce de medicao: 1.350 de 1.410 controles ativos tinham o pressionado indistinguivel do sobrevoo — o mesmo buraco que o shadcn/ui, stack de producao do ERP, deixa por nao definir active. Sem hex novo: e o valor de surface-sunken nos dois temas.
semantic.action.destructive#C6393B / #FC6F6A--seed-action-destructive
semantic.action.destructive-hover#A5272A / #FF9C95--seed-action-destructive-hover
semantic.accent.highlight#FAD61D / #FAD61D--seed-accent-highlight acento oficial de marca - grifos, marcadores, detalhes de enfase; sempre com texto/elemento escuro por cima
semantic.accent.highlight-subtle#FFF6D2 / #3A3410--seed-accent-highlight-subtle fundo de grifo suave (marca-texto)
semantic.accent.on-highlight#242E34 / #242E34--seed-accent-on-highlight texto sobre o acento amarelo - sempre escuro, nunca branco (9.70:1)
semantic.feedback.success-bg#E8FBF7 / #00352F--seed-feedback-success-bg
semantic.feedback.success-text#006C62 / #9CE4D8--seed-feedback-success-text
semantic.feedback.success-border#66D1C2 / #006C62--seed-feedback-success-border
semantic.feedback.success-solid#098475 / #11B0A0--seed-feedback-success-solid
semantic.feedback.warning-bg#FFF4E4 / #3D2800--seed-feedback-warning-bg
semantic.feedback.warning-text#5B3E00 / #FECA76--seed-feedback-warning-text
semantic.feedback.warning-border#F9B11C / #7B5500--seed-feedback-warning-border
semantic.feedback.warning-solid#F9B11C / #F9B11C--seed-feedback-warning-solid
semantic.feedback.danger-bg#FFF2F1 / #521112--seed-feedback-danger-bg
semantic.feedback.danger-text#A5272A / #FFC2BD--seed-feedback-danger-text
semantic.feedback.danger-border#FF9C95 / #A5272A--seed-feedback-danger-border
semantic.feedback.danger-solid#C6393B / #FC6F6A--seed-feedback-danger-solid
semantic.feedback.info-bg#ECF4FC / #003241--seed-feedback-info-bg
semantic.feedback.info-text#006783 / #96E0FD--seed-feedback-info-text
semantic.feedback.info-border#53C2E9 / #006783--seed-feedback-info-border
semantic.feedback.info-solid#0099C1 / #53C2E9--seed-feedback-info-solid
semantic.chart.cat-1#00A192 / #66D1C2--seed-chart-cat-1 Categorica ESTENDIDA v1.5 (supersede da v1.0; valores e medicoes na secao 3c do seed-tokens.md). Sequencia obrigatoria: turquesa -> dourado -> magenta -> azul -> violeta -> azul-800; 5 familias de matiz, nenhuma repete antes da 6a posicao. Magenta (#CD518B light / #E8A1C2 dark) e violeta (#966AC8 / #BD9CE2) sao matizes EXCLUSIVOS de dado: nunca aparecem em UI e nao tem rampa primitiva no 2.1 de proposito. cat-2 (dourado, 1.85 vs branco) so em area grande com rotulo direto - vetado como fill solitario. O cinza saiu da categorica (exclusivo de chart-no-data).
semantic.chart.cat-2#F9B11C / #F9B11C--seed-chart-cat-2
semantic.chart.cat-3#CD518B / #E8A1C2--seed-chart-cat-3
semantic.chart.cat-4#0099C1 / #53C2E9--seed-chart-cat-4
semantic.chart.cat-5#966AC8 / #BD9CE2--seed-chart-cat-5
semantic.chart.cat-6#004C61 / #96E0FD--seed-chart-cat-6
semantic.chart.positive#00A192 / #66D1C2--seed-chart-positive
semantic.chart.negative#D94545 / #FC6F6A--seed-chart-negative
semantic.chart.grid#E3EBF0 / #38464F--seed-chart-grid
semantic.chart.axis#788F9D / #90A6B3--seed-chart-axis
semantic.chart.seq-1#CDF3EC / #005048--seed-chart-seq-1 Sequencial 7 classes. Light 100->900 (pula 500 e 700); dark 800->100 (pula 300 e 900). Semantica: valor cresce, tinta cresce (light) / valor cresce, luz cresce (dark). ISENCAO WCAG 1.4.11 declarada (a norma isenta heatmap); condicoes obrigatorias: valor acessivel por rotulo/tooltip/tabela, fronteira por chart-grid, legenda com limites numericos. Escala decidida no gate visual de 2026-08-09: a proposta 50->800 foi reprovada porque os dois primeiros stops liam como CINZA, ambiguos com 'sem dado'.
semantic.chart.seq-2#9CE4D8 / #006C62--seed-chart-seq-2
semantic.chart.seq-3#66D1C2 / #098475--seed-chart-seq-3
semantic.chart.seq-4#11B0A0 / #00A192--seed-chart-seq-4
semantic.chart.seq-5#098475 / #11B0A0--seed-chart-seq-5
semantic.chart.seq-6#005048 / #9CE4D8--seed-chart-seq-6
semantic.chart.seq-7#00352F / #CDF3EC--seed-chart-seq-7
semantic.chart.no-data#E3EBF0 / #38464F--seed-chart-no-data Celula/regiao SEM MEDICAO. REGRA DURA: sempre com HACHURA DIAGONAL (padrao repetido ~45 graus), nunca cor lisa. O cinza e EXCLUSIVO deste papel em qualquer grafico SEED — nenhuma escala de valor pode usa-lo. A hachura garante que a distincao 'gerou pouco x nao reportou' nunca dependa de cor (1.4.1), inclusive em grayscale e impresso. A legenda ganha o item 'sem medicao' sempre que houver celula no-data.
semantic.chart.no-data-hatch#617683 / #90A6B3--seed-chart-no-data-hatch Tinta das LINHAS da hachura do no-data (NOVO na v1.7). Papel proprio, token proprio: a errata E3 provou que papel de desenho sem token proprio acaba tomando emprestado o token de outro papel — a hachura desenhava em chart-cat-5-stroke, que a v1.5 tornou VIOLETA, no lugar mais sensivel possivel, porque 'sem medicao' e exatamente o que nao pode parecer categoria. A correcao apontou para chart-axis e QUEBROU A MEDICAO: cinza-500 mede 2.80 contra o preenchimento cinza-100, abaixo do piso de 3:1 do 1.4.11. Valores atuais medidos contra o proprio preenchimento: 3.93 (light) e 3.84 (dark). Descartado consumir o primitivo cinza-700 direto (5.43, passa): repetiria a estrutura do erro, emprestando de um primitivo em vez de emprestar de uma categoria.
semantic.chart.geo-base#F2F6F9 / #141D23--seed-chart-geo-base Territorio de CONTEXTO de um mapa (NOVO na v1.8): a area geografica que NAO e objeto de medicao. Papel proprio, token proprio, pelo mesmo racional que criou o no-data-hatch na v1.7 (errata E3): papel de desenho sem token proprio acaba tomando emprestado o de outro papel. Num mapa existem TRES cinzas — contexto, sem medicao e com dado — e num grafico de barras existem so DOIS; o terceiro papel nasce aqui. Valor identico ao surface-subtle vigente, o que e proposital: o que muda nao e a cor, e a responsabilidade de mante-la. Medido contra a fronteira geografica: 3.11 (light) e 6.74 (dark), ambos >=3.
semantic.chart.geo-boundary#788F9D / #90A6B3--seed-chart-geo-boundary Fronteira de municipio desenhada num mapa (NOVO na v1.8). Ela PORTA INFORMACAO — e a linha que responde 'o que esta dentro deste municipio' — logo entra no piso de 3:1 do WCAG 1.4.11. NAO consome chart-grid: medicao de 2026-08-11 mostrou que chart-grid tem o MESMO HEX de chart-no-data nos dois temas (#E3EBF0 light, #38464F dark), o que faz a fronteira desaparecer sobre um municipio sem medicao (razao 1.00). NAO consome chart-axis por emprestimo: no tema escuro chart-axis tem o mesmo hex do chart-no-data-hatch (#90A6B3), e emprestar repetiria a estrutura da errata E3. Medido contra o territorio de contexto: 3.11 (light) e 6.74 (dark).
semantic.chart.div-neg-3#A5272A / #FF9C95--seed-chart-div-neg-3 Divergente 7 posicoes: vermelho <-> neutro <-> turquesa. Alinhada por construcao ao par chart-positive/chart-negative da v1.0 (os stops +-2 SAO turquesa-500 e vermelho-500). REGRA DA ZONA-ZERO (declaracao, nao isencao): as posicoes +-1 e o zero representam 'perto de zero' e aproximar-se do fundo E a semantica; consequencia dura: dado cuja distincao do fundo e necessaria ao entendimento NUNCA usa sozinho +-1/zero — leva borda chart-axis ou rotulo de valor. As posicoes plenas (+-2, +-3) passam o gate 3:1 medido nos 2 modos.
semantic.chart.div-neg-2#D94545 / #D94545--seed-chart-div-neg-2
semantic.chart.div-neg-1#FFC2BD / #7A1C1E--seed-chart-div-neg-1
semantic.chart.div-zero#E3EBF0 / #38464F--seed-chart-div-zero
semantic.chart.div-pos-1#9CE4D8 / #005048--seed-chart-div-pos-1
semantic.chart.div-pos-2#00A192 / #00A192--seed-chart-div-pos-2
semantic.chart.div-pos-3#005048 / #66D1C2--seed-chart-div-pos-3
semantic.chart.cat-1-stroke#098475 / #66D1C2--seed-chart-cat-1-stroke Variante de STROKE para traco fino (linha <=3px, marcador pequeno — o pior caso do 1.4.11). REGRA DE CONSUMO: grafico de linha e sparkline usam cat-N-stroke; barra, area e fatia usam cat-N (fill). O fill v1.0 fica INTOCADO. Nasceu de remedicao que reprovou cat-1 (2.71), cat-2 (1.85) e cat-5 (2.53) contra branco; os pares dark nasceram do achado V2 do render de 2026-08-09 (cat-4-stroke light lia a ~2:1 no fundo escuro). DEPENDENCIA DECLARADA: no dark, cat-2 e cat-6 comprimem para stops vizinhos da rampa dourado (300/100) — a distincao mutua dessas duas series em modo escuro e sustentada pelo tracejado/marcador (1.4.1), nunca so pela cor.
semantic.chart.cat-2-stroke#B67F00 / #F9B11C--seed-chart-cat-2-stroke
semantic.chart.cat-3-stroke#B23871 / #E8A1C2--seed-chart-cat-3-stroke
semantic.chart.cat-4-stroke#0099C1 / #53C2E9--seed-chart-cat-4-stroke
semantic.chart.cat-5-stroke#7B42BD / #BD9CE2--seed-chart-cat-5-stroke
semantic.chart.cat-6-stroke#004C61 / #96E0FD--seed-chart-cat-6-stroke
semantic.gauge.track#C8D6DF / #4D606C--seed-gauge-track Trilha de fundo. Decorativa em si; o contraste exigido e do VALOR contra ela.
semantic.gauge.value#098475 / #66D1C2--seed-gauge-value 3.09 vs track e 4.60 vs branco (light); 3.58 vs track e 10.16 vs page (dark).
semantic.gauge.range-ok#098475 / #66D1C2--seed-gauge-range-ok = feedback-success-solid; herda as medicoes de gauge.value.
semantic.gauge.range-warning#986900 / #F9B11C--seed-gauge-range-warning 3.25 vs track e 4.82 vs branco (light); 3.54 vs track e 10.04 vs page (dark).
semantic.gauge.range-critical#C6393B / #FF9C95--seed-gauge-range-critical 3.49 vs track (light); 3.26 vs track e 9.25 vs page (dark).
semantic.rail.backgroundlinear-gradient(180deg, #006C62 0%, #005048 100%)--seed-rail-background CP20 adotado no gate G2 (2026-08-14): gradiente linear entre dois degraus adjacentes da rampa da marca (turquesa-700 -> turquesa-800). Tinta branca passa NOS DOIS EXTREMOS, nao na media: 6.32 e 9.37. Semantico proprio porque sem ele o tema escuro vira regra manual (custo C13: ClickUp escreveu 22 regras a mao).
semantic.chrome.overlay-hoverrgba(255, 255, 255, 0.12)--seed-chrome-overlay-hover Hover de item do rail: veu branco a 12% (valor que o shell ja praticava). Rotulo branco sobre a COMPOSICAO (overlay sobre os dois extremos do gradiente): 4.88 e 6.82, ambos >=4.5.
semantic.chrome.overlay-activergba(255, 255, 255, 0.14)--seed-chrome-overlay-active Estado pressionado de item do rail: veu branco a 14% (valor que o preview da composicao ja praticava). Rotulo branco sobre a composicao: 4.68 e 6.50, ambos >=4.5. O item ATIVO (aria-current) continua sendo a pilula clara do SH15-b — este token e o pressed, nao o current.
semantic.entity.1#11B0A0--seed-entity-1 E1 turquesa-400 vivo, tinta escura (cinza-900). Admissao CP22 medida: 5.11
semantic.entity.1-ink#242E34--seed-entity-1-ink Tinta declarada da posicao E1 (CP22: verificacao na definicao da paleta, nunca em render).
semantic.entity.2#D49400--seed-entity-2 E2 dourado-400 vivo, tinta escura. Medido: 5.30
semantic.entity.2-ink#242E34--seed-entity-2-ink Tinta declarada da posicao E2 (CP22: verificacao na definicao da paleta, nunca em render).
semantic.entity.3#01B3E0--seed-entity-3 E3 azul-400 vivo, tinta escura. Medido: 5.63
semantic.entity.3-ink#242E34--seed-entity-3-ink Tinta declarada da posicao E3 (CP22: verificacao na definicao da paleta, nunca em render).
semantic.entity.4#005048--seed-entity-4 E4 turquesa-800 profundo, tinta branca. Medido: 9.37
semantic.entity.4-ink#FFFFFF--seed-entity-4-ink Tinta declarada da posicao E4 (CP22: verificacao na definicao da paleta, nunca em render).
semantic.entity.5#006783--seed-entity-5 E5 azul-700 profundo, tinta branca. Medido: 6.43
semantic.entity.5-ink#FFFFFF--seed-entity-5-ink Tinta declarada da posicao E5 (CP22: verificacao na definicao da paleta, nunca em render).
semantic.entity.6#7B5500--seed-entity-6 E6 dourado-700 profundo, tinta branca. Medido: 6.68
semantic.entity.6-ink#FFFFFF--seed-entity-6-ink Tinta declarada da posicao E6 (CP22: verificacao na definicao da paleta, nunca em render).
semantic.marker.now#098475--seed-marker-now CP24 (gate G4): marcador de AGORA em turquesa-600, MESMO hex nos dois temas — terceiro membro nomeado da classe invariante de tema (SH15/DG12/CP24). Medido >=3.0 (non-text, SC 1.4.11) contra as cinco superficies canonicas: 4.60/4.23/4.05/3.72/3.31. Em telas sobre o passado o marcador NAO aparece (C16).
semantic.row-selected.bg#E8FBF7 / #00352F--seed-row-selected-bg v1.13 (F7.2, fecha a lacuna achada na producao do gabarito A2): realce da LINHA SELECIONADA em lista e tabela. Nasce porque o realce nao pode ser um primitivo fixo — turquesa-100 mede 1,57 contra a tinta do tema escuro — e porque a bancada banco-dados.html ja havia inventado estes tres nomes LOCALMENTE, sem definicao no gemeo: o nome existia no sistema sem dono. Valores identicos aos que a bancada usava (adicao pura: nenhum valor anterior muda). Par medido: bg x text = 12,53 claro / 11,12 escuro; border x bg = 3,42 / 4,64.
semantic.row-selected.text#242E34 / #E3EBF0--seed-row-selected-text v1.13 (F7.2, fecha a lacuna achada na producao do gabarito A2): realce da LINHA SELECIONADA em lista e tabela. Nasce porque o realce nao pode ser um primitivo fixo — turquesa-100 mede 1,57 contra a tinta do tema escuro — e porque a bancada banco-dados.html ja havia inventado estes tres nomes LOCALMENTE, sem definicao no gemeo: o nome existia no sistema sem dono. Valores identicos aos que a bancada usava (adicao pura: nenhum valor anterior muda). Par medido: bg x text = 12,53 claro / 11,12 escuro; border x bg = 3,42 / 4,64.
semantic.row-selected.border#098475 / #66D1C2--seed-row-selected-border v1.13 (F7.2, fecha a lacuna achada na producao do gabarito A2): realce da LINHA SELECIONADA em lista e tabela. Nasce porque o realce nao pode ser um primitivo fixo — turquesa-100 mede 1,57 contra a tinta do tema escuro — e porque a bancada banco-dados.html ja havia inventado estes tres nomes LOCALMENTE, sem definicao no gemeo: o nome existia no sistema sem dono. Valores identicos aos que a bancada usava (adicao pura: nenhum valor anterior muda). Par medido: bg x text = 12,53 claro / 11,12 escuro; border x bg = 3,42 / 4,64.
semantic.field.height-sm32px--seed-field-height-sm §2.5 l.388 — altura sm do controle, fixada pela spec (densidade desktop).
semantic.field.height-md44px--seed-field-height-md §2.5 l.388 — altura md (padrao): alvo de toque WCAG, igual botao. Decisao explicita da spec: 'md = 44px (nao 40px)' (§1.9/§2.2 do seed-componentes.md). DIFERE de proposito da regua generica --seed-control-md (40px, v1.14) — coexistencia declarada no gemeo CSS; reconciliar e decisao de canonico.
semantic.field.height-lg52px--seed-field-height-lg §2.5 l.388 — altura lg do controle, fixada pela spec.
semantic.field.radius8px--seed-field-radius §2.5 l.389 — alias de radius-md (que aponta radius-4 = 8px).
semantic.field.gap8px--seed-field-gap §2.5 l.390 — alias de sp-2. Rotulo->controle e controle->mensagem.
semantic.field.stack-gap24px--seed-field-stack-gap §2.5 l.391 — alias de sp-6. Campo->campo confortavel; o denso (ERP) usa sp-4 (16px) por regra de layout, nao por token proprio.
semantic.field.bg#FFFFFF / #1D272D--seed-field-bg §2.5 l.394/413 — fundo do controle: surface-page no claro, surface-raised no escuro.
semantic.field.label#242E34 / #E3EBF0--seed-field-label §2.5 l.395/414 — rotulo do campo: cinza-900 (13,86:1) / cinza-100 (14,16:1).
semantic.field.value#242E34 / #E3EBF0--seed-field-value §2.5 l.396/415 — valor digitado: cinza-900 (13,86:1) / cinza-100 (12,61:1 sobre o campo raised).
semantic.field.placeholder#617683 / #90A6B3--seed-field-placeholder §2.5 l.397/416 — placeholder: cinza-600 (4,74:1, AA e distinto do valor) / cinza-400 (6,01:1).
semantic.field.optional-text#617683 / #90A6B3--seed-field-optional-text §2.5 l.398/417 — sufixo '(opcional)' do rotulo: cinza-600 (4,74:1) / cinza-400.
semantic.field.help-text#4D606C / #ACBECA--seed-field-help-text §2.5 l.399/418 — texto auxiliar: cinza-700 (6,55:1, direcao GOV.UK 7:1) / cinza-300 (8,92:1).
semantic.field.border#788F9D / #788F9D--seed-field-border Borda default do campo — e ela que identifica o controle (SC 1.4.11). SUPERSEDE CD-P2 (2026-08-17, fechada; seed-componentes.md §66.4 e tabela vigente do §64.6-supersede) sobre a §2.5 l.400: o alias deixa de ser cinza-600 e vira --seed-border-interactive (cinza-500, mesmo hex nos dois temas). Motivo medido: o local degradava na inversao de tema (4,74 claro / 3,21 escuro), o semantico e equilibrado (3,13 claro / 5,05 escuro, ambos >=3). No escuro coincide com o que a §2.5 l.419 ja dizia. A bancada banco-formfield.html consome o alias desde CD-P2. As variantes de estado (-hover/-error/-success/-warning) NAO migram por decisao da propria CD-P2 (nao tem semantico proprio no gemeo) e seguem a §2.5.
semantic.field.border-hover#4D606C / #90A6B3--seed-field-border-hover §2.5 l.401/420 — borda no hover: cinza-700 / cinza-400 (6,01:1).
semantic.field.error-text#A5272A / #FF9C95--seed-field-error-text §2.5 l.402/421 — mensagem de erro: vermelho-700 (7,18:1) / vermelho-300 (8,49:1).
semantic.field.border-error#C6393B / #FC6F6A--seed-field-border-error §2.5 l.403/422 — borda no estado error: vermelho-600 (5,19:1) / vermelho-400 (5,52:1).
semantic.field.success-text#006C62 / #66D1C2--seed-field-success-text §2.5 l.404/423 — mensagem de success: turquesa-700 (6,32:1) / turquesa-300 (9,32:1).
semantic.field.border-success#098475 / #66D1C2--seed-field-border-success §2.5 l.405/424 — borda no estado success: turquesa-600 (4,60:1) / turquesa-300 (8,31:1).
semantic.field.readonly-bg#E3EBF0 / #0B1419--seed-field-readonly-bg §2.5 l.406/425 — fundo do readonly: surface-sunken nos dois temas (hoje cinza-100 no claro; o comentario da spec media cinza-50 — nota de divergencia registrada na emissao v1.21, o alias vence).
semantic.field.warning-text#7B5500 / #F9B11C--seed-field-warning-text §2.5 l.407/426 (emenda v0.7) — mensagem de warning: dourado-700 (6,68:1) / dourado-300 (9,22:1). Guarda-corpo da spec: warning e SO plausibilidade, nunca obrigatoriedade, nunca bloqueia submit.
semantic.field.border-warning#986900 / #F9B11C--seed-field-border-warning §2.5 l.408/427 (emenda v0.7) — borda no estado warning: dourado-600 (4,82:1) / dourado-300 (8,21:1).
semantic.button.radius8px--seed-button-radius §1.6 l.126 — alias de radius-md (que aponta radius-4 = 8px). Invariante de tema.
semantic.button.font-weight600--seed-button-font-weight §1.6 l.127 — alias de fw-semibold. Invariante de tema.
semantic.button.height-sm32px--seed-button-height-sm §1.6 l.128 — altura sm, fixada pela spec (densidade desktop). Coincide com --seed-control-sm e com --seed-field-height-sm: os tres valem 32px.
semantic.button.height-md44px--seed-button-height-md §1.6 l.129 — altura md (padrao), fixada pela spec como alvo de toque WCAG 2.5.8. ⚠ COLISAO DECLARADA E NAO RESOLVIDA, com os tres numeros lado a lado: --seed-button-height-md 44px = --seed-field-height-md 44px (v1.21, decisao explicita do canonico 'md = 44px (nao 40px)') CONTRA --seed-control-md 40px (v1.14, regua generica de altura de controle). Dois numeros para o mesmo degrau da escala. Emitido como a §1.6 fixa; reconciliar as duas reguas e decisao do Rafael, nao dos gemeos.
semantic.button.height-lg52px--seed-button-height-lg §1.6 l.130 — altura lg, fixada pela spec. ⚠ MESMA COLISAO da height-md: 52px (botao) = 52px (field) CONTRA --seed-control-lg 48px.
semantic.button.gap8px--seed-button-gap §1.6 l.131 — alias de sp-2. Espaco entre icone e rotulo dentro do botao. Invariante de tema.
semantic.button.secondary-border#098475 / #66D1C2--seed-button-secondary-border §1.6 l.135/143 — borda do botao secundario: turquesa-600 / turquesa-300. Medido nesta emissao: 4,28:1 sobre o action-secondary-bg claro e 6,92:1 sobre o tint dark, ambos acima do piso 3,00 da SC 1.4.11 (a spec declara 9,32 para o dark contra outra superficie de referencia).
semantic.button.secondary-text#005048 / #CDF3EC--seed-button-secondary-text §1.6 l.136/144 — rotulo do botao secundario: turquesa-800 / turquesa-100. Medido sobre o action-secondary-bg de cada tema: 8,73:1 claro e 10,64:1 escuro — o 10,64 confere EXATAMENTE com o numero que a spec anota na propria linha.
semantic.button.outline-border#617683 / #90A6B3--seed-button-outline-border §1.6 l.137/145 — borda do botao outline (fundo transparente): cinza-600 / cinza-400. Medido sobre a surface-page de cada tema: 4,74:1 claro e 7,35:1 escuro.
semantic.button.ghost-text#006C62 / #66D1C2--seed-button-ghost-text §1.6 l.138/146 — rotulo do botao fantasma: turquesa-700 / turquesa-300. Medido sobre a surface-page: 6,32:1 claro e 10,16:1 escuro. Este e o token que a propria spec usa para explicar por que o par dark e OBRIGATORIO: com o primitivo fixo do claro, o escuro mediria 2,7.
semantic.button.toggle-on-bg#005048 / #66D1C2--seed-button-toggle-on-bg §1.6 l.139/147 — placa solida do botao de alternancia LIGADO (§1.5.1: desligado = transparente/contorno sutil, ligado = placa solida): turquesa-800 / turquesa-300.
semantic.button.toggle-on-fg#FFFFFF / #00352F--seed-button-toggle-on-fg §1.6 l.140/148 — glifo/rotulo sobre a placa ligada. O claro e o UNICO valor de cor deste grupo que a spec FIXA em hex (#FFFFFF) em vez de nomear um alias; o dark e turquesa-900. Medido: 9,37:1 claro e 7,39:1 escuro (o 7,39 confere com o numero da spec).
semantic.card.bg#FFFFFF / #1D272D--seed-card-bg §26 l.1954 — fundo do cartao: alias de surface-raised nos dois temas.
semantic.card.border#E3EBF0 / #38464F--seed-card-border §26 l.1954 — contorno do cartao: alias de border-subtle. BORDA DECORATIVA DECLARADA, e a spec escreve por que: 1,21:1 no claro e 1,75:1 no escuro (remedidos nesta emissao contra a superficie de pagina de cada tema — o 1,75 e contra surface-subtle #141D23, que e o fundo real da bancada), abaixo do piso 3,00 da SC 1.4.11 DE PROPOSITO, porque a separacao e carregada por espaco + raio + mudanca de superficie + tipografia, e contorno nao e portador unico de informacao (mesmo racional do skeleton §19.2).
semantic.card.radius12px--seed-card-radius §26 l.1954 — 'radius lg': alias de radius-lg (que aponta radius-6 = 12px). Invariante de tema.
semantic.divider.color#E3EBF0 / #38464F--seed-divider-color §26-F l.1976 — linha divisoria: alias de border-subtle nos dois temas, decorativo declarado (1,21 claro / 1,75 escuro). O consumidor vivo banco-superficies.html declara exatamente isto.
semantic.divider.strong#C8D6DF / #4D606C--seed-divider-strong §26-F l.1976 = border-default nos DOIS temas. Divisor full-width enfatico, DECORATIVO DECLARADO: 1,49 sobre surface-page clara / 2,84 sobre surface-page escura. A linha da spec dizia 1,91 e esse numero nao sai de nenhuma superficie do tema.
semantic.list.hover#F2F6F9 / #273137--seed-list-hover §26-F l.2000 — realce de item sob o ponteiro. A spec escreve '(surface-subtle / #273137)': o claro por ALIAS e o escuro por HEX, e o hex #273137 e o surface-overlay do tema escuro, nao o surface-subtle (#141D23) — a assimetria e da spec e foi preservada de proposito, porque e o que os QUATRO consumidores vivos renderizam (banco-cn, banco-dados, banco-navegacao, banco-superficies). Reforco, nunca canal unico: o foco tem anel medido (§1). Medido nesta emissao: texto primary sobre o hover = 12,75:1 claro (confere com o numero da propria spec) e 10,90:1 escuro.
semantic.danger.item#A5272A / #FFC2BD--seed-danger-item §27 l.2181 — rotulo do item DESTRUTIVO dentro do painel de menu: vermelho-700 / vermelho-200. Remedido nesta emissao contra a superficie de overlay de cada tema: 7,18:1 e 8,67:1 — os DOIS numeros conferem exatamente com os pares que a propria spec anota como medidos pela contraste-navegacao.py. Consumidores vivos (banco-dados.html, banco-navegacao.html) ja declaram estes hex localmente.
semantic.wait.delay1000ms--seed-wait-delay §17 R3-c l.1687 — atraso antes de mostrar indicador de espera de REGIAO (regime 3). A spec fixa o numero por escrito ('default 1000ms') e fundamenta no limite de 1s de Nielsen, que pressupoe o clique reconhecido em <=0,1s pelo controle disparador (regime 1). Invariante de tema. A propria linha declara a revisao futura com telemetria real do ERP na Fase 4 — nas palavras dela, 'pendencia declarada, nao decisao aberta', e por isso o token nasce com valor em vez de ficar em lacuna.
semantic.typography-role.titulo-tela{"fontSize": "22px", "fontWeight": "800", "lineHeight": "1.25", "letterSpacing": "-0.3px"}v1.14 (retrofit RV1/RV3): H1 da regiao de conteudo. Unico por tela.
semantic.typography-role.titulo-secao{"fontSize": "16px", "fontWeight": "700", "lineHeight": "1.3", "letterSpacing": "-0.1px"}v1.14 (retrofit RV1/RV3): Cabecalho de peca, de grupo e de painel.
semantic.typography-role.corpo{"fontSize": "14px", "fontWeight": "400", "lineHeight": "1.5", "letterSpacing": "0px"}v1.14 (retrofit RV1/RV3): Texto de LEITURA (paragrafo, estado vazio, nota). lh 1.5 e o piso do SC 1.4.12.
semantic.typography-role.corpo-denso{"fontSize": "14px", "fontWeight": "400", "lineHeight": "1.3", "letterSpacing": "0px"}v1.14 (retrofit RV1/RV3): Texto de UI DENSA (celula de tabela, item de lista). lh apertado por decisao, nunca por omissao — o Carbon usa 1.28 no body-compact-01 pelo mesmo motivo.
semantic.typography-role.rotulo{"fontSize": "12px", "fontWeight": "600", "lineHeight": "1.35", "letterSpacing": "-0.15px"}v1.14 (retrofit RV1/RV3): Rotulo de controle, chip, contador, coluna. O ls negativo e ajuste optico: texto pequeno em peso alto empasta sem ele (medido no produto de referencia).
semantic.typography-role.micro{"fontSize": "11px", "fontWeight": "700", "lineHeight": "1.3", "letterSpacing": "-0.2px"}v1.14 (retrofit RV1/RV3): Microrrotulo em caixa alta: rail, caption, cabecalho de estatistica.
semantic.switch.off-bg#788F9D / #617683--seed-switch-off-bg §8.3 l.1292 = cinza-500 claro / cinza-600 escuro. Trilho DESLIGADO. 3,38:1 sobre a pagina e 3,38:1 sobre o thumb no claro; 3,92 e 3,93 no escuro. A spec dizia cinza-300 e dava 1,91 nos dois pares.
semantic.switch.on-bg#098475 / #66D1C2--seed-switch-on-bg §8.3 l.1292 = action-primary. Trilho LIGADO. 4,60:1 claro / 10,16:1 escuro. A spec apontava para --seed-action-primary-bg, token FANTASMA da FF-P2/FF-P3, e dizia turquesa-400 no escuro quando o valor e #66D1C2 = turquesa-300.
semantic.switch.thumb#FFFFFF / #E3EBF0--seed-switch-thumb §8.3 l.1292 — thumb DESLIGADO: branco fixado pela spec / cinza-100. 3,38:1 sobre o trilho off no claro, 3,93:1 no escuro.
semantic.switch.thumb-on#FFFFFF / #00352F--seed-switch-thumb-on §8.3 l.1292 = text-on-action-primary — thumb LIGADO. 4,60:1 claro / 7,39:1 escuro. E o token que NASCEU da medicao: no escuro, o thumb cinza-100 sobre o trilho ligado dava 2,25. No claro ele coincide com o thumb desligado, e isso e a regra colapsando, nao duplicacao.
semantic.slider.track#788F9D / #617683--seed-slider-track = cinza-500 claro / cinza-600 escuro. Trilho NAO preenchido. 3,38:1 / 3,92:1 sobre a pagina.
Esc