Color roles
A color role describes a job, not a fixed hex. Material calls the main action role md.sys.color.primary; your theme decides which color resolves there in light and dark schemes.
Primary
The hero — most important actions & elements.
primaryon-primaryprimary-containeron-primary-containerSecondary
Supporting accents that never compete with primary.
secondaryon-secondarysecondary-containeron-secondary-containerTertiary
A contrasting balance color — at your discretion.
tertiaryon-tertiarytertiary-containeron-tertiary-containerError
Static semantics — never follows your source color.
erroron-errorerror-containeron-error-containerSurface
Six neutral steps — elevation without shadows.
surface-dimsurfacesurface-container-lowestsurface-container-lowsurface-containersurface-container-highsurface-container-highestContent & outline
Text, icons and borders on any surface step.
on-surfaceon-surface-variantoutlineoutline-variantStatus
et— Etesie extensionWhere Material stops at error, Etesie continues the pattern.
successsuccess-containerwarningwarning-containerinfoinfo-containerBrand
et— Etesie extensionYour exact brand colors, unchanged and the same in light and dark.
brandon-brandX vs onX Every fill ships with a matching content color. Use them as a pair, always.
X vs XContainer The accent and its soft container — full strength vs. a calm fill of the same hue.
surface vs surfaceContainer* Neutral steps replace shadows: the higher the step, the more the element floats.
outline vs outlineVariant Functional borders must clear 3:1; decorative hairlines don’t have to.