Design Tokens Reference
This document provides a comprehensive reference of all design tokens used throughout the site.
Color Tokens
Primary Colors
$primary |
#1E293B (Teal) |
Primary brand color, primary buttons, links, headings |
$secondary |
#495057 (Dark Gray) |
Secondary text, secondary buttons |
$success |
#059669 (Green) |
Success messages, success buttons |
$info |
#0369A1 (Cyan) |
Info messages, info buttons |
$warning |
#EA580C (Orange) |
Warning messages, warning buttons |
$danger |
#DC2626 (Red) |
Error messages, danger buttons |
Accent Colors
$ai-accent |
#8B5CF6 (Purple) |
AI-related projects, maintained status |
$energy-accent |
#10B981 (Green) |
Energy-related projects, community status |
Grayscale
$gray-100 |
#F8F9FA |
Background, light fills |
$gray-200 |
#E9ECEF |
Borders, dividers |
$gray-300 |
#DEE2E6 |
Subtle borders |
$gray-400 |
#CED4DA |
Disabled elements |
$gray-500 |
#ADB5BD |
Secondary text |
$gray-600 |
#6B7280 |
Body text alternative |
$gray-700 |
#495057 |
Body text (default) |
$gray-800 |
#373A3C |
Dark text |
$gray-900 |
#212529 |
Darkest text |
State Colors
$color-hover-light |
rgba(\(primary, 0.1) | Hover background |
| `\)color-hover-dark| darken($primary, 10%) | Hover text | |\(color-active` | darken(\)primary, 15%) |
Active/pressed state |
$color-disabled |
#CED4DA |
Disabled text |
$color-disabled-bg |
#F8F9FA |
Disabled background |
$color-focus-ring |
rgba($primary, 0.3) |
Focus ring outline |
Typography
Font Families
$font-family-sans-serif |
Libre Franklin |
Body text, paragraphs |
$headings-font-family |
Jost |
Headings (h1-h6) |
$font-family-monospace |
SFMono, Menlo, Monaco |
Code blocks, inline code |
$navbar-font-family |
Jost |
Navigation text |
$footer-font-family |
Jost |
Footer text |
Font Sizes (Modular Scale - 1.25 ratio)
$font-size-xs |
~0.775rem (12px) |
Small labels, badges |
$font-size-sm |
~0.875rem (14px) |
Small text, captions |
$font-size-md |
~1rem (16px) |
Normal text |
$font-size-base |
~1.05rem (16.8px) |
Body text (default) |
$font-size-lg |
~1.125rem (18px) |
Large text, card titles |
$font-size-xl |
~1.3rem (20.8px) |
Larger text |
$font-size-xxl |
~1.5rem (24px) |
Subheadings |
$font-size-xxxl |
~1.875rem (30px) |
Large headings |
$font-size-display |
~2.625rem (42px) |
Extra large headings |
Heading Sizes
$h1-font-size |
\(font-size-xxxl | `<h1>` |
| `\)h2-font-size| $font-size-xxl | |
|
Font Weights
$font-weight-thin |
200 |
Light headings |
$font-weight-light |
300 |
Light text |
$font-weight-normal |
400 |
Body text (default) |
$font-weight-medium |
500 |
Slightly bold |
$font-weight-semibold |
600 |
Headings, labels |
$font-weight-bold |
700 |
Bold text, strong |
$font-weight-extrabold |
800 |
Very bold |
Line Heights
$line-height-tight |
1.2 |
Compact headings |
$line-height-snug |
1.3 |
Headings |
$line-height-normal |
1.5 |
Normal text |
$line-height-relaxed |
1.65 |
Body text (default) |
$line-height-loose |
1.8 |
Easy to read |
Spacing System
Base unit: $spacer-base: 1rem (16px)
All spacing uses an 8px grid:
$spacer-1 |
4px |
Minimal spacing |
$spacer-2 |
8px |
Small gaps |
$spacer-3 |
16px |
Standard spacing |
$spacer-4 |
24px |
Medium spacing |
$spacer-5 |
32px |
Large spacing |
$spacer-6 |
48px |
Extra large spacing |
$spacer-7 |
64px |
Section spacing |
$spacer-8 |
80px |
Large section spacing |
Section Padding
$section-padding-y |
4rem (64px) |
Section vertical padding |
$section-padding-y-sm |
2rem (32px) |
Small section padding |
$section-padding-y-lg |
6rem (96px) |
Large section padding |
$section-padding-x |
1.5rem (24px) |
Section horizontal padding |
Shadow System
Base Shadows
$shadow-xs |
0 1px 2px rgba(0,0,0,0.05) |
Minimal elevation |
$shadow-base |
0 1px 3px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06) |
Cards at rest |
$shadow-hover |
0 10px 15px -3px rgba(0,0,0,0.1), … |
Cards on hover |
$shadow-hover-lg |
0 20px 25px -5px rgba(0,0,0,0.1), … |
Modals, dropdowns |
$shadow-sm |
Bootstrap variable |
Small shadows |
$shadow-md |
Bootstrap variable |
Medium shadows |
$shadow-lg |
Bootstrap variable |
Large shadows |
$shadow-xl |
Bootstrap variable |
Extra large shadows |
Shadow Transitions
$shadow-transition |
box-shadow 0.3s ease-in-out |
Smooth shadow changes |
Animation System
Durations
$animation-duration-fast |
0.15s |
Quick transitions (focus, hover) |
$animation-duration-base |
0.3s |
Standard transitions |
$animation-duration-slow |
0.6s |
Entrance animations |
$animation-duration-very-slow |
1s |
Slow, emphasized animations |
Timing Functions
$animation-timing-linear |
linear |
Constant speed (spinners) |
$animation-timing-ease |
ease |
Smooth, natural feel |
$animation-timing-ease-in |
ease-in |
Accelerating motion |
$animation-timing-ease-out |
ease-out |
Decelerating motion (entrances) |
$animation-timing-ease-in-out |
ease-in-out |
Smooth both directions (default) |
Common Animations
fadeIn |
0.3s |
Opacity change |
fadeInUp |
0.6s |
Slide up while fading |
slideInLeft |
0.6s |
Slide from left |
slideInRight |
0.6s |
Slide from right |
scaleUp |
0.3s |
Grow while appearing |
spin |
1s (infinite) |
Loading spinners |
pulse |
1s (infinite) |
Attention grabber |
bounce |
0.6s (infinite) |
Playful emphasis |
Border Radius
$border-radius-xs |
0.125rem (2px) |
Subtle rounding |
$border-radius-sm |
0.25rem (4px) |
Small rounding |
$border-radius |
0.375rem (6px) |
Standard rounding |
$border-radius-lg |
0.5rem (8px) |
Larger rounding |
$border-radius-xl |
0.75rem (12px) |
Extra large rounding |
$border-radius-2xl |
1rem (16px) |
Very large rounding |
$border-radius-3xl |
1.5rem (24px) |
Huge rounding |
$border-radius-full |
9999px |
Perfect circles |
Border & Stroke
$border-width-1 |
1px |
Standard border |
$border-width-2 |
2px |
Thicker border |
$border-width-3 |
3px |
Accent border |
$border-width-4 |
4px |
Strong border |
$border-color-light |
#DEE2E6 |
Light borders |
$border-color |
#CED4DA |
Standard borders |
$border-color-dark |
#ADB5BD |
Dark borders |
Opacity
Standard opacity levels (0.05 to 0.95):
$opacity-05 |
0.05 |
Very subtle |
$opacity-10 |
0.1 |
Subtle backgrounds |
$opacity-20 |
0.2 |
Light overlays |
$opacity-30 |
0.3 |
Medium overlays |
$opacity-50 |
0.5 |
Disabled elements |
$opacity-75 |
0.75 |
Semi-transparent |
Responsive Breakpoints
$breakpoint-xs |
0 |
Extra small |
$breakpoint-sm |
576px |
Small (phones) |
$breakpoint-md |
768px |
Medium (tablets) |
$breakpoint-lg |
992px |
Large (desktops) |
$breakpoint-xl |
1200px |
Extra large |
$breakpoint-xxl |
1400px |
Ultra large |
Usage Guidelines
Color Palette Consistency
- Always use color tokens, never hard-code hex values
- Use semantic colors ($primary, $danger) not numbered grays
- State colors ($color-hover-dark) for interactive states
Typography Patterns
- Headings: Jost font family, semibold weight minimum
- Body: Libre Franklin, normal weight, relaxed line height
- Code: Monospace family, smaller size
Spacing Rules
- Use spacer tokens (multiples of 8px)
- Section padding:
$section-padding-y vertical, $section-padding-x horizontal
- Component padding:
$spacer-3 or $spacer-4 for cards
Animation Best Practices
- Entrance animations: use
$animation-duration-slow
- Hover/focus transitions: use
$animation-duration-fast
- Always include
@media (prefers-reduced-motion: reduce)
Accessibility
- Color contrast: minimum 4.5:1 for text
- Focus indicators: always visible with
$focus-ring-style
- Disabled elements: use
$color-disabled and lower opacity
- Motion: respect
prefers-reduced-motion setting