Colour

Colour roles say what a colour is for, not what it looks like. Each role has an on partner for the content that sits on it, and light and dark are two values of the same names.

Selected token

Select any block below to see how it resolves.

--sn-role-color-on-surface-variantresolves down these levels to a literal

    Roles

    Roles are drawn the way they are used: a role above its on partner, a container beside it. Surfaces form a ladder from dim to bright, and inverse is its own set for dark bands.

    Primaryprimary · on-primary · primary-container · on-primary-container
    Secondarysecondary · on-secondary · secondary-container · on-secondary-container
    Errorerror · on-error · error-container · on-error-container
    Surfacesurface-dim · surface · surface-bright · surface-container-lowest … highest
    Inverseinverse-surface · inverse-on-surface · inverse-primary
    Disableddisabled · on-disabled

    Accent sets

    Accents are complete sets shaped like primary: the colour, what sits on it, a soft container with its own on colour, and a version for inverse bands. Any accent can drive a mark, a stamp or a band, and a preset decides which hues fill the seven slots.

    Accent 1
    Accent 2
    Accent 3
    Accent 4
    Accent 5
    Accent 6
    Accent 7

    Where the colours come from

    Every role above resolves to a tone in a palette. Palettes are built the same way as the type scale: a seed, written in a space, structured by a scale.

    Loading the palette data…

    Get the ones that don’t make the page.

    Plenty of experiments never make it onto this page. The dispatch is where the half-finished ones go first.

    Or follow along on X and LinkedIn.