DESIGN.md@claude/skills/visualize/design-systems/deck · git:20261007.b0c13a7 · 2026-10-07 · sha256 af7584c841f5ca84
DESIGN.md@claude/skills/visualize/design-systems/deck git:20261007.b0c13a7A
Immutable. This exact content never changes and is served at /api/v1/blob/af7584c841f5ca84.
---
name: Deck
description: Presentation-marketing register — sans display, projection-tuned, warm-amber accent. Built for viewing from 5–15 feet, not laptop reading distance.
# Colors carry the shadcn-semantic slug names visualize templates already
# read. OKLCH per the visualize palette convention; Stitch's linter
# validates hex sRGB only and will warn on these strings — accepted
# trade for one source of truth and wide-gamut fidelity. Light-mode
# values only; dark-mode lives in the sidecar `tokens.css`.
canonical-canvas: light
selection:
mood: [organic]
tone: [calm, warm]
formality: medium
density: medium
canonical_canvas: light
best_for: |
Use for balanced artifacts that need a calm, warm register with organic visual cues. Strongest when the reference can preserve its light canonical canvas instead of forcing the opposite polarity.
avoid_for: |
Avoid when the source material asks for a sharply different emotional register, density profile, or canvas polarity.
colors:
background: "oklch(0.99 0.005 65)"
foreground: "oklch(0.13 0.012 50)"
card: "oklch(0.985 0.006 65)"
card-foreground: "oklch(0.13 0.012 50)"
popover: "oklch(0.985 0.006 65)"
popover-foreground: "oklch(0.13 0.012 50)"
primary: "oklch(0.55 0.17 60)"
primary-foreground: "oklch(0.99 0.005 65)"
secondary: "oklch(0.95 0.008 65)"
secondary-foreground: "oklch(0.13 0.012 50)"
muted: "oklch(0.95 0.008 65)"
muted-foreground: "oklch(0.42 0.014 55)"
accent: "oklch(0.93 0.012 60)"
accent-foreground: "oklch(0.13 0.012 50)"
destructive: "oklch(0.55 0.22 25)"
destructive-foreground: "oklch(0.99 0.005 65)"
border: "oklch(0.88 0.012 65)"
input: "oklch(0.88 0.012 65)"
ring: "oklch(0.55 0.17 60)"
chart-1: "oklch(0.55 0.17 60)"
chart-2: "oklch(0.42 0.12 235)"
chart-3: "oklch(0.50 0.18 25)"
chart-4: "oklch(0.45 0.10 145)"
chart-5: "oklch(0.45 0.14 295)"
sidebar: "oklch(0.96 0.008 65)"
sidebar-foreground: "oklch(0.13 0.012 50)"
sidebar-primary: "oklch(0.55 0.17 60)"
sidebar-primary-foreground: "oklch(0.99 0.005 65)"
sidebar-accent: "oklch(0.93 0.012 60)"
sidebar-accent-foreground: "oklch(0.13 0.012 50)"
sidebar-border: "oklch(0.88 0.012 65)"
sidebar-ring: "oklch(0.55 0.17 60)"
typography:
display:
fontFamily: "var(--font-sans)"
fontSize: "clamp(2.5rem, 6vw, 4.5rem)"
fontWeight: 700
lineHeight: 1.05
display-sm:
fontFamily: "var(--font-sans)"
fontSize: "clamp(1.875rem, 4vw, 2.75rem)"
fontWeight: 700
lineHeight: 1.1
heading:
fontFamily: "var(--font-sans)"
fontSize: "1.625rem"
fontWeight: 600
lineHeight: 1.2
title:
fontFamily: "var(--font-sans)"
fontSize: "1.125rem"
fontWeight: 500
lineHeight: 1.3
body:
fontFamily: "var(--font-sans)"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.45
label:
fontFamily: "var(--font-sans)"
fontSize: "0.875rem"
fontWeight: 600
letterSpacing: "-0.005em"
mono:
fontFamily: "var(--font-mono)"
fontSize: "0.875rem"
fontWeight: 400
rounded:
sm: "calc(0.625rem - 4px)"
md: "calc(0.625rem - 2px)"
lg: "0.625rem"
xl: "calc(0.625rem + 4px)"
spacing:
xs: "0.25rem"
sm: "0.5rem"
md: "1rem"
lg: "1.5rem"
xl: "2rem"
components:
button-primary:
backgroundColor: "{colors.primary}"
textColor: "{colors.primary-foreground}"
typography: "{typography.label}"
rounded: "{rounded.md}"
padding: "0.625rem 1.25rem"
button-primary-hover:
backgroundColor: "{colors.foreground}"
textColor: "{colors.primary-foreground}"
button-secondary:
backgroundColor: "{colors.secondary}"
textColor: "{colors.secondary-foreground}"
typography: "{typography.label}"
rounded: "{rounded.md}"
padding: "0.625rem 1.25rem"
card:
backgroundColor: "{colors.card}"
textColor: "{colors.card-foreground}"
rounded: "{rounded.lg}"
padding: "2rem"
input-text:
backgroundColor: "{colors.background}"
textColor: "{colors.foreground}"
rounded: "{rounded.md}"
padding: "0.5rem 0.75rem"
nav-link:
textColor: "{colors.foreground}"
typography: "{typography.label}"
nav-link-hover:
textColor: "{colors.primary}"
---
# Design System: Deck
## 1. Overview: The Pitch from Fifteen Feet
**Creative North Star: "Built to Project"**
Deck is visualize's presentation-marketing register — designed for the artifact that's meant to be **seen from 5–15 feet**, not read from a laptop at desk distance. The aesthetic reference is Pitch.com / modern Keynote / Notion-deck on a confident day. Largest type-scale floor in the catalogue (display clamps up to 4.5rem), tightest leading (1.05 on display), and a warm-amber primary that reads "this is a pitch" rather than "this is documentation."
This is the system for **persuasive-marketing reader-jobs**: Pitch decks, Slide decks, One-pagers, Case studies presented (rather than read), Comparison rolls. Stat-bleed full-bleed numerics land naturally — the traction slide and the hero outcome both pull this primitive against Deck.
Deck explicitly rejects: dense prose paragraphs (Whitepaper / Research brief register), small body type, footnote-strip density, and mid-tone surfaces. Projection contrast is the identity — the warm-near-white / warm-near-coal delta is bigger than the other systems, tuned for visibility under a projector or on a screen at meeting distance.
**Key Characteristics:**
- Warm-near-white background (oklch 0.99 / 0.005 / 65) + deep-coal foreground (oklch 0.13) — projection-tuned high contrast.
- Warm-amber `--primary` (oklch 0.55 / 0.17 / 60) on hero CTAs, stat-bleed values, and the persuasive accent moment. Distinct hue from Editorial's navy (245) and Terminal's CRT-green (145).
- Sans `--font-display` (Inter / Geist family) — heaviness from weight + size, not from face swap.
- Largest display floor in the catalogue: `clamp(2.5rem, 6vw, 4.5rem)`.
- Tightest leading (1.05) on display headlines — slide titles read as a single block.
## 2. Colors: The Warm-Amber Voice
A two-chord palette: warm-near-white / warm-near-coal neutrals (low chroma, hue 50–65) carrying a deep warm-amber accent, plus a five-stop chart palette that leads with amber + reaches across complementary hues for category coding.
### Primary
- **Warm Amber** (`oklch(0.55 0.17 60)`): The persuasive-presentation accent. Hero CTAs, stat-bleed numeric values, the rare emphasis moment. Distinct hue family from Editorial's navy and Terminal's green — reads "marketing pitch" rather than "publishing" or "developer tool."
### Neutral
- **Warm Near-White Background** (`oklch(0.99 0.005 65)`): Body surface. Slightly warmer than pure white — keeps the warmth that makes the amber accent feel intentional.
- **Deep-Coal-Warmth Foreground** (`oklch(0.13 0.012 50)`): Primary text. Carries a hint of warmth so it doesn't read as cold-black on warm-white.
- **Muted Cream** (`oklch(0.95 0.008 65)`): Secondary surfaces, callout panels.
- **Mid Warm Muted Foreground** (`oklch(0.42 0.014 55)`): Captions, recessed text.
- **Hairline Warm Border** (`oklch(0.88 0.012 65)`): Structural seams.
### State
- **Deck Red** (`oklch(0.55 0.22 25)`): Destructive actions. Saturated enough to register at projection distance.
### Chart Palette
- **`--chart-1` Amber** (`oklch(0.55 0.17 60)`, matches `--primary`), **`--chart-2` Deep Teal** (`oklch(0.42 0.12 235)`), **`--chart-3` Warm Red** (`oklch(0.50 0.18 25)`), **`--chart-4` Muted Green** (`oklch(0.45 0.10 145)`), **`--chart-5` Dim Violet** (`oklch(0.45 0.14 295)`): Warm-bias five-stop — amber leads, complementary hues fill out the category-coding range.
### Named Rules
**The Projection-Contrast Rule.** Background-to-foreground delta is bigger here than in the other design systems — tuned for visibility from 5–15 feet, not for screen-reading comfort. Don't soften the contrast with mid-tone backgrounds or low-contrast pairings; they wash out under a projector.
**The Amber-Leads Rule.** Warm amber is the persuasive voice. Hero CTAs, stat-bleed values, and the one accent moment per slide. Distinct hue from every other system; reaching for navy or green pulls the artifact toward Editorial / Terminal register.
## 3. Typography: Built to Project
**Display Font:** sans stack (Inter / Geist / system sans)
**Body Font:** same sans stack
**Mono Font:** mono stack (JetBrains Mono / Fira Code / ui-monospace)
**Character:** Sans display, sans body. Heaviness from weight + size rather than face swap — the display weight runs 700 against body's 400 for a strong projection hierarchy. The display face also tightens leading aggressively (1.05) so slide titles read as a single block from across the room.
### Hierarchy
- **Display** (sans, weight 700, `clamp(2.5rem, 6vw, 4.5rem)`, leading 1.05): Hero slide titles. The biggest floor in the catalogue.
- **Display-sm** (sans, weight 700, `clamp(1.875rem, 4vw, 2.75rem)`, leading 1.1): Subordinate hero scale for two-deck cascades.
- **Heading** (sans, weight 600, 1.625rem, leading 1.2): Slide section headings.
- **Title** (sans, weight 500, 1.125rem, leading 1.3): Sub-titles.
- **Body** (sans, weight 400, 16px, leading 1.45): Slide body copy. Tighter than Editorial — slides aren't read-throughs.
- **Label** (sans, weight 600, 0.875rem, `letter-spacing: -0.005em`): CTA labels, slightly tight tracking for confident UI.
- **Mono** (mono, weight 400, 0.875rem): Code snippets and metadata.
### Named Rules
**The 4.5rem-Display-Ceiling Rule.** Hero slide titles clamp up to 4.5rem. Smaller (Editorial-class 3.25rem) reads as "presentation that wants to be a report"; smaller still reads as documentation. The big floor is the identity.
**The Tight-Leading Rule.** Display lines wrap at 1.05 leading — slide titles want to read as one block from across the room, not as a paragraph of headline.
## 4. Elevation
Presentation-flat. Deck uses warm-tinted shadows (hue 40) for explicit elevation moments (lifted cards, hero CTAs), but the resting state of every surface is shadow-free. Avoid mid-shadow drop-shadows that read as 2014-era Material — Deck reaches for warm subtle elevation when it reaches at all.
### Shadow Vocabulary
- **`--shadow-sm`** (warm-tinted, low alpha): Hairline lift for hover states.
- **`--shadow-md`** / **`--shadow-lg`**: Stat-bleed card elevation, modals, dropdowns.
- **`--shadow-xl`** / **`--shadow-2xl`**: Reserved for the deliberate "lifted hero card" moment on a pitch slide.
### Named Rules
**The Warm-Tinted-Shadow Rule.** When elevation appears, shadows carry the warm hue (hue 40, low chroma). Neutral-gray drop shadows read as 2014 Material; warm-tinted reads as considered.
## 5. Components
### Buttons
- **Shape:** `--radius-md` (~8px). Generous-modern, presentation-friendly.
- **Primary:** Warm-amber background, near-white text, weight 600 label, padding 0.625rem 1.25rem.
- **Hover:** Shifts to deep-coal background.
- **Secondary:** Muted-cream background, deep-coal text.
- **Focus:** Amber `--ring` outline.
### Cards & Containers
- **Corner Style:** `--radius-lg` (~10px). Slightly more generous than buttons.
- **Background:** `--card` (slightly deeper than `--background`).
- **Border:** Hairline 1px in `--border` — visible but restrained.
- **Internal Padding:** 2rem default — generous, slide-shape padding. Stat-bleed cards may run wider.
### Inputs / Fields
- **Style:** `--radius-md` (~8px), hairline `--border`, transparent.
- **Focus:** Amber `--ring` border + low-alpha amber outline glow.
### Navigation
- **Style:** Sans label, weight 600, slightly tight tracking.
- **States:** Default `--foreground`; hover shifts to warm-amber `--primary`.
### Chart Palette + Stat-Bleed
Amber-leading five-stop palette. Stat-bleed (the full-bleed numeric primitive — hero outcome on Case study, traction stat on Pitch deck) pairs the largest display scale with the amber primary; this is Deck's signature composition. Cards aren't required for stat-bleeds — the numeric stands alone against the warm-near-white surface.
## 6. Do's and Don'ts
### Do:
- **Do** trust the projection-tuned contrast. Background-to-foreground delta is bigger than the other design systems on purpose — see The Projection-Contrast Rule.
- **Do** reach for `--text-display`'s 4.5rem clamp on hero slide titles. Big-and-confident is the identity.
- **Do** use warm-amber `--primary` on hero CTAs, stat-bleed numerics, and the one persuasive accent. Restraint reads as confident — see The Amber-Leads Rule.
- **Do** keep leading tight on display (1.05). Slide titles want to read as one block.
- **Do** treat stat-bleed as a first-class primitive — full-bleed numeric, no card wrapper required.
- **Do** keep surfaces flat at rest; warm-tinted shadows respond to state — see The Warm-Tinted-Shadow Rule.
### Don't:
- **Don't** drop dense prose paragraphs or narrow reading measure into Deck templates. Whitepaper / Research brief / Postmortem long-form jobs read off-register here.
- **Don't** use small body type or footnote-strip density. Slide-shape artifacts don't carry footnote density.
- **Don't** use mid-tone backgrounds or low-contrast pairings — projection contrast is identity-load-bearing.
- **Don't** reach for navy or CRT-green as accent. Those are Editorial / Terminal hue families; using them pulls Deck out of register.
- **Don't** use neutral-gray drop shadows. Warm-tinted only — see The Warm-Tinted-Shadow Rule.
- **Don't** use gradient text on hero slide titles. Banned across the design system.
- **Don't** stack identical-card feature grids. Deck's compositions favor stat-bleed + hero + one-or-two-card moments, not endless grids.