Billing
Team plan
Change plan
Pay yearly and get two months free.
Colors named by the job they do, each with a light and a dark value, so one stylesheet serves both themes.
The semantic colors at work, group by group, drawn with the real components in the light theme and the dark theme side by side. Under each pair, a table of the roles it uses: the color in each theme, the CSS variable and what it is for.
Point at or focus a role's name to outline every place the examples use it.
The floors a page is built from. The canvas is the page itself, each step up sits closer to the reader, and a sunken well is cut into the floor around it.
Light
Workspace settings
$240 a month
Change plan
Pay yearly and get two months free.
Dark
Workspace settings
$240 a month
Change plan
Pay yearly and get two months free.
| Light | Dark | Role | CSS variable | Used for |
|---|---|---|---|---|
--smbk-color-surface-canvas | Page background. | |||
--smbk-color-surface-default | Standard surface: cards, panels, the header. | |||
--smbk-color-surface-sunken | Recessed wells: fields, tracks, code. | |||
--smbk-color-surface-raised | One floor above default: popovers, raised panels. | |||
--smbk-color-surface-overlay | Floating panels opened from a control: the dropdown and select list, the combobox list, the date picker and the popover. |
Text from the main words down to the quietest hints, plus links and text that cannot be used right now, shown here on the canvas, default, raised and sunken surfaces.
Light
Dark
| Light | Dark | Role | CSS variable | Used for |
|---|---|---|---|---|
| Aa | Aa | --smbk-color-text-default | Main text. | |
| Aa | Aa | --smbk-color-text-subtle | Secondary text: descriptions, metadata. | |
| Aa | Aa | --smbk-color-text-subtlest | Quietest text: hints, captions, placeholders. | |
| Aa | Aa | --smbk-color-text-link | Link text. | |
| Aa | Aa | --smbk-color-text-disabled | Text in unavailable controls. |
Edges that divide content, edges that show where a control is, and the rings that show where the keyboard is.
Light
Dark
| Light | Dark | Role | CSS variable | Used for |
|---|---|---|---|---|
--smbk-color-border-subtle | Dividers and quiet edges. | |||
--smbk-color-border-strong | Stronger edges and separators. | |||
--smbk-color-border-control | The edge that marks a control: a checkbox, a radio (must reach 3:1). | |||
--smbk-color-border-rim | The light rim that makes a surface look lit: fields, chosen pills, cards. | |||
--smbk-color-border-focus-field | Keyboard focus ring on fields. | |||
--smbk-color-border-focus | Keyboard focus ring on controls. |
Buttons and chips, one family of colors per tone: a fill, a label and an edge. Every disabled action shares one look.
Light
Dark
| Light | Dark | Role | CSS variable | Used for |
|---|---|---|---|---|
| Brand3 | ||||
--smbk-color-action-brand-background | Fill at rest. | |||
--smbk-color-action-brand-foreground | Label and icon at rest. | |||
--smbk-color-action-brand-border | Edge at rest. | |||
| Secondary2 | ||||
--smbk-color-action-secondary-background | Fill at rest. | |||
--smbk-color-action-secondary-foreground | Label and icon at rest. | |||
| Outline2 | ||||
--smbk-color-action-outline-border | Edge at rest. | |||
--smbk-color-action-outline-foreground | Label and icon at rest. | |||
| Ghost1 | ||||
--smbk-color-action-ghost-foreground | Label and icon at rest. | |||
| Danger3 | ||||
--smbk-color-action-danger-background | Fill at rest. | |||
--smbk-color-action-danger-foreground | Label and icon at rest. | |||
--smbk-color-action-danger-border | Edge at rest. | |||
| Disabled3 | ||||
--smbk-color-action-disabled-background | Background of a disabled button, in every tone: a faint see-through grey, always fainter than an enabled button. | |||
--smbk-color-action-disabled-foreground | The label and icon of every disabled action, shared by every kind of button. | |||
--smbk-color-action-disabled-border | The edge of every disabled action, shared by every kind of button. | |||
| Default1 | ||||
--smbk-color-action-default-foreground | Label and icon at rest. | |||
Messages that tell the reader how something went. Each tone has a pale fill for messages and a strong fill for small marks, and always brings its own icon, so color is never the only sign.
Light
Maintenance tonight
Payment received
Card expires soon
Payment failed
Dark
Maintenance tonight
Payment received
Card expires soon
Payment failed
| Light | Dark | Role | CSS variable | Used for |
|---|---|---|---|---|
| Info6 | ||||
--smbk-color-feedback-info-surface-subtle | Pale fill. | |||
--smbk-color-feedback-info-border | Edge. | |||
--smbk-color-feedback-info-text-on-subtle | Text on the pale fill. | |||
--smbk-color-feedback-info-icon | The info tone’s own icon (an info sign), so the tone is never shown by colour alone. | |||
--smbk-color-feedback-info-surface | Strong fill. | |||
--smbk-color-feedback-info-text-on-surface | Text on the strong fill. | |||
| Success6 | ||||
--smbk-color-feedback-success-surface-subtle | Pale fill. | |||
--smbk-color-feedback-success-border | Edge. | |||
--smbk-color-feedback-success-text-on-subtle | Text on the pale fill. | |||
--smbk-color-feedback-success-icon | The success tone’s own icon (a check), so the tone is never shown by colour alone. | |||
--smbk-color-feedback-success-surface | Strong fill. | |||
--smbk-color-feedback-success-text-on-surface | Text on the strong fill. | |||
| Warning6 | ||||
--smbk-color-feedback-warning-surface-subtle | Pale fill. | |||
--smbk-color-feedback-warning-border | Edge. | |||
--smbk-color-feedback-warning-text-on-subtle | Text on the pale fill. | |||
--smbk-color-feedback-warning-icon | The warning tone’s own icon (a warning sign), so the tone is never shown by colour alone. | |||
--smbk-color-feedback-warning-surface | Strong fill. | |||
--smbk-color-feedback-warning-text-on-surface | Text on the strong fill. | |||
| Danger6 | ||||
--smbk-color-feedback-danger-surface-subtle | Pale fill. | |||
--smbk-color-feedback-danger-border | Edge; the edge of a field in error (3:1). | |||
--smbk-color-feedback-danger-text-on-subtle | Text on the pale fill. | |||
--smbk-color-feedback-danger-icon | The danger tone’s own icon (an alert sign), so the tone is never shown by colour alone. | |||
--smbk-color-feedback-danger-surface | Strong fill. | |||
--smbk-color-feedback-danger-text-on-surface | Text on the strong fill. | |||
The colors a chart draws its series in, always in this order. Every data color, and how far apart they look with color blindness, is under Data colors below.
Light
| Period | Hosting | Storage | Analytics | Search | Backups | Support | Design tools | Total | |
|---|---|---|---|---|---|---|---|---|---|
| Week 1 | $420 | $180 | $90 | $150 | $75 | $60 | $120 | $55 | $1,150 |
| Week 2 | $455 | $190 | $95 | $140 | $80 | $60 | $135 | $55 | $1,210 |
| Week 3 | $470 | $205 | $92 | $165 | $88 | $64 | $110 | $55 | $1,249 |
| Week 4 | $510 | $210 | $101 | $170 | $95 | $64 | $145 | $70 | $1,365 |
Dark
| Period | Hosting | Storage | Analytics | Search | Backups | Support | Design tools | Total | |
|---|---|---|---|---|---|---|---|---|---|
| Week 1 | $420 | $180 | $90 | $150 | $75 | $60 | $120 | $55 | $1,150 |
| Week 2 | $455 | $190 | $95 | $140 | $80 | $60 | $135 | $55 | $1,210 |
| Week 3 | $470 | $205 | $92 | $165 | $88 | $64 | $110 | $55 | $1,249 |
| Week 4 | $510 | $210 | $101 | $170 | $95 | $64 | $145 | $70 | $1,365 |
| Light | Dark | Role | CSS variable | Used for |
|---|---|---|---|---|
--smbk-color-data-categorical-1 | Categorical position 1 (blue). | |||
--smbk-color-data-categorical-2 | Categorical position 2 (orange). | |||
--smbk-color-data-categorical-3 | Categorical position 3 (neutral). | |||
--smbk-color-data-categorical-4 | Categorical position 4 (green). | |||
--smbk-color-data-categorical-5 | Categorical position 5 (purple). | |||
--smbk-color-data-categorical-6 | Categorical position 6 (teal). | |||
--smbk-color-data-categorical-7 | Categorical position 7 (yellow). | |||
--smbk-color-data-categorical-8 | Categorical position 8 (pink). |
The colors a code block gives each kind of code, so the parts of a line are easy to tell apart.
Light
import { Badge } from './badge';
type Props = { total: number };
// Shows the amount due, tax included.
export function Due({ total }: Props) {
const sum = total * 1.08;
return (
<p className="due">
${sum.toFixed(2)}
<Badge tone="warning">Due</Badge>
</p>
);
}Dark
import { Badge } from './badge';
type Props = { total: number };
// Shows the amount due, tax included.
export function Due({ total }: Props) {
const sum = total * 1.08;
return (
<p className="due">
${sum.toFixed(2)}
<Badge tone="warning">Due</Badge>
</p>
);
}| Light | Dark | Role | CSS variable | Used for |
|---|---|---|---|---|
| Aa | Aa | --smbk-color-code-keyword | Control flow and modules, such as import, export, from, return, if and await, and CSS at-rules such as @media. | |
| Aa | Aa | --smbk-color-code-string | Text in quotes. | |
| Aa | Aa | --smbk-color-code-number | Numbers, CSS lengths and colors, and true, false and null. | |
| Aa | Aa | --smbk-color-code-function | Function names, CSS functions such as var(), and the command a shell line runs. | |
| Aa | Aa | --smbk-color-code-type | Type, class and component names. | |
| Aa | Aa | --smbk-color-code-property | Keys and properties, such as object and JSON keys, CSS properties and custom properties, HTML and JSX attributes, and command flags. | |
| Aa | Aa | --smbk-color-code-comment | Comments, the quietest part of the code. | |
| Aa | Aa | --smbk-color-code-punctuation | Brackets, commas, colons and operators. | |
| Aa | Aa | --smbk-color-code-declaration | Words that declare or name, such as const, let, function, class, interface, type, new and this. | |
| Aa | Aa | --smbk-color-code-tag | HTML and JSX tags, and CSS selectors. |
The colors a chart draws its data in, by the job each does. Each token is named color.data, then its group, then the name under its swatch. A chart takes them from here and nowhere else, and never tells its series apart by color alone: it labels them, marks them or gives a table of its values too.
The one color of a chart with a single series, and the stronger step it takes under the pointer.
seriesseries-hoverSeries that are different things, in this fixed order and never cycled: the first series takes the first color, the second the second. A ninth series and beyond are gathered as one, in the muted gray of the legend.
12345678One hue from less to more, for amounts. In the dark theme the scale runs the other way, so more always stands out most.
12345Two hues out from a gray middle, for values above and below a point that matters, such as a target or zero.
low-2low-1midhigh-1high-2A line across a chart for a target, an average or a limit.
reference-lineA mark that shows a real state: good, warning or bad. Calmer than the feedback colors, which stay for badges, banners, icons and text, and never a series color. A label or an icon says the state too.
goodwarningbadEach categorical pair a chart draws side by side, and the last beside the first where a donut closes its circle, measured as far apart as the two look: the distance between them in the OKLab color space, times 100, as each is seen with full color vision and with each of the three kinds of color blindness. 8 or more is told apart by color; from 6, only with a label beside it; with full color vision a pair needs 15. 32 of the 32 checks, each pair in each theme, are told apart by color alone.
| Pair | Theme | Normal | Protanopia | Deuteranopia | Tritanopia | Verdict |
|---|---|---|---|---|---|---|
| 1 beside 2 | Light | 36.6 | 30.6 | 35.4 | 31.7 | Told apart |
| 1 beside 2 | Dark | 28.5 | 24.7 | 27.3 | 28.1 | Told apart |
| 1 beside 2 | Light cockpit | 22.4 | 17.4 | 20.4 | 22.4 | Told apart |
| 1 beside 2 | Dark cockpit | 21.7 | 18.1 | 19.1 | 23.2 | Told apart |
| 2 beside 3 | Light | 26.3 | 16.6 | 25.0 | 29.6 | Told apart |
| 2 beside 3 | Dark | 21.0 | 22.1 | 17.2 | 23.7 | Told apart |
| 2 beside 3 | Light cockpit | 21.0 | 21.6 | 19.8 | 13.6 | Told apart |
| 2 beside 3 | Dark cockpit | 17.8 | 18.1 | 16.8 | 10.1 | Told apart |
| 3 beside 4 | Light | 23.4 | 22.4 | 19.0 | 18.1 | Told apart |
| 3 beside 4 | Dark | 22.1 | 17.1 | 17.3 | 16.8 | Told apart |
| 3 beside 4 | Light cockpit | 25.3 | 20.2 | 10.7 | 25.2 | Told apart |
| 3 beside 4 | Dark cockpit | 22.8 | 17.6 | 9.0 | 23.8 | Told apart |
| 4 beside 5 | Light | 39.5 | 31.6 | 27.3 | 17.2 | Told apart |
| 4 beside 5 | Dark | 27.8 | 20.9 | 20.4 | 19.4 | Told apart |
| 4 beside 5 | Light cockpit | 21.4 | 18.2 | 14.0 | 14.1 | Told apart |
| 4 beside 5 | Dark cockpit | 19.6 | 16.5 | 12.4 | 13.9 | Told apart |
| 5 beside 6 | Light | 29.8 | 21.2 | 19.9 | 18.7 | Told apart |
| 5 beside 6 | Dark | 28.7 | 21.5 | 25.2 | 26.7 | Told apart |
| 5 beside 6 | Light cockpit | 25.0 | 23.6 | 21.4 | 9.9 | Told apart |
| 5 beside 6 | Dark cockpit | 22.0 | 20.8 | 18.9 | 8.9 | Told apart |
| 6 beside 7 | Light | 18.7 | 14.8 | 18.8 | 17.0 | Told apart |
| 6 beside 7 | Dark | 16.5 | 14.2 | 15.6 | 15.6 | Told apart |
| 6 beside 7 | Light cockpit | 23.2 | 22.6 | 23.0 | 10.3 | Told apart |
| 6 beside 7 | Dark cockpit | 20.5 | 19.9 | 20.3 | 10.2 | Told apart |
| 7 beside 8 | Light | 29.4 | 25.3 | 15.6 | 18.4 | Told apart |
| 7 beside 8 | Dark | 29.6 | 27.2 | 27.0 | 24.1 | Told apart |
| 7 beside 8 | Light cockpit | 22.7 | 20.1 | 21.5 | 23.6 | Told apart |
| 7 beside 8 | Dark cockpit | 19.9 | 17.5 | 18.9 | 21.7 | Told apart |
| 8 around to 1 | Light | 27.9 | 16.0 | 19.1 | 31.2 | Told apart |
| 8 around to 1 | Dark | 20.3 | 14.0 | 20.6 | 22.8 | Told apart |
| 8 around to 1 | Light cockpit | 22.7 | 18.9 | 16.7 | 25.5 | Told apart |
| 8 around to 1 | Dark cockpit | 22.1 | 19.4 | 16.4 | 25.6 | Told apart |
The color vocabulary every component and every site built on the system draws from. Each semantic color answers a role question — what a page sits on, what body text is, what a control's edge is, what a brand button looks like when pressed — and resolves to a different raw shade in the light and dark themes. Components never know which shade they end up painting; they only know the role, which is what lets one stylesheet serve both themes without a line of theme-specific code.
Two layers, and only the top one is ever consumed.
Underneath sit the ramps: one grey, and a family for each hue the roles need, each a run of steps from lightest to darkest, plus see-through ramps of black, white, the brand red and the greys for tints and shades that must work over anything. Every family shares one contrast ladder: a step number means the same contrast against white in every family, so a role that needs more contrast moves one step in any family and no in-between shade is invented. The steps were worked out in OKLCH, so a family keeps its hue as it gets lighter or darker, and are stored as hex, the value that ships and is measured.
On top sit the roles, grouped by what they are for:
The colors are grouped by role: surface, text and icon, border, action and feedback roles, with primitives beneath. A role belongs to the group that describes what the color is doing, not what it looks like. Shadow tints are colors because elevation is composed from them and they must follow the theme.
The ramps are primitive. The roles are semantic. Only semantic colors reach CSS at all; the build does not emit a primitive color as a custom property, so a component cannot reference one even by accident. This is deliberate: a component painted with a ramp step looks right in one theme and wrong in the other, and nothing catches it until someone switches.
A new semantic color is warranted when a role appears in more than one component and no existing role describes it. It aliases a ramp step; it never carries its own literal. The cockpit palette's shades are the one exception: they are tuned together for charts, each lighter or darker by a measured amount in OKLCH, and no ramp step holds them, so they are written as they are. They reach CSS only through the data colors. A new ramp step changes the ladder every family shares, so it is added in Figma to the whole ladder or not at all.
Every semantic color has one name and two values. The theme is chosen by the person reading the page — through an attribute on the page element, or by their system preference when the page has not chosen — and each role re-points to a different ramp step. Most roles flip in some way; a few, such as text on the brand fill, are the same shade in both themes because the surface they sit on does not change.
The data colors also follow the data palette, which the project chooses once for the whole page. The default palette is bright and clear, made of the ramps' own steps. Cockpit is calmer: every hue at about the same lightness and a low, even strength, the way an instrument panel is lit, with its own shades worked out in OKLCH for the charts rather than taken from the ramps. Choose cockpit for a dashboard or a tool that people read for long stretches, where a page of bright charts tires the eye and full-strength hues beside pale ones look like a toy; keep the default where a chart must stand out on a page that is mostly words. The palette is set with data-palette="cockpit" on the page's root element, and a palette set on any other element does nothing. Each palette has a light and a dark value for every data color, so the theme still applies, and only the data colors change: every other role is the same in both palettes.
Density and text size do not touch color.
Contrast is measured where it matters, by the rules of WCAG 2.2. Text needs 4.5:1 against what it actually sits on (WCAG 1.4.3). A color that is the only way to see a control, its state or where focus is needs 3:1 against what is next to it (WCAG 1.4.11). Only pairs the components really use are listed, in both themes; a pair that falls short is a decision for the Figma file.
249 pairsLight229 pass20 fall shortDark216 pass33 fall shortLight cockpit226 pass23 fall shortDark cockpit217 pass32 fall short
Open a row to see where the pair is used.
| Pair | Light | Dark | Light cockpit | Dark cockpit |
|---|---|---|---|---|
| Text, which needs 4.5:1110 | ||||
| text.defaulton surface.canvas | 12.85:1passes | 15.66:1passes | 12.85:1passes | 15.66:1passes |
Needs 4.5:1. Where it is used Titles, values and body text across the components | ||||
| text.defaulton surface.default | 14.08:1passes | 14.58:1passes | 14.08:1passes | 14.58:1passes |
Needs 4.5:1. Where it is used Titles, values and body text across the components | ||||
| text.defaulton surface.raised | 14.72:1passes | 12.85:1passes | 14.72:1passes | 12.85:1passes |
Needs 4.5:1. Where it is used Titles, values and body text across the components | ||||
| text.defaulton surface.sunken | 11.83:1passes | 16.47:1passes | 11.83:1passes | 16.47:1passes |
Needs 4.5:1. Where it is used Titles, values and body text across the components | ||||
| text.subtleon surface.canvas | 6.30:1passes | 7.51:1passes | 6.30:1passes | 7.51:1passes |
Needs 4.5:1. Where it is used Descriptions, labels and links at rest in navigation | ||||
| text.subtleon surface.default | 6.90:1passes | 6.99:1passes | 6.90:1passes | 6.99:1passes |
Needs 4.5:1. Where it is used Descriptions, labels and links at rest in navigation | ||||
| text.subtleon surface.raised | 7.22:1passes | 6.16:1passes | 7.22:1passes | 6.16:1passes |
Needs 4.5:1. Where it is used Descriptions, labels and links at rest in navigation | ||||
| text.subtleon surface.sunken | 5.80:1passes | 7.90:1passes | 5.80:1passes | 7.90:1passes |
Needs 4.5:1. Where it is used Descriptions, labels and links at rest in navigation | ||||
| text.subtleston surface.canvas | 4.60:1passes | 5.07:1passes | 4.60:1passes | 5.07:1passes |
Needs 4.5:1. Where it is used Placeholders, captions and key hints. Placeholder text is not exempt. A tree view row's count | ||||
| text.subtleston surface.default | 5.04:1passes | 4.72:1passes | 5.04:1passes | 4.72:1passes |
Needs 4.5:1. Where it is used Placeholders, captions and key hints. Placeholder text is not exempt. A tree view row's count | ||||
| text.subtleston surface.raised | 5.27:1passes | 4.16:1falls short | 5.27:1passes | 4.16:1falls short |
Needs 4.5:1. Where it is used Placeholders, captions and key hints. Placeholder text is not exempt. A tree view row's count | ||||
| text.subtleston surface.sunken | 4.23:1falls short | 5.33:1passes | 4.23:1falls short | 5.33:1passes |
Needs 4.5:1. Where it is used Placeholders, captions and key hints. Placeholder text is not exempt. A tree view row's count | ||||
| text.brandon surface.canvas | 4.83:1passes | 5.06:1passes | 4.83:1passes | 5.06:1passes |
Needs 4.5:1. Where it is used The card eyebrow at rest, on every card surface the well's sunken one included | ||||
| text.brandon surface.default | 5.30:1passes | 4.71:1passes | 5.30:1passes | 4.71:1passes |
Needs 4.5:1. Where it is used The card eyebrow at rest, on every card surface the well's sunken one included | ||||
| text.brandon surface.raised | 5.53:1passes | 4.15:1falls short | 5.53:1passes | 4.15:1falls short |
Needs 4.5:1. Where it is used The card eyebrow at rest, on every card surface the well's sunken one included | ||||
| text.brandon surface.sunken | 4.45:1falls short | 5.32:1passes | 4.45:1falls short | 5.32:1passes |
Needs 4.5:1. Where it is used The card eyebrow at rest, on every card surface the well's sunken one included | ||||
| text.linkon surface.canvas | 12.85:1passes | 15.66:1passes | 12.85:1passes | 15.66:1passes |
Needs 4.5:1. Where it is used Links in running text | ||||
| text.linkon surface.default | 14.08:1passes | 14.58:1passes | 14.08:1passes | 14.58:1passes |
Needs 4.5:1. Where it is used Links in running text | ||||
| text.linkon surface.raised | 14.72:1passes | 12.85:1passes | 14.72:1passes | 12.85:1passes |
Needs 4.5:1. Where it is used Links in running text | ||||
| text.link-hoveron surface.canvas | 15.66:1passes | 17.17:1passes | 15.66:1passes | 17.17:1passes |
Needs 4.5:1. Where it is used Links while hovered; hovered navigation items, tabs, segments and sidebar items | ||||
| text.link-hoveron surface.default | 17.17:1passes | 15.98:1passes | 17.17:1passes | 15.98:1passes |
Needs 4.5:1. Where it is used Links while hovered; hovered navigation items, tabs, segments and sidebar items | ||||
| text.link-hoveron surface.raised | 17.95:1passes | 14.08:1passes | 17.95:1passes | 14.08:1passes |
Needs 4.5:1. Where it is used Links while hovered; hovered navigation items, tabs, segments and sidebar items | ||||
| text.defaulton surface.selected | 10.87:1passes | 13.09:1passes | 10.87:1passes | 13.09:1passes |
Needs 4.5:1. Where it is used The current sidebar item, an open group's item and the current link in a sidebar flyout: the bolder label on the see-through selected fill. A chosen option in a selectable list: its title on the same fill. A tree view's chosen row: its bolder label on the same fill | ||||
| text.subtleon surface.selected | 5.33:1passes | 6.28:1passes | 5.33:1passes | 6.28:1passes |
Needs 4.5:1. Where it is used A chosen option in a selectable list: its quiet line on the see-through selected fill | ||||
| text.link-pressedon surface.canvas | 9.18:1passes | 11.67:1passes | 9.18:1passes | 11.67:1passes |
Needs 4.5:1. Where it is used Links while pressed | ||||
| text.link-pressedon surface.default | 10.06:1passes | 10.86:1passes | 10.06:1passes | 10.86:1passes |
Needs 4.5:1. Where it is used Links while pressed | ||||
| text.link-pressedon surface.raised | 10.52:1passes | 9.57:1passes | 10.52:1passes | 9.57:1passes |
Needs 4.5:1. Where it is used Links while pressed | ||||
| text.inverseon surface.inverse | 12.38:1passes | 12.85:1passes | 12.38:1passes | 12.85:1passes |
Needs 4.5:1. Where it is used Inverse tooltips, default avatars, the tick in a checked checkbox and a line chart's marked value | ||||
| text.on-brandon surface.brand | 5.53:1passes | 5.53:1passes | 5.53:1passes | 5.53:1passes |
Needs 4.5:1. Where it is used Initials on a brand avatar, text on brand tags | ||||
| text.defaulton surface.overlay | 15.38:1passes | 10.81:1passes | 15.38:1passes | 10.81:1passes |
Needs 4.5:1. Where it is used Dropdown items and the popover's title, on the overlay panel, and an item under the pointer or keyboard focus on its hover fill; a calendar's month and days in the date picker's panel. A tree view's row under the pointer: its label on the hover fill | ||||
| text.defaulton surface.hover | 10.03:1passes | 11.64:1passes | 10.03:1passes | 11.64:1passes |
Needs 4.5:1. Where it is used Dropdown items and the popover's title, on the overlay panel, and an item under the pointer or keyboard focus on its hover fill; a calendar's month and days in the date picker's panel. A tree view's row under the pointer: its label on the hover fill | ||||
| text.subtleon surface.overlay | 7.54:1passes | 5.18:1passes | 7.54:1passes | 5.18:1passes |
Needs 4.5:1. Where it is used The popover's description, body and helper text, a combobox list's no results and loading rows, and a calendar's weekday names in the date picker's panel, on the overlay panel | ||||
| text.subtleston surface.overlay | 5.50:1passes | 3.50:1falls short | 5.50:1passes | 3.50:1falls short |
Needs 4.5:1. Where it is used Dropdown group labels and icons, and the popover's close cross, on the overlay panel | ||||
| text.defaulton surface.neutral-subtle | 10.87:1passes | 13.09:1passes | 10.87:1passes | 13.09:1passes |
Needs 4.5:1. Where it is used Default badges: the label on the see-through gray. A filled table's sorted heading and the words in its foot | ||||
| text.subtleon surface.neutral-subtle | 5.33:1passes | 6.28:1passes | 5.33:1passes | 6.28:1passes |
Needs 4.5:1. Where it is used Default tags: the label on the see-through gray. A ruler's layout state names on the shaded stretches of its band. A filled table's headings and arrows, and a range pagination's words in its foot | ||||
| action.ghost.foregroundon surface.neutral-subtle | 9.14:1passes | 9.75:1passes | 9.14:1passes | 9.75:1passes |
Needs 4.5:1. Where it is used A filled table: the ghost filter and info buttons in its heading, and the pagination's page buttons in its foot | ||||
| text.subtleston surface.neutral-subtle | 3.89:1falls short | 4.24:1falls short | 3.89:1falls short | 4.24:1falls short |
Needs 4.5:1. Where it is used A filled table's foot: the pagination's gap between page numbers | ||||
| text.defaulton feedback.info.surface-subtle | 12.88:1passes | 12.56:1passes | 12.88:1passes | 12.56:1passes |
Needs 4.5:1. Where it is used A highlighted table row: its values on the info tint | ||||
| text.subtleon feedback.info.surface-subtle | 6.31:1passes | 6.02:1passes | 6.31:1passes | 6.02:1passes |
Needs 4.5:1. Where it is used A highlighted table row: a value's description on the tint, one step darker than elsewhere | ||||
| text.defaulton feedback.danger.surface-subtle | 12.82:1passes | 12.54:1passes | 12.82:1passes | 12.54:1passes |
Needs 4.5:1. Where it is used The error summary's intro line, on its danger tint | ||||
| text.defaulton action.default.background-pressed | 9.57:1passes | 6.30:1passes | 9.57:1passes | 6.30:1passes |
Needs 4.5:1. Where it is used A chosen table row, or the current one: its values and links on the row's fill | ||||
| text.defaulton action.ghost.background-hover | 10.03:1passes | 11.64:1passes | 10.03:1passes | 11.64:1passes |
Needs 4.5:1. Where it is used A list row that can be pressed, under the pointer and pressed: its title on the row's fill. A calendar day under the pointer: its figure on the hover fill. A stepper's step that can be gone back to, under the pointer and pressed: its name on the step's fill | ||||
| text.defaulton action.ghost.background-pressed | 9.57:1passes | 10.81:1passes | 9.57:1passes | 10.81:1passes |
Needs 4.5:1. Where it is used A list row that can be pressed, under the pointer and pressed: its title on the row's fill. A calendar day under the pointer: its figure on the hover fill. A stepper's step that can be gone back to, under the pointer and pressed: its name on the step's fill | ||||
| text.subtleon action.ghost.background-hover | 4.92:1passes | 5.58:1passes | 4.92:1passes | 5.58:1passes |
Needs 4.5:1. Where it is used A list row that can be pressed, under the pointer and pressed: its quiet line on the row's fill. A stepper's step that can be gone back to, under the pointer and pressed: its status line on the step's fill | ||||
| text.subtleon action.ghost.background-pressed | 4.69:1passes | 5.18:1passes | 4.69:1passes | 5.18:1passes |
Needs 4.5:1. Where it is used A list row that can be pressed, under the pointer and pressed: its quiet line on the row's fill. A stepper's step that can be gone back to, under the pointer and pressed: its status line on the step's fill | ||||
| feedback.danger.text-on-subtleon action.ghost.background-hover | 4.91:1passes | 8.72:1passes | 4.91:1passes | 8.72:1passes |
Needs 4.5:1. Where it is used A stepper's step with an error, under the pointer and pressed: what is wrong, on the step's fill | ||||
| feedback.danger.text-on-subtleon action.ghost.background-pressed | 4.69:1passes | 8.09:1passes | 4.69:1passes | 8.09:1passes |
Needs 4.5:1. Where it is used A stepper's step with an error, under the pointer and pressed: what is wrong, on the step's fill | ||||
| text.subtleon action.default.background-pressed | 4.69:1passes | 3.02:1falls short | 4.69:1passes | 3.02:1falls short |
Needs 4.5:1. Where it is used A chosen table row, or the current one: a value's description on the row's fill, one step darker than elsewhere | ||||
| text.on-mediaon surface.scrim | 9.72:1passes | 9.72:1passes | 9.72:1passes | 9.72:1passes |
Needs 4.5:1. Where it is used A card with its picture behind: the title, eyebrow and text on the dark band at its foot, over the brightest and the darkest picture | ||||
| action.brand.foregroundon action.brand.background | 5.53:1passes | 5.53:1passes | 5.53:1passes | 5.53:1passes |
Needs 4.5:1. Where it is used Brand buttons and chips: the label on the fill, at rest, hovered and pressed; on a chip also the tick of a selected one and the focus ring of its remove button. The chosen calendar day: its figure on the fill, at rest and hovered. A stepper's current step: its number on the brand mark | ||||
| action.brand.foregroundon action.brand.background-hover | 7.21:1passes | 7.21:1passes | 7.21:1passes | 7.21:1passes |
Needs 4.5:1. Where it is used Brand buttons and chips: the label on the fill, at rest, hovered and pressed; on a chip also the tick of a selected one and the focus ring of its remove button. The chosen calendar day: its figure on the fill, at rest and hovered. A stepper's current step: its number on the brand mark | ||||
| action.brand.foregroundon action.brand.background-pressed | 10.52:1passes | 10.52:1passes | 10.52:1passes | 10.52:1passes |
Needs 4.5:1. Where it is used Brand buttons and chips: the label on the fill, at rest, hovered and pressed; on a chip also the tick of a selected one and the focus ring of its remove button. The chosen calendar day: its figure on the fill, at rest and hovered. A stepper's current step: its number on the brand mark | ||||
| action.secondary.foregroundon action.secondary.background | 8.43:1passes | 9.75:1passes | 8.43:1passes | 9.75:1passes |
Needs 4.5:1. Where it is used Secondary buttons: the label on the fill, at rest, hovered and pressed | ||||
| action.secondary.foregroundon action.secondary.background-hover | 7.71:1passes | 8.68:1passes | 7.71:1passes | 8.68:1passes |
Needs 4.5:1. Where it is used Secondary buttons: the label on the fill, at rest, hovered and pressed | ||||
| action.secondary.foregroundon action.secondary.background-pressed | 7.02:1passes | 7.68:1passes | 7.02:1passes | 7.68:1passes |
Needs 4.5:1. Where it is used Secondary buttons: the label on the fill, at rest, hovered and pressed | ||||
| action.inverse.foregroundon action.inverse.background | 12.38:1passes | 14.08:1passes | 12.38:1passes | 14.08:1passes |
Needs 4.5:1. Where it is used Inverse chips: the label on the fill, at rest, hovered and pressed, the tick of a selected one and the focus ring of the remove button | ||||
| action.inverse.foregroundon action.inverse.background-hover | 14.72:1passes | 12.85:1passes | 14.72:1passes | 12.85:1passes |
Needs 4.5:1. Where it is used Inverse chips: the label on the fill, at rest, hovered and pressed, the tick of a selected one and the focus ring of the remove button | ||||
| action.inverse.foregroundon action.inverse.background-pressed | 16.70:1passes | 9.57:1passes | 16.70:1passes | 9.57:1passes |
Needs 4.5:1. Where it is used Inverse chips: the label on the fill, at rest, hovered and pressed, the tick of a selected one and the focus ring of the remove button | ||||
| action.default.foregroundon surface.neutral-subtle | 9.14:1passes | 13.09:1passes | 9.14:1passes | 13.09:1passes |
Needs 4.5:1. Where it is used Default chips: the label on the see-through gray, hovered and pressed, and the tick of a selected one | ||||
| action.default.foregroundon surface.hover | 8.43:1passes | 11.64:1passes | 8.43:1passes | 11.64:1passes |
Needs 4.5:1. Where it is used Default chips: the label on the see-through gray, hovered and pressed, and the tick of a selected one | ||||
| action.default.foregroundon action.default.background-pressed | 8.05:1passes | 6.30:1passes | 8.05:1passes | 6.30:1passes |
Needs 4.5:1. Where it is used Default chips: the label on the see-through gray, hovered and pressed, and the tick of a selected one | ||||
| action.danger.foregroundon action.danger.background | 6.88:1passes | 9.39:1passes | 6.88:1passes | 9.39:1passes |
Needs 4.5:1. Where it is used Destructive buttons: the label on the fill at rest | ||||
| action.danger.foreground-hoveron action.danger.background-hover | 7.49:1passes | 9.17:1passes | 7.49:1passes | 9.17:1passes |
Needs 4.5:1. Where it is used Destructive buttons: the hover label on the fill, hovered and pressed | ||||
| action.danger.foreground-hoveron action.danger.background-pressed | 5.07:1passes | 6.28:1passes | 5.07:1passes | 6.28:1passes |
Needs 4.5:1. Where it is used Destructive buttons: the hover label on the fill, hovered and pressed | ||||
| action.outline.foregroundon surface.default | 11.85:1passes | 10.86:1passes | 11.85:1passes | 10.86:1passes |
Needs 4.5:1. Where it is used Outline buttons and chips: the label on the page, in a drawer or a popover, hovered and pressed, and the tick of a selected chip | ||||
| action.outline.foregroundon surface.canvas | 10.81:1passes | 11.67:1passes | 10.81:1passes | 11.67:1passes |
Needs 4.5:1. Where it is used Outline buttons and chips: the label on the page, in a drawer or a popover, hovered and pressed, and the tick of a selected chip | ||||
| action.outline.foregroundon surface.raised | 12.38:1passes | 9.57:1passes | 12.38:1passes | 9.57:1passes |
Needs 4.5:1. Where it is used Outline buttons and chips: the label on the page, in a drawer or a popover, hovered and pressed, and the tick of a selected chip | ||||
| action.outline.foregroundon surface.overlay | 12.94:1passes | 8.05:1passes | 12.94:1passes | 8.05:1passes |
Needs 4.5:1. Where it is used Outline buttons and chips: the label on the page, in a drawer or a popover, hovered and pressed, and the tick of a selected chip | ||||
| action.outline.foregroundon action.outline.background-hover | 9.14:1passes | 10.75:1passes | 9.14:1passes | 10.75:1passes |
Needs 4.5:1. Where it is used Outline buttons and chips: the label on the page, in a drawer or a popover, hovered and pressed, and the tick of a selected chip | ||||
| action.outline.foregroundon action.outline.background-pressed | 8.05:1passes | 8.05:1passes | 8.05:1passes | 8.05:1passes |
Needs 4.5:1. Where it is used Outline buttons and chips: the label on the page, in a drawer or a popover, hovered and pressed, and the tick of a selected chip | ||||
| action.ghost.foregroundon surface.default | 11.85:1passes | 10.86:1passes | 11.85:1passes | 10.86:1passes |
Needs 4.5:1. Where it is used Ghost buttons and icon-only buttons: the label or icon on the page or in a drawer, hovered and pressed | ||||
| action.ghost.foregroundon surface.canvas | 10.81:1passes | 11.67:1passes | 10.81:1passes | 11.67:1passes |
Needs 4.5:1. Where it is used Ghost buttons and icon-only buttons: the label or icon on the page or in a drawer, hovered and pressed | ||||
| action.ghost.foregroundon surface.raised | 12.38:1passes | 9.57:1passes | 12.38:1passes | 9.57:1passes |
Needs 4.5:1. Where it is used Ghost buttons and icon-only buttons: the label or icon on the page or in a drawer, hovered and pressed | ||||
| action.ghost.foregroundon action.ghost.background-hover | 8.43:1passes | 8.68:1passes | 8.43:1passes | 8.68:1passes |
Needs 4.5:1. Where it is used Ghost buttons and icon-only buttons: the label or icon on the page or in a drawer, hovered and pressed | ||||
| action.ghost.foregroundon action.ghost.background-pressed | 8.05:1passes | 8.05:1passes | 8.05:1passes | 8.05:1passes |
Needs 4.5:1. Where it is used Ghost buttons and icon-only buttons: the label or icon on the page or in a drawer, hovered and pressed | ||||
| action.outline.foregroundon surface.sunken | 9.95:1passes | 12.27:1passes | 9.95:1passes | 12.27:1passes |
Needs 4.5:1. Where it is used A toggle button that is on: its label or icon on the sunken fill | ||||
| feedback.success.text-on-surfaceon feedback.success.surface | 5.28:1passes | 5.28:1passes | 5.28:1passes | 5.28:1passes |
Needs 4.5:1. Where it is used Flat success badges | ||||
| feedback.success.text-on-subtleon feedback.success.surface-subtle | 6.88:1passes | 9.39:1passes | 6.88:1passes | 9.39:1passes |
Needs 4.5:1. Where it is used Success alerts, toasts, tags and soft badges | ||||
| feedback.info.text-on-surfaceon feedback.info.surface | 5.25:1passes | 5.25:1passes | 5.25:1passes | 5.25:1passes |
Needs 4.5:1. Where it is used Flat info badges | ||||
| feedback.info.text-on-subtleon feedback.info.surface-subtle | 6.30:1passes | 9.40:1passes | 6.30:1passes | 9.40:1passes |
Needs 4.5:1. Where it is used Info alerts, toasts, tags and soft badges | ||||
| feedback.warning.text-on-surfaceon feedback.warning.surface | 5.25:1passes | 5.25:1passes | 5.25:1passes | 5.25:1passes |
Needs 4.5:1. Where it is used Flat warning badges | ||||
| feedback.warning.text-on-subtleon feedback.warning.surface-subtle | 6.31:1passes | 9.37:1passes | 6.31:1passes | 9.37:1passes |
Needs 4.5:1. Where it is used Warning alerts, toasts, tags and soft badges | ||||
| feedback.danger.text-on-surfaceon feedback.danger.surface | 5.53:1passes | 5.53:1passes | 5.53:1passes | 5.53:1passes |
Needs 4.5:1. Where it is used Flat danger badges. A stepper's step with an error: the warning sign on its red mark | ||||
| feedback.danger.text-on-subtleon feedback.danger.surface-subtle | 6.28:1passes | 9.39:1passes | 6.28:1passes | 9.39:1passes |
Needs 4.5:1. Where it is used Danger alerts, toasts, tags and soft badges. The error summary: its heading and its mistakes | ||||
| feedback.danger.text-on-subtleon surface.default | 6.90:1passes | 10.92:1passes | 6.90:1passes | 10.92:1passes |
Needs 4.5:1. Where it is used A failed progress bar: what failed and Try again; a field message of the error type, under a field or a field group or in a file upload; a file row that failed or was not added: its reason; a stepper's step with an error: what is wrong; a diff stat: the lines removed; on the page | ||||
| feedback.danger.text-on-subtleon surface.canvas | 6.29:1passes | 11.73:1passes | 6.29:1passes | 11.73:1passes |
Needs 4.5:1. Where it is used A failed progress bar: what failed and Try again; a field message of the error type, under a field or a field group or in a file upload; a file row that failed or was not added: its reason; a stepper's step with an error: what is wrong; a diff stat: the lines removed; on the page | ||||
| feedback.success.text-on-subtleon surface.default | 6.87:1passes | 10.88:1passes | 6.87:1passes | 10.88:1passes |
Needs 4.5:1. Where it is used A file row that has gone through: the word Uploaded, on the row and on the page. A diff stat: the lines added. The goal row block: On track | ||||
| feedback.success.text-on-subtleon surface.canvas | 6.27:1passes | 11.69:1passes | 6.27:1passes | 11.69:1passes |
Needs 4.5:1. Where it is used A file row that has gone through: the word Uploaded, on the row and on the page. A diff stat: the lines added. The goal row block: On track | ||||
| feedback.warning.text-on-subtleon surface.default | 6.89:1passes | 10.89:1passes | 6.89:1passes | 10.89:1passes |
Needs 4.5:1. Where it is used The goal row block: At risk, on the page | ||||
| feedback.warning.text-on-subtleon surface.canvas | 6.29:1passes | 11.70:1passes | 6.29:1passes | 11.70:1passes |
Needs 4.5:1. Where it is used The goal row block: At risk, on the page | ||||
| feedback.danger.text-on-subtleon surface.overlay | 7.53:1passes | 8.09:1passes | 7.53:1passes | 8.09:1passes |
Needs 4.5:1. Where it is used A combobox list that could not load: what went wrong and what to do, on the overlay panel | ||||
| text.linkon feedback.success.surface-subtle | 14.10:1passes | 12.58:1passes | 14.10:1passes | 12.58:1passes |
Needs 4.5:1. Where it is used Banners in a feedback tone: the link on the tone's surface | ||||
| text.linkon feedback.info.surface-subtle | 12.88:1passes | 12.56:1passes | 12.88:1passes | 12.56:1passes |
Needs 4.5:1. Where it is used Banners in a feedback tone: the link on the tone's surface. A highlighted table row: a link in a cell on the tint | ||||
| text.linkon feedback.warning.surface-subtle | 12.89:1passes | 12.54:1passes | 12.89:1passes | 12.54:1passes |
Needs 4.5:1. Where it is used Banners in a feedback tone: the link on the tone's surface | ||||
| text.linkon feedback.danger.surface-subtle | 12.82:1passes | 12.54:1passes | 12.82:1passes | 12.54:1passes |
Needs 4.5:1. Where it is used Banners in a feedback tone: the link on the tone's surface | ||||
| action.ghost.foregroundon surface.sunken | 9.95:1passes | 12.27:1passes | 9.95:1passes | 12.27:1passes |
Needs 4.5:1. Where it is used Ghost icon buttons inside a field: the password field's eye, the number field's minus and plus, an input's trailing action, on the sunken well. A ghost toggle button that is on, a toolbar's tool: its icon or label on the sunken fill | ||||
| action.ghost.foregroundon feedback.success.surface-subtle | 11.86:1passes | 9.37:1passes | 11.86:1passes | 9.37:1passes |
Needs 4.5:1. Where it is used Banners in a feedback tone: the dismiss cross on the tone's surface | ||||
| action.ghost.foregroundon feedback.info.surface-subtle | 10.83:1passes | 9.36:1passes | 10.83:1passes | 9.36:1passes |
Needs 4.5:1. Where it is used Banners in a feedback tone: the dismiss cross on the tone's surface | ||||
| action.ghost.foregroundon feedback.warning.surface-subtle | 10.84:1passes | 9.35:1passes | 10.84:1passes | 9.35:1passes |
Needs 4.5:1. Where it is used Banners in a feedback tone: the dismiss cross on the tone's surface | ||||
| action.ghost.foregroundon feedback.danger.surface-subtle | 10.79:1passes | 9.35:1passes | 10.79:1passes | 9.35:1passes |
Needs 4.5:1. Where it is used Banners in a feedback tone: the dismiss cross on the tone's surface | ||||
| code.keywordon surface.raised | 5.28:1passes | 6.14:1passes | 5.28:1passes | 6.14:1passes |
Needs 4.5:1. Where it is used A code block's keywords, colored by kind on its well | ||||
| code.declarationon surface.raised | 5.25:1passes | 6.13:1passes | 5.25:1passes | 6.13:1passes |
Needs 4.5:1. Where it is used A code block's declarations, colored by kind on its well | ||||
| code.stringon surface.raised | 5.25:1passes | 6.16:1passes | 5.25:1passes | 6.16:1passes |
Needs 4.5:1. Where it is used A code block's strings, colored by kind on its well | ||||
| code.numberon surface.raised | 5.28:1passes | 9.59:1passes | 5.28:1passes | 9.59:1passes |
Needs 4.5:1. Where it is used A code block's numbers, colored by kind on its well | ||||
| code.functionon surface.raised | 5.28:1passes | 9.63:1passes | 5.28:1passes | 9.63:1passes |
Needs 4.5:1. Where it is used A code block's functions, colored by kind on its well | ||||
| code.typeon surface.raised | 5.25:1passes | 6.13:1passes | 5.25:1passes | 6.13:1passes |
Needs 4.5:1. Where it is used A code block's types, colored by kind on its well | ||||
| code.tagon surface.raised | 5.25:1passes | 6.13:1passes | 5.25:1passes | 6.13:1passes |
Needs 4.5:1. Where it is used A code block's tags, colored by kind on its well | ||||
| code.propertyon surface.raised | 10.57:1passes | 9.61:1passes | 10.57:1passes | 9.61:1passes |
Needs 4.5:1. Where it is used A code block's propertys, colored by kind on its well | ||||
| code.commenton surface.raised | 5.27:1passes | 6.16:1passes | 5.27:1passes | 6.16:1passes |
Needs 4.5:1. Where it is used A code block's comments, colored by kind on its well | ||||
| code.punctuationon surface.raised | 7.22:1passes | 9.57:1passes | 7.22:1passes | 9.57:1passes |
Needs 4.5:1. Where it is used A code block's punctuation, colored by kind on its well | ||||
| Controls, states and focus, which need 3:1139 | ||||
| text.link-underlineon surface.canvas | 1.44:1falls short | 1.67:1falls short | 1.44:1falls short | 1.67:1falls short |
Needs 3:1. Where it is used The line under a link at rest, which tells a link in running text, or words that can be pressed, from the words around it. It is quiet on purpose and falls short of the ratio; the link's words, stronger than the paragraph around them, mark it too | ||||
| text.link-underlineon surface.default | 1.45:1falls short | 1.71:1falls short | 1.45:1falls short | 1.71:1falls short |
Needs 3:1. Where it is used The line under a link at rest, which tells a link in running text, or words that can be pressed, from the words around it. It is quiet on purpose and falls short of the ratio; the link's words, stronger than the paragraph around them, mark it too | ||||
| text.link-underlineon surface.raised | 1.45:1falls short | 1.73:1falls short | 1.45:1falls short | 1.73:1falls short |
Needs 3:1. Where it is used The line under a link at rest, which tells a link in running text, or words that can be pressed, from the words around it. It is quiet on purpose and falls short of the ratio; the link's words, stronger than the paragraph around them, mark it too | ||||
| text.link-underlineon surface.overlay | 1.45:1falls short | 1.71:1falls short | 1.45:1falls short | 1.71:1falls short |
Needs 3:1. Where it is used The line under a link in a popover's text. It is quiet on purpose and falls short of the ratio; the link's words, stronger than the paragraph around them, mark it too | ||||
| border.focuson surface.canvas | 4.83:1passes | 5.06:1passes | 4.83:1passes | 5.06:1passes |
Needs 3:1. Where it is used The focus ring around buttons, links and controls, against the page; and the ring inside the command palette's search box, on the panel | ||||
| border.focuson surface.default | 5.30:1passes | 4.71:1passes | 5.30:1passes | 4.71:1passes |
Needs 3:1. Where it is used The focus ring around buttons, links and controls, against the page; and the ring inside the command palette's search box, on the panel | ||||
| border.focuson surface.raised | 5.53:1passes | 4.15:1passes | 5.53:1passes | 4.15:1passes |
Needs 3:1. Where it is used The focus ring around buttons, links and controls, against the page; and the ring inside the command palette's search box, on the panel | ||||
| border.focuson surface.overlay | 5.78:1passes | 3.49:1passes | 5.78:1passes | 3.49:1passes |
Needs 3:1. Where it is used The focus ring of a dropdown item, and inside the select's highlighted choice and the combobox's active option, on the overlay panel and on the hover fill; around a calendar day in the date picker's panel | ||||
| border.focuson surface.hover | 3.77:1passes | 3.76:1passes | 3.77:1passes | 3.76:1passes |
Needs 3:1. Where it is used The focus ring of a dropdown item, and inside the select's highlighted choice and the combobox's active option, on the overlay panel and on the hover fill; around a calendar day in the date picker's panel | ||||
| border.focuson feedback.success.surface-subtle | 5.30:1passes | 4.06:1passes | 5.30:1passes | 4.06:1passes |
Needs 3:1. Where it is used The focus ring of a dismiss or remove button, or a link, on an alert, toast, banner or tag in a feedback tone, and of a mistake's link in the error summary | ||||
| border.focuson feedback.info.surface-subtle | 4.84:1passes | 4.06:1passes | 4.84:1passes | 4.06:1passes |
Needs 3:1. Where it is used The focus ring of a dismiss or remove button, or a link, on an alert, toast, banner or tag in a feedback tone, and of a mistake's link in the error summary | ||||
| border.focuson feedback.warning.surface-subtle | 4.85:1passes | 4.05:1passes | 4.85:1passes | 4.05:1passes |
Needs 3:1. Where it is used The focus ring of a dismiss or remove button, or a link, on an alert, toast, banner or tag in a feedback tone, and of a mistake's link in the error summary | ||||
| border.focuson feedback.danger.surface-subtle | 4.82:1passes | 4.05:1passes | 4.82:1passes | 4.05:1passes |
Needs 3:1. Where it is used The focus ring of a dismiss or remove button, or a link, on an alert, toast, banner or tag in a feedback tone, and of a mistake's link in the error summary | ||||
| border.focuson surface.neutral-subtle | 4.09:1passes | 4.23:1passes | 4.09:1passes | 4.23:1passes |
Needs 3:1. Where it is used The focus ring of the remove button on a default chip or tag | ||||
| border.focus-inverseon surface.brand | 5.53:1passes | 5.53:1passes | 5.53:1passes | 5.53:1passes |
Needs 3:1. Where it is used The focus ring of a brand tag's remove button, on the tag | ||||
| border.focus-fieldon surface.sunken | 5.79:1passes | 12.35:1passes | 5.79:1passes | 12.35:1passes |
Needs 3:1. Where it is used A focused field: its border against the field inside it | ||||
| border.focus-fieldon surface.default | 6.89:1passes | 10.93:1passes | 6.89:1passes | 10.93:1passes |
Needs 3:1. Where it is used A focused field: its border against the page around it | ||||
| feedback.danger.borderon surface.sunken | 2.85:1falls short | 5.32:1passes | 2.85:1falls short | 5.32:1passes |
Needs 3:1. Where it is used A field, checkbox, radio or file upload in error: its red edge or ring, the sign of the error besides the message, against the field or the drop zone inside it and the page around it | ||||
| feedback.danger.borderon surface.default | 3.39:1passes | 4.71:1passes | 3.39:1passes | 4.71:1passes |
Needs 3:1. Where it is used A field, checkbox, radio or file upload in error: its red edge or ring, the sign of the error besides the message, against the field or the drop zone inside it and the page around it | ||||
| feedback.danger.borderon surface.canvas | 3.09:1passes | 5.06:1passes | 3.09:1passes | 5.06:1passes |
Needs 3:1. Where it is used A field, checkbox, radio or file upload in error: its red edge or ring, the sign of the error besides the message, against the field or the drop zone inside it and the page around it | ||||
| surface.sunkenon surface.default | 1.09:1falls short | 1.09:1falls short | 1.09:1falls short | 1.09:1falls short |
Needs 3:1. Where it is used Inputs, selects and search fields: the well that shows where to type, against the page. The command palette's highlighted command: the sunken fill that marks it, against the panel; the command's bolder label marks it too. A toggle button that is on: the sunken fill that shows it, against the page; its rim and the shadow along its top mark it too. | ||||
| surface.sunkenon surface.raised | 1.09:1falls short | 1.18:1falls short | 1.09:1falls short | 1.18:1falls short |
Needs 3:1. Where it is used A ghost toggle button that is on, a toolbar's tool: the sunken fill that shows it, against the raised bar; its rim and the shadow along its top mark it too, and it says it is pressed | ||||
| border.controlon surface.default | 3.38:1passes | 4.72:1passes | 3.38:1passes | 4.72:1passes |
Needs 3:1. Where it is used An unchecked checkbox or radio: its edge is all that shows it is there. A standard slider: the gray line past the value, which shows where the range runs, against the page | ||||
| border.controlon surface.canvas | 3.09:1passes | 5.07:1passes | 3.09:1passes | 5.07:1passes |
Needs 3:1. Where it is used An unchecked checkbox or radio: its edge is all that shows it is there. A standard slider: the gray line past the value, which shows where the range runs, against the page | ||||
| feedback.info.borderon surface.default | 3.39:1passes | 4.71:1passes | 3.39:1passes | 4.71:1passes |
Needs 3:1. Where it is used The diagram node block, chosen: its thicker edge, which marks the box a reader is reading about, on the box and the page | ||||
| feedback.info.borderon surface.sunken | 2.85:1falls short | 5.32:1passes | 2.85:1falls short | 5.32:1passes |
Needs 3:1. Where it is used The diagram node block, chosen: its thicker edge, which marks the box a reader is reading about, on the box and the page | ||||
| feedback.info.borderon surface.canvas | 3.10:1passes | 5.06:1passes | 3.10:1passes | 5.06:1passes |
Needs 3:1. Where it is used The diagram node block, chosen: its thicker edge, which marks the box a reader is reading about, on the box and the page | ||||
| border.strongon surface.default | 2.29:1falls short | 1.59:1falls short | 2.29:1falls short | 1.59:1falls short |
Needs 3:1. Where it is used An unchecked subtle checkbox: its edge against the page. A drop zone: its dashed edge, which shows where files can be dropped, against the zone inside it and the page around it. A stepper's step not started: the ring around its number | ||||
| border.strongon surface.canvas | 2.09:1falls short | 1.71:1falls short | 2.09:1falls short | 1.71:1falls short |
Needs 3:1. Where it is used An unchecked subtle checkbox: its edge against the page. A drop zone: its dashed edge, which shows where files can be dropped, against the zone inside it and the page around it. A stepper's step not started: the ring around its number | ||||
| surface.inverseon surface.default | 11.85:1passes | 14.58:1passes | 11.85:1passes | 14.58:1passes |
Needs 3:1. Where it is used A checked checkbox: the filled shape that shows the state | ||||
| surface.inverseon surface.canvas | 10.81:1passes | 15.66:1passes | 10.81:1passes | 15.66:1passes |
Needs 3:1. Where it is used A checked checkbox: the filled shape that shows the state | ||||
| action.inverse.backgroundon surface.default | 11.85:1passes | 15.98:1passes | 11.85:1passes | 15.98:1passes |
Needs 3:1. Where it is used A chosen radio: the filled mark that shows the choice | ||||
| action.inverse.backgroundon surface.canvas | 10.81:1passes | 17.17:1passes | 10.81:1passes | 17.17:1passes |
Needs 3:1. Where it is used A chosen radio: the filled mark that shows the choice | ||||
| surface.brandon surface.default | 5.30:1passes | 3.02:1passes | 5.30:1passes | 3.02:1passes |
Needs 3:1. Where it is used A switch that is on: the filled track. A standard slider: the round thumb, which marks the value, against the page beside its thin line | ||||
| surface.brandon surface.canvas | 4.83:1passes | 3.24:1passes | 4.83:1passes | 3.24:1passes |
Needs 3:1. Where it is used A switch that is on: the filled track. A standard slider: the round thumb, which marks the value, against the page beside its thin line | ||||
| surface.inverseon surface.track-subtle | 8.05:1passes | 10.81:1passes | 8.05:1passes | 10.81:1passes |
Needs 3:1. Where it is used A progress bar's default fill: the amount, against the empty track it runs along | ||||
| surface.brandon surface.track-subtle | 3.60:1passes | 2.24:1falls short | 3.60:1passes | 2.24:1falls short |
Needs 3:1. Where it is used A progress bar's brand fill: the amount, against the empty track it runs along | ||||
| feedback.success.surfaceon surface.track-subtle | 3.43:1passes | 2.35:1falls short | 3.43:1passes | 2.35:1falls short |
Needs 3:1. Where it is used A progress bar's success fill: the amount, against the empty track it runs along | ||||
| feedback.warning.surfaceon surface.track-subtle | 3.42:1passes | 2.36:1falls short | 3.42:1passes | 2.36:1falls short |
Needs 3:1. Where it is used A progress bar's warning fill: the amount, against the empty track it runs along | ||||
| feedback.danger.surfaceon surface.track-subtle | 3.60:1passes | 2.24:1falls short | 3.60:1passes | 2.24:1falls short |
Needs 3:1. Where it is used A progress bar's danger fill: the amount, against the empty track it runs along | ||||
| surface.inverseon surface.track | 3.50:1passes | 6.30:1passes | 3.50:1passes | 6.30:1passes |
Needs 3:1. Where it is used A capacity meter's taken places against its free ones: the filled bars beside the empty bars | ||||
| data.serieson surface.track-subtle | 3.42:1passes | 5.16:1passes | 2.68:1falls short | 4.35:1passes |
Needs 3:1. Where it is used A meter's series fill and a progress ring's done part: the amount, against the empty track it runs along | ||||
| feedback.success.iconon surface.track-subtle | 3.43:1passes | 5.17:1passes | 3.43:1passes | 5.17:1passes |
Needs 3:1. Where it is used A meter's success fill: the amount, against the empty track it runs along | ||||
| feedback.warning.iconon surface.track-subtle | 3.42:1passes | 5.18:1passes | 3.42:1passes | 5.18:1passes |
Needs 3:1. Where it is used A meter's warning fill: the amount, against the empty track it runs along | ||||
| feedback.danger.iconon surface.track-subtle | 3.60:1passes | 5.16:1passes | 3.60:1passes | 5.16:1passes |
Needs 3:1. Where it is used A meter's danger fill: the amount, against the empty track it runs along | ||||
| surface.trackon surface.default | 3.38:1passes | 2.31:1falls short | 3.38:1passes | 2.31:1falls short |
Needs 3:1. Where it is used A switch that is off: its filled track is what shows it is there | ||||
| surface.trackon surface.canvas | 3.09:1passes | 2.49:1falls short | 3.09:1passes | 2.49:1falls short |
Needs 3:1. Where it is used A switch that is off: its filled track is what shows it is there | ||||
| surface.thumbon surface.track | 3.54:1passes | 7.22:1passes | 3.54:1passes | 7.22:1passes |
Needs 3:1. Where it is used A switch's thumb, whose place shows on or off, against the track it sits on | ||||
| surface.thumbon surface.brand | 5.53:1passes | 5.53:1passes | 5.53:1passes | 5.53:1passes |
Needs 3:1. Where it is used A switch's thumb, whose place shows on or off, against the track it sits on | ||||
| border.controlon surface.sunken | 2.84:1falls short | 5.33:1passes | 2.84:1falls short | 5.33:1passes |
Needs 3:1. Where it is used A slider: the gray lines on their band, which show where the range runs | ||||
| border.brandon surface.sunken | 4.45:1passes | 3.41:1passes | 4.45:1passes | 3.41:1passes |
Needs 3:1. Where it is used A slider: the red lines up to the value, on their band. A drop zone with files held over it: its brand edge against the sunken surface inside it | ||||
| border.brandon surface.default | 5.30:1passes | 3.02:1passes | 5.30:1passes | 3.02:1passes |
Needs 3:1. Where it is used A chosen choice card: its brand edge, which shows the choice beside the filled mark, against the card inside it and the page around it. A selected card: its brand edge, against each card surface inside it and the page around it. Today in a calendar: the ring inside its mark, on the page. A drop zone with files held over it: its brand edge against the page around it. A splitter being dragged: its brand line, twice as thick, against the page. A chosen tab in the line look: its brand underline, or its side bar in a vertical bar, which is how the choice shows. A pinned table row: its brand edge at the start, beside the pin | ||||
| border.brandon surface.canvas | 4.83:1passes | 3.24:1passes | 4.83:1passes | 3.24:1passes |
Needs 3:1. Where it is used A chosen choice card: its brand edge, which shows the choice beside the filled mark, against the card inside it and the page around it. A selected card: its brand edge, against each card surface inside it and the page around it. Today in a calendar: the ring inside its mark, on the page. A drop zone with files held over it: its brand edge against the page around it. A splitter being dragged: its brand line, twice as thick, against the page. A chosen tab in the line look: its brand underline, or its side bar in a vertical bar, which is how the choice shows. A pinned table row: its brand edge at the start, beside the pin | ||||
| border.brandon surface.raised | 5.53:1passes | 2.66:1falls short | 5.53:1passes | 2.66:1falls short |
Needs 3:1. Where it is used A chosen choice card: its brand edge, which shows the choice beside the filled mark, against the card inside it and the page around it. A selected card: its brand edge, against each card surface inside it and the page around it. Today in a calendar: the ring inside its mark, on the page. A drop zone with files held over it: its brand edge against the page around it. A splitter being dragged: its brand line, twice as thick, against the page. A chosen tab in the line look: its brand underline, or its side bar in a vertical bar, which is how the choice shows. A pinned table row: its brand edge at the start, beside the pin | ||||
| border.brandon surface.sunken | 4.45:1passes | 3.41:1passes | 4.45:1passes | 3.41:1passes |
Needs 3:1. Where it is used A chosen choice card: its brand edge, which shows the choice beside the filled mark, against the card inside it and the page around it. A selected card: its brand edge, against each card surface inside it and the page around it. Today in a calendar: the ring inside its mark, on the page. A drop zone with files held over it: its brand edge against the page around it. A splitter being dragged: its brand line, twice as thick, against the page. A chosen tab in the line look: its brand underline, or its side bar in a vertical bar, which is how the choice shows. A pinned table row: its brand edge at the start, beside the pin | ||||
| border.brandon surface.overlay | 5.78:1passes | 2.24:1falls short | 5.78:1passes | 2.24:1falls short |
Needs 3:1. Where it is used Today in a calendar: the ring inside its mark, in the date picker's panel | ||||
| action.brand.backgroundon surface.overlay | 5.78:1passes | 2.24:1falls short | 5.78:1passes | 2.24:1falls short |
Needs 3:1. Where it is used The chosen calendar day: the filled mark that shows the choice, in the date picker's panel and on the page. A standard slider's red line up to the value, and a fill slider's red part, against the page. A stepper's current step: the brand mark that shows it, against the page | ||||
| action.brand.backgroundon surface.default | 5.30:1passes | 3.02:1passes | 5.30:1passes | 3.02:1passes |
Needs 3:1. Where it is used The chosen calendar day: the filled mark that shows the choice, in the date picker's panel and on the page. A standard slider's red line up to the value, and a fill slider's red part, against the page. A stepper's current step: the brand mark that shows it, against the page | ||||
| action.brand.backgroundon surface.canvas | 4.83:1passes | 3.24:1passes | 4.83:1passes | 3.24:1passes |
Needs 3:1. Where it is used The chosen calendar day: the filled mark that shows the choice, in the date picker's panel and on the page. A standard slider's red line up to the value, and a fill slider's red part, against the page. A stepper's current step: the brand mark that shows it, against the page | ||||
| action.brand.backgroundon surface.neutral-subtle | 4.09:1passes | 2.71:1falls short | 4.09:1passes | 2.71:1falls short |
Needs 3:1. Where it is used A fill slider: the red part up to the value, against the empty bar beside it. A ruler's handle, the width now, on a shaded stretch of its band | ||||
| action.brand.backgroundon surface.sunken | 4.45:1passes | 3.41:1passes | 4.45:1passes | 3.41:1passes |
Needs 3:1. Where it is used A curve editor's handles, their brand ring, on the sunken plot; a ruler's handle, the width now, on the plain stretch of its band | ||||
| surface.neutral-subtleon surface.default | 1.19:1falls short | 1.21:1falls short | 1.19:1falls short | 1.21:1falls short |
Needs 3:1. Where it is used A fill slider: the empty bar past the value, which shows where the range runs, against the page | ||||
| surface.neutral-subtleon surface.canvas | 1.18:1falls short | 1.20:1falls short | 1.18:1falls short | 1.20:1falls short |
Needs 3:1. Where it is used A fill slider: the empty bar past the value, which shows where the range runs, against the page | ||||
| action.brand.foregroundon action.brand.background | 5.53:1passes | 5.53:1passes | 5.53:1passes | 5.53:1passes |
Needs 3:1. Where it is used A fill slider: the thin handle, which marks the value, on the red part around it | ||||
| surface.brandon surface.sunken | 4.45:1passes | 3.41:1passes | 4.45:1passes | 3.41:1passes |
Needs 3:1. Where it is used A slider: the thumb, which marks the value, against the band it crosses | ||||
| icon.defaulton surface.canvas | 12.85:1passes | 15.66:1passes | 12.85:1passes | 15.66:1passes |
Needs 3:1. Where it is used A spinner: the turning ring, which shows that something is being worked on, against the page; its words say what | ||||
| icon.defaulton surface.default | 14.08:1passes | 14.58:1passes | 14.08:1passes | 14.58:1passes |
Needs 3:1. Where it is used A spinner: the turning ring, which shows that something is being worked on, against the page; its words say what | ||||
| icon.defaulton surface.raised | 14.72:1passes | 12.85:1passes | 14.72:1passes | 12.85:1passes |
Needs 3:1. Where it is used A spinner: the turning ring, which shows that something is being worked on, against the page; its words say what | ||||
| icon.defaulton surface.selected | 10.87:1passes | 13.09:1passes | 10.87:1passes | 13.09:1passes |
Needs 3:1. Where it is used A chosen option in a selectable list: the tick that shows it is chosen, on the option's see-through selected fill | ||||
| surface.defaulton surface.canvas | 1.10:1falls short | 1.07:1falls short | 1.10:1falls short | 1.07:1falls short |
Needs 3:1. Where it is used The current row of a navigation list: the default fill that marks it, against the page; its rim and its bolder title mark it too | ||||
| icon.subtleon surface.canvas | 6.30:1passes | 11.67:1passes | 6.30:1passes | 11.67:1passes |
Needs 3:1. Where it is used A subtle spinner: the turning ring against the page, as in a file row that is uploading. A splitter's grip: the dots that show where to take hold, on the raised pill | ||||
| icon.subtleon surface.default | 6.90:1passes | 10.86:1passes | 6.90:1passes | 10.86:1passes |
Needs 3:1. Where it is used A subtle spinner: the turning ring against the page, as in a file row that is uploading. A splitter's grip: the dots that show where to take hold, on the raised pill | ||||
| icon.subtleon surface.raised | 7.22:1passes | 9.57:1passes | 7.22:1passes | 9.57:1passes |
Needs 3:1. Where it is used A subtle spinner: the turning ring against the page, as in a file row that is uploading. A splitter's grip: the dots that show where to take hold, on the raised pill | ||||
| icon.subtleon surface.overlay | 7.54:1passes | 8.05:1passes | 7.54:1passes | 8.05:1passes |
Needs 3:1. Where it is used A combobox list that is loading: the subtle spinner's ring on the overlay panel; its words say what | ||||
| surface.raisedon surface.canvas | 1.15:1falls short | 1.22:1falls short | 1.15:1falls short | 1.22:1falls short |
Needs 3:1. Where it is used The chosen tab, the chosen segment of a segmented control and the chosen theme in the theme switch: the raised pill against the bar, which is how the choice shows | ||||
| surface.canvason surface.default | 1.10:1falls short | 1.07:1falls short | 1.10:1falls short | 1.07:1falls short |
Needs 3:1. Where it is used The current navigation item, pressed into the bar: the canvas fill that marks it, against the bar | ||||
| action.ghost.background-pressedon surface.default | 1.47:1falls short | 1.35:1falls short | 1.47:1falls short | 1.35:1falls short |
Needs 3:1. Where it is used The current page of a pagination: its pressed fill against the page | ||||
| icon.defaulton action.secondary.background | 10.03:1passes | 13.09:1passes | 10.03:1passes | 13.09:1passes |
Needs 3:1. Where it is used A stepper's finished step: the check that shows it, on its gray mark | ||||
| feedback.danger.surfaceon surface.default | 5.30:1passes | 3.02:1passes | 5.30:1passes | 3.02:1passes |
Needs 3:1. Where it is used A stepper's step with an error: the red mark around the warning sign, against the page | ||||
| feedback.danger.surfaceon surface.canvas | 4.83:1passes | 3.24:1passes | 4.83:1passes | 3.24:1passes |
Needs 3:1. Where it is used A stepper's step with an error: the red mark around the warning sign, against the page | ||||
| data.serieson surface.canvas | 4.58:1passes | 7.48:1passes | 3.59:1passes | 6.31:1passes |
Needs 3:1. Where it is used A sparkline's line and end dot, a line chart's line and marked point, plain bars, and a legend item's series swatch: the one series of a chart | ||||
| data.serieson surface.default | 5.03:1passes | 6.96:1passes | 3.94:1passes | 5.87:1passes |
Needs 3:1. Where it is used A sparkline's line and end dot, a line chart's line and marked point, plain bars, and a legend item's series swatch: the one series of a chart | ||||
| data.serieson surface.raised | 5.25:1passes | 6.13:1passes | 4.12:1passes | 5.18:1passes |
Needs 3:1. Where it is used A sparkline's line and end dot, a line chart's line and marked point, plain bars, and a legend item's series swatch: the one series of a chart | ||||
| data.categorical.1on surface.canvas | 4.58:1passes | 7.48:1passes | 3.59:1passes | 6.31:1passes |
Needs 3:1. Where it is used A legend item's swatch 1, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.1on surface.default | 5.03:1passes | 6.96:1passes | 3.94:1passes | 5.87:1passes |
Needs 3:1. Where it is used A legend item's swatch 1, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.1on surface.raised | 5.25:1passes | 6.13:1passes | 4.12:1passes | 5.18:1passes |
Needs 3:1. Where it is used A legend item's swatch 1, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.2on surface.canvas | 3.09:1passes | 7.51:1passes | 3.12:1passes | 5.98:1passes |
Needs 3:1. Where it is used A legend item's swatch 2, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.2on surface.default | 3.39:1passes | 6.99:1passes | 3.42:1passes | 5.57:1passes |
Needs 3:1. Where it is used A legend item's swatch 2, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.2on surface.raised | 3.54:1passes | 6.16:1passes | 3.58:1passes | 4.91:1passes |
Needs 3:1. Where it is used A legend item's swatch 2, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.3on surface.canvas | 6.30:1passes | 11.67:1passes | 5.59:1passes | 3.98:1passes |
Needs 3:1. Where it is used A legend item's swatch 3, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.3on surface.default | 6.90:1passes | 10.86:1passes | 6.12:1passes | 3.71:1passes |
Needs 3:1. Where it is used A legend item's swatch 3, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.3on surface.raised | 7.22:1passes | 9.57:1passes | 6.40:1passes | 3.27:1passes |
Needs 3:1. Where it is used A legend item's swatch 3, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.4on surface.canvas | 3.08:1passes | 7.49:1passes | 3.12:1passes | 6.42:1passes |
Needs 3:1. Where it is used A legend item's swatch 4, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.4on surface.default | 3.38:1passes | 6.97:1passes | 3.42:1passes | 5.97:1passes |
Needs 3:1. Where it is used A legend item's swatch 4, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.4on surface.raised | 3.53:1passes | 6.14:1passes | 3.58:1passes | 5.27:1passes |
Needs 3:1. Where it is used A legend item's swatch 4, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.5on surface.canvas | 3.10:1passes | 11.73:1passes | 4.80:1passes | 4.41:1passes |
Needs 3:1. Where it is used A legend item's swatch 5, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.5on surface.default | 3.39:1passes | 10.91:1passes | 5.26:1passes | 4.10:1passes |
Needs 3:1. Where it is used A legend item's swatch 5, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.5on surface.raised | 3.55:1passes | 9.62:1passes | 5.50:1passes | 3.61:1passes |
Needs 3:1. Where it is used A legend item's swatch 5, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.6on surface.canvas | 4.58:1passes | 5.04:1passes | 3.18:1passes | 6.30:1passes |
Needs 3:1. Where it is used A legend item's swatch 6, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.6on surface.default | 5.02:1passes | 4.69:1passes | 3.48:1passes | 5.87:1passes |
Needs 3:1. Where it is used A legend item's swatch 6, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.6on surface.raised | 5.25:1passes | 4.14:1passes | 3.64:1passes | 5.17:1passes |
Needs 3:1. Where it is used A legend item's swatch 6, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.7on surface.canvas | 3.10:1passes | 5.05:1passes | 4.65:1passes | 4.55:1passes |
Needs 3:1. Where it is used A legend item's swatch 7, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.7on surface.default | 3.40:1passes | 4.70:1passes | 5.10:1passes | 4.23:1passes |
Needs 3:1. Where it is used A legend item's swatch 7, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.7on surface.raised | 3.55:1passes | 4.14:1passes | 5.33:1passes | 3.73:1passes |
Needs 3:1. Where it is used A legend item's swatch 7, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.8on surface.canvas | 4.61:1passes | 11.68:1passes | 4.82:1passes | 4.39:1passes |
Needs 3:1. Where it is used A legend item's swatch 8, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.8on surface.default | 5.05:1passes | 10.87:1passes | 5.28:1passes | 4.08:1passes |
Needs 3:1. Where it is used A legend item's swatch 8, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| data.categorical.8on surface.raised | 5.28:1passes | 9.58:1passes | 5.52:1passes | 3.60:1passes |
Needs 3:1. Where it is used A legend item's swatch 8, a stacked bar's segment and a donut's part in it: the color that matches a series to its name | ||||
| surface.trackon surface.canvas | 3.09:1passes | 2.49:1falls short | 3.09:1passes | 2.49:1falls short |
Needs 3:1. Where it is used A legend item's muted swatch, and Other in a stacked bar or a donut: the gray of everything else | ||||
| surface.trackon surface.default | 3.38:1passes | 2.31:1falls short | 3.38:1passes | 2.31:1falls short |
Needs 3:1. Where it is used A legend item's muted swatch, and Other in a stacked bar or a donut: the gray of everything else | ||||
| surface.trackon surface.raised | 3.54:1passes | 2.04:1falls short | 3.54:1passes | 2.04:1falls short |
Needs 3:1. Where it is used A legend item's muted swatch, and Other in a stacked bar or a donut: the gray of everything else | ||||
| data.series-hoveron surface.canvas | 6.28:1passes | 11.72:1passes | 5.10:1passes | 8.47:1passes |
Needs 3:1. Where it is used A bar chart's current bar, such as today's: a step darker than the rest, also named by its label | ||||
| data.series-hoveron surface.default | 6.89:1passes | 10.90:1passes | 5.59:1passes | 7.88:1passes |
Needs 3:1. Where it is used A bar chart's current bar, such as today's: a step darker than the rest, also named by its label | ||||
| data.series-hoveron surface.raised | 7.20:1passes | 9.61:1passes | 5.85:1passes | 6.94:1passes |
Needs 3:1. Where it is used A bar chart's current bar, such as today's: a step darker than the rest, also named by its label | ||||
| data.reference-lineon surface.canvas | 9.18:1passes | 15.66:1passes | 6.30:1passes | 7.51:1passes |
Needs 3:1. Where it is used A line chart's dashed line for the period compared with, and the baseline at zero of the line and bar charts | ||||
| data.reference-lineon surface.default | 10.06:1passes | 14.58:1passes | 6.90:1passes | 6.99:1passes |
Needs 3:1. Where it is used A line chart's dashed line for the period compared with, and the baseline at zero of the line and bar charts | ||||
| data.reference-lineon surface.raised | 10.52:1passes | 12.85:1passes | 7.22:1passes | 6.16:1passes |
Needs 3:1. Where it is used A line chart's dashed line for the period compared with, and the baseline at zero of the line and bar charts | ||||
| data.sequential.3on surface.canvas | 3.10:1passes | 3.42:1passes | 2.62:1falls short | 3.80:1passes |
Needs 3:1. Where it is used A heatmap's level 2 of 4: a day's square, the amount in its shade, which its table also holds | ||||
| data.sequential.3on surface.default | 3.39:1passes | 3.18:1passes | 2.87:1falls short | 3.54:1passes |
Needs 3:1. Where it is used A heatmap's level 2 of 4: a day's square, the amount in its shade, which its table also holds | ||||
| data.sequential.3on surface.raised | 3.55:1passes | 2.80:1falls short | 3.00:1passes | 3.12:1passes |
Needs 3:1. Where it is used A heatmap's level 2 of 4: a day's square, the amount in its shade, which its table also holds | ||||
| data.sequential.4on surface.canvas | 4.58:1passes | 5.06:1passes | 4.10:1passes | 5.54:1passes |
Needs 3:1. Where it is used A heatmap's level 3 of 4: a day's square, the amount in its shade, which its table also holds | ||||
| data.sequential.4on surface.default | 5.03:1passes | 4.71:1passes | 4.50:1passes | 5.15:1passes |
Needs 3:1. Where it is used A heatmap's level 3 of 4: a day's square, the amount in its shade, which its table also holds | ||||
| data.sequential.4on surface.raised | 5.25:1passes | 4.15:1passes | 4.70:1passes | 4.54:1passes |
Needs 3:1. Where it is used A heatmap's level 3 of 4: a day's square, the amount in its shade, which its table also holds | ||||
| data.sequential.5on surface.canvas | 6.28:1passes | 11.72:1passes | 6.62:1passes | 8.33:1passes |
Needs 3:1. Where it is used A heatmap's level 4 of 4: a day's square, the amount in its shade, which its table also holds | ||||
| data.sequential.5on surface.default | 6.89:1passes | 10.90:1passes | 7.25:1passes | 7.75:1passes |
Needs 3:1. Where it is used A heatmap's level 4 of 4: a day's square, the amount in its shade, which its table also holds | ||||
| data.sequential.5on surface.raised | 7.20:1passes | 9.61:1passes | 7.58:1passes | 6.83:1passes |
Needs 3:1. Where it is used A heatmap's level 4 of 4: a day's square, the amount in its shade, which its table also holds | ||||
| feedback.success.iconon surface.canvas | 4.61:1passes | 7.49:1passes | 4.61:1passes | 7.49:1passes |
Needs 3:1. Where it is used An uptime bar's up bars, which the summary and the share up also say in words | ||||
| feedback.success.iconon surface.default | 5.05:1passes | 6.97:1passes | 5.05:1passes | 6.97:1passes |
Needs 3:1. Where it is used An uptime bar's up bars, which the summary and the share up also say in words | ||||
| feedback.success.iconon surface.raised | 5.28:1passes | 6.14:1passes | 5.28:1passes | 6.14:1passes |
Needs 3:1. Where it is used An uptime bar's up bars, which the summary and the share up also say in words | ||||
| feedback.warning.iconon surface.canvas | 4.59:1passes | 7.51:1passes | 4.59:1passes | 7.51:1passes |
Needs 3:1. Where it is used An uptime bar's incident bars, which the summary and the share up also say in words | ||||
| feedback.warning.iconon surface.default | 5.03:1passes | 6.99:1passes | 5.03:1passes | 6.99:1passes |
Needs 3:1. Where it is used An uptime bar's incident bars, which the summary and the share up also say in words | ||||
| feedback.warning.iconon surface.raised | 5.25:1passes | 6.16:1passes | 5.25:1passes | 6.16:1passes |
Needs 3:1. Where it is used An uptime bar's incident bars, which the summary and the share up also say in words | ||||
| feedback.danger.iconon surface.canvas | 4.83:1passes | 7.47:1passes | 4.83:1passes | 7.47:1passes |
Needs 3:1. Where it is used An uptime bar's outage bars, which the summary and the share up also say in words | ||||
| feedback.danger.iconon surface.default | 5.30:1passes | 6.95:1passes | 5.30:1passes | 6.95:1passes |
Needs 3:1. Where it is used An uptime bar's outage bars, which the summary and the share up also say in words | ||||
| feedback.danger.iconon surface.raised | 5.53:1passes | 6.13:1passes | 5.53:1passes | 6.13:1passes |
Needs 3:1. Where it is used An uptime bar's outage bars, which the summary and the share up also say in words | ||||
| icon.on-brandon action.brand.background | 5.53:1passes | 5.53:1passes | 5.53:1passes | 5.53:1passes |
Needs 3:1. Where it is used A chosen picture tile: the tick on its brand disc, which shows the choice as a shape | ||||
| border.inverseon surface.overlay | 15.38:1passes | 12.38:1passes | 15.38:1passes | 12.38:1passes |
Needs 3:1. Where it is used A color swatch picker's chosen color: the ring with a gap round its swatch, which shows the choice as a shape, against the surface in the gap and around it, in the color picker's panel and on the page | ||||
| border.inverseon surface.canvas | 12.85:1passes | 17.95:1passes | 12.85:1passes | 17.95:1passes |
Needs 3:1. Where it is used A color swatch picker's chosen color: the ring with a gap round its swatch, which shows the choice as a shape, against the surface in the gap and around it, in the color picker's panel and on the page | ||||
| border.inverseon surface.default | 14.08:1passes | 16.70:1passes | 14.08:1passes | 16.70:1passes |
Needs 3:1. Where it is used A color swatch picker's chosen color: the ring with a gap round its swatch, which shows the choice as a shape, against the surface in the gap and around it, in the color picker's panel and on the page | ||||
| border.inverseon surface.raised | 14.72:1passes | 14.72:1passes | 14.72:1passes | 14.72:1passes |
Needs 3:1. Where it is used A color swatch picker's chosen color: the ring with a gap round its swatch, which shows the choice as a shape, against the surface in the gap and around it, in the color picker's panel and on the page | ||||
| What | Why not |
|---|---|
Disabled text and controls | WCAG exempts controls that cannot be used. They must still read as disabled, which is checked by eye, not by a ratio. |
Dividers, card and panel edges, the highlight and shade edges | They separate or polish. What they surround is identified by its text, its fill or its place, so their color is not what makes anything usable. |
Button borders | A button is identified by its label and its fill; the border only styles it. The label is measured. |
A soft badge's and a tag's pale edge | The badge and the tag say their status in words, which are measured on their pale fill; the edge only sets the pill off from what it sits on. |
Hover and pressed fills against the page, a selected chip's fill, a chosen list option's fill, the current sidebar item's fill, and a tree view's chosen row's fill | Hover is not needed to find or use a control. The label on each hover and pressed fill is measured as text. A selected chip and a chosen list option show the choice by their tick, measured on their fill, and the current sidebar item and a tree view's chosen row by their bolder label, measured on their fill, so their fills are extra. |
Logos and text straight on pictures | Logos are exempt. Text on a photograph with no band under it depends on the photograph, so it is checked by eye where it is used. The card's band over its picture is measured. |
A card's warning and danger edges and its corner brackets | The edges draw attention to a card whose trouble is said in words inside it, measured as text; the brackets are decoration and say nothing a reader needs. |
Shadows and elevation | They show depth, not what a control is or which state it is in. |
Skeletons | A skeleton holds the place of content that has not arrived and is hidden from assistive technology; the region around it says it is loading. Its see-through gray shows on every surface, which is checked by eye. |
A toolbar's rim and a docked toolbar's line | They draw the edge of a bar that is not a control itself; each tool in it carries its own look, and the floating bar's raised surface and shadow set it off too. |
A code block's line numbers | They help a reader point at a line; they are hidden from screen readers, left out when the code is selected or copied, and say nothing the code does not. The code itself is measured. |
Icons beside a text label | The label carries the meaning; the icon is decoration for this rule. Icons that stand alone, in icon-only buttons, are measured with the ghost button pairs. |
A stepper's connecting lines, its finished steps' gray marks, and its summary's track | The lines join the steps and repeat their order; each step's status is in its mark's number, check or warning sign and in words. A finished step is shown by its check, measured on the mark. The summary's track repeats its count, which is words, and is hidden from screen readers. |
A timeline's dots and lines | The kind of event is said in the title's words and, for screen readers, in words before it; the dot repeats it in color and the line joins the events in their order. The words are measured. |
A splitter's line at rest and under the pointer | The line is the divider's groove: it separates the two panes. The grip's dots on their pill show where to take hold and are measured; under the pointer the hit area takes the hover fill and the pointer changes shape, and while it is dragged the line turns brand and twice as thick, which is measured. A splitter without its grip is found by its place between the panes. |
A tree view's lines and its changed dot | The lines repeat the levels the rows' indents already show. The changed dot is said in words after the label, which a screen reader hears; a page says it in the pane beside the tree as well. |
A sparkline's soft area | It repeats the line above it, which is measured; the figure beside the sparkline carries the meaning. |
A heatmap's empty squares and its lightest level | They show the rhythm of the weeks at a glance, not a value to read: every day's value is in the heatmap's table, which a screen reader reads and a page can show. The three stronger levels are measured. |
A chart's grid lines, the area under a line, the drop line and the ring round a marked point | The grid lines and the drop line help the eye read a value across to its label; the area repeats the line above it; the ring keeps the point clear of the line. The values themselves are in each chart's table, and the line, the bars and the parts are measured. |
A fill slider's marks | They are a scale to read by eye between the lowest and highest values, not the value itself, which the red part, the handle and the words show. |
A status dot's dot, and the dot on a navigation item or a sidebar item | The status is said in the words beside the dot, or in its name when it stands alone; on a navigation or sidebar item the dot's words are part of the item's name. The dot is a cue for the eye, so its color is not what makes the status known. |
The sidebar's tree line, the line under a row of line tabs, and the subtle underline of a line tab under the pointer | The tree line repeats what the children's indent already shows; the line under the tabs separates them from their panel; hover is not needed to find or use a tab. The chosen tab's brand underline is measured. |
An empty state's icon, an error summary's icon and its edge, and the cue at the end of a page header's tabs | The empty state and the error summary say what happened in words, which are measured; the icon and the edge repeat the tone. The cue only hints that the row of tabs scrolls; the tabs past it are reached by scrolling and by the arrow keys, and each tab's label is measured. |
A chosen picture tile's rim and an avatar group's rings | The tick on the chosen tile shows the choice and is measured; the rim repeats it. The rings only keep overlapping faces apart. |
The colors a color range's steps, a contrast pair's sample and a shadow editor's preview show; a curve editor's curve, arms, straight line and limit; a ruler's breakpoint lines and width ticks; a corner sample's edges | The colors are the reader's data, each told in words beside it (a step's name and ratio, the roles, the ratio and the mark, the layers' numbers). The lines draw numbers that the curve editor's boxes and handles, and the ruler's figures and handle, give in words; a corner sample is a picture whose step and size are written beside it. |
The colors a color swatch, a color slider's strip and a color area show, their edges, the checkerboard, and a color thumb's light ring | The colors are the reader's data, not the system's, so no pair can be fixed; each color is also said in words (a swatch's name, a slider's or an area's value and color name, a code). The edges and the checkerboard only show where a color ends and how see-through it is. The thumb's ring is light on any color and its focus ring, with the page's color in the gap, is measured with the focus pairs. |
314 tokens in 11 groups. Open a group to see its tokens. The button beside a CSS name copies it, ready to paste; open a row for what the token is for and which components read it.
The raw shades the semantic colors point at. No component reads them, and they do not reach CSS. A step number means the same contrast with white in every hue; a see-through ramp shows its steps over a checkerboard.
| Token | Light | Dark | CSS |
|---|---|---|---|
canvas | #e7ebf0 | #111213 | --smbk-color-surface-canvas |
Page background.
| |||
default | #f3f5f8 | #181a1c | --smbk-color-surface-default |
Standard surface: cards, panels, the header.
| |||
disabled | #e7ebf0 | #373d43 | --smbk-color-surface-disabled |
Surface of a disabled card or field.
| |||
raised | #f9fafb | #232527 | --smbk-color-surface-raised |
One floor above default: popovers, raised panels.
| |||
brand | #cc0d0d | #cc0d0d | --smbk-color-surface-brand |
Brand-red surface: closers, highlights.
| |||
inverse | #2d3237 | #e7ebf0 | --smbk-color-surface-inverse |
The opposite surface: tooltips, dark chips.
| |||
sunken | #373d430d | #00000066 | --smbk-color-surface-sunken |
Recessed wells: fields, tracks, code. See-through, so a well always shows one step below what it sits on: the page, a card or a panel.
| |||
translucent | #ffffff66 | #00000066 | --smbk-color-surface-translucent |
See-through glass over pictures and busy backgrounds.
| |||
translucent-subtle | #ffffff26 | #00000026 | --smbk-color-surface-translucent-subtle |
Fainter see-through glass.
| |||
overlay | #ffffff | #2d3237 | --smbk-color-surface-overlay |
Floating panels opened from a control: the dropdown and select list, the combobox list, the date picker and the popover. One step above surface/raised, so a menu opened in a modal, a drawer or on a card stands apart. Dialogs (modal, drawer, command palette) stay on surface/default. Not see-through (that is surface/translucent).
| |||
track | #7c8692 | #4e555e | --smbk-color-surface-track |
The filled track of a switch that is off: 3:1 against the page so the switch shows where it is (decision C).
| |||
skeleton | #373d431a | #606a7533 | --smbk-color-surface-skeleton |
Skeleton shapes: translucent, so they show by the same step on the canvas, default, raised and sunken surfaces in both themes.
| |||
hover | #373d4326 | #606a754d | --smbk-color-surface-hover |
A row or option under the pointer or the keyboard highlight: menu options, table rows. Translucent, so it works on any surface.
| |||
track-subtle | #c4cdd8 | #2d3237 | --smbk-color-surface-track-subtle |
The empty part of a progress track: light enough that the fill stands out by lightness, not only by hue.
| |||
neutral-subtle | #373d431a | #606a7533 | --smbk-color-surface-neutral-subtle |
A quiet neutral fill for small marks and their resting state (default badge, tag, chip): translucent, so it shows by the same step on the default, raised and sunken surfaces. Hover steps up to color/surface/hover.
| |||
thumb | #f9fafb | #f9fafb | --smbk-color-surface-thumb |
The knob of a switch: the same near-white in the light and the dark theme, so it reads as one knob on the red on-track (5.5:1) and on the grey off-track (3.5:1 light, 7.2:1 dark), above the 3:1 a control’s state needs. Used by: Switch. Falls back to color/surface/raised. Remove it if the thumb is to follow the theme again.
| |||
selected | #373d431a | #606a7533 | --smbk-color-surface-selected |
scrim | #111213cc | #111213cc | --smbk-color-surface-scrim |
A dark band under light text over a picture, such as the words on a picture card. The same in both themes, so the text stays readable on any photo.
| |||
| Token | Light | Dark | CSS |
|---|---|---|---|
default | #232527 | #e7ebf0 | --smbk-color-text-default |
Main text.
| |||
subtle | #4e555e | #9ba5b1 | --smbk-color-text-subtle |
Secondary text: descriptions, metadata.
| |||
subtlest | #606a75 | #7c8692 | --smbk-color-text-subtlest |
Quietest text: hints, captions, placeholders.
| |||
disabled | #7c8692 | #606a75 | --smbk-color-text-disabled |
Text in unavailable controls.
| |||
brand | #cc0d0d | #f34336 | --smbk-color-text-brand |
Brand-red text.
| |||
inverse | #f9fafb | #232527 | --smbk-color-text-inverse |
Text on the opposite surface.
| |||
on-brand | #f9fafb | #f9fafb | --smbk-color-text-on-brand |
on-media | #f9fafb | #f9fafb | --smbk-color-text-on-media |
Text over pictures.
| |||
link | #232527 | #e7ebf0 | --smbk-color-text-link |
Link text.
| |||
link-hover | #111213 | #f3f5f8 | --smbk-color-text-link-hover |
Link text on hover.
| |||
link-pressed | #373d43 | #c4cdd8 | --smbk-color-text-link-pressed |
link-underline | #23252730 | #e7ebf030 | --smbk-color-text-link-underline |
link-underline-hover | #4e555e80 | #9ba5b180 | --smbk-color-text-link-underline-hover |
The line under a link, on hover.
| |||
link-underline-pressed | #4e555e | #9ba5b1 | --smbk-color-text-link-underline-pressed |
The line under a link, while pressed.
| |||
link-disabled | #606a75 | #9ba5b1 | --smbk-color-text-link-disabled |
An unavailable link.
| |||
| Token | Light | Dark | CSS |
|---|---|---|---|
subtle | #c4cdd8 | #2d3237 | --smbk-color-border-subtle |
Dividers and quiet edges.
| |||
strong | #9ba5b1 | #373d43 | --smbk-color-border-strong |
Stronger edges and separators.
| |||
control | #7c8692 | #7c8692 | --smbk-color-border-control |
The edge that marks a control: a checkbox, a radio (must reach 3:1).
| |||
control-hover | #606a75 | #9ba5b1 | --smbk-color-border-control-hover |
control-disabled | #c4cdd8 | #606a75 | --smbk-color-border-control-disabled |
control-selected | #ffffff1a | #ffffff80 | --smbk-color-border-control-selected |
A selected control’s edge.
| |||
focus | #cc0d0d | #f34336 | --smbk-color-border-focus |
Keyboard focus ring on controls.
| |||
focus-field | #2f4ab8 | #dfce64 | --smbk-color-border-focus-field |
Keyboard focus ring on fields.
| |||
brand | #cc0d0d | #cc0d0d | --smbk-color-border-brand |
Brand-red edge; also the logo’s mark.
| |||
inverse | #232527 | #f9fafb | --smbk-color-border-inverse |
Edge on the opposite surface.
| |||
groove-top | #c4cdd8 | #00000066 | --smbk-color-border-groove-top |
Upper line of an engraved divider or rim.
| |||
groove-bottom | #ffffff | #ffffff0d | --smbk-color-border-groove-bottom |
Lower line of an engraved divider or rim.
| |||
rim | #ffffffe6 | #ffffff0d | --smbk-color-border-rim |
The light rim that makes a surface look lit: fields, chosen pills, cards.
| |||
rim-subtle | #ffffff33 | #ffffff08 | --smbk-color-border-rim-subtle |
edge-shade-subtle | #0000001a | #00000033 | --smbk-color-border-edge-shade-subtle |
A faint see-through dark edge inside a colour sample (swatches, colour sliders and areas, contrast samples), so any colour stands apart from the surface behind it.
| |||
focus-inverse | #f9fafb | #f9fafb | --smbk-color-border-focus-inverse |
The focus ring on brand surfaces (a brand chip or tag’s remove button), where the brand-red ring would vanish. Decision F.
| |||
on-media | #f9fafb | #f9fafb | --smbk-color-border-on-media |
A light edge that stays light in both themes, for a ring drawn over any colour, such as the colour picker’s thumb.
| |||
| Token | Light | Dark | CSS |
|---|---|---|---|
| Brand9 | |||
background | #cc0d0d | #cc0d0d | --smbk-color-action-brand-background |
Brand button and chip: fill at rest.
| |||
background-hover | #a51d17 | #a51d17 | --smbk-color-action-brand-background-hover |
background-pressed | #761812 | #761812 | --smbk-color-action-brand-background-pressed |
Brand button and chip: fill while pressed, one step past hover.
| |||
background-disabled | #cc0d0d66 | #cc0d0d80 | --smbk-color-action-brand-background-disabled |
Brand button and chip: fill when disabled.
| |||
foreground | #f9fafb | #f9fafb | --smbk-color-action-brand-foreground |
foreground-disabled | #ffffff4d | #ffffff4d | --smbk-color-action-brand-foreground-disabled |
Brand button and chip: label and icon when disabled.
| |||
border | #ffffff1a | #ffffff1a | --smbk-color-action-brand-border |
Brand button and chip: edge at rest.
| |||
border-hover | #0000000d | #0000000d | --smbk-color-action-brand-border-hover |
Brand button and chip: edge on hover.
| |||
border-disabled | #0000000d | #0000000d | --smbk-color-action-brand-border-disabled |
Brand button and chip: edge when disabled.
| |||
| Default6 | |||
background | #f3f5f8 | #2d3237 | --smbk-color-action-default-background |
Neutral chip: fill at rest.
| |||
background-hover | #e7ebf0 | #373d43 | --smbk-color-action-default-background-hover |
Neutral chip: fill on hover.
| |||
background-pressed | #c4cdd8 | #4e555e | --smbk-color-action-default-background-pressed |
foreground | #2d3237 | #e7ebf0 | --smbk-color-action-default-foreground |
Neutral chip: label and icon at rest.
| |||
border | #f9fafb | #373d43 | --smbk-color-action-default-border |
Neutral chip: edge at rest.
| |||
border-hover | #9ba5b1 | #606a75 | --smbk-color-action-default-border-hover |
Neutral chip: edge on hover.
| |||
| Secondary4 | |||
background | #373d4326 | #606a7533 | --smbk-color-action-secondary-background |
Secondary button: fill at rest.
| |||
background-hover | #373d4333 | #606a754d | --smbk-color-action-secondary-background-hover |
Secondary button: fill on hover.
| |||
background-pressed | #373d4340 | #606a7566 | --smbk-color-action-secondary-background-pressed |
Secondary button: fill while pressed, one step past hover.
| |||
foreground | #2d3237 | #c4cdd8 | --smbk-color-action-secondary-foreground |
Secondary button: label and icon at rest.
| |||
| Outline7 | |||
border | #c4cdd8 | #373d43 | --smbk-color-action-outline-border |
Outline button: edge at rest.
| |||
border-hover | #9ba5b1 | #4e555e | --smbk-color-action-outline-border-hover |
Outline button: edge on hover.
| |||
border-pressed | #7c8692 | #606a75 | --smbk-color-action-outline-border-pressed |
Outline button: edge while pressed.
| |||
foreground | #2d3237 | #c4cdd8 | --smbk-color-action-outline-foreground |
Outline button: label and icon at rest.
| |||
foreground-disabled | #9ba5b1 | #606a75 | --smbk-color-action-outline-foreground-disabled |
Outline button: label and icon when disabled.
| |||
background-hover | #373d431a | #606a751a | --smbk-color-action-outline-background-hover |
Outline button: fill on hover.
| |||
background-pressed | #c4cdd8 | #2d3237 | --smbk-color-action-outline-background-pressed |
Outline button: fill while pressed, one step past hover.
| |||
| Ghost3 | |||
background-hover | #373d4326 | #606a754d | --smbk-color-action-ghost-background-hover |
Ghost button: fill on hover.
| |||
background-pressed | #c4cdd8 | #2d3237 | --smbk-color-action-ghost-background-pressed |
Ghost button: fill while pressed, one step past hover; also the current page in pagination.
| |||
foreground | #2d3237 | #c4cdd8 | --smbk-color-action-ghost-foreground |
Ghost button: label and icon at rest.
| |||
| Inverse6 | |||
background | #2d3237 | #f3f5f8 | --smbk-color-action-inverse-background |
background-hover | #232527 | #e7ebf0 | --smbk-color-action-inverse-background-hover |
background-pressed | #181a1c | #c4cdd8 | --smbk-color-action-inverse-background-pressed |
Dark chip and radio: fill while pressed, one step past hover.
| |||
foreground | #f9fafb | #232527 | --smbk-color-action-inverse-foreground |
border | #373d43 | #f9fafb | --smbk-color-action-inverse-border |
Dark chip and radio: edge at rest.
| |||
border-hover | #2d3237 | #9ba5b1 | --smbk-color-action-inverse-border-hover |
Dark chip and radio: edge on hover.
| |||
| Danger10 | |||
background | #febdb2 | #4b130e | --smbk-color-action-danger-background |
Danger button and menu item: fill at rest.
| |||
background-hover | #fe7d6d | #761812 | --smbk-color-action-danger-background-hover |
Danger button and menu item: fill on hover.
| |||
background-pressed | #f34336 | #a51d17 | --smbk-color-action-danger-background-pressed |
Danger button and menu item: fill while pressed, one step past hover.
| |||
background-disabled | #cc0d0d4d | #cc0d0d4d | --smbk-color-action-danger-background-disabled |
Danger button and menu item: fill when disabled.
| |||
foreground | #761812 | #febdb2 | --smbk-color-action-danger-foreground |
Danger button and menu item: label and icon at rest.
| |||
foreground-hover | #2a0403 | #fee5e1 | --smbk-color-action-danger-foreground-hover |
Danger button and menu item: label and icon on hover and while pressed.
| |||
foreground-disabled | #cc0d0d80 | #cc0d0d80 | --smbk-color-action-danger-foreground-disabled |
Danger button and menu item: label and icon when disabled.
| |||
border | #0000000d | #0000000d | --smbk-color-action-danger-border |
Danger button and menu item: edge at rest.
| |||
border-hover | #cc0d0d4d | #f34336 | --smbk-color-action-danger-border-hover |
Danger button and menu item: edge on hover.
| |||
border-disabled | #0000000d | #0000000d | --smbk-color-action-danger-border-disabled |
Danger button and menu item: edge when disabled.
| |||
| Disabled3 | |||
background | #373d4314 | #606a751a | --smbk-color-action-disabled-background |
Background of a disabled button, in every tone: a faint see-through grey, always fainter than an enabled button. Not for tracks: a disabled switch or slider part uses color/surface/track-subtle.
| |||
foreground | #7c8692 | #606a75 | --smbk-color-action-disabled-foreground |
The label and icon of every disabled action, shared by every kind of button.
| |||
border | #c4cdd8 | #2d3237 | --smbk-color-action-disabled-border |
The edge of every disabled action, shared by every kind of button.
| |||
| Token | Light | Dark | CSS |
|---|---|---|---|
| Success7 | |||
surface | #037a1f | #037a1f | --smbk-color-feedback-success-surface |
Success messages: strong fill.
| |||
surface-subtle | #dffddf | #0a2d0e | --smbk-color-feedback-success-surface-subtle |
text-on-surface | #f9fafb | #f9fafb | --smbk-color-feedback-success-text-on-surface |
Success messages: text on the strong fill.
| |||
text-on-subtle | #016317 | #8ddf90 | --smbk-color-feedback-success-text-on-subtle |
border | #269936 | #269936 | --smbk-color-feedback-success-border |
border-subtle | #8ddf90 | #084712 | --smbk-color-feedback-success-border-subtle |
icon | #037a1f | #54b85b | --smbk-color-feedback-success-icon |
The success tone’s own icon (a check), so the tone is never shown by colour alone.
| |||
| Warning7 | |||
surface | #b14904 | #b14904 | --smbk-color-feedback-warning-surface |
Warning messages: strong fill.
| |||
surface-subtle | #ffe6db | #431b07 | --smbk-color-feedback-warning-surface-subtle |
text-on-surface | #f9fafb | #f9fafb | --smbk-color-feedback-warning-text-on-surface |
Warning messages: text on the strong fill.
| |||
text-on-subtle | #913900 | #febea2 | --smbk-color-feedback-warning-text-on-subtle |
border | #da601a | #da601a | --smbk-color-feedback-warning-border |
border-subtle | #febea2 | #692903 | --smbk-color-feedback-warning-border-subtle |
icon | #b14904 | #fa8349 | --smbk-color-feedback-warning-icon |
The warning tone’s own icon (a warning sign), so the tone is never shown by colour alone.
| |||
| Danger7 | |||
surface | #cc0d0d | #cc0d0d | --smbk-color-feedback-danger-surface |
Danger messages: strong fill.
| |||
surface-subtle | #fee5e1 | #4b130e | --smbk-color-feedback-danger-surface-subtle |
text-on-surface | #f9fafb | #f9fafb | --smbk-color-feedback-danger-text-on-surface |
text-on-subtle | #a51d17 | #febdb2 | --smbk-color-feedback-danger-text-on-subtle |
Danger messages: text on the pale fill.
| |||
border | #f34336 | #f34336 | --smbk-color-feedback-danger-border |
Danger messages: edge; the edge of a field in error (3:1).
| |||
border-subtle | #febdb2 | #761812 | --smbk-color-feedback-danger-border-subtle |
icon | #cc0d0d | #fe7d6d | --smbk-color-feedback-danger-icon |
The danger tone’s own icon (an alert sign), so the tone is never shown by colour alone.
| |||
| Info7 | |||
surface | #3b5ce3 | #3b5ce3 | --smbk-color-feedback-info-surface |
Info messages: strong fill.
| |||
surface-subtle | #e3ebfe | #162352 | --smbk-color-feedback-info-surface-subtle |
text-on-surface | #f9fafb | #f9fafb | --smbk-color-feedback-info-text-on-surface |
Info messages: text on the strong fill.
| |||
text-on-subtle | #2f4ab8 | #b8ccff | --smbk-color-feedback-info-text-on-subtle |
border | #557bff | #557bff | --smbk-color-feedback-info-border |
border-subtle | #b8ccff | #213583 | --smbk-color-feedback-info-border-subtle |
icon | #3b5ce3 | #7fa0ff | --smbk-color-feedback-info-icon |
The info tone’s own icon (an info sign), so the tone is never shown by colour alone.
| |||
| Token | Light | Dark | CSS |
|---|---|---|---|
xs | #373d430d | #0000001a | --smbk-color-shadow-xs |
Shadow colour, xs: used inside the shadow styles.
| |||
sm | #373d431a | #00000026 | --smbk-color-shadow-sm |
Shadow colour, sm: used inside the shadow styles.
| |||
md | #373d4326 | #00000033 | --smbk-color-shadow-md |
Shadow colour, md: used inside the shadow styles.
| |||
lg | #373d4333 | #0000004d | --smbk-color-shadow-lg |
Shadow colour, lg: used inside the shadow styles.
| |||
xl | #373d434d | #00000066 | --smbk-color-shadow-xl |
Shadow colour, xl: used inside the shadow styles.
| |||
| Token | Light | Dark | CSS |
|---|---|---|---|
default | #232527 | #e7ebf0 | --smbk-color-icon-default |
subtle | #4e555e | #c4cdd8 | --smbk-color-icon-subtle |
Quiet icons.
| |||
disabled | #9ba5b1 | #606a75 | --smbk-color-icon-disabled |
Icons in unavailable controls.
| |||
brand | #cc0d0d | #fe7d6d | --smbk-color-icon-brand |
on-brand | #f9fafb | #f9fafb | --smbk-color-icon-on-brand |
Icons on a brand-red fill.
| |||
subtlest | #606a75 | #9ba5b1 | --smbk-color-icon-subtlest |
The quietest icons: hints and decorations beside placeholder text.
| |||
on-thumb | #4e555e | #4e555e | --smbk-color-icon-on-thumb |
The tick or cross inside a switch’s thumb: the same dark grey in both themes, 7.2:1 on color/surface/thumb. Used by: Switch (Icon on). Falls back to color/icon/subtle. Remove it together with color/surface/thumb.
| |||
| Token | Light | Dark | CSS |
|---|---|---|---|
series | default: #3b5ce3 · cockpit: #0a85a1 | default: #7fa0ff · cockpit: #34a2bf | --smbk-color-data-series |
The single series colour; the same as categorical 1, so one series and the first of many agree. Light blue/600, dark blue/400. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
series-hover | default: #2f4ab8 · cockpit: #056b83 | default: #b8ccff · cockpit: #52bbda | --smbk-color-data-series-hover |
The single series, one step stronger, when pointed at or focused. Light blue/700, dark blue/300. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
categorical.1 | default: #3b5ce3 · cockpit: #0a85a1 | default: #7fa0ff · cockpit: #34a2bf | --smbk-color-data-categorical-1 |
Categorical position 1 (blue). Fixed order, never cycled. Light blue/600, dark blue/400. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
categorical.2 | default: #da601a · cockpit: #b5771c | default: #fa8349 · cockpit: #c28535 | --smbk-color-data-categorical-2 |
Categorical position 2 (orange). Light orange/500, dark orange/400. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
categorical.3 | default: #4e555e · cockpit: #8e4170 | default: #c4cdd8 · cockpit: #a35d85 | --smbk-color-data-categorical-3 |
Categorical position 3 (neutral). Light grey/700, dark grey/300. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
categorical.4 | default: #269936 · cockpit: #11957c | default: #54b85b · cockpit: #3ca88f | --smbk-color-data-categorical-4 |
Categorical position 4 (green). Light green/500, dark green/400. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
categorical.5 | default: #ae5bf9 · cockpit: #6f59a6 | default: #dac3f7 · cockpit: #8270b5 | --smbk-color-data-categorical-5 |
Categorical position 5 (purple). Light purple/500, dark purple/300. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
categorical.6 | default: #137575 · cockpit: #688e3b | default: #1d9393 · cockpit: #7ea059 | --smbk-color-data-categorical-6 |
Categorical position 6 (teal). Light teal/600, dark teal/500. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
categorical.7 | default: #968507 · cockpit: #4167ad | default: #968507 · cockpit: #5a7dbc | --smbk-color-data-categorical-7 |
Categorical position 7 (yellow). Light yellow/500, dark yellow/500. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
categorical.8 | default: #c41883 · cockpit: #a04f27 | default: #f8bbd7 · cockpit: #b06846 | --smbk-color-data-categorical-8 |
Categorical position 8 (pink). Light pink/600, dark pink/300. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
sequential.1 | default: #b8ccff · cockpit: #b8dbe7 | default: #213583 · cockpit: #1a434f | --smbk-color-data-sequential-1 |
Sequential scale, low end (faint cells are outlined and carry their number). Light blue/300, dark blue/800. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
sequential.2 | default: #7fa0ff · cockpit: #7ebcd0 | default: #2f4ab8 · cockpit: #1d5e70 | --smbk-color-data-sequential-2 |
Light blue/400, dark blue/700. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
sequential.3 | default: #557bff · cockpit: #389db9 | default: #3b5ce3 · cockpit: #1d7a93 | --smbk-color-data-sequential-3 |
Sequential scale, step 3. Light blue/500, dark blue/600. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
sequential.4 | default: #3b5ce3 · cockpit: #027b96 | default: #557bff · cockpit: #3097b3 | --smbk-color-data-sequential-4 |
Sequential scale, step 4. Light blue/600, dark blue/500. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
sequential.5 | default: #2f4ab8 · cockpit: #01596d | default: #b8ccff · cockpit: #64b8d2 | --smbk-color-data-sequential-5 |
Sequential scale, high end: stands out most in both themes. Light blue/700, dark blue/300. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
diverging.low-2 | default: #913900 · cockpit: #734803 | default: #febea2 · cockpit: #d79e59 | --smbk-color-data-diverging-low-2 |
Diverging scale, far low end. Light orange/700, dark orange/300. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
diverging.low-1 | default: #da601a · cockpit: #966b34 | default: #da601a · cockpit: #a57e4f | --smbk-color-data-diverging-low-1 |
Diverging scale, low. Light orange/500, dark orange/500. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
diverging.mid | default: #7c8692 · cockpit: #95999d | default: #7c8692 · cockpit: #686c70 | --smbk-color-data-diverging-mid |
Diverging scale, the neutral middle (3:1 on both themes). Light grey/500, dark grey/500. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
diverging.high-1 | default: #557bff · cockpit: #268099 | default: #557bff · cockpit: #4892a8 | --smbk-color-data-diverging-high-1 |
Diverging scale, high. Light blue/500, dark blue/500. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
diverging.high-2 | default: #2f4ab8 · cockpit: #005c71 | default: #b8ccff · cockpit: #4abbdb | --smbk-color-data-diverging-high-2 |
Diverging scale, far high end. Light blue/700, dark blue/300. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
reference-line | default: #373d43 · cockpit: #4e555e | default: #e7ebf0 · cockpit: #9ba5b1 | --smbk-color-data-reference-line |
A threshold or target line across a chart. Light grey/800, dark grey/200. Marks reach 3:1 on the plot background; never colour alone: direct labels, markers or patterns too.
| |||
status.good | default: #016317 · cockpit: #22864a | default: #269936 · cockpit: #61bf7e | --smbk-color-data-status-good |
A chart mark that shows a state that is fine: on target, healthy, done. Calmer than the feedback colors, which stay for badges, banners, icons and text, and never a series color. Marks reach 3:1 on the plot background; never colour alone: a label or an icon says the state too.
| |||
status.warning | default: #776906 · cockpit: #b26f03 | default: #b9a405 · cockpit: #e7b551 | --smbk-color-data-status-warning |
A chart mark that shows a state that needs watching: near a limit, slipping. Calmer than the feedback colors, which stay for badges, banners, icons and text, and never a series color. Marks reach 3:1 on the plot background; never colour alone: a label or an icon says the state too.
| |||
status.bad | default: #a51d17 · cockpit: #ae2d2f | default: #f34336 · cockpit: #d85e59 | --smbk-color-data-status-bad |
A chart mark that shows a state that is wrong: over a limit, failed, lost. Calmer than the feedback colors, which stay for badges, banners, icons and text, and never a series color. Marks reach 3:1 on the plot background; never colour alone: a label or an icon says the state too.
| |||
| Token | Light | Dark | CSS |
|---|---|---|---|
keyword | #9b1cef | #c18cf9 | --smbk-color-code-keyword |
Code: control flow and modules, such as import, export, from, return, if and await, and CSS at-rules such as @media. Light purple/600, dark purple/400. Text: 4.5:1 or more on the code block's well, in both themes; color is never the only sign of what a piece of code is.
| |||
string | #b14904 | #fa8349 | --smbk-color-code-string |
Code: text in quotes. Light orange/600, dark orange/400. Text: 4.5:1 or more on the code block's well, in both themes; color is never the only sign of what a piece of code is.
| |||
number | #037a1f | #8ddf90 | --smbk-color-code-number |
Code: numbers, CSS lengths and colors, and true, false and null. Light green/600, dark green/300. Text: 4.5:1 or more on the code block's well, in both themes; color is never the only sign of what a piece of code is.
| |||
function | #776906 | #dfce64 | --smbk-color-code-function |
Code: function names, CSS functions such as var(), and the command a shell line runs. Light yellow/600, dark yellow/300. Text: 4.5:1 or more on the code block's well, in both themes; color is never the only sign of what a piece of code is.
| |||
type | #137575 | #2ab5b5 | --smbk-color-code-type |
Code: type, class and component names. Light teal/600, dark teal/400. Text: 4.5:1 or more on the code block's well, in both themes; color is never the only sign of what a piece of code is.
| |||
property | #213583 | #b8ccff | --smbk-color-code-property |
Code: keys and properties, such as object and JSON keys, CSS properties and custom properties, HTML and JSX attributes, and command flags. Light blue/800, dark blue/300. Text: 4.5:1 or more on the code block's well, in both themes; color is never the only sign of what a piece of code is.
| |||
comment | #606a75 | #9ba5b1 | --smbk-color-code-comment |
Code: comments, the quietest part of the code. Light grey/600, dark grey/400. Text: 4.5:1 or more on the code block's well, in both themes; color is never the only sign of what a piece of code is.
| |||
punctuation | #4e555e | #c4cdd8 | --smbk-color-code-punctuation |
Code: brackets, commas, colons and operators. Light grey/700, dark grey/300. Text: 4.5:1 or more on the code block's well, in both themes; color is never the only sign of what a piece of code is.
| |||
declaration | #3b5ce3 | #7fa0ff | --smbk-color-code-declaration |
Code: words that declare or name, such as const, let, function, class, interface, type, new and this. Light blue/600, dark blue/400. Text: 4.5:1 or more on the code block's well, in both themes; color is never the only sign of what a piece of code is.
| |||
tag | #3b5ce3 | #7fa0ff | --smbk-color-code-tag |
Code: HTML and JSX tags, and CSS selectors. Light blue/600, dark blue/400. Text: 4.5:1 or more on the code block's well, in both themes; color is never the only sign of what a piece of code is.
| |||
| Token | Light | Dark | CSS |
|---|---|---|---|
scrim | #00000080 | #00000099 | --smbk-color-overlay-scrim |
Dimmed backdrop behind dialogs and drawers.
| |||