designsystem.functionalaesthetics.com

Design with
intent. Build with
confidence.

A comprehensive design system built for vibe coding with Claude. Everything you need to build beautiful, consistent interfaces — tokens, components, patterns, and prompts.

40+
Components
120+
Design Tokens
25+
Claude Prompts
3
Core Breakpoints

Explore the System

Navigate through foundations, components, and vibe coding resources.

Color System
Brand palette, semantic colors, and accessibility-driven usage guidelines for light and dark contexts.
Typography
Roboto type scale from display headings to captions, with line-height and letter-spacing guidelines.
Components
40+ production-ready components from buttons and forms to tables, modals, and navigation patterns.
Vibe Coding Guide
Optimized prompts, patterns, and workflows for building with Claude — faster, with better results.
Guide

Vibe Coding with Claude

How to get the best results when building UIs with this design system and Claude as your coding partner.

1. Start with the System Prompt

Always paste the design token block at the start of a new conversation. This primes Claude with your brand.

SYSTEM PROMPT
You are building a UI for Functional Aesthetics.
Always use these CSS variables in every component:

/* Brand */
--color-primary: #09371D;      /* dark forest green */
--color-accent:  #CEFC32;      /* neon yellow-green */

/* Typography */
font-family: 'Roboto', sans-serif;

/* Rules */
- Use semantic CSS variables, never raw hex values in components
- Border radius: 4px (md), 8px (lg), 12px (xl)
- All interactive states: hover, focus, active, disabled
- WCAG AA contrast compliance required

2. Golden Prompt Rules

✓ Do
  • Token Reference tokens by name: "use --color-primary"
  • State Specify all states: "with hover, focus, disabled"
  • Size Define sizes: "sm (32px), md (40px), lg (48px)"
  • A11y Ask for ARIA labels and keyboard navigation
✗ Avoid
  • Color Hardcoding hex values inside component styles
  • Vague "Make it look nice" — be specific about intent
  • Style Inline styles for repeated patterns
  • Magic Magic numbers — always map to spacing tokens

3. Component Request Template

TEMPLATE
Create a [COMPONENT NAME] component:

/* Variants */
- Variants: [list variants]
- Sizes: sm | md | lg
- States: default, hover, focus, active, disabled

/* Design */
- Use CSS variables from the design system
- Border-radius: var(--radius-md)
- Font: var(--font-family), var(--font-size-base)
- Transitions: var(--transition-fast)

/* Output */
- Pure HTML + CSS (no frameworks)
- Include usage example
- Add ARIA attributes for accessibility
Foundations

Color

A purposeful palette built around deep forest green and neon accent, designed for clarity and brand expression.

Brand Palette

Primary — Forest Green
50
100
200
300
400
500
600 ★
700
800
900
Accent — Neon Yellow-Green
50
100
200
300 ★
400
500
600
700
800
900
Neutral
0
50
100
200
300
400
500
600
700
800
900

Semantic Colors

Success
#168500
Error
#DE2417
Warning
#B57300

Color Usage Rules

Use the 600 stop for primary CTAs, active navigation states, links, focus rings, and key brand moments. Use 50–100 stops for backgrounds and tinted surfaces. Reserve 800–900 for text on light backgrounds only.
The neon accent (#CEFC32) is reserved for high-emphasis moments: accent buttons, active chips, progress fills, and highlight callouts. Always use dark text (800–900) on accent backgrounds to ensure AA contrast. Never use on small text.
Body text must maintain 4.5:1 contrast ratio (WCAG AA). Large text ≥ 18pt or bold ≥ 14pt requires 3:1. UI components require 3:1. The primary-600 on white achieves 10.3:1. Accent-300 (#CEFC32) on white achieves 6.8:1 — use with dark text.
Foundations

Typography

Roboto as our single typeface — versatile, legible, and professional across all weights and sizes.

Type Scale

Display 56px / Light 300 / tracking -0.03em / lh 1.1
Building Tomorrow
Heading 1 40px / Light 300 / tracking -0.02em / lh 1.2
Functional Design
Heading 2 32px / Regular 400 / tracking -0.01em / lh 1.25
System Overview
Heading 3 24px / Regular 400 / lh 1.3
Component Library
Heading 4 20px / Medium 500 / lh 1.35
Design Tokens
Body Large 18px / Regular 400 / lh 1.75
This is body large text, ideal for introductory paragraphs and lead text. It creates breathing room and improves readability at the start of a section.
Body Default 14px / Regular 400 / lh 1.5
Standard body text for most content. Used in paragraphs, descriptions, and general UI text. Roboto at this size is highly legible across all screen densities.
Label / UI 12px / Medium 500 / tracking 0.02em / lh 1.4
Form Label · Navigation Item · Metadata
Caption 11px / Regular 400 / tracking 0.02em / lh 1.4
Image caption, footnote, or helper text — always at minimum 11px for legibility.
Overline 11px / Medium 500 / tracking 0.08em / uppercase
Section Category
Code 13px / Monospace / lh 1.6
--color-primary: #09371D;
Foundations

Spacing

A consistent 4px base unit system that creates visual harmony across all components and layouts.

Spacing Scale

--space-1
4px · 0.25rem
--space-2
8px · 0.5rem
--space-3
12px · 0.75rem
--space-4
16px · 1rem
--space-5
20px · 1.25rem
--space-6
24px · 1.5rem
--space-8
32px · 2rem
--space-10
40px · 2.5rem
--space-12
48px · 3rem
--space-16
64px · 4rem
--space-20
80px · 5rem
--space-24
96px · 6rem
Foundations

Grid & Layout

A 12-column grid system with responsive breakpoints and container widths.

Breakpoints

NameTokenWidthColumnsGutter
Mobile--container-sm< 640px416px
Tablet--container-md640–960px824px
Desktop--container-lg960–1280px1232px
Wide--container-xl> 1440px1240px

12-Column Grid

span 12
span 6
span 6
span 4
span 4
span 4
span 3
span 3
span 3
span 3
span 8
span 4
Foundations

Elevation & Shape

Shadow and radius tokens that create depth hierarchy and consistent rounding across all components.

Shadow Scale

shadow-xs
Cards at rest
shadow-sm
Cards on hover
shadow-md
Dropdowns
shadow-lg
Toasts, popovers
shadow-xl
Modals, dialogs

Border Radius

radius-none
0px
radius-sm
2px
radius-md
4px
radius-lg
8px
radius-xl
12px
radius-full
9999px
Foundations

Motion

Purposeful transitions that guide attention and communicate state changes without distraction.

Transition Tokens

TokenValueUse Case
--transition-fast100ms easeHover states, color changes, icon swaps
--transition-normal200ms easeExpanding elements, toggles, checkboxes
--transition-slow300ms easeModals, drawers, page transitions

Hover the buttons to see transitions in action:

Foundations

Design Tokens

All CSS custom properties — copy the root block and paste it into any project.

Complete Token Reference

CSS
:root {
  /* ── Brand ─────────────────────── */
  --color-primary:          #09371D;
  --color-primary-50:       #F0F7F3;
  --color-primary-100:      #D4EBE0;
  --color-primary-200:      #A6D4BC;
  --color-primary-300:      #72BB97;
  --color-primary-400:      #3D9E6E;
  --color-primary-500:      #1A7047;
  --color-primary-600:      #09371D;
  --color-primary-700:      #072E17;
  --color-primary-800:      #052310;
  --color-primary-900:      #031709;

  --color-accent:           #CEFC32;
  --color-accent-50:        #F9FFD6;
  --color-accent-100:       #EFFE99;
  --color-accent-200:       #E4FD64;
  --color-accent-300:       #CEFC32;
  --color-accent-400:       #B0DE1A;
  --color-accent-500:       #8CB50E;
  --color-accent-600:       #678906;
  --color-accent-700:       #456003;
  --color-accent-800:       #2A3B01;
  --color-accent-900:       #141E00;

  /* ── Semantic ───────────────────── */
  --color-success:          #168500;
  --color-success-light:    #D6F5CE;
  --color-error:            #DE2417;
  --color-error-light:      #FCD1D0;
  --color-warning:          #B57300;
  --color-warning-light:    #FDEEC0;

  /* ── Backgrounds ────────────────── */
  --bg-page:                #F7F7F5;
  --bg-surface:             #FFFFFF;
  --bg-surface-secondary:   #F0F0EC;
  --bg-surface-tertiary:    #E8E8E3;
  --bg-inverse:             #111110;

  /* ── Text ───────────────────────── */
  --text-primary:           #111110;
  --text-secondary:         #555550;
  --text-tertiary:          #96968E;
  --text-disabled:          #B8B8B1;
  --text-inverse:           #FFFFFF;
  --text-link:              #09371D;

  /* ── Typography ─────────────────── */
  --font-family:      'Roboto', sans-serif;
  --font-size-xs:           0.6875rem;
  --font-size-sm:           0.75rem;
  --font-size-base:         0.875rem;
  --font-size-md:           1rem;
  --font-size-lg:           1.125rem;
  --font-size-xl:           1.25rem;
  --font-size-2xl:          1.5rem;
  --font-size-3xl:          2rem;
  --font-size-4xl:          2.5rem;
  --font-weight-light:      300;
  --font-weight-regular:    400;
  --font-weight-medium:     500;
  --font-weight-bold:       700;
  --line-height-tight:      1.25;
  --line-height-normal:     1.5;
  --line-height-relaxed:    1.75;

  /* ── Spacing ────────────────────── */
  --space-1:  0.25rem;
  --space-2:  0.5rem;
  --space-3:  0.75rem;
  --space-4:  1rem;
  --space-5:  1.25rem;
  --space-6:  1.5rem;
  --space-8:  2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;

  /* ── Border Radius ──────────────── */
  --radius-none: 0;
  --radius-sm:   0.125rem;
  --radius-md:   0.25rem;
  --radius-lg:   0.5rem;
  --radius-xl:   0.75rem;
  --radius-2xl:  1rem;
  --radius-full: 9999px;

  /* ── Shadows ────────────────────── */
  --shadow-xs:  0 1px 2px rgba(0,0,0,0.05);
  --shadow-sm:  0 1px 4px rgba(0,0,0,0.08);
  --shadow-md:  0 4px 12px rgba(0,0,0,0.10);
  --shadow-lg:  0 8px 24px rgba(0,0,0,0.12);
  --shadow-xl:  0 16px 40px rgba(0,0,0,0.14);

  /* ── Transitions ────────────────── */
  --transition-fast:   100ms ease;
  --transition-normal: 200ms ease;
  --transition-slow:   300ms ease;
}
Components

Actions

Buttons, links, and interactive controls that trigger operations and navigate users.

Button Variants

HTML
<button class="fa-btn fa-btn-primary">Primary</button>
<button class="fa-btn fa-btn-accent">Accent</button>
<button class="fa-btn fa-btn-secondary">Secondary</button>
<button class="fa-btn fa-btn-ghost">Ghost</button>
<button class="fa-btn fa-btn-danger">Danger</button>

Button Sizes

Chips

Filter A
Active Filter
Filter B
Filter C
HTML
<div class="fa-chip">Filter A</div>
<div class="fa-chip selected">Active Filter</div>
Components

Forms

Input controls, selects, and form patterns for capturing user data.

Text Input

We'll never share your email.
Invalid characters detected.
HTML
<div class="fa-field">
  <label class="fa-label fa-label-required">Email</label>
  <input class="fa-input" type="email"
    placeholder="you@example.com">
  <span class="fa-helper">Helper text</span>
</div>

Select & Textarea

Toggle, Checkbox & Radio

Components

Feedback

Badges, toasts, tooltips, and other feedback components that communicate system status.

Badges

Primary Accent Active Pending Error Neutral
HTML
<span class="fa-badge fa-badge-success fa-badge-dot">Active</span>

Toast Notifications

Changes saved successfully
Your profile has been updated.
Upload failed
File exceeds maximum size of 10MB.
!
Session expiring soon
You will be logged out in 5 minutes.
i
New version available
Refresh to get the latest features.

Tooltip

This is a tooltip
Copied to clipboard!

Progress Bar

Upload progress72%
Neon accent45%
Error state90%
Components

Content & Data

Cards, tables, avatars, and components for displaying structured information.

Card

Project Alpha
Last updated 2 hours ago
Active

A comprehensive redesign of the user onboarding experience with improved conversion goals.

68% complete12 tasks left

Media Cards

Tutorial
Getting Started Guide
Everything you need to set up your first project.
Reference
Component API Docs
Full technical reference for all components.

Data Table

User Role Status Last Active Actions
MR
Maya Rodriguez
maya@example.com
Admin Active 2 min ago
TK
Thomas Klein
t.klein@example.com
Editor Away 1 hour ago
SJ
Sarah Johnson
sarah@example.com
Viewer Offline 3 days ago

Avatars

MR
MR
TK
SJ

Skeleton Loading

Components

Navigation

Tabs, breadcrumbs, accordions, and other wayfinding components.

Tab Navigation

Overview
Analytics
Settings
Team

Breadcrumb

Accordion

A design system is a collection of reusable components, guided by clear standards, that can be assembled together to build any number of applications.
Start by pasting the design token block into your Claude conversation, then use the prompt templates in our Vibe Coding Guide for consistent, high-quality results.
Yes. The design tokens are framework-agnostic CSS custom properties. Component examples use plain HTML/CSS but can be translated to any framework.
Components

Overlays

Modal dialogs for focused interactions and confirmations.

Modal

Confirm deletion

Are you sure you want to delete Project Alpha? This action cannot be undone and all associated data will be permanently removed.

Components

Loading & Status

Spinners, progress bars, and skeleton states for communicating system activity.

Loading Spinners

Vibe Coding

Prompt Library

Ready-to-use Claude prompts, optimized for this design system. Copy, customize, and ship.

New Component — Boilerplate Universal
Create a [COMPONENT_NAME] component using the Functional Aesthetics design system. Use only CSS custom properties (no hardcoded hex values): - Colors: --color-primary-*, --color-accent-*, --text-*, --bg-* - Spacing: --space-1 through --space-24 - Typography: --font-family, --font-size-*, --font-weight-* - Radius: --radius-md (4px), --radius-lg (8px), --radius-xl (12px) - Shadows: --shadow-xs through --shadow-xl - Transitions: --transition-fast (100ms), --transition-normal (200ms) Include: default, hover, focus, active, disabled states. Output: clean HTML + CSS, no external dependencies.
Form with Validation Forms
Build a [FORM_NAME] form with: Fields: [list fields] Design requirements: - Use .fa-field, .fa-label, .fa-input, .fa-helper classes - Required fields: .fa-label-required - Error state: .fa-input.error + .fa-helper.error - Success state: .fa-input.success - Primary submit: .fa-btn.fa-btn-primary - Focus ring: box-shadow: 0 0 0 3px rgba(9,55,29,0.12) Validation: real-time on blur, summary on submit. Accessible: aria-required, aria-describedby, aria-invalid.
Data Table with Sort & Filter Data
Create a sortable data table for [DATA_TYPE] with columns: [columns]. Use the .fa-table styling pattern: - th: 11px uppercase, 0.06em tracking, bg-surface-secondary - td: 14px, 16px padding, border-bottom - Hover row: background var(--color-primary-50) Add: column sort (asc/desc arrows), search filter input (.fa-input), pagination controls (.fa-btn.fa-btn-ghost), row count badge (.fa-badge). Include loading skeleton and empty state.
Dashboard Layout Layout
Build a dashboard layout for [APP_NAME] with: Sidebar (260px): - Logo at top with --color-primary-600 background mark - Nav sections with .ds-nav-item pattern - Active state: left border + primary-50 background Main content: - Top bar: breadcrumb + user avatar - Stats grid: 4 columns, --shadow-xs cards - Content area: max-width 960px, --space-12 padding Responsive: sidebar collapses at 900px. All colors via CSS variables only.
Iterate on Existing Component Refine
Refine this [COMPONENT] component: [PASTE CURRENT CODE HERE] Changes needed: - [describe change 1] - [describe change 2] Constraints: - Keep all CSS variables, no hardcoded values - Maintain existing class names for backwards compatibility - Preserve accessibility attributes - Only output the changed code sections with comments
Vibe Coding

UI Patterns

Common interaction patterns and page layouts — assembled from system components.

Login Form Pattern

Sign in
Welcome back
Vibe Coding

Accessibility

WCAG 2.1 AA compliance guidelines and accessible component patterns.

Color Contrast Ratios

CombinationRatioAA (4.5:1)AAA (7:1)
White on Primary-600 10.3:1 Pass Pass
Dark on Accent 6.8:1 Pass Near miss
Secondary text on white 7.4:1 Pass Pass
Tertiary text on white 3.5:1 Large text only Fail

Claude Accessibility Prompt

Accessibility Audit A11y
Review this component for WCAG 2.1 AA compliance: [PASTE COMPONENT HTML] Check and fix: 1. All images have descriptive alt attributes 2. Form inputs have associated labels (for/id or aria-label) 3. Interactive elements are keyboard reachable (tabindex) 4. Focus styles are visible (focus-visible, not removed) 5. Color is not the only means of conveying information 6. Minimum touch target 44×44px for mobile 7. ARIA roles/states on custom interactive elements 8. Error messages linked via aria-describedby Output: fixed code + list of changes made.
Get Started

Principles

The core values that guide every design and development decision in this system.

Clarity First

Every component communicates its purpose immediately. Ambiguity is eliminated through consistent patterns and clear visual hierarchy.

Token-First

Never hardcode values. Every color, spacing, and radius decision maps to a named token, enabling global changes with a single update.

Composable

Components are atomic building blocks. Complex interfaces emerge from composing simple, well-defined primitives — not from one-off custom styles.

Accessible by Default

WCAG 2.1 AA compliance is not an afterthought — it is embedded in every component through color contrast, keyboard navigation, and ARIA patterns.