MiHCM

Colors

A two-layer token system. Primitives are the raw color ramps — they flip across light/dark at the primitive level. Semantic tokens reference primitives via var() and give every color a role (primary, foreground, destructive). Components use semantics; the palette swaps by toggling .dark on <html>.

60 / 30 / 10 color balance

MiHCM uses the 60/30/10 composition rule as a hierarchy check: most screen area stays neutral, brand blue supports structure and primary actions, and orange is reserved for small emphasis. These percentages are practical guidelines, not a runtime measurement.

60% dominant
30% supporting
10% accent

60% dominant

Page background, app canvas, large cards, table bodies, form fields, panels.

Token
--color-ratio-60
Utility
bg-ratio-60 text-ratio-60-foreground

30% supporting

Primary actions, active navigation, app-shell anchors, chart key series, focus systems.

Token
--color-ratio-30
Utility
bg-ratio-30 text-ratio-30-foreground

10% accent

Orange emphasis, selected hints, active underlines, notification marks, small highlights.

Token
--color-ratio-10
Utility
bg-ratio-10 text-ratio-10-foreground

Primary (MiHCM Navy)

The action colour. 500 (#003385) is the hero — buttons, links, active states, focus rings. The full 11-step ramp provides tints for backgrounds and shades for hover/press states.

primary-50
light: #e6ebf3dark: #00081f
primary-100
light: #d2dbe9dark: #001036
primary-200
light: #b6c4dddark: #001747
primary-300
light: #96abcddark: #001f5a
primary-400
light: #5778b1dark: #002870
primary-500
light: #003385dark: #003385
primary-600
light: #002870dark: #5778b1
primary-700
light: #001f5adark: #96abcd
primary-800
light: #001747dark: #b6c4dd
primary-900
light: #001036dark: #d2dbe9
primary-950
light: #00081fdark: #e6ebf3

Brand Neutral

The grey ramp tuned to MiHCM's brand. Numeric names are lumens (50 = lightest surface, 821 = near-black). Drives foreground, muted, border, and surface tokens.

brand-neutral-50
light: #fafafbdark: #0d0e10
brand-neutral-66
light: #f5f6f8dark: #15161b
brand-neutral-82
light: #ebecefdark: #1a1c22
brand-neutral-114
light: #dfe0e5dark: #25272d
brand-neutral-179
light: #c1c4cedark: #353841
brand-neutral-243
light: #969bacdark: #4d525f
brand-neutral-307
light: #878da0dark: #5c6069
brand-neutral-371
light: #787e95dark: #787e95
brand-neutral-436
light: #53697edark: #969bac
brand-neutral-500
light: #3f4867dark: #a8aebd
brand-neutral-564
light: #2c3550dark: #b9bfcd
brand-neutral-629
light: #1d2540dark: #c9cfdb
brand-neutral-693
light: #112038dark: #d6dbe5
brand-neutral-757
light: #00245ddark: #e4e8ef
brand-neutral-821
light: #061216dark: #f5f6f8

Accent (MiHCM Orange)

The emphasis colour — switch thumbs, active sidebar indicators, secondary CTA hovers, the 'Edit' access-level button. 500 is #f16012.

accent-50
light: #fef7f3dark: #2f1303
accent-100
light: #fcebe0dark: #5e2607
accent-200
light: #f9d5bedark: #7c3209
accent-300
light: #f5b48bdark: #9b3e0b
accent-400
light: #f48a50dark: #c04d0e
accent-500
light: #f16012dark: #f16012
accent-600
light: #c04d0edark: #f48a50
accent-700
light: #9b3e0bdark: #f5b48b
accent-800
light: #7c3209dark: #f9d5be
accent-900
light: #5e2607dark: #fcebe0
accent-950
light: #2f1303dark: #fef7f3

Status

Three status pairs — each has a strong foreground (500) and a tint background (100). The tint flips to a dark shade in dark mode so contrast holds.

red (destructive)
500 — light: #ed3030 / dark: #ef5a5a100 — light: #fde0e0 / dark: #4a1212
green (success)
500 — light: #558722 / dark: #7baf41100 — light: #edf7e6 / dark: #1f3010
yellow (warning)
500 — light: #b45309 / dark: #d9851f100 — light: #fef3c7 / dark: #3a2406

Semantic tokens

Role-based tokens consumed by components. Each references a primitive via var() — dark-mode flips happen at the primitive layer, not here. Use these in component code; never raw hex.

--color-background
light: #ffffffdark: #0d0e10
--color-foreground
light: #00245ddark: #f5f6f8
--color-muted
light: #ebecefdark: #25272d
--color-muted-foreground
light: #969bacdark: #969bac
--color-primary
light: #003385dark: #003385
--color-primary-foreground
light: #ffffffdark: #ffffff
--color-secondary
light: #ebecefdark: #25272d
--color-secondary-foreground
light: #3f4867dark: #f5f6f8
--color-accent
light: #f16012dark: #f16012
--color-accent-foreground
light: #ffffffdark: #ffffff
--color-ratio-60
light: #ffffffdark: #0d0e10
--color-ratio-60-foreground
light: #00245ddark: #f5f6f8
--color-ratio-30
light: #003385dark: #5778b1
--color-ratio-30-foreground
light: #ffffffdark: #ffffff
--color-ratio-10
light: #f16012dark: #f16012
--color-ratio-10-foreground
light: #ffffffdark: #ffffff
--color-dominant
light: #ffffffdark: #0d0e10
--color-dominant-foreground
light: #00245ddark: #f5f6f8
--color-supporting
light: #003385dark: #5778b1
--color-supporting-foreground
light: #ffffffdark: #ffffff
--color-emphasis
light: #f16012dark: #f16012
--color-emphasis-foreground
light: #ffffffdark: #ffffff
--color-destructive
light: #ed3030dark: #ef5a5a
--color-destructive-foreground
light: #ffffffdark: #ffffff
--color-success
light: #558722dark: #7baf41
--color-success-foreground
light: #ffffffdark: #ffffff
--color-warning
light: #b45309dark: #d9851f
--color-warning-foreground
light: #ffffffdark: #ffffff
--color-border
light: #dfe0e5dark: #353841
--color-input
light: #dfe0e5dark: #353841
--color-ring
light: #003385dark: #003385

Tailwind CSS built-in colors

These are available out of the box with Tailwind 4. Use them for consumer pages and non-branded surfaces. For design-system components, prefer the MiHCM ramps above.

slate
gray
zinc
neutral
stone
red
orange
amber
yellow
lime
green
emerald
teal
cyan
sky
blue
indigo
violet
purple
fuchsia
pink
rose

Use as bg-red-500, text-slate-700, etc. Full reference at tailwindcss.com/docs/colors.

Usage

/* Tailwind utility (preferred) */
<div className="bg-primary text-primary-foreground" />
<div className="bg-primary-50 text-primary" />

/* CSS variable */
.custom { color: var(--color-foreground); }
.tint   { background: var(--color-accent-50); }

/* TypeScript (React Native) */
import { colors, primary, accent } from '@mihcm/tokens';
const navy = colors.light.primary;      // #003385
const step = primary.light[300];        // #96abcd
const orange = accent.light[500];       // #f16012