Cor
A paleta tokenizada do DS Razac: cores nomeadas por intenção (primary, ink, border, canal, semantic) que carregam significado, garantem contraste e mantêm as 5 telas do Portal 2.0 coerentes. Use tokens, nunca hex solto.
import { P2ChipDI, P2Tag } from '@/components/portal2/kit'Figma Hex espalhado direto na marcação (ex.: bg-[#4F46E5], text-[#16A34A]), cada tela escolhendo seu tom de verde/vermelho — sem fonte da verdade e sem garantia de contraste.
Escalas nomeadas no tailwind.config (primary, ink, border, canal, success/warning/danger/info) consumidas por classe semântica (bg-primary, text-ink-muted, bg-canal-verde). O hex que sobra é cor intencional de portal, não conversão pendente.
Primary (indigo)
Uma escala nomeada por intenção, não por valor: bg-primary é a ação, 50/100 são fundos suaves de chip/hover/selecionado, 700 é o hover do botão. Trocar a marca na V2 vira mudar o token — não caçar #4F46E5 tela a tela.
primary-50#EEF2FFprimary-100#E0E7FFprimary-200#C7D2FEprimary-500#6366F1primary#4F46E5primary-700#4338CAprimary-900#312E81Ink (texto)
Hierarquia de texto por token, nunca por opacidade: ink no título, ink-muted no secundário, ink-subtle no terciário/ícone, ink-inverse sobre fundo escuro. ink-muted sobre bg-surface foi calibrado para passar em WCAG AA (4,5:1) — opacidade aleatória não garante isso.
Aa título
text-ink#1E293BAa secundário
text-ink-muted#64748BAa terciário
text-ink-subtle#94A3B8Superfícies
Quatro fundos com papéis fixos: bg é o canvas, bg-surface é o cartão que "levanta" do canvas, bg-subtle é a zona suave (cabeçalho de tabela, hover), bg-sidebar é a casca escura. A diferença sutil entre bg e bg-surface é o que cria profundidade sem sombra pesada.
bg#F1F5F9bg-surface#FFFFFFbg-subtle#F8FAFCBordas
Três pesos de divisória: border padrão para contornos de card, border-strong para inputs/checkbox (precisam de mais presença para o alvo de clique ser óbvio) e border-subtle para linhas internas de tabela, que devem separar sem competir com o conteúdo.
border#E2E8F0Contorno de card
border-strong#CBD5E1Inputs e checkbox
border-subtle#F1F5F9Linhas de tabela
Canal DI
O vocabulário visual mais carregado de significado do produto: cada cor é um canal de parametrização da DI, não decoração. Por isso a cor nunca anda só — vem sempre com label e dot (P2ChipDI), porque ~8% dos homens têm daltonismo e canal errado custa caro. Clique para copiar o token.
Semânticas (status)
Cada status vem como PAR fg+bg já calibrado: success-fg sobre success-bg fecha contraste AA sem você adivinhar tons. Usar o par é o que impede o erro clássico de texto verde-vivo sobre verde-claro (ilegível). danger é destrutivo/erro; warning é atenção; info é neutro-informativo.
success-bg · #DCFCE7success-fg · #14532Dwarning-bg · #FFEDD5warning-fg · #7C2D12danger-bg · #FEE2E2danger-fg · #7F1D1Dinfo-bg · #DBEAFEinfo-fg · #1E3A8ATexto sobre cor
Pares testados em WCAG AA, com a armadilha explícita: canal-verde puro reprova em texto pequeno (~3,3:1) — por isso o delta verde do KPI usa #15803D, não o verde do chip. Branco fecha sobre primary/danger; #422006 (quase-preto âmbar) é o texto certo sobre o amarelo, porque branco sobre amarelo reprova.
text-white · AA ✓text-white · AA ✓amber-950 (não branco) · AA ✓#15803D em texto (não canal-verde)DS brand (grape)
O namespace ds (grape #7C3AED) é a marca da FERRAMENTA de Design System, não do produto — é o que separa "a casca do Storybook" das cores que pintam o portal. Mantê-lo isolado é o que permite a V2 trocar as cores do produto sem tocar na identidade do DS, e vice-versa.
ds-50#F5F3FFds-200#DDD6FEds-400#A78BFAds#7C3AEDds-700#6D28D9ds-900#4C1D95De-para (hoje → ideal)
Dois marcadores de anotação, não cores de UI: ds-legacy (âmbar = como é hoje) e ds-accent (ciano = como deve ser). Eles existem só para o manifesto/de-para narrar a migração visualmente, sem se confundir com warning (âmbar de status) nem com info (azul de status) do produto.
bg-[#4F46E5]ds-legacy · #F59E0Bbg-primaryds-accent · #22D3EE