Design System
Internal reference for Joel and AI coding agents. Components, tokens, and utilities for consistent development.
Machine-readable format: /design-system.json
Colors
All colors use OKLCH (Oklab Lightness Chroma Hue) color space for perceptually uniform color representation. Dark mode variants reduce lightness by 5% and chroma by 0.02 for consistent visual hierarchy.
Primary Accent Colors
Yellow
var(--color-yellow) oklch(0.85 0.18 95) #ffef6a Dark Mode
oklch(0.80 0.16 95) #f5e03b Turquoise
var(--color-turquoise) oklch(0.70 0.15 195) #4dd4c0 Dark Mode
oklch(0.65 0.13 195) #2dbfaa Magenta
var(--color-magenta) oklch(0.65 0.20 350) #d946ef Dark Mode
oklch(0.60 0.18 350) #c026d3 Text Color Variants (WCAG Compliant)
Adjusted for sufficient contrast on light/dark backgrounds to meet accessibility standards.
Yellow Text
var(--color-yellow-text) oklch(0.55 0.15 95) #b3a617 Dark Mode
oklch(0.85 0.18 95) #ffef6a Turquoise Text
var(--color-turquoise-text) oklch(0.45 0.12 195) #0d8577 Dark Mode
oklch(0.70 0.15 195) #4dd4c0 Neutral Colors
Background Light
var(--color-bg-light) oklch(1.0 0 0) #ffffff Background Dark
var(--color-bg-dark) oklch(0.15 0 0) #1a1a1a Text Light
var(--color-text-light) oklch(0.2 0 0) #2b2b2b Text Dark
var(--color-text-dark) oklch(0.95 0 0) #f2f2f2 Text Muted Light
var(--color-text-muted-light) oklch(0.5 0 0) #808080 Text Muted Dark
var(--color-text-muted-dark) oklch(0.7 0 0) #b3b3b3 Usage Guidelines
Yellow
Primary CTA buttons, hero accents, important highlights. High energy and attention-grabbing.
Turquoise
Secondary actions, card shadows/glows, section accents. Calm and modern, supports hierarchy.
Magenta
Tertiary accents, hover states, decorative elements. Creative and energetic, use sparingly.
Dark Mode Transformation
All dark mode variants reduce lightness (L) by 5% and chroma (C) by 0.02. Shadows transform to glows using the same color values for futuristic dark mode feel.
Typography
Two-tier typography system using Bricolage Grotesque for headings and DM Sans for body text. All sizes follow a 1.25 ratio scale.
Font Families
Bricolage Grotesque
CSS Variable: var(--font-heading)
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
Weight Examples:
Weight 600 (Semibold) — H3, H4
Weight 700 (Bold) — H2
Weight 800 (Extrabold) — H1, Buttons, Labels
Usage: All headings (H1-H4), buttons, labels, section titles
DM Sans
CSS Variable: var(--font-body)
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
Weight Examples:
Weight 400 (Regular) — Body text, paragraphs
Weight 500 (Medium) — Emphasized text
Weight 600 (Semibold) — Strong emphasis
Usage: Body text, paragraphs, form inputs, navigation, captions
Type Scale
1.25 ratio scale for consistent vertical rhythm.
xs
0.75rem (12px)
The quick brown fox jumps over the lazy dog
sm
0.875rem (14px)
The quick brown fox jumps over the lazy dog
base
1rem (16px)
The quick brown fox jumps over the lazy dog
lg
1.125rem (18px)
The quick brown fox jumps over the lazy dog
xl
1.25rem (20px)
The quick brown fox jumps over the lazy dog
2xl
1.5rem (24px)
The quick brown fox jumps over the lazy dog
3xl
1.875rem (30px)
The quick brown fox jumps over the lazy dog
4xl
2.25rem (36px)
The quick brown fox jumps over the lazy dog
Font Weight Tokens
--font-weight-h1: 800 Extrabold — H1 headings
--font-weight-h2: 700 Bold — H2 headings
--font-weight-h3: 600 Semibold — H3 headings
--font-weight-h4: 500 Medium — H4 headings
--font-weight-body: 400 Regular — Body text
Line Height Tokens
--leading-tight: 1.25 Headings, labels
--leading-normal: 1.5 Body text default
--leading-relaxed: 1.75 Long-form content
Components
Card
Container component with colored shadow. Supports three variants and optional stacked effect. Shadows transform to soft glows in dark mode.
Color Variants
Yellow
Primary accent shadow
Turquoise
Secondary accent shadow
Magenta
Tertiary accent shadow
Stacked Effect
Stacked Card
Multiple layers create depth effect
Stacked Card
Works with all color variants
Usage Example
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| variant | 'yellow' | 'turquoise' | 'magenta' | 'yellow' | Shadow/glow color |
| stacked | boolean | false | Enable multi-layer stacked effect |
| class | string | '' | Additional CSS classes |
Dark Mode
In dark mode, offset shadows transform to soft glows (box-shadow: 0 0 20px) for a futuristic feel. Stacked cards remove the offset shadow in dark mode to maintain clean aesthetics.
Input
Form input with label, validation, and WCAG 2.4.13 compliant focus states. Supports three color variants for focus border.
Standard Input
Error State
Focus Color Variants
Usage Example
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| variant | 'yellow' | 'turquoise' | 'magenta' | 'yellow' | Focus border color |
| label | string | undefined | Input label text |
| error | string | undefined | Error message (triggers error state) |
| id | string | auto-generated | Input ID (auto-links label) |
| ...rest | HTMLInputAttributes | - | All standard input attributes (type, placeholder, required, etc.) |
Accessibility Features
- aria-invalid: Set to "true" when error prop is present
- aria-describedby: Links to error message ID for screen readers
- Focus ring: Double ring technique (2px gap + 4px ring) for WCAG 2.4.13 compliance
- Auto-generated IDs: Ensures label-input association without manual ID management
- Color-coded borders: Focus border changes to variant color for visual feedback
Badge
Metric display badge with value and optional description. Used for trust signals and key statistics. Features isometric shadow effect.
Color Variants
Yellow variant
Turquoise variant
Magenta variant (no description)
Usage Example
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| label | string | required | Accessible label for screen readers (aria-label) |
| value | string | required | The metric value (e.g., "500+", "98%") |
| description | string | undefined | Optional subtext (e.g., "per year") |
| variant | 'yellow' | 'turquoise' | 'magenta' | 'yellow' | Text color variant |
| class | string | '' | Additional CSS classes |
Accessibility
- role="group": Groups value and description semantically
- aria-label: Uses label prop for screen reader context
- Isometric shadow: Uses iso-shadow utility class for neobrutalist aesthetic
CheckboxGroup
Accessible multi-select checkbox group with neobrutalist styling. Uses fieldset/legend for screen reader compatibility.
Yellow Variant
Turquoise Variant
Magenta Variant
Usage Example
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| name | string | required | Form field name for checkbox values |
| legend | string | required | Accessible group label (renders in fieldset legend) |
| options | Array<{ value, label }> | required | Checkbox options to render |
| variant | 'yellow' | 'turquoise' | 'magenta' | 'yellow' | Color variant for checked state |
| class | string | '' | Additional CSS classes |
Accessibility Features
- fieldset/legend: Semantic HTML grouping for screen readers (WCAG H71)
- Focus ring: Double ring technique (2px gap + 4px ring) for WCAG 2.4.13 compliance
- Hover target: Entire label is interactive for larger touch target
- Checkmark indicator: Pure CSS ::after pseudo-element for themability
- Dark mode: Automatic color inversion for checkboxes and labels
Interactive States
- Hover: Label background lightens (light mode) or darkens (dark mode)
- Checked: Checkbox fills with variant color + 3px shadow + checkmark appears
- Focus: Double ring technique preserves both focus ring and checkbox shadow
Utilities
Isometric utilities provide hard offset shadows in light mode that transform to soft glows in dark mode, 3D rotation effects, and explicit glow effects for neobrutalist aesthetics.
Shadow Utilities
Hard offset shadows in light mode, soft glows in dark mode. All shadows use currentColor to inherit text color.
Size Variants
3px offset
5px offset (default)
8px offset
Classes
| Class | Light Mode | Dark Mode |
|---|---|---|
| .iso-shadow-sm | 3px 3px 0 currentColor | 0 0 15px color-mix(20%) |
| .iso-shadow | 5px 5px 0 currentColor | 0 0 20px color-mix(40%) |
| .iso-shadow-lg | 8px 8px 0 currentColor | 0 0 30px color-mix(60%) |
Dark Mode Transformation
The same element automatically transforms from a hard offset shadow to a soft glow based on theme. Toggle dark mode to see the transformation.
Light Mode: Hard Shadow
box-shadow: 5px 5px 0 currentColor Dark Mode: Soft Glow
box-shadow: 0 0 20px color-mix(in oklch, currentColor 40%, transparent) Why this matters: Maintains visual hierarchy while creating a futuristic dark mode feel. The glow preserves the accent color while adapting to the darker background.
Usage Example
<div class="border-3 border-turquoise iso-shadow text-turquoise">
Shadow becomes glow in dark mode
</div> Glow Utilities
Explicit glow effects that always glow, regardless of theme. Use when you want glow in light mode too.
Intensity Variants
15px, 20% opacity
20px, 40% opacity
30px, 60% opacity
Use Cases
- Accent elements that should glow in both light and dark mode
- Hover states (see .iso-hover-glow below)
- Decorative elements that need consistent glow across themes
- CTAs or highlights that benefit from extra visual emphasis
Usage Example
<div class="iso-glow-strong text-magenta">
Always glows
</div> Rotation Utilities
3D isometric rotation transforms for creating depth effects. Use with .iso-container wrapper for proper 3D rendering.
Rotation Variants
.iso-rotate-subtle
rotateX(30deg) rotateZ(30deg)
.iso-rotate (standard)
rotateX(45deg) rotateZ(45deg)
.iso-rotate-steep
rotateX(60deg) rotateZ(45deg)
Face Positioning Classes
For multi-face isometric elements (cubes, boxes). Use with .iso-container parent.
| Class | Transform |
|---|---|
| .iso-face-front | translateZ(20px) |
| .iso-face-top | rotateX(90deg) translateZ(20px) |
| .iso-face-side | rotateY(90deg) translateZ(20px) |
Hover Utilities
.iso-hover-lift
Lifts element -8px on hover with 200ms transition.
.iso-hover-glow
Adds glow on hover with 200ms transition.
Usage Example
<div class="iso-container">
<div class="iso-rotate iso-shadow bg-yellow w-24 h-24">
Isometric box
</div>
</div>