Color
The color system is built on a two-tier model: primitive tokens define the raw palette, and semantic tokens assign meaning to those values within the UI.
The primary UI theme uses a light background (Background/Primary #FCFDFD) with dark foreground content (Content/Primary #191C1E). The "Inverse" semantic tokens represent the dark-background variant.
Primitive Colors
Raw palette — 14 color groups, steps 0 (darkest) to 100 (lightest). Click any hex value to copy.
Blue
#1726320
#19344A10
#18436620
#13528630
#0B62A940
#0072CF50
#2F8AD460
#5CA1DA70
#88B9E180
#BFD8ED90
#E3EEF7100
Cyan
#1526290
#19383D10
#1A4B5420
#18606D30
#14778840
#0D90A650
#39A1B360
#63B3C070
#8DC5CF80
#B6D9DF90
#DDEDEF100
Grape
#3022340
#442B4B10
#5A326420
#71368030
#89389D40
#A338BD50
#B15CC660
#C07FD070
#D0A1DB80
#E0C3E790
#F0E3F3100
Green
#1E2D210
#26412B10
#2B573420
#2F6F3B30
#31894240
#31A54750
#56B26860
#7AC18870
#9ED0A780
#C0DFC690
#E2F0E5100
Lime
#232C180
#31421B10
#3F5A1C20
#4E751B30
#5D921740
#6CB21050
#85BC3B60
#9DC86670
#B6D58F80
#CFE2B790
#E9F1DE100
Magenta
#3721290
#50283610
#6D2C4320
#8C2E4F30
#AD2C5A40
#D2286450
#D74F7F60
#DD769A70
#E49BB580
#ECBFCF90
#F6E1E9100
Neutral
#191C1E0
#2E313310
#45474820
#5D5E5F30
#6F707140
#90919150
#ABABAB60
#C6C6C770
#E2E2E280
#F1F1F190
#F5F5F595
#FCFDFD100
Orange
#3C281E0
#59352210
#79412220
#9E4B1F30
#C6551840
#F25D0D50
#F07A3A60
#F0966570
#F2B28F80
#F5CDB790
#FAE8DE100
Red
#5400000
#71000010
#8E010120
#AA040430
#C6070740
#E00B0B50
#E2383860
#E5646470
#EA8E8E80
#F0B6B690
#F7DEDE100
Teal
#1326200
#16382E10
#164D3D20
#14644C30
#107E5D40
#099A6E50
#35A98660
#61B99E70
#8BC9B680
#B4DBCF90
#DCEEE8100
Translucid Black
#0000001A10
#0000003320
#0000004D30
#0000006640
#0000008050
#0000009960
#000000B270
#000000CC80
#000000E590
Translucid White
#FFFFFF1A10
#FFFFFF3320
#FFFFFF4D30
#FFFFFF6640
#FFFFFF8050
#FFFFFF9960
#FFFFFFB270
#FFFFFFCC80
#FFFFFFE590
Violet
#2E293C0
#3D345710
#4B3D7420
#57439430
#6347B640
#6D48DA50
#876ADE60
#A18AE370
#BAAAE980
#D2C8EF90
#EAE6F7100
Yellow
#423C290
#60553310
#81703920
#A68C3D30
#CDAA3D40
#F8C93A50
#F6D15F60
#F5D98270
#F6E2A480
#F8EBC590
#FBF6E4100
Semantic Colors
Role-based tokens mapped from the primitive palette.
Background
| Token | Hex | Swatch |
|---|---|---|
color.semantic.Background.Attention | #F07A3A | |
color.semantic.Background.AttentionSubtle | #9E4B1F | |
color.semantic.Background.Brand | #2F8AD4 | |
color.semantic.Background.BrandHover | #5CA1DA | |
color.semantic.Background.BrandPressed | #88B9E1 | |
color.semantic.Background.BrandSubtle | #19344A | |
color.semantic.Background.Disabled | #5D5E5F | |
color.semantic.Background.Hover | #FFFFFF1A | |
color.semantic.Background.Info | #876ADE | |
color.semantic.Background.InfoSubtle | #3D3457 | |
color.semantic.Background.Inverse | #F5F5F5 | |
color.semantic.Background.InverseHover | #0000001A | |
color.semantic.Background.InversePressed | #00000033 | |
color.semantic.Background.Negative | #E00B0B | |
color.semantic.Background.NegativeSubtle | #AA0404 | |
color.semantic.Background.Positive | #099A6E | |
color.semantic.Background.PositiveSubtle | #14644C | |
color.semantic.Background.Pressed | #FFFFFF33 | |
color.semantic.Background.Primary | #191C1E | |
color.semantic.Background.Selected | #184366 | |
color.semantic.Background.Tonal | #454748 | |
color.semantic.Background.TonalHover | #5D5E5F | |
color.semantic.Background.TonalPressed | #6F7071 |
Border
| Token | Hex | Swatch |
|---|---|---|
color.semantic.Border.Attention | #F07A3A | |
color.semantic.Border.Brand | #2F8AD4 | |
color.semantic.Border.Disabled | #C6C6C7 | |
color.semantic.Border.Focus | #2F8AD4 | |
color.semantic.Border.Info | #876ADE | |
color.semantic.Border.Inverse | #FCFDFD | |
color.semantic.Border.Mono | #FCFDFD | |
color.semantic.Border.Negative | #E23838 | |
color.semantic.Border.Positive | #61B99E | |
color.semantic.Border.Primary | #E2E2E2 | |
color.semantic.Border.Secondary | #C6C6C7 | |
color.semantic.Border.Tertiary | #6F7071 |
Content
| Token | Hex | Swatch |
|---|---|---|
color.semantic.Content.Attention | #F07A3A | |
color.semantic.Content.AttentionBold | #F5CDB7 | |
color.semantic.Content.Brand | #2F8AD4 | |
color.semantic.Content.Disabled | #6F7071 | |
color.semantic.Content.Info | #876ADE | |
color.semantic.Content.InfoBold | #D2C8EF | |
color.semantic.Content.Link | #2F8AD4 | |
color.semantic.Content.LinkHover | #5CA1DA | |
color.semantic.Content.LinkPressed | #88B9E1 | |
color.semantic.Content.Negative | #E23838 | |
color.semantic.Content.NegativeBold | #F0B6B6 | |
color.semantic.Content.Positive | #35A986 | |
color.semantic.Content.PositiveBold | #B4DBCF | |
color.semantic.Content.Primary | #FCFDFD | |
color.semantic.Content.PrimaryInverse | #191C1E | |
color.semantic.Content.Secondary | #F1F1F1 | |
color.semantic.Content.SecondaryInverse | #2E3133 | |
color.semantic.Content.Tertiary | #E2E2E2 | |
color.semantic.Content.TertiaryInverse | #454748 |
Usage Guidelines
- Always use semantic tokens in component design — never raw primitive values.
- Use
Background/Primary(#191C1E) for main surfaces. - Use
Background/Inverse(#F5F5F5) for light-background contexts. - Use
Content/Disabled(#6F7071) for disabled states — never custom grays. - Brand blue =
Blue/50(#0072CF) =Background/Brand=Content/Brand.
Do
- Apply
Border/Primaryfor default borders;Border/Focuson focused inputs. - Use
Translucid Black/Translucid Whitetokens for overlays and scrim layers.
Don't
- Don't use primitive tokens directly in component specs.
- Don't create new one-off colors — always map to an existing primitive.