Colors
Color tokens form the foundation of our design system. Built on Material 3 principles with full tonal ramps for light and dark themes.
Color Tokens
Our color system uses Material 3-style semantic role tokens that automatically adapt to the current theme. All colors are defined in HSL format and mapped from comprehensive tonal palettes (0-100) for consistent theming.
Brand Colors
Primary brand colors used for key actions and brand elements
| Token | Value | Preview |
|---|---|---|
--primary | hsl(var(--primary)) | |
--on-primary | hsl(var(--on-primary)) | |
--primary-container | hsl(var(--primary-container)) | |
--on-primary-container | hsl(var(--on-primary-container)) |
Secondary Colors
Secondary brand colors for accents and supplementary elements
| Token | Value | Preview |
|---|---|---|
--secondary | hsl(var(--secondary)) | |
--on-secondary | hsl(var(--on-secondary)) | |
--secondary-container | hsl(var(--secondary-container)) | |
--on-secondary-container | hsl(var(--on-secondary-container)) |
Tertiary Colors
Tertiary colors for subtle accents and decorative elements
| Token | Value | Preview |
|---|---|---|
--tertiary | hsl(var(--tertiary)) | |
--on-tertiary | hsl(var(--on-tertiary)) | |
--tertiary-container | hsl(var(--tertiary-container)) | |
--on-tertiary-container | hsl(var(--on-tertiary-container)) |
Surface System
Background colors for surfaces and containers, providing elevation hierarchy
| Token | Value | Preview |
|---|---|---|
--surface | hsl(var(--surface)) | |
--surface-container-lowest | hsl(var(--surface-container-lowest)) | |
--surface-container-low | hsl(var(--surface-container-low)) | |
--surface-container | hsl(var(--surface-container)) | |
--surface-container-high | hsl(var(--surface-container-high)) | |
--surface-container-highest | hsl(var(--surface-container-highest)) |
Text & Content
Colors for text and content placed on surfaces
| Token | Value | Preview |
|---|---|---|
--on-surface | hsl(var(--on-surface)) | |
--on-surface-variant | hsl(var(--on-surface-variant)) |
Borders & Outlines
Colors for borders, dividers, and outline elements
| Token | Value | Preview |
|---|---|---|
--outline | hsl(var(--outline)) | |
--outline-variant | hsl(var(--outline-variant)) |
Status & Feedback
Colors for status indicators, errors, and feedback messages
| Token | Value | Preview |
|---|---|---|
--error | hsl(var(--error)) | |
--on-error | hsl(var(--on-error)) | |
--error-container | hsl(var(--error-container)) | |
--on-error-container | hsl(var(--on-error-container)) |
Gradients
Reusable gradient styles for backgrounds and containers
| Token | Value | Preview |
|---|---|---|
--gradient | linear-gradient(to bottom, #F1D8BB, #DEB87E, #925C41, #2E2017) | |
--gradient-bg-fitzpatrick-light | 14-step Fitzpatrick sunrise (main site light mode) | |
--gradient-bg-fitzpatrick-dark | 14-step Fitzpatrick sunrise (main site dark mode) |
Tonal Palettes
Material 3-inspired tonal palettes provide a complete 0-100 scale for each color family. These palettes are derived from the gradient colors and enable consistent theming across light and dark modes.
Primary Palette
Derived from gradient color #DEB87E (HSL: 36° 59% 68%). Key tone at 40 for light mode, tone 80 for dark mode.
Secondary Palette
Derived from gradient color #925C41 (HSL: 20° 38% 41%). Key tone at 40 for light mode, tone 80 for dark mode.
Usage
Use Tailwind CSS classes or CSS custom properties to apply colors:
/* Using Tailwind classes */
<div className="bg-primary text-on-primary">Primary Button</div>
<div className="bg-surface-container text-on-surface">Card</div>
/* Using CSS custom properties */
.my-element {
background-color: hsl(var(--primary));
color: hsl(var(--on-primary));
}
.surface-card {
background-color: hsl(var(--surface-container));
color: hsl(var(--on-surface));
}Material 3 Principles
Our color system follows Material 3 design principles:
- Role tokens: Semantic color roles (primary, surface, outline) rather than raw color values
- Tonal palettes: Complete 0-100 tone ramps for each color family
- Theme adaptation: Automatic mapping between light and dark themes
- Accessibility: Contrast ratios meet WCAG AA standards
- Container colors: Subtle background variations for elevation and hierarchy