first commit

This commit is contained in:
necatiozmen
2026-03-31 19:37:25 +03:00
commit 1145c998a1
128 changed files with 51549 additions and 0 deletions

220
design-md/figma/DESIGN.md Normal file
View File

@@ -0,0 +1,220 @@
# Design System: Figma
## 1. Visual Theme & Atmosphere
Figma's interface is the design tool that designed itself — a masterclass in typographic sophistication where a custom variable font (figmaSans) modulates between razor-thin (weight 320) and bold (weight 700) with stops at unusual intermediates (330, 340, 450, 480, 540) that most type systems never explore. This granular weight control gives every text element a precisely calibrated visual weight, creating hierarchy through micro-differences rather than the blunt instrument of "regular vs bold."
The page presents a fascinating duality: the interface chrome is strictly black-and-white (literally only `#000000` and `#ffffff` detected as colors), while the hero section and product showcases explode with vibrant multi-color gradients — electric greens, bright yellows, deep purples, hot pinks. This separation means the design system itself is colorless, treating the product's colorful output as the hero content. Figma's marketing page is essentially a white gallery wall displaying colorful art.
What makes Figma distinctive beyond the variable font is its circle-and-pill geometry. Buttons use 50px radius (pill) or 50% (perfect circle for icon buttons), creating an organic, tool-palette-like feel. The dashed-outline focus indicator (`dashed 2px`) is a deliberate design choice that echoes selection handles in the Figma editor itself — the website's UI language references the product's UI language.
**Key Characteristics:**
- Custom variable font (figmaSans) with unusual weight stops: 320, 330, 340, 450, 480, 540, 700
- Strictly black-and-white interface chrome — color exists only in product content
- figmaMono for uppercase technical labels with wide letter-spacing
- Pill (50px) and circular (50%) button geometry
- Dashed focus outlines echoing Figma's editor selection handles
- Vibrant multi-color hero gradients (green, yellow, purple, pink)
- OpenType `"kern"` feature enabled globally
- Negative letter-spacing throughout — even body text at -0.14px to -0.26px
## 2. Color Palette & Roles
### Primary
- **Pure Black** (`#000000`): All text, all solid buttons, all borders. The sole "color" of the interface.
- **Pure White** (`#ffffff`): All backgrounds, white buttons, text on dark surfaces. The other half of the binary.
*Note: Figma's marketing site uses ONLY these two colors for its interface layer. All vibrant colors appear exclusively in product screenshots, hero gradients, and embedded content.*
### Surface & Background
- **Pure White** (`#ffffff`): Primary page background and card surfaces.
- **Glass Black** (`rgba(0, 0, 0, 0.08)`): Subtle dark overlay for secondary circular buttons and glass effects.
- **Glass White** (`rgba(255, 255, 255, 0.16)`): Frosted glass overlay for buttons on dark/colored surfaces.
### Gradient System
- **Hero Gradient**: A vibrant multi-stop gradient using electric green, bright yellow, deep purple, and hot pink. This gradient is the visual signature of the hero section — it represents the creative possibilities of the tool.
- **Product Section Gradients**: Individual product areas (Design, Dev Mode, Prototyping) may use distinct color themes in their showcases.
## 3. Typography Rules
### Font Family
- **Primary**: `figmaSans`, with fallbacks: `figmaSans Fallback, SF Pro Display, system-ui, helvetica`
- **Monospace / Labels**: `figmaMono`, with fallbacks: `figmaMono Fallback, SF Mono, menlo`
### Hierarchy
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|------|------|------|--------|-------------|----------------|-------|
| Display / Hero | figmaSans | 86px (5.38rem) | 400 | 1.00 (tight) | -1.72px | Maximum impact, extreme tracking |
| Section Heading | figmaSans | 64px (4rem) | 400 | 1.10 (tight) | -0.96px | Feature section titles |
| Sub-heading | figmaSans | 26px (1.63rem) | 540 | 1.35 | -0.26px | Emphasized section text |
| Sub-heading Light | figmaSans | 26px (1.63rem) | 340 | 1.35 | -0.26px | Light-weight section text |
| Feature Title | figmaSans | 24px (1.5rem) | 700 | 1.45 | normal | Bold card headings |
| Body Large | figmaSans | 20px (1.25rem) | 330450 | 1.301.40 | -0.1px to -0.14px | Descriptions, intros |
| Body / Button | figmaSans | 16px (1rem) | 330400 | 1.401.45 | -0.14px to normal | Standard body, nav, buttons |
| Body Light | figmaSans | 18px (1.13rem) | 320 | 1.45 | -0.26px to normal | Light-weight body text |
| Mono Label | figmaMono | 18px (1.13rem) | 400 | 1.30 (tight) | 0.54px | Uppercase section labels |
| Mono Small | figmaMono | 12px (0.75rem) | 400 | 1.00 (tight) | 0.6px | Uppercase tiny tags |
### Principles
- **Variable font precision**: figmaSans uses weights that most systems never touch — 320, 330, 340, 450, 480, 540. This creates hierarchy through subtle weight differences rather than dramatic jumps. The difference between 330 and 340 is nearly imperceptible but structurally significant.
- **Light as the base**: Most body text uses 320340 (lighter than typical 400 "regular"), creating an ethereal, airy reading experience that matches the design-tool aesthetic.
- **Kern everywhere**: Every text element enables OpenType `"kern"` feature — kerning is not optional, it's structural.
- **Negative tracking by default**: Even body text uses -0.1px to -0.26px letter-spacing, creating universally tight text. Display text compresses further to -0.96px and -1.72px.
- **Mono for structure**: figmaMono in uppercase with positive letter-spacing (0.54px0.6px) creates technical signpost labels.
## 4. Component Stylings
### Buttons
**Black Solid (Pill)**
- Background: Pure Black (`#000000`)
- Text: Pure White (`#ffffff`)
- Radius: circle (50%) for icon buttons
- Focus: dashed 2px outline
- Maximum emphasis
**White Pill**
- Background: Pure White (`#ffffff`)
- Text: Pure Black (`#000000`)
- Padding: 8px 18px 10px (asymmetric vertical)
- Radius: pill (50px)
- Focus: dashed 2px outline
- Standard CTA on dark/colored surfaces
**Glass Dark**
- Background: `rgba(0, 0, 0, 0.08)` (subtle dark overlay)
- Text: Pure Black
- Radius: circle (50%)
- Focus: dashed 2px outline
- Secondary action on light surfaces
**Glass Light**
- Background: `rgba(255, 255, 255, 0.16)` (frosted glass)
- Text: Pure White
- Radius: circle (50%)
- Focus: dashed 2px outline
- Secondary action on dark/colored surfaces
### Cards & Containers
- Background: Pure White
- Border: none or minimal
- Radius: 6px (small containers), 8px (images, cards, dialogs)
- Shadow: subtle to medium elevation effects
- Product screenshots as card content
### Navigation
- Clean horizontal nav on white
- Logo: Figma wordmark in black
- Product tabs: pill-shaped (50px) tab navigation
- Links: black text, underline 1px decoration
- CTA: Black pill button
- Hover: text color via CSS variable
### Distinctive Components
**Product Tab Bar**
- Horizontal pill-shaped tabs (50px radius)
- Each tab represents a Figma product area (Design, Dev Mode, Prototyping, etc.)
- Active tab highlighted
**Hero Gradient Section**
- Full-width vibrant multi-color gradient background
- White text overlay with 86px display heading
- Product screenshots floating within the gradient
**Dashed Focus Indicators**
- All interactive elements use `dashed 2px` outline on focus
- References the selection handles in the Figma editor
- A meta-design choice connecting website and product
## 5. Layout Principles
### Spacing System
- Base unit: 8px
- Scale: 1px, 2px, 4px, 4.5px, 8px, 10px, 12px, 16px, 18px, 24px, 32px, 40px, 46px, 48px, 50px
### Grid & Container
- Max container width: up to 1920px
- Hero: full-width gradient with centered content
- Product sections: alternating showcases
- Footer: dark full-width section
- Responsive from 559px to 1920px
### Whitespace Philosophy
- **Gallery-like pacing**: Generous spacing lets each product section breathe as its own exhibit.
- **Color sections as visual breathing**: The gradient hero and product showcases provide chromatic relief between the monochrome interface sections.
### Border Radius Scale
- Minimal (2px): Small link elements
- Subtle (6px): Small containers, dividers
- Comfortable (8px): Cards, images, dialogs
- Pill (50px): Tab buttons, CTAs
- Circle (50%): Icon buttons, circular elements
## 6. Depth & Elevation
| Level | Treatment | Use |
|-------|-----------|-----|
| Flat (Level 0) | No shadow | Page background, most text |
| Surface (Level 1) | White card on gradient/dark section | Cards, product showcases |
| Elevated (Level 2) | Subtle shadow | Floating cards, hover states |
**Shadow Philosophy**: Figma uses shadows sparingly. The primary depth mechanisms are **background contrast** (white content on colorful/dark sections) and the inherent dimensionality of the product screenshots themselves.
## 7. Do's and Don'ts
### Do
- Use figmaSans with precise variable weights (320540) — the granular weight control IS the design
- Keep the interface strictly black-and-white — color comes from product content only
- Use pill (50px) and circular (50%) geometry for all interactive elements
- Apply dashed 2px focus outlines — the signature accessibility pattern
- Enable `"kern"` feature on all text
- Use figmaMono in uppercase with positive letter-spacing for labels
- Apply negative letter-spacing throughout (-0.1px to -1.72px)
### Don't
- Don't add interface colors — the monochrome palette is absolute
- Don't use standard font weights (400, 500, 600, 700) — use the variable font's unique stops (320, 330, 340, 450, 480, 540)
- Don't use sharp corners on buttons — pill and circular geometry only
- Don't use solid focus outlines — dashed is the signature
- Don't increase body font weight above 450 — the light-weight aesthetic is core
- Don't use positive letter-spacing on body text — it's always negative
## 8. Responsive Behavior
### Breakpoints
| Name | Width | Key Changes |
|------|-------|-------------|
| Small Mobile | <560px | Compact layout, stacked |
| Tablet | 560768px | Minor adjustments |
| Small Desktop | 768960px | 2-column layouts |
| Desktop | 9601280px | Standard layout |
| Large Desktop | 12801440px | Expanded |
| Ultra-wide | 14401920px | Maximum width |
### Collapsing Strategy
- Hero text: 86px → 64px → 48px
- Product tabs: horizontal scroll on mobile
- Feature sections: stacked single column
- Footer: multi-column → stacked
## 9. Agent Prompt Guide
### Quick Color Reference
- Everything: "Pure Black (#000000)" and "Pure White (#ffffff)"
- Glass Dark: "rgba(0, 0, 0, 0.08)"
- Glass Light: "rgba(255, 255, 255, 0.16)"
### Example Component Prompts
- "Create a hero on a vibrant multi-color gradient (green, yellow, purple, pink). Headline at 86px figmaSans weight 400, line-height 1.0, letter-spacing -1.72px. White text. White pill CTA button (50px radius, 8px 18px padding)."
- "Design a product tab bar with pill-shaped buttons (50px radius). Active: Black bg, white text. Inactive: transparent, black text. figmaSans at 20px weight 480."
- "Build a section label: figmaMono 18px, uppercase, letter-spacing 0.54px, black text. Kern enabled."
- "Create body text at 20px figmaSans weight 330, line-height 1.40, letter-spacing -0.14px. Pure Black on white."
### Iteration Guide
1. Use variable font weight stops precisely: 320, 330, 340, 450, 480, 540, 700
2. Interface is always black + white — never add colors to chrome
3. Dashed focus outlines, not solid
4. Letter-spacing is always negative on body, always positive on mono labels
5. Pill (50px) for buttons/tabs, circle (50%) for icon buttons

25
design-md/figma/README.md Normal file
View File

@@ -0,0 +1,25 @@
# Figma — Design System
> Design.md extracted from the public [figma](https://figma.dev/) website. This is not the official design system. Colors, fonts, and spacing may not be 100% accurate. But it's a good starting point for building something similar.
## Files
| File | Description |
|------|-------------|
| `DESIGN.md` | Complete design system documentation (9 sections) |
| `preview.html` | Interactive design token catalog (light) |
| `preview-dark.html` | Interactive design token catalog (dark) |
## Usage
Open `DESIGN.md` to use as a reference for AI agents (Claude, Cursor, Stitch) to generate UI that matches the Figma design language.
## Preview
A sample landing page built with DESIGN.md. It shows the actual colors, typography, buttons, cards, spacing, and elevation, all in one page.
### Dark Mode
![Figma Design System — Dark Mode](https://pub-2e4ecbcbc9b24e7b93f1a6ab5b2bc71f.r2.dev/designs/figma/preview-dark-screenshot.png)
### Light Mode
![Figma Design System — Light Mode](https://pub-2e4ecbcbc9b24e7b93f1a6ab5b2bc71f.r2.dev/designs/figma/preview-screenshot.png)

View File

@@ -0,0 +1,831 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Design System Preview: Figma (Dark)</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&display=swap" rel="stylesheet">
<style>
:root {
--color-black: #000000;
--color-white: #ffffff;
--glass-dark: rgba(0, 0, 0, 0.08);
--glass-light: rgba(255, 255, 255, 0.16);
--font-sans: system-ui, -apple-system, 'Segoe UI', 'SF Pro Display', Helvetica, Arial, sans-serif;
--font-mono: 'Space Mono', 'SF Mono', Menlo, monospace;
/* Dark mode tokens */
--bg-page: #000000;
--bg-card: #000000;
--bg-nav: rgba(0, 0, 0, 0.92);
--text-primary: #ffffff;
--text-secondary: #ffffff;
--text-muted: rgba(255, 255, 255, 0.5);
--border-color: rgba(255, 255, 255, 0.12);
--border-subtle: rgba(255, 255, 255, 0.06);
--section-label-color: #ffffff;
--glass-surface: rgba(255, 255, 255, 0.08);
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: var(--bg-page);
color: var(--text-primary);
font-family: var(--font-sans);
font-size: 16px;
font-weight: 340;
line-height: 1.45;
letter-spacing: -0.14px;
font-feature-settings: "kern" 1;
-webkit-font-smoothing: antialiased;
}
/* NAV */
.nav {
position: sticky;
top: 0;
z-index: 100;
display: flex;
align-items: center;
justify-content: space-between;
padding: 16px 40px;
background: var(--bg-nav);
backdrop-filter: blur(16px);
border-bottom: 1px solid var(--border-color);
}
.nav-brand {
font-family: var(--font-sans);
font-size: 18px;
font-weight: 700;
letter-spacing: -0.26px;
display: flex;
align-items: center;
gap: 10px;
color: var(--color-white);
}
.nav-brand svg { width: 24px; height: 24px; }
.nav-links { display: flex; gap: 32px; align-items: center; }
.nav-links a {
color: var(--text-primary);
text-decoration: none;
font-size: 16px;
font-weight: 400;
letter-spacing: -0.14px;
transition: opacity 0.2s;
}
.nav-links a:hover { opacity: 0.6; }
.nav-cta {
background: var(--color-white);
color: var(--color-black);
padding: 8px 18px 10px;
border: none;
border-radius: 50px;
font-size: 16px;
font-family: var(--font-sans);
font-weight: 480;
letter-spacing: -0.14px;
cursor: pointer;
}
.nav-cta:focus { outline: 2px dashed var(--color-white); outline-offset: 3px; }
/* HERO */
.hero {
position: relative;
text-align: center;
padding: 120px 40px 100px;
overflow: hidden;
background: linear-gradient(135deg, #0acf83 0%, #a259ff 30%, #f24e1e 50%, #ff7262 65%, #1abcfe 80%, #0acf83 100%);
}
.hero h1 {
font-family: var(--font-sans);
font-size: 86px;
font-weight: 400;
line-height: 1.0;
letter-spacing: -1.72px;
margin-bottom: 24px;
color: var(--color-white);
position: relative;
}
.hero p {
color: rgba(255, 255, 255, 0.85);
font-size: 20px;
font-weight: 330;
line-height: 1.4;
letter-spacing: -0.14px;
margin-bottom: 40px;
position: relative;
}
.hero-buttons { display: flex; gap: 16px; justify-content: center; position: relative; }
.btn-hero-primary {
background: var(--color-white);
color: var(--color-black);
padding: 8px 18px 10px;
border: none;
border-radius: 50px;
font-size: 16px;
font-family: var(--font-sans);
font-weight: 480;
letter-spacing: -0.14px;
cursor: pointer;
}
.btn-hero-primary:focus { outline: 2px dashed var(--color-white); outline-offset: 3px; }
.btn-hero-glass {
background: rgba(255, 255, 255, 0.16);
color: var(--color-white);
padding: 8px 18px 10px;
border: none;
border-radius: 50px;
font-size: 16px;
font-family: var(--font-sans);
font-weight: 480;
letter-spacing: -0.14px;
cursor: pointer;
backdrop-filter: blur(8px);
}
.btn-hero-glass:focus { outline: 2px dashed var(--color-white); outline-offset: 3px; }
/* PRODUCT TABS */
.product-tabs {
display: flex;
gap: 8px;
justify-content: center;
margin-bottom: 40px;
position: relative;
}
.product-tab {
background: rgba(255, 255, 255, 0.16);
color: var(--color-white);
padding: 8px 18px;
border: none;
border-radius: 50px;
font-size: 16px;
font-family: var(--font-sans);
font-weight: 480;
letter-spacing: -0.14px;
cursor: pointer;
backdrop-filter: blur(8px);
transition: background 0.2s;
}
.product-tab.active {
background: var(--color-white);
color: var(--color-black);
}
/* SECTIONS */
.section {
max-width: 1200px;
margin: 0 auto;
padding: 80px 40px;
}
.section-title {
font-family: var(--font-mono);
font-size: 18px;
font-weight: 400;
text-transform: uppercase;
letter-spacing: 0.54px;
color: var(--text-muted);
margin-bottom: 12px;
line-height: 1.3;
}
.section-heading {
font-family: var(--font-sans);
font-size: 64px;
font-weight: 400;
line-height: 1.1;
letter-spacing: -0.96px;
margin-bottom: 48px;
}
.section-divider {
border: none;
border-top: 1px solid var(--border-subtle);
margin: 0 40px;
max-width: 1200px;
margin-left: auto;
margin-right: auto;
}
/* COLOR PALETTE */
.color-group { margin-bottom: 40px; }
.color-group-title {
font-size: 26px;
font-weight: 540;
line-height: 1.35;
letter-spacing: -0.26px;
margin-bottom: 20px;
}
.color-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 16px;
}
.color-swatch {
border: 1px solid var(--border-color);
border-radius: 8px;
overflow: hidden;
}
.color-swatch-block {
height: 80px;
position: relative;
}
.color-swatch-info {
padding: 12px;
background: var(--bg-card);
}
.color-swatch-name { font-size: 14px; font-weight: 700; letter-spacing: -0.14px; margin-bottom: 2px; }
.color-swatch-hex { font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); margin-bottom: 4px; letter-spacing: 0.6px; }
.color-swatch-role { font-size: 12px; color: var(--text-muted); line-height: 1.4; font-weight: 340; }
/* GRADIENT PREVIEW */
.gradient-preview {
border-radius: 8px;
overflow: hidden;
margin-bottom: 16px;
}
.gradient-block {
height: 120px;
border-radius: 8px;
}
.gradient-label {
font-family: var(--font-mono);
font-size: 12px;
color: var(--text-muted);
margin-top: 8px;
letter-spacing: 0.6px;
text-transform: uppercase;
}
/* TYPOGRAPHY */
.type-sample { margin-bottom: 32px; padding-bottom: 32px; border-bottom: 1px solid var(--border-subtle); }
.type-sample:last-child { border-bottom: none; }
.type-sample-text { margin-bottom: 8px; font-feature-settings: "kern" 1; }
.type-sample-label {
font-family: var(--font-mono);
font-size: 12px;
color: var(--text-muted);
letter-spacing: 0.6px;
}
/* WEIGHT SPECTRUM */
.weight-spectrum { display: flex; flex-direction: column; gap: 12px; margin-bottom: 40px; padding: 24px; background: var(--glass-surface); border-radius: 8px; }
.weight-sample { display: flex; align-items: baseline; gap: 16px; }
.weight-sample-text { font-family: var(--font-sans); font-size: 24px; letter-spacing: -0.26px; line-height: 1.35; flex: 1; }
.weight-sample-label { font-family: var(--font-mono); font-size: 11px; color: var(--text-muted); letter-spacing: 0.6px; text-transform: uppercase; min-width: 80px; text-align: right; }
/* BUTTONS */
.button-row {
display: flex;
flex-wrap: wrap;
gap: 24px;
align-items: flex-start;
}
.button-demo { text-align: center; }
.button-demo-label {
font-family: var(--font-mono);
font-size: 11px;
color: var(--text-muted);
margin-top: 12px;
text-transform: uppercase;
letter-spacing: 0.6px;
}
.btn-white-pill-solid {
background: var(--color-white);
color: var(--color-black);
padding: 8px 18px 10px;
border: none;
border-radius: 50px;
font-size: 16px;
font-family: var(--font-sans);
font-weight: 480;
letter-spacing: -0.14px;
cursor: pointer;
}
.btn-white-pill-solid:focus { outline: 2px dashed var(--color-white); outline-offset: 3px; }
.btn-dark-pill-outline {
background: transparent;
color: var(--color-white);
padding: 8px 18px 10px;
border: 1px solid var(--border-color);
border-radius: 50px;
font-size: 16px;
font-family: var(--font-sans);
font-weight: 480;
letter-spacing: -0.14px;
cursor: pointer;
}
.btn-dark-pill-outline:focus { outline: 2px dashed var(--color-white); outline-offset: 3px; }
.btn-white-circle {
background: var(--color-white);
color: var(--color-black);
width: 48px;
height: 48px;
border: none;
border-radius: 50%;
font-size: 20px;
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
}
.btn-white-circle:focus { outline: 2px dashed var(--color-white); outline-offset: 3px; }
.btn-glass-light-circle {
background: rgba(255, 255, 255, 0.16);
color: var(--color-white);
width: 48px;
height: 48px;
border: none;
border-radius: 50%;
font-size: 20px;
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
}
.btn-glass-light-circle:focus { outline: 2px dashed var(--color-white); outline-offset: 3px; }
.btn-glass-dark-circle {
background: rgba(0, 0, 0, 0.08);
color: var(--color-white);
width: 48px;
height: 48px;
border: none;
border-radius: 50%;
font-size: 20px;
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
border: 1px solid var(--border-color);
}
.btn-glass-dark-circle:focus { outline: 2px dashed var(--color-white); outline-offset: 3px; }
/* FOCUS DEMO */
.focus-demo-row {
display: flex;
flex-wrap: wrap;
gap: 24px;
align-items: center;
margin-top: 40px;
padding: 24px;
background: var(--glass-surface);
border-radius: 8px;
}
.focus-demo-label {
font-family: var(--font-mono);
font-size: 12px;
color: var(--text-muted);
letter-spacing: 0.6px;
text-transform: uppercase;
margin-bottom: 8px;
}
.btn-focus-visible {
outline: 2px dashed var(--color-white);
outline-offset: 3px;
}
/* CARDS */
.card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px; }
.card {
background: var(--bg-card);
border-radius: 8px;
padding: 28px;
}
.card-standard { border: 1px solid var(--border-color); }
.card-elevated {
border: 1px solid var(--border-color);
box-shadow: 0 4px 24px rgba(255, 255, 255, 0.04);
}
.card-glass {
background: var(--glass-surface);
border: none;
}
.card h3 {
font-family: var(--font-sans);
font-size: 24px;
font-weight: 700;
line-height: 1.45;
letter-spacing: normal;
margin-bottom: 12px;
}
.card p { color: var(--text-muted); font-size: 16px; line-height: 1.45; font-weight: 330; letter-spacing: -0.14px; }
.card-label {
font-family: var(--font-mono);
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.6px;
color: var(--text-muted);
margin-bottom: 16px;
}
/* SPACING */
.spacing-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; }
.spacing-item { text-align: center; }
.spacing-box {
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.12);
border-radius: 2px;
margin-bottom: 8px;
}
.spacing-label {
font-family: var(--font-mono);
font-size: 11px;
color: var(--text-muted);
letter-spacing: 0.6px;
}
/* RADIUS */
.radius-row { display: flex; flex-wrap: wrap; gap: 24px; align-items: center; }
.radius-item { text-align: center; }
.radius-box {
width: 80px;
height: 80px;
background: var(--glass-surface);
border: 1px solid var(--border-color);
margin-bottom: 8px;
}
.radius-label {
font-family: var(--font-mono);
font-size: 11px;
color: var(--text-muted);
letter-spacing: 0.6px;
}
.radius-context {
font-size: 11px;
color: var(--text-muted);
margin-top: 2px;
font-weight: 340;
}
/* ELEVATION */
.elevation-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 24px; }
.elevation-card {
background: var(--bg-card);
border-radius: 8px;
padding: 24px;
min-height: 140px;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.elevation-flat { border: none; background: var(--bg-page); }
.elevation-surface { background: var(--glass-surface); border: 1px solid var(--border-color); }
.elevation-elevated { border: 1px solid var(--border-color); box-shadow: 0 4px 24px rgba(255, 255, 255, 0.04); }
.elevation-name { font-size: 16px; font-weight: 700; margin-bottom: 8px; letter-spacing: normal; }
.elevation-desc { font-size: 13px; color: var(--text-muted); line-height: 1.5; font-weight: 340; }
.elevation-level {
font-family: var(--font-mono);
font-size: 11px;
color: var(--text-muted);
text-transform: uppercase;
letter-spacing: 0.6px;
margin-top: 12px;
}
/* RESPONSIVE */
@media (max-width: 768px) {
.nav { padding: 12px 20px; }
.nav-links a:not(.nav-cta-wrapper) { display: none; }
.hero { padding: 80px 20px 60px; }
.hero h1 { font-size: 48px; letter-spacing: -0.96px; }
.section { padding: 60px 20px; }
.section-heading { font-size: 36px; letter-spacing: -0.72px; }
.color-grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); }
.card-grid { grid-template-columns: 1fr; }
.hero-buttons { flex-direction: column; align-items: center; }
.button-row { flex-direction: column; align-items: flex-start; }
.product-tabs { flex-wrap: wrap; }
}
</style>
</head>
<body>
<!-- NAV -->
<nav class="nav">
<div class="nav-brand">
<svg viewBox="0 0 38 57" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19 28.5C19 23.2533 23.2533 19 28.5 19C33.7467 19 38 23.2533 38 28.5C38 33.7467 33.7467 38 28.5 38C23.2533 38 19 33.7467 19 28.5Z" fill="#1ABCFE"/>
<path d="M0 47.5C0 42.2533 4.25329 38 9.5 38H19V47.5C19 52.7467 14.7467 57 9.5 57C4.25329 57 0 52.7467 0 47.5Z" fill="#0ACF83"/>
<path d="M19 0V19H28.5C33.7467 19 38 14.7467 38 9.5C38 4.25329 33.7467 0 28.5 0H19Z" fill="#FF7262"/>
<path d="M0 9.5C0 14.7467 4.25329 19 9.5 19H19V0H9.5C4.25329 0 0 4.25329 0 9.5Z" fill="#F24E1E"/>
<path d="M0 28.5C0 33.7467 4.25329 38 9.5 38H19V19H9.5C4.25329 19 0 23.2533 0 28.5Z" fill="#A259FF"/>
</svg>
Figma
</div>
<div class="nav-links">
<a href="#colors">Colors</a>
<a href="#typography">Typography</a>
<a href="#buttons">Buttons</a>
<a href="#cards">Cards</a>
<a href="#spacing">Spacing</a>
<a href="#elevation">Elevation</a>
<button class="nav-cta">Get started</button>
</div>
</nav>
<!-- HERO -->
<section class="hero">
<div class="product-tabs">
<button class="product-tab active">Design</button>
<button class="product-tab">Dev Mode</button>
<button class="product-tab">Prototyping</button>
<button class="product-tab">Slides</button>
</div>
<h1>Design System Preview:<br>Figma</h1>
<p>Auto-generated design token catalog from DESIGN.md</p>
<div class="hero-buttons">
<button class="btn-hero-primary">Explore Tokens</button>
<button class="btn-hero-glass">View Source</button>
</div>
</section>
<hr class="section-divider">
<!-- COLORS -->
<section class="section" id="colors">
<div class="section-title">01 / COLOR PALETTE</div>
<h2 class="section-heading">Color Palette & Roles</h2>
<div class="color-group">
<h3 class="color-group-title">Primary</h3>
<div class="color-grid">
<div class="color-swatch">
<div class="color-swatch-block" style="background: #000000; border-bottom: 1px solid rgba(255,255,255,0.12);"></div>
<div class="color-swatch-info">
<div class="color-swatch-name">Pure Black</div>
<div class="color-swatch-hex">#000000</div>
<div class="color-swatch-role">Page background, dark surface. The foundation of the dark theme.</div>
</div>
</div>
<div class="color-swatch">
<div class="color-swatch-block" style="background: #ffffff;"></div>
<div class="color-swatch-info">
<div class="color-swatch-name">Pure White</div>
<div class="color-swatch-hex">#ffffff</div>
<div class="color-swatch-role">All text, solid buttons, primary interface color on dark.</div>
</div>
</div>
</div>
</div>
<div class="color-group">
<h3 class="color-group-title">Surface & Glass</h3>
<div class="color-grid">
<div class="color-swatch">
<div class="color-swatch-block" style="background: rgba(255,255,255,0.16);"></div>
<div class="color-swatch-info">
<div class="color-swatch-name">Glass White</div>
<div class="color-swatch-hex">rgba(255,255,255,0.16)</div>
<div class="color-swatch-role">Frosted glass overlays, secondary buttons on dark surfaces.</div>
</div>
</div>
<div class="color-swatch">
<div class="color-swatch-block" style="background: rgba(255,255,255,0.08);"></div>
<div class="color-swatch-info">
<div class="color-swatch-name">Glass Subtle</div>
<div class="color-swatch-hex">rgba(255,255,255,0.08)</div>
<div class="color-swatch-role">Card surfaces, grouped content areas on dark background.</div>
</div>
</div>
</div>
</div>
<div class="color-group">
<h3 class="color-group-title">Gradient System</h3>
<div class="gradient-preview">
<div class="gradient-block" style="background: linear-gradient(135deg, #0acf83 0%, #a259ff 30%, #f24e1e 50%, #ff7262 65%, #1abcfe 80%, #0acf83 100%);"></div>
</div>
<div class="gradient-label">Hero Gradient -- Electric Green, Purple, Orange, Pink, Cyan</div>
<p style="color: var(--text-muted); font-size: 14px; margin-top: 8px; font-weight: 340;">Color exists only in hero gradients and product showcases. The interface layer remains strictly monochrome.</p>
</div>
</section>
<hr class="section-divider">
<!-- TYPOGRAPHY -->
<section class="section" id="typography">
<div class="section-title">02 / TYPOGRAPHY SCALE</div>
<h2 class="section-heading">Typography Rules</h2>
<div class="weight-spectrum">
<div style="font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); letter-spacing: 0.6px; text-transform: uppercase; margin-bottom: 8px;">Variable Weight Spectrum</div>
<div class="weight-sample">
<span class="weight-sample-text" style="font-weight: 320;">The quick brown fox jumps</span>
<span class="weight-sample-label">Weight 320</span>
</div>
<div class="weight-sample">
<span class="weight-sample-text" style="font-weight: 330;">The quick brown fox jumps</span>
<span class="weight-sample-label">Weight 330</span>
</div>
<div class="weight-sample">
<span class="weight-sample-text" style="font-weight: 340;">The quick brown fox jumps</span>
<span class="weight-sample-label">Weight 340</span>
</div>
<div class="weight-sample">
<span class="weight-sample-text" style="font-weight: 400;">The quick brown fox jumps</span>
<span class="weight-sample-label">Weight 400</span>
</div>
<div class="weight-sample">
<span class="weight-sample-text" style="font-weight: 450;">The quick brown fox jumps</span>
<span class="weight-sample-label">Weight 450</span>
</div>
<div class="weight-sample">
<span class="weight-sample-text" style="font-weight: 480;">The quick brown fox jumps</span>
<span class="weight-sample-label">Weight 480</span>
</div>
<div class="weight-sample">
<span class="weight-sample-text" style="font-weight: 540;">The quick brown fox jumps</span>
<span class="weight-sample-label">Weight 540</span>
</div>
<div class="weight-sample">
<span class="weight-sample-text" style="font-weight: 700;">The quick brown fox jumps</span>
<span class="weight-sample-label">Weight 700</span>
</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 86px; font-weight: 400; line-height: 1.0; letter-spacing: -1.72px;">Display Hero</div>
<div class="type-sample-label">Display / Hero -- 86px / wt 400 / lh 1.00 / ls -1.72px -- figmaSans</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 64px; font-weight: 400; line-height: 1.1; letter-spacing: -0.96px;">Section Heading</div>
<div class="type-sample-label">Section Heading -- 64px / wt 400 / lh 1.10 / ls -0.96px -- figmaSans</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 26px; font-weight: 540; line-height: 1.35; letter-spacing: -0.26px;">Sub-heading Medium</div>
<div class="type-sample-label">Sub-heading -- 26px / wt 540 / lh 1.35 / ls -0.26px -- figmaSans</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 26px; font-weight: 340; line-height: 1.35; letter-spacing: -0.26px;">Sub-heading Light</div>
<div class="type-sample-label">Sub-heading Light -- 26px / wt 340 / lh 1.35 / ls -0.26px -- figmaSans</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 24px; font-weight: 700; line-height: 1.45; letter-spacing: normal;">Feature Title Bold</div>
<div class="type-sample-label">Feature Title -- 24px / wt 700 / lh 1.45 / ls normal -- figmaSans</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 20px; font-weight: 330; line-height: 1.4; letter-spacing: -0.14px;">Body large text for descriptions and introductions. The light weight creates an airy, ethereal reading experience that matches the design-tool aesthetic.</div>
<div class="type-sample-label">Body Large -- 20px / wt 330 / lh 1.40 / ls -0.14px -- figmaSans</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 18px; font-weight: 320; line-height: 1.45; letter-spacing: -0.26px;">Body light text at the lightest variable weight. Nearly imperceptible thinness for secondary content and delicate UI copy.</div>
<div class="type-sample-label">Body Light -- 18px / wt 320 / lh 1.45 / ls -0.26px -- figmaSans</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 16px; font-weight: 400; line-height: 1.45; letter-spacing: -0.14px;">Standard body text for paragraphs, navigation links, and button labels. The default reading weight for all UI copy.</div>
<div class="type-sample-label">Body / Button -- 16px / wt 400 / lh 1.45 / ls -0.14px -- figmaSans</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-mono); font-size: 18px; font-weight: 400; line-height: 1.3; letter-spacing: 0.54px; text-transform: uppercase;">MONO SECTION LABEL</div>
<div class="type-sample-label">Mono Label -- 18px / wt 400 / lh 1.30 / ls 0.54px / uppercase -- figmaMono</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-mono); font-size: 12px; font-weight: 400; line-height: 1.0; letter-spacing: 0.6px; text-transform: uppercase;">MONO SMALL TAG</div>
<div class="type-sample-label">Mono Small -- 12px / wt 400 / lh 1.00 / ls 0.6px / uppercase -- figmaMono</div>
</div>
</section>
<hr class="section-divider">
<!-- BUTTONS -->
<section class="section" id="buttons">
<div class="section-title">03 / BUTTON VARIANTS</div>
<h2 class="section-heading">Buttons</h2>
<div class="button-row">
<div class="button-demo">
<button class="btn-white-pill-solid">Get started</button>
<div class="button-demo-label">White Pill CTA</div>
</div>
<div class="button-demo">
<button class="btn-dark-pill-outline">Learn more</button>
<div class="button-demo-label">Outline Pill</div>
</div>
<div class="button-demo">
<button class="btn-white-circle" aria-label="Menu">&#9776;</button>
<div class="button-demo-label">White Circle</div>
</div>
<div class="button-demo">
<button class="btn-glass-light-circle" aria-label="Play">&#9654;</button>
<div class="button-demo-label">Glass Light</div>
</div>
<div class="button-demo">
<button class="btn-glass-dark-circle" aria-label="Close">&times;</button>
<div class="button-demo-label">Glass Dark</div>
</div>
</div>
<div class="focus-demo-row">
<div>
<div class="focus-demo-label">Dashed Focus Indicator</div>
<p style="font-size: 14px; color: var(--text-muted); font-weight: 340; margin-bottom: 16px;">All interactive elements use <code style="font-family: var(--font-mono); font-size: 12px; background: var(--glass-surface); padding: 2px 6px; border-radius: 4px;">dashed 2px</code> outline on focus, echoing the selection handles in the Figma editor.</p>
</div>
<div style="display: flex; gap: 16px; align-items: center;">
<button class="btn-white-pill-solid btn-focus-visible">Focused Pill</button>
<button class="btn-white-circle btn-focus-visible" aria-label="Focused">&#10003;</button>
</div>
</div>
</section>
<hr class="section-divider">
<!-- CARDS -->
<section class="section" id="cards">
<div class="section-title">04 / CARD EXAMPLES</div>
<h2 class="section-heading">Cards & Containers</h2>
<div class="card-grid">
<div class="card card-standard">
<div class="card-label">STANDARD CARD</div>
<h3>Border Contained</h3>
<p>Standard content card with subtle white-alpha border and 8px radius. The default container on the black surface.</p>
</div>
<div class="card card-elevated">
<div class="card-label">ELEVATED CARD</div>
<h3>Subtle Glow</h3>
<p>Floating card with subtle luminous shadow. Used for product showcases and hover states that lift off the dark surface.</p>
</div>
<div class="card card-glass">
<div class="card-label">GLASS SURFACE</div>
<h3>Glass Overlay</h3>
<p>Glass-effect card using rgba(255,255,255,0.08) background. Secondary containers with a translucent frosted feel.</p>
</div>
</div>
</section>
<hr class="section-divider">
<!-- SPACING -->
<section class="section" id="spacing">
<div class="section-title">05 / SPACING SCALE</div>
<h2 class="section-heading">Spacing System</h2>
<p style="color: var(--text-muted); margin-bottom: 32px; font-weight: 340; font-size: 18px; letter-spacing: -0.26px;">Base unit: 8px. Scale from 1px to 50px.</p>
<div class="spacing-row">
<div class="spacing-item"><div class="spacing-box" style="width: 4px; height: 4px;"></div><div class="spacing-label">1px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 8px; height: 8px;"></div><div class="spacing-label">2px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 16px; height: 16px;"></div><div class="spacing-label">4px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 32px; height: 32px;"></div><div class="spacing-label">8px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 40px; height: 40px;"></div><div class="spacing-label">10px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 48px; height: 48px;"></div><div class="spacing-label">12px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 64px; height: 64px;"></div><div class="spacing-label">16px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 72px; height: 72px;"></div><div class="spacing-label">18px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 96px; height: 96px;"></div><div class="spacing-label">24px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 128px; height: 128px;"></div><div class="spacing-label">32px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 160px; height: 160px;"></div><div class="spacing-label">40px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 192px; height: 192px;"></div><div class="spacing-label">48px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 200px; height: 200px;"></div><div class="spacing-label">50px</div></div>
</div>
</section>
<hr class="section-divider">
<!-- BORDER RADIUS -->
<section class="section">
<div class="section-title">06 / BORDER RADIUS SCALE</div>
<h2 class="section-heading">Border Radius</h2>
<div class="radius-row">
<div class="radius-item"><div class="radius-box" style="border-radius: 2px;"></div><div class="radius-label">2px</div><div class="radius-context">Small links</div></div>
<div class="radius-item"><div class="radius-box" style="border-radius: 6px;"></div><div class="radius-label">6px</div><div class="radius-context">Small containers</div></div>
<div class="radius-item"><div class="radius-box" style="border-radius: 8px;"></div><div class="radius-label">8px</div><div class="radius-context">Cards, images</div></div>
<div class="radius-item"><div class="radius-box" style="border-radius: 50px; width: 120px;"></div><div class="radius-label">50px</div><div class="radius-context">Pill buttons</div></div>
<div class="radius-item"><div class="radius-box" style="border-radius: 50%;"></div><div class="radius-label">50%</div><div class="radius-context">Circle / Icon</div></div>
</div>
</section>
<hr class="section-divider">
<!-- ELEVATION -->
<section class="section" id="elevation">
<div class="section-title">07 / ELEVATION & DEPTH</div>
<h2 class="section-heading">Depth & Elevation</h2>
<div class="elevation-grid">
<div class="elevation-card elevation-flat">
<div><div class="elevation-name">Flat</div><div class="elevation-desc">No shadow. Pure black page background and most text. The default dark surface.</div></div>
<div class="elevation-level">Level 0</div>
</div>
<div class="elevation-card elevation-surface">
<div><div class="elevation-name">Surface</div><div class="elevation-desc">Glass white card on black background. Primary depth through translucent layering.</div></div>
<div class="elevation-level">Level 1</div>
</div>
<div class="elevation-card elevation-elevated">
<div><div class="elevation-name">Elevated</div><div class="elevation-desc">Subtle luminous shadow for floating cards and hover states on dark surfaces.</div></div>
<div class="elevation-level">Level 2</div>
</div>
</div>
</section>
<div style="height: 80px;"></div>
</body>
</html>

View File

@@ -0,0 +1,841 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Design System Preview: Figma (Light)</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&display=swap" rel="stylesheet">
<style>
:root {
--color-black: #000000;
--color-white: #ffffff;
--glass-dark: rgba(0, 0, 0, 0.08);
--glass-light: rgba(255, 255, 255, 0.16);
--font-sans: system-ui, -apple-system, 'Segoe UI', 'SF Pro Display', Helvetica, Arial, sans-serif;
--font-mono: 'Space Mono', 'SF Mono', Menlo, monospace;
/* Light mode tokens */
--bg-page: #ffffff;
--bg-card: #ffffff;
--bg-nav: rgba(255, 255, 255, 0.92);
--text-primary: #000000;
--text-secondary: #000000;
--text-muted: rgba(0, 0, 0, 0.5);
--border-color: rgba(0, 0, 0, 0.12);
--border-subtle: rgba(0, 0, 0, 0.06);
--section-label-color: #000000;
--glass-surface: rgba(0, 0, 0, 0.08);
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: var(--bg-page);
color: var(--text-primary);
font-family: var(--font-sans);
font-size: 16px;
font-weight: 340;
line-height: 1.45;
letter-spacing: -0.14px;
font-feature-settings: "kern" 1;
-webkit-font-smoothing: antialiased;
}
/* NAV */
.nav {
position: sticky;
top: 0;
z-index: 100;
display: flex;
align-items: center;
justify-content: space-between;
padding: 16px 40px;
background: var(--bg-nav);
backdrop-filter: blur(16px);
border-bottom: 1px solid var(--border-color);
}
.nav-brand {
font-family: var(--font-sans);
font-size: 18px;
font-weight: 700;
letter-spacing: -0.26px;
display: flex;
align-items: center;
gap: 10px;
}
.nav-brand svg { width: 24px; height: 24px; }
.nav-links { display: flex; gap: 32px; align-items: center; }
.nav-links a {
color: var(--text-primary);
text-decoration: none;
font-size: 16px;
font-weight: 400;
letter-spacing: -0.14px;
transition: opacity 0.2s;
}
.nav-links a:hover { opacity: 0.6; }
.nav-cta {
background: var(--color-black);
color: var(--color-white);
padding: 8px 18px 10px;
border: none;
border-radius: 50px;
font-size: 16px;
font-family: var(--font-sans);
font-weight: 480;
letter-spacing: -0.14px;
cursor: pointer;
}
.nav-cta:focus { outline: 2px dashed var(--color-black); outline-offset: 3px; }
/* HERO */
.hero {
position: relative;
text-align: center;
padding: 120px 40px 100px;
overflow: hidden;
background: linear-gradient(135deg, #0acf83 0%, #a259ff 30%, #f24e1e 50%, #ff7262 65%, #1abcfe 80%, #0acf83 100%);
}
.hero h1 {
font-family: var(--font-sans);
font-size: 86px;
font-weight: 400;
line-height: 1.0;
letter-spacing: -1.72px;
margin-bottom: 24px;
color: var(--color-white);
position: relative;
}
.hero p {
color: rgba(255, 255, 255, 0.85);
font-size: 20px;
font-weight: 330;
line-height: 1.4;
letter-spacing: -0.14px;
margin-bottom: 40px;
position: relative;
}
.hero-buttons { display: flex; gap: 16px; justify-content: center; position: relative; }
.btn-hero-primary {
background: var(--color-white);
color: var(--color-black);
padding: 8px 18px 10px;
border: none;
border-radius: 50px;
font-size: 16px;
font-family: var(--font-sans);
font-weight: 480;
letter-spacing: -0.14px;
cursor: pointer;
}
.btn-hero-primary:focus { outline: 2px dashed var(--color-white); outline-offset: 3px; }
.btn-hero-glass {
background: rgba(255, 255, 255, 0.16);
color: var(--color-white);
padding: 8px 18px 10px;
border: none;
border-radius: 50px;
font-size: 16px;
font-family: var(--font-sans);
font-weight: 480;
letter-spacing: -0.14px;
cursor: pointer;
backdrop-filter: blur(8px);
}
.btn-hero-glass:focus { outline: 2px dashed var(--color-white); outline-offset: 3px; }
/* PRODUCT TABS */
.product-tabs {
display: flex;
gap: 8px;
justify-content: center;
margin-bottom: 40px;
position: relative;
}
.product-tab {
background: rgba(255, 255, 255, 0.16);
color: var(--color-white);
padding: 8px 18px;
border: none;
border-radius: 50px;
font-size: 16px;
font-family: var(--font-sans);
font-weight: 480;
letter-spacing: -0.14px;
cursor: pointer;
backdrop-filter: blur(8px);
transition: background 0.2s;
}
.product-tab.active {
background: var(--color-white);
color: var(--color-black);
}
/* SECTIONS */
.section {
max-width: 1200px;
margin: 0 auto;
padding: 80px 40px;
}
.section-title {
font-family: var(--font-mono);
font-size: 18px;
font-weight: 400;
text-transform: uppercase;
letter-spacing: 0.54px;
color: var(--text-muted);
margin-bottom: 12px;
line-height: 1.3;
}
.section-heading {
font-family: var(--font-sans);
font-size: 64px;
font-weight: 400;
line-height: 1.1;
letter-spacing: -0.96px;
margin-bottom: 48px;
}
.section-divider {
border: none;
border-top: 1px solid var(--border-subtle);
margin: 0 40px;
max-width: 1200px;
margin-left: auto;
margin-right: auto;
}
/* COLOR PALETTE */
.color-group { margin-bottom: 40px; }
.color-group-title {
font-size: 26px;
font-weight: 540;
line-height: 1.35;
letter-spacing: -0.26px;
margin-bottom: 20px;
}
.color-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 16px;
}
.color-swatch {
border: 1px solid var(--border-color);
border-radius: 8px;
overflow: hidden;
}
.color-swatch-block {
height: 80px;
position: relative;
}
.color-swatch-info {
padding: 12px;
background: var(--bg-card);
}
.color-swatch-name { font-size: 14px; font-weight: 700; letter-spacing: -0.14px; margin-bottom: 2px; }
.color-swatch-hex { font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); margin-bottom: 4px; letter-spacing: 0.6px; }
.color-swatch-role { font-size: 12px; color: var(--text-muted); line-height: 1.4; font-weight: 340; }
/* GRADIENT PREVIEW */
.gradient-preview {
border-radius: 8px;
overflow: hidden;
margin-bottom: 16px;
}
.gradient-block {
height: 120px;
border-radius: 8px;
}
.gradient-label {
font-family: var(--font-mono);
font-size: 12px;
color: var(--text-muted);
margin-top: 8px;
letter-spacing: 0.6px;
text-transform: uppercase;
}
/* TYPOGRAPHY */
.type-sample { margin-bottom: 32px; padding-bottom: 32px; border-bottom: 1px solid var(--border-subtle); }
.type-sample:last-child { border-bottom: none; }
.type-sample-text { margin-bottom: 8px; font-feature-settings: "kern" 1; }
.type-sample-label {
font-family: var(--font-mono);
font-size: 12px;
color: var(--text-muted);
letter-spacing: 0.6px;
}
/* WEIGHT SPECTRUM */
.weight-spectrum { display: flex; flex-direction: column; gap: 12px; margin-bottom: 40px; padding: 24px; background: var(--glass-surface); border-radius: 8px; }
.weight-sample { display: flex; align-items: baseline; gap: 16px; }
.weight-sample-text { font-family: var(--font-sans); font-size: 24px; letter-spacing: -0.26px; line-height: 1.35; flex: 1; }
.weight-sample-label { font-family: var(--font-mono); font-size: 11px; color: var(--text-muted); letter-spacing: 0.6px; text-transform: uppercase; min-width: 80px; text-align: right; }
/* BUTTONS */
.button-row {
display: flex;
flex-wrap: wrap;
gap: 24px;
align-items: flex-start;
}
.button-demo { text-align: center; }
.button-demo-label {
font-family: var(--font-mono);
font-size: 11px;
color: var(--text-muted);
margin-top: 12px;
text-transform: uppercase;
letter-spacing: 0.6px;
}
.btn-black-pill {
background: var(--color-black);
color: var(--color-white);
padding: 8px 18px 10px;
border: none;
border-radius: 50px;
font-size: 16px;
font-family: var(--font-sans);
font-weight: 480;
letter-spacing: -0.14px;
cursor: pointer;
}
.btn-black-pill:focus { outline: 2px dashed var(--color-black); outline-offset: 3px; }
.btn-white-pill {
background: var(--color-white);
color: var(--color-black);
padding: 8px 18px 10px;
border: 1px solid var(--border-color);
border-radius: 50px;
font-size: 16px;
font-family: var(--font-sans);
font-weight: 480;
letter-spacing: -0.14px;
cursor: pointer;
}
.btn-white-pill:focus { outline: 2px dashed var(--color-black); outline-offset: 3px; }
.btn-black-circle {
background: var(--color-black);
color: var(--color-white);
width: 48px;
height: 48px;
border: none;
border-radius: 50%;
font-size: 20px;
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
}
.btn-black-circle:focus { outline: 2px dashed var(--color-black); outline-offset: 3px; }
.btn-glass-dark {
background: var(--glass-dark);
color: var(--color-black);
width: 48px;
height: 48px;
border: none;
border-radius: 50%;
font-size: 20px;
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
}
.btn-glass-dark:focus { outline: 2px dashed var(--color-black); outline-offset: 3px; }
.btn-glass-light-demo {
background: rgba(255, 255, 255, 0.16);
color: var(--color-white);
width: 48px;
height: 48px;
border: none;
border-radius: 50%;
font-size: 20px;
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
}
.glass-light-wrapper {
background: var(--color-black);
border-radius: 50%;
padding: 0;
display: inline-flex;
align-items: center;
justify-content: center;
}
/* FOCUS DEMO */
.focus-demo-row {
display: flex;
flex-wrap: wrap;
gap: 24px;
align-items: center;
margin-top: 40px;
padding: 24px;
background: var(--glass-surface);
border-radius: 8px;
}
.focus-demo-label {
font-family: var(--font-mono);
font-size: 12px;
color: var(--text-muted);
letter-spacing: 0.6px;
text-transform: uppercase;
margin-bottom: 8px;
}
.btn-focus-visible {
outline: 2px dashed var(--color-black);
outline-offset: 3px;
}
/* CARDS */
.card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px; }
.card {
background: var(--bg-card);
border-radius: 8px;
padding: 28px;
}
.card-standard { border: 1px solid var(--border-color); }
.card-elevated {
border: none;
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);
}
.card-glass {
background: var(--glass-surface);
border: none;
}
.card h3 {
font-family: var(--font-sans);
font-size: 24px;
font-weight: 700;
line-height: 1.45;
letter-spacing: normal;
margin-bottom: 12px;
}
.card p { color: var(--text-muted); font-size: 16px; line-height: 1.45; font-weight: 330; letter-spacing: -0.14px; }
.card-label {
font-family: var(--font-mono);
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.6px;
color: var(--text-muted);
margin-bottom: 16px;
}
/* SPACING */
.spacing-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; }
.spacing-item { text-align: center; }
.spacing-box {
background: rgba(0, 0, 0, 0.06);
border: 1px solid rgba(0, 0, 0, 0.12);
border-radius: 2px;
margin-bottom: 8px;
}
.spacing-label {
font-family: var(--font-mono);
font-size: 11px;
color: var(--text-muted);
letter-spacing: 0.6px;
}
/* RADIUS */
.radius-row { display: flex; flex-wrap: wrap; gap: 24px; align-items: center; }
.radius-item { text-align: center; }
.radius-box {
width: 80px;
height: 80px;
background: var(--glass-surface);
border: 1px solid var(--border-color);
margin-bottom: 8px;
}
.radius-label {
font-family: var(--font-mono);
font-size: 11px;
color: var(--text-muted);
letter-spacing: 0.6px;
}
.radius-context {
font-size: 11px;
color: var(--text-muted);
margin-top: 2px;
font-weight: 340;
}
/* ELEVATION */
.elevation-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 24px; }
.elevation-card {
background: var(--bg-card);
border-radius: 8px;
padding: 24px;
min-height: 140px;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.elevation-flat { border: none; background: var(--bg-page); }
.elevation-surface { background: var(--bg-card); border: 1px solid var(--border-color); }
.elevation-elevated { border: none; box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08); }
.elevation-name { font-size: 16px; font-weight: 700; margin-bottom: 8px; letter-spacing: normal; }
.elevation-desc { font-size: 13px; color: var(--text-muted); line-height: 1.5; font-weight: 340; }
.elevation-level {
font-family: var(--font-mono);
font-size: 11px;
color: var(--text-muted);
text-transform: uppercase;
letter-spacing: 0.6px;
margin-top: 12px;
}
/* RESPONSIVE */
@media (max-width: 768px) {
.nav { padding: 12px 20px; }
.nav-links a:not(.nav-cta-wrapper) { display: none; }
.hero { padding: 80px 20px 60px; }
.hero h1 { font-size: 48px; letter-spacing: -0.96px; }
.section { padding: 60px 20px; }
.section-heading { font-size: 36px; letter-spacing: -0.72px; }
.color-grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); }
.card-grid { grid-template-columns: 1fr; }
.hero-buttons { flex-direction: column; align-items: center; }
.button-row { flex-direction: column; align-items: flex-start; }
.product-tabs { flex-wrap: wrap; }
}
</style>
</head>
<body>
<!-- NAV -->
<nav class="nav">
<div class="nav-brand">
<svg viewBox="0 0 38 57" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19 28.5C19 23.2533 23.2533 19 28.5 19C33.7467 19 38 23.2533 38 28.5C38 33.7467 33.7467 38 28.5 38C23.2533 38 19 33.7467 19 28.5Z" fill="#1ABCFE"/>
<path d="M0 47.5C0 42.2533 4.25329 38 9.5 38H19V47.5C19 52.7467 14.7467 57 9.5 57C4.25329 57 0 52.7467 0 47.5Z" fill="#0ACF83"/>
<path d="M19 0V19H28.5C33.7467 19 38 14.7467 38 9.5C38 4.25329 33.7467 0 28.5 0H19Z" fill="#FF7262"/>
<path d="M0 9.5C0 14.7467 4.25329 19 9.5 19H19V0H9.5C4.25329 0 0 4.25329 0 9.5Z" fill="#F24E1E"/>
<path d="M0 28.5C0 33.7467 4.25329 38 9.5 38H19V19H9.5C4.25329 19 0 23.2533 0 28.5Z" fill="#A259FF"/>
</svg>
Figma
</div>
<div class="nav-links">
<a href="#colors">Colors</a>
<a href="#typography">Typography</a>
<a href="#buttons">Buttons</a>
<a href="#cards">Cards</a>
<a href="#spacing">Spacing</a>
<a href="#elevation">Elevation</a>
<button class="nav-cta">Get started</button>
</div>
</nav>
<!-- HERO -->
<section class="hero">
<div class="product-tabs">
<button class="product-tab active">Design</button>
<button class="product-tab">Dev Mode</button>
<button class="product-tab">Prototyping</button>
<button class="product-tab">Slides</button>
</div>
<h1>Design System Preview:<br>Figma</h1>
<p>Auto-generated design token catalog from DESIGN.md</p>
<div class="hero-buttons">
<button class="btn-hero-primary">Explore Tokens</button>
<button class="btn-hero-glass">View Source</button>
</div>
</section>
<hr class="section-divider">
<!-- COLORS -->
<section class="section" id="colors">
<div class="section-title">01 / COLOR PALETTE</div>
<h2 class="section-heading">Color Palette & Roles</h2>
<div class="color-group">
<h3 class="color-group-title">Primary</h3>
<div class="color-grid">
<div class="color-swatch">
<div class="color-swatch-block" style="background: #000000;"></div>
<div class="color-swatch-info">
<div class="color-swatch-name">Pure Black</div>
<div class="color-swatch-hex">#000000</div>
<div class="color-swatch-role">All text, solid buttons, all borders. The sole interface color.</div>
</div>
</div>
<div class="color-swatch">
<div class="color-swatch-block" style="background: #ffffff; border: 1px solid rgba(0,0,0,0.12);"></div>
<div class="color-swatch-info">
<div class="color-swatch-name">Pure White</div>
<div class="color-swatch-hex">#ffffff</div>
<div class="color-swatch-role">All backgrounds, white buttons, text on dark surfaces.</div>
</div>
</div>
</div>
</div>
<div class="color-group">
<h3 class="color-group-title">Surface & Glass</h3>
<div class="color-grid">
<div class="color-swatch">
<div class="color-swatch-block" style="background: rgba(0,0,0,0.08); border: 1px solid rgba(0,0,0,0.12);"></div>
<div class="color-swatch-info">
<div class="color-swatch-name">Glass Black</div>
<div class="color-swatch-hex">rgba(0,0,0,0.08)</div>
<div class="color-swatch-role">Secondary circular buttons, glass overlays on light surfaces.</div>
</div>
</div>
<div class="color-swatch">
<div class="color-swatch-block" style="background: rgba(255,255,255,0.16); border: 1px solid rgba(0,0,0,0.12); position: relative;">
<div style="position: absolute; inset: 0; background: #000; z-index: 0;"></div>
<div style="position: absolute; inset: 0; background: rgba(255,255,255,0.16); z-index: 1;"></div>
</div>
<div class="color-swatch-info">
<div class="color-swatch-name">Glass White</div>
<div class="color-swatch-hex">rgba(255,255,255,0.16)</div>
<div class="color-swatch-role">Frosted glass overlay for buttons on dark or colored surfaces.</div>
</div>
</div>
</div>
</div>
<div class="color-group">
<h3 class="color-group-title">Gradient System</h3>
<div class="gradient-preview">
<div class="gradient-block" style="background: linear-gradient(135deg, #0acf83 0%, #a259ff 30%, #f24e1e 50%, #ff7262 65%, #1abcfe 80%, #0acf83 100%);"></div>
</div>
<div class="gradient-label">Hero Gradient -- Electric Green, Purple, Orange, Pink, Cyan</div>
<p style="color: var(--text-muted); font-size: 14px; margin-top: 8px; font-weight: 340;">Color exists only in hero gradients and product showcases. The interface layer remains strictly monochrome.</p>
</div>
</section>
<hr class="section-divider">
<!-- TYPOGRAPHY -->
<section class="section" id="typography">
<div class="section-title">02 / TYPOGRAPHY SCALE</div>
<h2 class="section-heading">Typography Rules</h2>
<div class="weight-spectrum">
<div style="font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); letter-spacing: 0.6px; text-transform: uppercase; margin-bottom: 8px;">Variable Weight Spectrum</div>
<div class="weight-sample">
<span class="weight-sample-text" style="font-weight: 320;">The quick brown fox jumps</span>
<span class="weight-sample-label">Weight 320</span>
</div>
<div class="weight-sample">
<span class="weight-sample-text" style="font-weight: 330;">The quick brown fox jumps</span>
<span class="weight-sample-label">Weight 330</span>
</div>
<div class="weight-sample">
<span class="weight-sample-text" style="font-weight: 340;">The quick brown fox jumps</span>
<span class="weight-sample-label">Weight 340</span>
</div>
<div class="weight-sample">
<span class="weight-sample-text" style="font-weight: 400;">The quick brown fox jumps</span>
<span class="weight-sample-label">Weight 400</span>
</div>
<div class="weight-sample">
<span class="weight-sample-text" style="font-weight: 450;">The quick brown fox jumps</span>
<span class="weight-sample-label">Weight 450</span>
</div>
<div class="weight-sample">
<span class="weight-sample-text" style="font-weight: 480;">The quick brown fox jumps</span>
<span class="weight-sample-label">Weight 480</span>
</div>
<div class="weight-sample">
<span class="weight-sample-text" style="font-weight: 540;">The quick brown fox jumps</span>
<span class="weight-sample-label">Weight 540</span>
</div>
<div class="weight-sample">
<span class="weight-sample-text" style="font-weight: 700;">The quick brown fox jumps</span>
<span class="weight-sample-label">Weight 700</span>
</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 86px; font-weight: 400; line-height: 1.0; letter-spacing: -1.72px;">Display Hero</div>
<div class="type-sample-label">Display / Hero -- 86px / wt 400 / lh 1.00 / ls -1.72px -- figmaSans</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 64px; font-weight: 400; line-height: 1.1; letter-spacing: -0.96px;">Section Heading</div>
<div class="type-sample-label">Section Heading -- 64px / wt 400 / lh 1.10 / ls -0.96px -- figmaSans</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 26px; font-weight: 540; line-height: 1.35; letter-spacing: -0.26px;">Sub-heading Medium</div>
<div class="type-sample-label">Sub-heading -- 26px / wt 540 / lh 1.35 / ls -0.26px -- figmaSans</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 26px; font-weight: 340; line-height: 1.35; letter-spacing: -0.26px;">Sub-heading Light</div>
<div class="type-sample-label">Sub-heading Light -- 26px / wt 340 / lh 1.35 / ls -0.26px -- figmaSans</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 24px; font-weight: 700; line-height: 1.45; letter-spacing: normal;">Feature Title Bold</div>
<div class="type-sample-label">Feature Title -- 24px / wt 700 / lh 1.45 / ls normal -- figmaSans</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 20px; font-weight: 330; line-height: 1.4; letter-spacing: -0.14px;">Body large text for descriptions and introductions. The light weight creates an airy, ethereal reading experience that matches the design-tool aesthetic.</div>
<div class="type-sample-label">Body Large -- 20px / wt 330 / lh 1.40 / ls -0.14px -- figmaSans</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 18px; font-weight: 320; line-height: 1.45; letter-spacing: -0.26px;">Body light text at the lightest variable weight. Nearly imperceptible thinness for secondary content and delicate UI copy.</div>
<div class="type-sample-label">Body Light -- 18px / wt 320 / lh 1.45 / ls -0.26px -- figmaSans</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 16px; font-weight: 400; line-height: 1.45; letter-spacing: -0.14px;">Standard body text for paragraphs, navigation links, and button labels. The default reading weight for all UI copy.</div>
<div class="type-sample-label">Body / Button -- 16px / wt 400 / lh 1.45 / ls -0.14px -- figmaSans</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-mono); font-size: 18px; font-weight: 400; line-height: 1.3; letter-spacing: 0.54px; text-transform: uppercase;">MONO SECTION LABEL</div>
<div class="type-sample-label">Mono Label -- 18px / wt 400 / lh 1.30 / ls 0.54px / uppercase -- figmaMono</div>
</div>
<div class="type-sample">
<div class="type-sample-text" style="font-family: var(--font-mono); font-size: 12px; font-weight: 400; line-height: 1.0; letter-spacing: 0.6px; text-transform: uppercase;">MONO SMALL TAG</div>
<div class="type-sample-label">Mono Small -- 12px / wt 400 / lh 1.00 / ls 0.6px / uppercase -- figmaMono</div>
</div>
</section>
<hr class="section-divider">
<!-- BUTTONS -->
<section class="section" id="buttons">
<div class="section-title">03 / BUTTON VARIANTS</div>
<h2 class="section-heading">Buttons</h2>
<div class="button-row">
<div class="button-demo">
<button class="btn-black-pill">Get started</button>
<div class="button-demo-label">Black Pill CTA</div>
</div>
<div class="button-demo">
<button class="btn-white-pill">Learn more</button>
<div class="button-demo-label">White Pill</div>
</div>
<div class="button-demo">
<button class="btn-black-circle" aria-label="Menu">&#9776;</button>
<div class="button-demo-label">Black Circle</div>
</div>
<div class="button-demo">
<button class="btn-glass-dark" aria-label="Play">&#9654;</button>
<div class="button-demo-label">Glass Dark</div>
</div>
<div class="button-demo">
<div class="glass-light-wrapper">
<button class="btn-glass-light-demo" aria-label="Close">&times;</button>
</div>
<div class="button-demo-label">Glass Light</div>
</div>
</div>
<div class="focus-demo-row">
<div>
<div class="focus-demo-label">Dashed Focus Indicator</div>
<p style="font-size: 14px; color: var(--text-muted); font-weight: 340; margin-bottom: 16px;">All interactive elements use <code style="font-family: var(--font-mono); font-size: 12px; background: var(--glass-surface); padding: 2px 6px; border-radius: 4px;">dashed 2px</code> outline on focus, echoing the selection handles in the Figma editor.</p>
</div>
<div style="display: flex; gap: 16px; align-items: center;">
<button class="btn-black-pill btn-focus-visible">Focused Pill</button>
<button class="btn-black-circle btn-focus-visible" aria-label="Focused">&#10003;</button>
</div>
</div>
</section>
<hr class="section-divider">
<!-- CARDS -->
<section class="section" id="cards">
<div class="section-title">04 / CARD EXAMPLES</div>
<h2 class="section-heading">Cards & Containers</h2>
<div class="card-grid">
<div class="card card-standard">
<div class="card-label">STANDARD CARD</div>
<h3>Minimal Border</h3>
<p>Standard content card with subtle border and 8px radius. The default container for features and content sections on the white gallery surface.</p>
</div>
<div class="card card-elevated">
<div class="card-label">ELEVATED CARD</div>
<h3>Subtle Shadow</h3>
<p>Floating card with subtle shadow elevation. Used for product showcases and hover states where the card lifts off the surface.</p>
</div>
<div class="card card-glass">
<div class="card-label">GLASS SURFACE</div>
<h3>Glass Overlay</h3>
<p>Glass-effect card using rgba(0,0,0,0.08) background. Secondary containers and grouped content areas with a translucent feel.</p>
</div>
</div>
</section>
<hr class="section-divider">
<!-- SPACING -->
<section class="section" id="spacing">
<div class="section-title">05 / SPACING SCALE</div>
<h2 class="section-heading">Spacing System</h2>
<p style="color: var(--text-muted); margin-bottom: 32px; font-weight: 340; font-size: 18px; letter-spacing: -0.26px;">Base unit: 8px. Scale from 1px to 50px.</p>
<div class="spacing-row">
<div class="spacing-item"><div class="spacing-box" style="width: 4px; height: 4px;"></div><div class="spacing-label">1px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 8px; height: 8px;"></div><div class="spacing-label">2px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 16px; height: 16px;"></div><div class="spacing-label">4px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 32px; height: 32px;"></div><div class="spacing-label">8px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 40px; height: 40px;"></div><div class="spacing-label">10px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 48px; height: 48px;"></div><div class="spacing-label">12px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 64px; height: 64px;"></div><div class="spacing-label">16px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 72px; height: 72px;"></div><div class="spacing-label">18px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 96px; height: 96px;"></div><div class="spacing-label">24px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 128px; height: 128px;"></div><div class="spacing-label">32px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 160px; height: 160px;"></div><div class="spacing-label">40px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 192px; height: 192px;"></div><div class="spacing-label">48px</div></div>
<div class="spacing-item"><div class="spacing-box" style="width: 200px; height: 200px;"></div><div class="spacing-label">50px</div></div>
</div>
</section>
<hr class="section-divider">
<!-- BORDER RADIUS -->
<section class="section">
<div class="section-title">06 / BORDER RADIUS SCALE</div>
<h2 class="section-heading">Border Radius</h2>
<div class="radius-row">
<div class="radius-item"><div class="radius-box" style="border-radius: 2px;"></div><div class="radius-label">2px</div><div class="radius-context">Small links</div></div>
<div class="radius-item"><div class="radius-box" style="border-radius: 6px;"></div><div class="radius-label">6px</div><div class="radius-context">Small containers</div></div>
<div class="radius-item"><div class="radius-box" style="border-radius: 8px;"></div><div class="radius-label">8px</div><div class="radius-context">Cards, images</div></div>
<div class="radius-item"><div class="radius-box" style="border-radius: 50px; width: 120px;"></div><div class="radius-label">50px</div><div class="radius-context">Pill buttons</div></div>
<div class="radius-item"><div class="radius-box" style="border-radius: 50%;"></div><div class="radius-label">50%</div><div class="radius-context">Circle / Icon</div></div>
</div>
</section>
<hr class="section-divider">
<!-- ELEVATION -->
<section class="section" id="elevation">
<div class="section-title">07 / ELEVATION & DEPTH</div>
<h2 class="section-heading">Depth & Elevation</h2>
<div class="elevation-grid">
<div class="elevation-card elevation-flat">
<div><div class="elevation-name">Flat</div><div class="elevation-desc">No shadow. Page background and most text. The default surface.</div></div>
<div class="elevation-level">Level 0</div>
</div>
<div class="elevation-card elevation-surface">
<div><div class="elevation-name">Surface</div><div class="elevation-desc">White card on gradient or dark section. Primary depth through background contrast.</div></div>
<div class="elevation-level">Level 1</div>
</div>
<div class="elevation-card elevation-elevated">
<div><div class="elevation-name">Elevated</div><div class="elevation-desc">Subtle shadow for floating cards and hover states. Sparingly applied.</div></div>
<div class="elevation-level">Level 2</div>
</div>
</div>
</section>
<div style="height: 80px;"></div>
</body>
</html>