ITpS

Estilos

Tokens

Reference completa dos semantic tokens (Layer 2) que componentes consomem via utility Tailwind. Para a paleta primitive (--itps-*), veja /estilos/cores.

Arquitetura

Duas camadas

Camada 1

Primitives

Paleta crua OKLCH com escala numérica 50–950. Sem semântica, sem estado. Não usar diretamente em componentes. Documentadas em /estilos/cores.

--itps-primary-900: oklch(0.66 0.18 25.9)

Camada 2

Semantic shadcn

Intenção. Mapeia primitives a roles do sistema (background, foreground, primary, card, popover, etc). Único contrato pra componentes via utility Tailwind.

--primary: var(--itps-primary-900)

Vocabulário ≠ intenção

#EB5E57 é cor. --primary é intenção. Trocar primitive sem tocar componente = refactor de 1 linha.

Dark mode = redefinir Layer 2

Semantic redefinida dentro de .dark{...}. Primitives --itps-* ficam fixos.

Sem state Layer

Hover/focus/active resolvidos via opacity modifier (bg-primary/90) ou redefinição local.

Reference

Tokens semantic

Cada token tem valor para light e dark mode lado a lado. Quando o valor de dark é omitido (badge inherits light), o token mantém o mesmo valor em ambos os modos — comum para cores de identidade (primary coral, ring).

Surfaces

Backgrounds da aplicação. Pares foreground definem o texto que vai sobre cada superfície. Tokens com `-foreground` sempre passam contraste WCAG AA contra a superfície correspondente.

--background → --itps-base-0 / --itps-base-900
light #FFFFFF
dark #1A1A1A

Canvas raiz da aplicação (body, layout)

--foreground → --itps-base-950 / --itps-base-50
light #000000
dark #FAFAFA

Texto principal sobre background

--card → --itps-base-50 / --itps-base-800
light #FAFAFA
dark #333333

Canvas elevado para cards e painéis

--card-foreground → --itps-base-950 / --itps-base-50
light #000000
dark #FAFAFA

Texto sobre card

--popover → --itps-base-0 / --itps-base-800
light #FFFFFF
dark #333333

Background de popover, dropdown, tooltip

--popover-foreground → --itps-base-950 / --itps-base-50
light #000000
dark #FAFAFA

Texto sobre popover

--muted → --itps-base-100 / --itps-base-800
light #F0F0F0
dark #333333

Container interativo subtle (chip, tag, hover state)

--muted-foreground → --itps-base-700 / --itps-base-300
light #5C5C5C
dark #B3B3B3

Texto secundário (label, helper text, timestamp)

Brand

Cores de identidade Sinapse. Primary = coral (CTA principal). Secondary = azul institucional. Accent = neutro esverdeado. Destructive = mesmo coral do primary (single source pra danger).

--primary → --itps-primary-900
light #EB5E57
dark #EB5E57
inherits light

CTA principal, botões primary, links de destaque

--primary-foreground → --itps-base-950
light #000000
dark #000000
inherits light

Texto sobre primary (preto = 6.27:1 AA sobre coral)

--secondary → --itps-secondary-100 (light)
light #E8EFF6
dark oklch(0.28 0.05 252)

Tinted surface azul institucional

--secondary-foreground → --itps-secondary-950 / --itps-secondary-300
light #0A2D5C
dark #BAD0E6

Texto sobre secondary

--accent → --itps-terciary-100 (light)
light #DFE7E7
dark oklch(0.30 0.01 197)

Tinted surface neutro esverdeado (highlights sutis)

--accent-foreground → --itps-base-950 / --itps-base-50
light #000000
dark #FAFAFA

Texto sobre accent

--destructive → --itps-primary-900
light #EB5E57
dark #EB5E57
inherits light

Botões/áreas de ação destrutiva (delete, remove)

--destructive-foreground → --itps-base-950
light #000000
dark #000000
inherits light

Texto sobre destructive (preto = 6.27:1 AA)

Feedback

Cores semânticas de status. Em dark mode, success/info usam primitives mais claros para preservar contraste. Warning usa preto sobre amarelo (12.91:1 AAA) em ambos modos.

--danger → --itps-primary-900
light #EB5E57
dark #EB5E57
inherits light

Alias de destructive — feedback negativo crítico

--danger-foreground → --itps-base-950
light #000000
dark #000000
inherits light

Texto sobre danger

--success → --itps-success-900 / --itps-success-600
light #00804D
dark #79D2AF

Estado de sucesso (verde)

--success-foreground → --itps-base-0 / --itps-base-950
light #FFFFFF
dark #000000

Texto sobre success

--warning → --itps-alert-900
light #F0C653
dark #F0C653
inherits light

Atenção / não-crítico (amarelo)

--warning-foreground → --itps-base-950
light #000000
dark #000000
inherits light

Texto sobre warning (12.91:1 AAA)

--info → --itps-secondary-900 / --itps-secondary-400
light #1961AC
dark #88B1DD

Mensagens informativas (azul)

--info-foreground → --itps-base-0 / --itps-base-950
light #FFFFFF
dark #000000

Texto sobre info

Borders & Inputs

Tokens estruturais para separação visual e estados de foco. `ring` é o anel de focus (acessibilidade) — sempre coral primary.

--border → --itps-base-100 / --itps-base-800
light #F0F0F0
dark #333333

Bordas default (cards, dividers, separators)

--input → --itps-base-100 / --itps-base-800
light #F0F0F0
dark #333333

Borda de inputs e form controls

--ring → --itps-primary-900
light #EB5E57
dark #EB5E57
inherits light

Focus ring (a11y) — sempre coral em ambos modos

Charts

5 slots categóricos para dashboards epidemiológicos (vírus, regiões, períodos). Mapeados a primitives — refinar quando dashboards forem implementados.

--chart-1 → --itps-secondary-900
light #1961AC
dark #1961AC
inherits light

Série 1 — azul institucional

--chart-2 → --itps-success-800
light #09AA69
dark #09AA69
inherits light

Série 2 — verde

--chart-3 → --itps-alert-900
light #F0C653
dark #F0C653
inherits light

Série 3 — amarelo

--chart-4 → --itps-primary-900
light #EB5E57
dark #EB5E57
inherits light

Série 4 — coral

--chart-5 → --itps-secondary-500
light #6C9FD5
dark #6C9FD5
inherits light

Série 5 — azul claro

Radius

Curvaturas semânticas por uso. `radius` é o alias shadcn (8px). Tokens `rounded-*` são por contexto (card 12px, form pill, circle pill).

--radius
0.5rem

Alias shadcn — 8px (default genérico)

--rounded-card
0.75rem

Cards, panels, containers — 12px

--rounded-form
9999px

Buttons em formato pill

--rounded-circle
9999px

Avatares, badges circulares, dots

Effects

Sombras tintadas azul institucional (#14508F com 10% alpha) em light. Em dark, sombras tintadas viram inúteis — override pra darken via overlay-black 20%. 2-layer composition (sharp close + soft distant).

--shadow-medium
light
dark

Cards, dropdowns small

--shadow-large
light
dark

Overlays, side panels, modals

--shadow-extra-large
light
dark

Pop-ups, floating elements críticos

--blur-small
blur(4px)

Backdrop blur de overlays e drawers