Documentation Index
Fetch the complete documentation index at: https://docs.monolex.ai/llms.txt
Use this file to discover all available pages before exploring further.
Series: Gestalt Color System - Core and Flow
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β DECISION FLOW: WHEN CORE, WHEN FLOW? β
β β
β A Comprehensive Guide to Choosing Between Core and Flow Colors β
β The Definitive Flowchart for Color System Decisions β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The Fundamental Question
Core and Flow Philosophy
Before making any color decision, understand the foundational principle:βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CORE & FLOW PHILOSOPHY β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β "Core Colors define identity. Flow Colors handle everything in between." β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β CORE = Identity FLOW = Transition β
β βββββββββββββββ ββββββββββββββββ β
β β
β * What IS this element? * How does this element BEHAVE? β
β * What category does it belong to? * What state is it in? β
β * What does it represent? * How does it relate to others? β
β β
β Examples: Examples: β
β * "This is a TypeScript file" * "This button is being hovered" β
β * "This is Agent #3" * "This is 20% opacity of primary" β
β * "This is a success state" * "This is between green and blue" β
β β
β Technical: Technical: β
β * oklch(L% C H) * color-mix(in oklab, ...) β
β * Direct definition * Derived from Core β
β * Hue specifies identity * Transparency, lightness shifts β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The Master Decision Tree
Central Decision Flowchart
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MASTER DECISION FLOWCHART β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββββββββββ β
β β "I need a color" β β
β ββββββββββββ¬ββββββββββββ β
β β β
β v β
β βββββββββββββββββββββββββββββββββββββ β
β β Does this color represent β β
β β a unique IDENTITY? β β
β β β β
β β Ask: "What IS this element?" β β
β βββββββββββββββββ¬ββββββββββββββββββββ β
β β β
β βββββββββββββββββββββββ΄ββββββββββββββββββββββ β
β β β β
β v YES v NO β
β ββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββ β
β β β β β β
β β ββββββββββββββββββββββ β β Is it derived from an β β
β β β USE CORE β β β existing identity color? β β
β β β (OKLCH) β β β β β
β β ββββββββββββββββββββββ β β Ask: "What state/variation β β
β β β β of Core is this?" β β
β β oklch(L% C H) β βββββββββββββββ¬ββββββββββββββββ β
β β β β β
β ββββββββββββββββββββββββββββ βββββββββββββββ΄ββββββββββββββ β
β β β β β
β v YES β v NO β
β βββββββββββββββββββββ β βββββββββββββββββ β
β β β β β β β
β β βββββββββββββββββ β β β Create new β β
β β β USE FLOW β β β β CORE COLOR β β
β β β (OKLAB) β β β β β β
β β βββββββββββββββββ β β β --> Define β β
β β β β β oklch() β β
β β color-mix(in β β β β β
β β oklab, ...) β β βββββββββββββββββ β
β βββββββββββββββββββββ β β β
β β β β β
β βββββββββββββββββ΄ββββββββββββ β
β β β
β v β
β βββββββββββββββββββββββββ β
β β All colors trace β β
β β back to a Core Color β β
β β (SEED principle) β β
β βββββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Identity Detection Criteria
What Makes Something an Identity?
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β IDENTITY DETECTION CHECKLIST β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Ask these questions to determine if something needs a CORE COLOR: β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β QUESTION β CORE if YES β FLOW if NO β β
β ββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββΌβββββββββββββββββ€ β
β β Does it have a unique category? β V β β β
β β (file type, user role, entity type) β β β β
β ββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββΌβββββββββββββββββ€ β
β β Is it always this color when visible? β V β β β
β β (regardless of state) β β β β
β ββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββΌβββββββββββββββββ€ β
β β Does changing its color change its β V β β β
β β meaning? (semantic meaning) β β β β
β ββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββΌβββββββββββββββββ€ β
β β Is it a brand color? β V β β β
β ββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββΌβββββββββββββββββ€ β
β β Is this the "resting state" color? β V β β β
β β (default appearance) β β β β
β ββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββΌβββββββββββββββββ€ β
β β Would users recognize this element β V β β β
β β BY this color? β β β β
β ββββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββ΄βββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Identity Examples
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β IDENTITY EXAMPLES (CORE COLORS) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββ File Type Identity βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β .ts (TypeScript) --> Blue (230) --> oklch(55% 0.15 230) β β
β β .py (Python) --> Green (130) --> oklch(55% 0.15 130) β β
β β .rs (Rust) --> Orange (35) --> oklch(55% 0.15 35) β β
β β .go (Go) --> Cyan (195) --> oklch(55% 0.15 195) β β
β β β β
β β "That blue badge means TypeScript" = identity recognition β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββ Semantic Identity ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Success --> Green (130) --> oklch(55% 0.15 130) β β
β β Warning --> Yellow (85) --> oklch(65% 0.15 85) β β
β β Danger --> Red (25) --> oklch(55% 0.18 25) β β
β β Info --> Blue (230) --> oklch(55% 0.12 230) β β
β β β β
β β "Red means error, green means success" = semantic recognition β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββ Agent Identity (Golden Angle Distribution) βββββββββββββββββββββββββββ β
β β β β
β β Agent #1 --> 27.5 --> oklch(55% 0.15 27.5) β β
β β Agent #2 --> 55 --> oklch(55% 0.15 55) β β
β β Agent #3 --> 82.5 --> oklch(55% 0.15 82.5) β β
β β β β
β β "That's the yellow agent" = Agent #3 identified by color β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Derivation Detection Criteria
What Makes Something a Derivation?
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DERIVATION DETECTION CHECKLIST β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Ask these questions to determine if something needs a FLOW COLOR: β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β QUESTION β FLOW if YES β CORE if NO β β
β ββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββΌβββββββββββββββββ€ β
β β Is this a state variation? β V β β β
β β (hover, active, focus, disabled) β β β β
β ββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββΌβββββββββββββββββ€ β
β β Is this a transparency level? β V β β β
β β (overlay, background tint) β β β β
β ββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββΌβββββββββββββββββ€ β
β β Is this a lightness/darkness shift? β V β β β
β β (pressed state, shadow) β β β β
β ββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββΌβββββββββββββββββ€ β
β β Is this between two identities? β V β β β
β β (gradient, merge line, transition) β β β β
β ββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββΌβββββββββββββββββ€ β
β β Does this color only appear β V β β β
β β temporarily? (feedback, animation) β β β β
β ββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββΌβββββββββββββββββ€ β
β β Is this creating atmosphere? β V β β β
β β (ambient glow, focus dimming) β β β β
β ββββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββ΄βββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Derivation Examples
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DERIVATION EXAMPLES (FLOW COLORS) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββ State Derivation βββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β CORE: --core-primary: oklch(55% 0.15 230) β β
β β β β β
β β βββ> FLOW: --flow-primary-hover: β β
β β β color-mix(in oklch, var(--core-primary), wht 15%)β β
β β β β β
β β βββ> FLOW: --flow-primary-active: β β
β β β color-mix(in oklab, var(--core-primary), blk 20%)β β
β β β β β
β β βββ> FLOW: --flow-primary-disabled: β β
β β color-mix(in oklab, var(--core-primary), gry 60%)β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββ Transparency Derivation ββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β CORE: --core-success: oklch(55% 0.15 130) β β
β β β β β
β β βββ> FLOW: --flow-success-bg: β β
β β β color-mix(in oklab, var(--core-success), 80%) β β
β β β (20% opacity for badge background) β β
β β β β β
β β βββ> FLOW: --flow-success-glow: β β
β β color-mix(in oklab, var(--core-success), 95%) β β
β β (5% opacity for subtle glow) β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββ Interpolation Derivation βββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β CORE A: --core-main-branch: oklch(55% 0.15 230) (blue) β β
β β CORE B: --core-feature-branch: oklch(55% 0.15 50) (orange) β β
β β β β β
β β βββ> FLOW: --flow-merge-line: β β
β β color-mix(in oklab, β β
β β var(--core-main-branch), β β
β β var(--core-feature-branch) 50%) β β
β β β β
β β "When Flow travels from Core to Core, OKLAB's straight-line β β
β β interpolation prevents muddy transitions" β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Component-Specific Decision Guides
Button Component
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β BUTTON COMPONENT: CORE & FLOW MAPPING β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β State β Type β Rationale β
β ββββββββββββββββββΌβββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββ β
β Default β CORE β Button identity - "This IS a primary button" β
β :hover β FLOW β State variation - brightness increase β
β :active/:pressed β FLOW β State variation - darkness increase β
β :focus β FLOW β State variation - focus ring glow β
β :disabled β FLOW β State variation - desaturated β
β Text β CORE β Contrast identity - ensures readability β
β β
β CSS IMPLEMENTATION: β
β βββββββββββββββββββ β
β β
β .btn-primary { β
β /* CORE: This IS a primary button */ β
β background: var(--core-primary); β
β color: var(--core-on-primary); β
β border: none; β
β } β
β β
β .btn-primary:hover { β
β /* FLOW: Hover is a state variation */ β
β background: var(--flow-primary-hover); β
β } β
β β
β .btn-primary:active { β
β /* FLOW: Active/pressed is a state variation */ β
β background: var(--flow-primary-active); β
β } β
β β
β .btn-primary:focus-visible { β
β /* FLOW: Focus ring is a transparency derivation */ β
β box-shadow: 0 0 0 3px var(--flow-primary-bg); β
β } β
β β
β .btn-primary:disabled { β
β /* FLOW: Disabled is a state variation */ β
β background: var(--flow-primary-disabled); β
β cursor: not-allowed; β
β } β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Status Badge Component
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STATUS BADGE: CORE & FLOW MAPPING β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββββββββ ββββββββββββββββββββββ ββββββββββββββββββββββ β
β β * Running β β * Warning β β * Error β β
β ββββββββββββββββββββββ ββββββββββββββββββββββ ββββββββββββββββββββββ β
β β
β Element β Type β Rationale β
β βββββββββββββββββΌβββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β Icon dot β CORE β Identity - "This indicates success status" β
β Text β CORE β Identity - same meaning as icon β
β Background β FLOW β Transparency derivation - 20% of Core β
β Border β FLOW β Transparency derivation - edge of background β
β β
β VISUAL BREAKDOWN: β
β βββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββ β
β / \ β
β / FLOW: Background (20% opacity) \ β
β / \ β
β β β β
β β * <-- CORE: Icon dot (identity) β β
β β β β
β β "Running" <-- CORE: Text (identity) β β
β β β β
β \ / β
β \ / β
β \ / β
β ββββββββββββββββββββββββββββββββββββββββ β
β ^-- FLOW: Border (edge) β
β β
β CSS IMPLEMENTATION: β
β βββββββββββββββββββ β
β β
β .badge-success { β
β /* FLOW: Background is transparency derivation */ β
β background: var(--flow-success-bg); β
β β
β /* CORE: Text IS the success identity */ β
β color: var(--core-success); β
β } β
β β
β .badge-success .icon { β
β /* CORE: The dot IS the success indicator */ β
β fill: var(--core-success); β
β } β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
File Explorer Item
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β FILE EXPLORER ITEM: CORE & FLOW MAPPING β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β [Folder] src/ β
β βββ [TS] app.ts <-- TypeScript badge (CORE) β
β βββ [PY] utils.py <-- Python badge (CORE) β
β βββ [JSON] config.json <-- JSON badge (CORE) β
β β
β ELEMENT MAPPING: β
β ββββββββββββββββ β
β β
β Element β Type β Rationale β
β ββββββββββββββββββββββΌββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββ β
β Extension badge β CORE β Identity - "This IS a TypeScript file" β
β Filename text β Neutral β Not semantic - uses text color β
β Row background β Neutral β Not semantic - uses bg color β
β Row :hover β FLOW β State - light overlay β
β Row :selected β FLOW β State - primary bg transparency β
β β
β CSS IMPLEMENTATION: β
β βββββββββββββββββββ β
β β
β .file-item { β
β /* Neutral text - NOT identity */ β
β color: var(--color-text-primary); β
β background: transparent; β
β } β
β β
β .file-item:hover { β
β /* FLOW: Hover is a state variation */ β
β background: var(--flow-overlay-light-1); β
β } β
β β
β .file-item.selected { β
β /* FLOW: Selection derives from theme's primary Core */ β
β background: var(--flow-primary-bg); β
β } β
β β
β .file-badge[data-ext="ts"] { β
β /* CORE: This badge IS the TypeScript identity */ β
β background: var(--core-file-ts); β
β color: white; β
β } β
β β
β .file-badge[data-ext="py"] { β
β /* CORE: This badge IS the Python identity */ β
β background: var(--core-file-py); β
β color: white; β
β } β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Anti-Patterns and Common Mistakes
What NOT to Do
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ANTI-PATTERNS: WHAT NOT TO DO β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β ANTI-PATTERN #1: DERIVING A CORE FROM ANOTHER CORE β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β X WRONG: β
β ββββββββ β
β --core-secondary: color-mix(in oklch, var(--core-primary), white 20%); β
β β
β WHY: Core Colors define independent identities. β
β They should not depend on each other. β
β β
β V CORRECT: β
β ββββββββββ β
β --core-primary: oklch(55% 0.15 230); β
β --core-secondary: oklch(55% 0.10 200); /* Independent definition */ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β ANTI-PATTERN #2: USING FLOW FOR IDENTITY β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β X WRONG: β
β ββββββββ β
β .badge-typescript { β
β background: color-mix(in oklab, blue, transparent 80%); β
β } β
β β
β WHY: TypeScript badge IS an identity, not a state variation. β
β It should use a Core Color. β
β β
β V CORRECT: β
β ββββββββββ β
β .badge-typescript { β
β background: var(--core-file-ts); /* oklch(55% 0.15 230) */ β
β } β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β ANTI-PATTERN #3: HARDCODING FLOW VALUES β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β X WRONG: β
β ββββββββ β
β .button:hover { β
β background: #3399dd; /* Manually calculated lighter blue */ β
β } β
β β
β WHY: Hardcoded values don't update when Core changes. β
β Flow Colors should always reference Core via var(). β
β β
β V CORRECT: β
β ββββββββββ β
β .button:hover { β
β background: var(--flow-primary-hover); β
β /* Defined as: color-mix(in oklch, var(--core-primary), white 15%) */ β
β } β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β ANTI-PATTERN #4: USING sRGB/HSL FOR INTERPOLATION β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β X WRONG: β
β ββββββββ β
β .gradient { β
β background: linear-gradient(to right, blue, orange); β
β /* sRGB interpolation --> muddy brown in the middle */ β
β } β
β β
β WHY: sRGB is not perceptually uniform - gradients go through muddy regions. β
β β
β V CORRECT: β
β ββββββββββ β
β .gradient { β
β background: linear-gradient(in oklab to right, β
β var(--core-main-branch), β
β var(--core-feature-branch)); β
β /* OKLAB interpolation --> vibrant throughout */ β
β } β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Quick Reference Decision Matrix
At-a-Glance Matrix
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CORE vs FLOW: QUICK REFERENCE MATRIX β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β USE CASE β CORE β FLOW β RATIONALE β
β βββββββββββββββββββββββββββββͺβββββββͺβββββββͺβββββββββββββββββββββββββββββββββββ β
β β β β β
β IDENTITY ELEMENTS β β β β
β βββββββββββββββββββββββββββββΌβββββββΌβββββββΌβββββββββββββββββββββββββββββββββββ β
β File type badge β V β β "This IS a TypeScript file" β
β Agent/terminal label β V β β "This IS Agent #3" β
β Branch color β V β β "This IS the main branch" β
β Status indicator β V β β "This IS a success state" β
β Brand/accent color β V β β "This IS our brand" β
β ANSI terminal color β V β β "This IS ANSI red" β
β β β β β
β STATE VARIATIONS β β β β
β βββββββββββββββββββββββββββββΌβββββββΌβββββββΌβββββββββββββββββββββββββββββββββββ β
β Hover state β β V β Brightness increase β
β Active/pressed state β β V β Darkness increase β
β Focus ring β β V β Transparency glow β
β Disabled state β β V β Desaturation β
β Selected state β β V β Highlight β
β β β β β
β TRANSPARENCY β β β β
β βββββββββββββββββββββββββββββΌβββββββΌβββββββΌβββββββββββββββββββββββββββββββββββ β
β Badge background β β V β 20% of Core Color β
β Overlay/backdrop β β V β Partial transparency β
β Subtle tint β β V β 8% transparency β
β Glow effect β β V β 5% transparency β
β β β β β
β INTERPOLATION β β β β
β βββββββββββββββββββββββββββββΌβββββββΌβββββββΌβββββββββββββββββββββββββββββββββββ β
β Gradient (endpoints) β V β β Identity anchors β
β Gradient (middle) β β V β Interpolation path β
β Merge line color β β V β Between two branches β
β Transition animation β β V β Temporal path β
β β β β β
β NEUTRAL ELEMENTS β β β β
β βββββββββββββββββββββββββββββΌβββββββΌβββββββΌβββββββββββββββββββββββββββββββββββ β
β Background β N/A β N/A β Uses primitive color β
β Text β N/A β N/A β Uses primitive color β
β Border β N/A β N/A β Uses primitive color β
β Divider β β V β Light overlay β
β β β β β
β TEXT ON BACKGROUNDS β β β β
β βββββββββββββββββββββββββββββΌβββββββΌβββββββΌβββββββββββββββββββββββββββββββββββ β
β Text on primary bg β V β β Contrast identity β
β Text on success bg β V β β Contrast identity β
β Text on warning bg β V β β Contrast identity β
β β β β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
THE CENTER
How Decision Flow Enables Consistent Information Visualization
The five decision rules ensure that color always communicates meaning:Connection to Core-Flow:
βββ Rule 1 (Identity = Core) ensures semantic colors are stable
β * TypeScript files are always blue (Hue 230)
β * Success states are always green (Hue 130)
β * Users learn color meanings once, apply everywhere
β
βββ Rule 2 (State = Flow) ensures interactions feel connected
β * Hover state clearly relates to default state
β * Disabled state clearly relates to enabled state
β * User perceives cause-and-effect through color
β
βββ Rule 3 (Flow derives from Core) ensures theme coherence
β * When brand color changes, all related states update
β * Single source of truth prevents inconsistency
β * Human can always trace a Flow back to its Core
β
βββ Rule 4 (OKLAB mixing) ensures perceptual accuracy
β * Gradients between Cores stay vibrant
β * No muddy middle transitions
β * Human perceives smooth, natural paths
β
βββ Rule 5 (OKLCH for Core, color-mix for Flow) ensures technical correctness
* Predictable implementation pattern
* Clear separation of concerns
* Easy to audit and maintain
The Five Rules Summary
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β THE FIVE RULES OF CORE & FLOW β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β 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 via var(). β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β RULE 4: USE OKLAB FOR MIXING β β
β β "When Flow moves from Core to Core, OKLAB prevents muddy transitions." β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β RULE 5: CORE USES OKLCH, FLOW USES color-mix() β β
β β Core: oklch(L% C H) β β
β β Flow: color-mix(in oklab, var(--core-*), modifier) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β "Core Colors define identity. Flow Colors handle everything in between." β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
CSS Architecture
How Gestalt Color integrates with the CSS variable system