Start with semantic roles, not colors
The most common mistake in app color design is starting with a favorite color and trying to make it work everywhere. Start instead by defining the semantic roles your palette needs to fill: primary action, secondary action, surface background, surface elevated, destructive, success, warning, info, text primary, text secondary, text disabled. Each role gets a color token. The brand color fills the primary action role and informs the palette — it doesn't fill every role. This semantic-first approach makes dark mode, theming, and future brand updates dramatically easier.
