Skip to main content

The Fundamental Question

Before choosing a color, ask yourself one question.
┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  THE FUNDAMENTAL QUESTION                                                   │
│                                                                             │
│  ╔═════════════════════════════════════════════════════════════════════════╗│
│  ║                                                                         ║│
│  ║          ┌──────────────────────────────────────────┐                   ║│
│  ║          │                                          │                   ║│
│  ║          │    What role does this color play?       │                   ║│
│  ║          │                                          │                   ║│
│  ║          └─────────────────────┬────────────────────┘                   ║│
│  ║                                │                                        ║│
│  ║          ┌─────────────────────┴────────────────────┐                   ║│
│  ║          │                                          │                   ║│
│  ║          v                                          v                   ║│
│  ║  ┌───────────────────┐                    ┌───────────────────┐         ║│
│  ║  │                   │                    │                   │         ║│
│  ║  │  IDENTITY         │                    │  BEHAVIOR         │         ║│
│  ║  │                   │                    │                   │         ║│
│  ║  │  WHAT it IS       │                    │  HOW it ACTS      │         ║│
│  ║  │                   │                    │                   │         ║│
│  ║  └────────┬──────────┘                    └────────┬──────────┘         ║│
│  ║           │                                        │                    ║│
│  ║           v                                        v                    ║│
│  ║    ┌─────────────┐                          ┌─────────────┐             ║│
│  ║    │    CORE     │                          │    FLOW     │             ║│
│  ║    │   (OKLCH)   │                          │ (color-mix) │             ║│
│  ║    └─────────────┘                          └─────────────┘             ║│
│  ║                                                                         ║│
│  ╚═════════════════════════════════════════════════════════════════════════╝│
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

The Master Decision Flowchart

Follow this chart to determine Core vs Flow.
┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  MASTER DECISION FLOWCHART                                                  │
│                                                                             │
│                         "I need a color"                                    │
│                               │                                             │
│                               v                                             │
│               ┌───────────────────────────────────┐                         │
│               │  Does this color represent        │                         │
│               │  a unique IDENTITY?               │                         │
│               └───────────────┬───────────────────┘                         │
│                               │                                             │
│                 ┌─────────────┴─────────────┐                               │
│                 │                           │                               │
│                 v                           v                               │
│               YES                          NO                               │
│                 │                           │                               │
│                 v                           v                               │
│        ┌────────────────┐         ┌──────────────────────┐                  │
│        │                │         │  Is it derived from  │                  │
│        │   USE CORE     │         │  an existing color?  │                  │
│        │   (OKLCH)      │         └──────────┬───────────┘                  │
│        │                │                    │                              │
│        │ Define the     │          ┌─────────┴─────────┐                    │
│        │ identity color │          │                   │                    │
│        │                │          v                   v                    │
│        └────────────────┘        YES                  NO                    │
│                                    │                   │                    │
│                                    v                   v                    │
│                           ┌────────────────┐   ┌────────────────┐           │
│                           │   USE FLOW     │   │ Create new     │           │
│                           │  (color-mix)   │   │ CORE COLOR     │           │
│                           │                │   │                │           │
│                           │ Derive from    │   │ This is a new  │           │
│                           │ existing Core  │   │ identity       │           │
│                           └────────────────┘   └────────────────┘           │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Identity Detection

How to know if something needs a Core color.
┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  IDENTITY CHECKLIST - Answer YES = Use CORE                                 │
│                                                                             │
│  ╔═════════════════════════════════════════════════════════════════════════╗│
│  ║                                                                         ║│
│  ║  [ ] Does it have a unique category?                                    ║│
│  ║      (file type, user role, entity type)                                ║│
│  ║                                                                         ║│
│  ║  [ ] Is it always this color when visible?                              ║│
│  ║      (regardless of hover, focus, or other states)                      ║│
│  ║                                                                         ║│
│  ║  [ ] Does changing its color change its meaning?                        ║│
│  ║      (blue = info, red = error, green = success)                        ║│
│  ║                                                                         ║│
│  ║  [ ] Is it a brand color?                                               ║│
│  ║      (company primary, accent colors)                                   ║│
│  ║                                                                         ║│
│  ║  [ ] Is this the "resting state" color?                                 ║│
│  ║      (default appearance before any interaction)                        ║│
│  ║                                                                         ║│
│  ║  [ ] Would users recognize this element BY this color?                  ║│
│  ║      ("That blue badge means TypeScript")                               ║│
│  ║                                                                         ║│
│  ╚═════════════════════════════════════════════════════════════════════════╝│
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Identity Examples

Common categories that use Core colors.
┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  FILE TYPES - Each file type IS its color                                   │
│                                                                             │
│  ┌───────────────────┬───────────────────┬───────────────────┐              │
│  │                   │                   │                   │              │
│  │   TypeScript      │     Python        │      Rust         │              │
│  │      [TS]         │      [PY]         │      [RS]         │              │
│  │      Blue         │      Green        │     Orange        │              │
│  │                   │                   │                   │              │
│  └───────────────────┴───────────────────┴───────────────────┘              │
│                                                                             │
│  "That blue badge means TypeScript" = recognition by identity               │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  STATUS INDICATORS - Status IS the color                                    │
│                                                                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │   SUCCESS   │  │   WARNING   │  │   DANGER    │  │    INFO     │         │
│  │    Green    │  │   Yellow    │  │     Red     │  │    Blue     │         │
│  └─────────────┘  └─────────────┘  └─────────────┘  └─────────────┘         │
│                                                                             │
│  "Red means error, green means success" = semantic identity                 │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  AGENTS / TERMINALS - Each agent IS its color                               │
│                                                                             │
│      Agent 1       Agent 2       Agent 3       Agent 4                      │
│        [1]           [2]           [3]           [4]                        │
│      Orange        Yellow       Lime-Green      Green                       │
│                                                                             │
│  Colors distributed using Golden Angle (27.5 degrees apart)                 │
│  Maximum visual separation between identities                               │
│                                                                             │
│  "That's the yellow agent" = Agent #2 identified by color                   │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Derivation Detection

How to know if something needs a Flow color.
┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  DERIVATION CHECKLIST - Answer YES = Use FLOW                               │
│                                                                             │
│  ╔═════════════════════════════════════════════════════════════════════════╗│
│  ║                                                                         ║│
│  ║  [ ] Is this a state variation?                                         ║│
│  ║      (hover, active, focus, disabled)                                   ║│
│  ║                                                                         ║│
│  ║  [ ] Is this a transparency level?                                      ║│
│  ║      (overlay, background tint, ghost button)                           ║│
│  ║                                                                         ║│
│  ║  [ ] Is this a lightness/darkness shift?                                ║│
│  ║      (pressed state, shadow, highlight)                                 ║│
│  ║                                                                         ║│
│  ║  [ ] Is this between two identities?                                    ║│
│  ║      (gradient, transition, interpolation)                              ║│
│  ║                                                                         ║│
│  ║  [ ] Does this color only appear temporarily?                           ║│
│  ║      (feedback animation, loading indicator)                            ║│
│  ║                                                                         ║│
│  ║  [ ] Is this creating atmosphere?                                       ║│
│  ║      (ambient glow, focus dimming, backdrop)                            ║│
│  ║                                                                         ║│
│  ╚═════════════════════════════════════════════════════════════════════════╝│
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Derivation Examples

Common patterns that use Flow colors.
┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  STATE VARIATIONS - All states derive from the same Core                    │
│                                                                             │
│                         CORE PRIMARY                                        │
│                        ┌─────────────┐                                      │
│                        │    Blue     │                                      │
│                        └──────┬──────┘                                      │
│                               │                                             │
│         ┌───────────┬─────────┴─────────┬───────────┐                       │
│         │           │                   │           │                       │
│         v           v                   v           v                       │
│  ┌──────────┐ ┌──────────┐       ┌──────────┐ ┌──────────┐                  │
│  │  HOVER   │ │  ACTIVE  │       │  FOCUS   │ │ DISABLED │                  │
│  │ Lighter  │ │  Darker  │       │   Ring   │ │  Muted   │                  │
│  │  (+15%)  │ │  (-20%)  │       │  (40%)   │ │  (gray)  │                  │
│  └──────────┘ └──────────┘       └──────────┘ └──────────┘                  │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  TRANSPARENCY LEVELS - Background tints from Core                           │
│                                                                             │
│         CORE SUCCESS                                                        │
│        ┌─────────────┐                                                      │
│        │    Green    │                                                      │
│        └──────┬──────┘                                                      │
│               │                                                             │
│     ┌─────────┴─────────┐                                                   │
│     │                   │                                                   │
│     v                   v                                                   │
│  ┌──────────┐      ┌──────────┐                                             │
│  │BACKGROUND│      │   GLOW   │                                             │
│  │ 80% see  │      │ 95% see  │                                             │
│  │ through  │      │ through  │                                             │
│  └──────────┘      └──────────┘                                             │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  GRADIENTS - Interpolation between two Cores                                │
│                                                                             │
│  ╔═══════════╗                                     ╔═══════════╗            │
│  ║   CORE    ║                                     ║   CORE    ║            │
│  ║   Blue    ║═══════════════════════════════════=>║  Orange   ║            │
│  ║ (Branch A)║            FLOW                     ║(Branch B) ║            │
│  ╚═══════════╝       (Merge Line)                  ╚═══════════╝            │
│                                                                             │
│  "Flow between Cores uses OKLAB - no muddy transitions."                    │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Component Decision Guide

How Core and Flow apply to UI components.
┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  BUTTON COMPONENT                                                           │
│                                                                             │
│  ┌───────────────────────────────────────────────────────────────────┐      │
│  │ Element              │ Type   │ Reason                            │      │
│  ├──────────────────────┼────────┼───────────────────────────────────┤      │
│  │ Default background   │ CORE   │ This IS a primary button          │      │
│  │ Hover background     │ FLOW   │ State variation of primary        │      │
│  │ Active background    │ FLOW   │ State variation of primary        │      │
│  │ Focus ring           │ FLOW   │ Temporary state indicator         │      │
│  │ Disabled background  │ FLOW   │ State variation of primary        │      │
│  │ Text color           │ CORE   │ Contrast anchor (white/black)     │      │
│  └───────────────────────────────────────────────────────────────────┘      │
│                                                                             │
│                  ┌──────────────────┐                                       │
│                  │  Primary Button  │  <── CORE: Default state              │
│                  └──────────────────┘                                       │
│                           │                                                 │
│                           │ hover                                           │
│                           v                                                 │
│                  ┌──────────────────┐                                       │
│                  │  Primary Button  │  <── FLOW: Lighter                    │
│                  └──────────────────┘                                       │
│                           │                                                 │
│                           │ click                                           │
│                           v                                                 │
│                  ┌──────────────────┐                                       │
│                  │  Primary Button  │  <── FLOW: Darker                     │
│                  └──────────────────┘                                       │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  STATUS BADGE COMPONENT                                                     │
│                                                                             │
│  ┌───────────────────────────────────────────────────────────────────┐      │
│  │ Element              │ Type   │ Reason                            │      │
│  ├──────────────────────┼────────┼───────────────────────────────────┤      │
│  │ Icon dot             │ CORE   │ IS the success indicator          │      │
│  │ Text                 │ CORE   │ IS the success identity           │      │
│  │ Background           │ FLOW   │ Contextual atmosphere             │      │
│  │ Border               │ FLOW   │ Edge of context                   │      │
│  └───────────────────────────────────────────────────────────────────┘      │
│                                                                             │
│      ┌───────────────────────────────────┐                                  │
│      │  [*] Success  │                   │                                  │
│      └───────────────────────────────────┘                                  │
│           ^      ^            ^                                             │
│           │      │            │                                             │
│         CORE   CORE         FLOW                                            │
│        (dot)  (text)   (background)                                         │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Anti-Patterns

What NOT to do.
┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  ANTI-PATTERNS TO AVOID                                                     │
│                                                                             │
│  ╔═════════════════════════════════════════════════════════════════════════╗│
│  ║  1. Deriving a Core from Another Core                                   ║│
│  ║  =========================================                              ║│
│  ║                                                                         ║│
│  ║  WRONG:                                                                 ║│
│  ║  Core Secondary = Lighten(Core Primary)                                 ║│
│  ║                                                                         ║│
│  ║  RIGHT:                                                                 ║│
│  ║  Core Primary = Blue (55%, 0.15, 230)                                   ║│
│  ║  Core Secondary = Purple (55%, 0.10, 200)  <── Independently defined    ║│
│  ║                                                                         ║│
│  ╠═════════════════════════════════════════════════════════════════════════╣│
│  ║  2. Using Flow for Identity                                             ║│
│  ║  ===========================                                            ║│
│  ║                                                                         ║│
│  ║  WRONG:                                                                 ║│
│  ║  TypeScript badge uses (blue + transparent 80%)                         ║│
│  ║                                                                         ║│
│  ║  RIGHT:                                                                 ║│
│  ║  TypeScript badge uses Core TypeScript Blue                             ║│
│  ║                                                                         ║│
│  ╠═════════════════════════════════════════════════════════════════════════╣│
│  ║  3. Hardcoding Flow Values                                              ║│
│  ║  =========================                                              ║│
│  ║                                                                         ║│
│  ║  WRONG:                                                                 ║│
│  ║  Button hover = #3399DD  (manual calculation)                           ║│
│  ║                                                                         ║│
│  ║  RIGHT:                                                                 ║│
│  ║  Button hover = Flow Primary Hover (derived from Core)                  ║│
│  ║                                                                         ║│
│  ╠═════════════════════════════════════════════════════════════════════════╣│
│  ║  4. Using sRGB for Interpolation                                        ║│
│  ║  ================================                                       ║│
│  ║                                                                         ║│
│  ║  WRONG:                                                                 ║│
│  ║  Gradient from Blue to Orange                                           ║│
│  ║  Blue ─────── MUDDY BROWN ─────── Orange                                ║│
│  ║                                                                         ║│
│  ║  RIGHT:                                                                 ║│
│  ║  OKLAB Gradient from Blue to Orange                                     ║│
│  ║  Blue ─────── VIBRANT PURPLE ─────── Orange                             ║│
│  ║                                                                         ║│
│  ╚═════════════════════════════════════════════════════════════════════════╝│
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Quick Reference Matrix

A quick lookup for common use cases.
┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  QUICK REFERENCE MATRIX                                                     │
│                                                                             │
│  ┌───────────────────────────────────┬────────┬────────┬──────────────────┐ │
│  │ Use Case                          │ CORE   │ FLOW   │ Reason           │ │
│  ├───────────────────────────────────┼────────┼────────┼──────────────────┤ │
│  │ File type badge                   │   X    │        │ Identity         │ │
│  │ Agent/terminal label              │   X    │        │ Identity         │ │
│  │ Branch color                      │   X    │        │ Identity         │ │
│  │ Status indicator                  │   X    │        │ Identity         │ │
│  │ Brand/accent color                │   X    │        │ Identity         │ │
│  │ ANSI terminal color               │   X    │        │ Identity         │ │
│  ├───────────────────────────────────┼────────┼────────┼──────────────────┤ │
│  │ Hover state                       │        │   X    │ State variation  │ │
│  │ Active/pressed state              │        │   X    │ State variation  │ │
│  │ Focus ring                        │        │   X    │ Temporary state  │ │
│  │ Disabled state                    │        │   X    │ State variation  │ │
│  │ Selected state                    │        │   X    │ State variation  │ │
│  ├───────────────────────────────────┼────────┼────────┼──────────────────┤ │
│  │ Badge background                  │        │   X    │ Atmosphere       │ │
│  │ Overlay/backdrop                  │        │   X    │ Transparency     │ │
│  │ Subtle tint                       │        │   X    │ Transparency     │ │
│  │ Glow effect                       │        │   X    │ Transparency     │ │
│  ├───────────────────────────────────┼────────┼────────┼──────────────────┤ │
│  │ Gradient endpoints                │   X    │        │ Two identities   │ │
│  │ Gradient middle                   │        │   X    │ Interpolation    │ │
│  └───────────────────────────────────┴────────┴────────┴──────────────────┘ │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

The Five Rules

Core principles for color decisions.
┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  THE FIVE RULES                                                             │
│                                                                             │
│  ╔═════════════════════════════════════════════════════════════════════════╗│
│  ║                                                                         ║│
│  ║  RULE 1: Identity = Core                                                ║│
│  ║  =======================                                                ║│
│  ║  If the color DEFINES what something IS, use Core.                      ║│
│  ║                                                                         ║│
│  ╠═════════════════════════════════════════════════════════════════════════╣│
│  ║                                                                         ║│
│  ║  RULE 2: State = Flow                                                   ║│
│  ║  ====================                                                   ║│
│  ║  If the color MODIFIES how something appears, use Flow.                 ║│
│  ║                                                                         ║│
│  ╠═════════════════════════════════════════════════════════════════════════╣│
│  ║                                                                         ║│
│  ║  RULE 3: Flow Derives from Core                                         ║│
│  ║  ==============================                                         ║│
│  ║  Every Flow Color must trace back to a Core Color.                      ║│
│  ║                                                                         ║│
│  ╠═════════════════════════════════════════════════════════════════════════╣│
│  ║                                                                         ║│
│  ║  RULE 4: Use OKLAB for Mixing                                           ║│
│  ║  ============================                                           ║│
│  ║  "Flow between Cores uses OKLAB - no muddy transitions."                ║│
│  ║                                                                         ║│
│  ╠═════════════════════════════════════════════════════════════════════════╣│
│  ║                                                                         ║│
│  ║  RULE 5: Core Uses OKLCH, Flow Uses color-mix()                         ║│
│  ║  ==============================================                         ║│
│  ║  Core: Define identity with OKLCH                                       ║│
│  ║  Flow: Derive states with color-mix()                                   ║│
│  ║                                                                         ║│
│  ╚═════════════════════════════════════════════════════════════════════════╝│
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

“Core Colors define identity. Flow Colors handle everything in between.”

Marketing Docs

Learn how to communicate Core and Flow to stakeholders