back to gallery
design language·calibrated-paint-canvas

Calibrated Paint Canvas

A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.

Download DESIGN.md

Portable DESIGN.md source of truth for most agents and apps.

the spec

specification

philosophy
summary
A premium neutral product interface where Apple-clean surfaces are interrupted by disciplined color-study marks that behave as navigation, annotation, focus, and data semantics rather than decoration.
values
quiet product trustcalibrated chroma with assigned jobscatalog-grade spacing and alignmentlegible interactive state designfresh color intelligence without chaos
anti-values
×rainbow decoration without product role×generic SaaS blobs or gradient hero art×textbook color-wheel worksheets×confetti-style accents×overstuffed component catalogs
tokens
borders4 items
accent width
4px
character
precise graphite and linen borders anchor the system; saturated borders appear only for active, focus, selection, or annotation roles
default width
1px
style
solid hairline borders with occasional brush-edge accent strips
colors12 items
accent
#D8D939
background
#F8F6F1
border
#DCD8CF
error
#D94B3D
info
#2767D8
muted
#74736F
primary
#1D4ED8
secondary
#F05A3B
success
#3DBB86
surface
#FFFFFF
text
#242424
warning
#C9B900
motion3 items
duration
180ms
easing
cubic-bezier(0.2, 0.8, 0.2, 1)
philosophy
motion is a small calibration response: controls lift 1px, accents slide into alignment, and focus halos settle quickly without bounce
radii5 items
full
9999px
lg
18px
md
14px
none
0
sm
10px
shadows3 items
lg
0 24px 80px rgba(36, 36, 36, 0.12)
md
0 12px 36px rgba(36, 36, 36, 0.08)
sm
0 1px 2px rgba(36, 36, 36, 0.05)
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
bg pattern
barely visible 24px neutral alignment grid used only in the outer app canvas
card style
18px radius white cards with 1px linen-gray borders, tiny shadow, and deliberate painted accent notches
treatment
warm white planes over a chalk-warm background with subtle top highlights and no glass blur
typography8 items
base size
16px
body font
Inter
google fonts url
https://fonts.googleapis.com/css2?family=Instrument+Sans:wght@500;600;700&family=Inter:wght@400;500;600;700&family=IBM+Plex+Mono:wght@500;600&display=swap
heading font
Instrument Sans
letter spacing
-0.018em
line height
1.5
mono font
IBM Plex Mono
scale ratio
1.22
rules
composition
Use a single product workspace as the dominant artifact: a neutral inspector/editor canvas with clipped color study moments attached to real controls, data, and notes.
density

Moderate product density with generous gutters, compact metadata, and spacious decision zones so color marks feel curated rather than busy.

hierarchy
Let graphite type, whitespace, and border weight establish hierarchy first; saturated color may only mark active sections, selected records, validation, focus, or measured chart values.
signature patterns
Paint-tab navigation: active tabs receive a short uneven color slab on the top edge while inactive tabs stay monochrome.Annotation chips use white pills with a 4px brushed color rail, mono labels, and tiny circular paint dot indicators tied to status.Data charts render as graphite tracks interrupted by small cobalt, tomato, citron, and mint tick marks instead of large filled graphs.Focus and selection states use offset double rings: a graphite hairline plus a saturated color halo displaced by 2px.Panel corners remain consistently 18px while color swatches are rectangular clipped stickers, preventing arbitrary soft blob geometry.
layout
breakpoints

mobile 375px, tablet 768px, desktop 1200px, wide 1440px

grid
Twelve-column desktop shell with a left product rail, central editor canvas, and right calibration inspector; collapses to stacked artifact cards below tablet width.
whitespace

Large warm-white gutters separate major panes; dense details live inside cards with 16px internal rhythm and 24px section gaps.

guidance
do
  • Assign every saturated color to a named product role such as active tab, warning chip, focus ring, chart mark, or annotation.
  • Keep the default interface warm white, soft gray, graphite, and hairline precise before introducing chroma.
  • Use clipped rectangular swatches, rails, and dots as a repeatable system rather than illustrations.
  • Check contrast for colored labels by pairing saturated marks with graphite text instead of relying on colored text alone.
avoid
  • Do not use rainbow gradients, neon glows, arbitrary confetti, or free-floating decorative blobs.
  • Do not make the screen look like a textbook color theory exercise page or a flat poster catalog.
  • Do not mix many radius sizes or use color as a substitute for product hierarchy and state design.
  • Do not fill entire panels with saturated colors unless the product state truly requires a critical alert.
katagami spec
# Calibrated Paint Canvas

## Philosophy

A premium neutral product interface where Apple-clean surfaces are interrupted by disciplined color-study marks that behave as navigation, annotation, focus, and data semantics rather than decoration.

### Values

- quiet product trust
- calibrated chroma with assigned jobs
- catalog-grade spacing and alignment
- legible interactive state design
- fresh color intelligence without chaos

### Anti-Values

- rainbow decoration without product role
- generic SaaS blobs or gradient hero art
- textbook color-wheel worksheets
- confetti-style accents
- overstuffed component catalogs

### Visual Character

- Warm off-white app shell with soft gray inset panels, 1px cool borders, and large unbroken negative space around a single workspace artifact.
- Small brushlike color swatches appear as clipped tabs, annotation chips, active rails, chart ticks, and focus rings with no full-bleed color fields.
- Graphite typography uses tight display tracking, tabular numerals, and restrained section labels to keep the interface product-first.
- Cards use one committed 18px radius geometry, feather-light shadows, and hairline separators so color accents carry state rather than volume.
- Interactive controls reveal chroma through narrow left edges, underlines, and halo outlines while default states remain white, gray, and quiet.

## Tokens

### Borders

- **Accent Width**: 4px
- **Character**: precise graphite and linen borders anchor the system; saturated borders appear only for active, focus, selection, or annotation roles
- **Default Width**: 1px
- **Style**: solid hairline borders with occasional brush-edge accent strips

### Colors

| Name | Value |
|------|-------|
| accent | `#D8D939` |
| background | `#F8F6F1` |
| border | `#DCD8CF` |
| error | `#D94B3D` |
| info | `#2767D8` |
| muted | `#74736F` |
| primary | `#1D4ED8` |
| secondary | `#F05A3B` |
| success | `#3DBB86` |
| surface | `#FFFFFF` |
| text | `#242424` |
| warning | `#C9B900` |

### Motion

- **Duration**: 180ms
- **Easing**: cubic-bezier(0.2, 0.8, 0.2, 1)
- **Philosophy**: motion is a small calibration response: controls lift 1px, accents slide into alignment, and focus halos settle quickly without bounce

### Radii

- **Full**: 9999px
- **Lg**: 18px
- **Md**: 14px
- **None**: 0
- **Sm**: 10px

### Shadows

- **Lg**: 0 24px 80px rgba(36, 36, 36, 0.12)
- **Md**: 0 12px 36px rgba(36, 36, 36, 0.08)
- **Sm**: 0 1px 2px rgba(36, 36, 36, 0.05)

### Spacing

- **Base**: 8px
- **Scale**: [4,8,12,16,24,32,48,64]

### Surfaces

- **Bg Pattern**: barely visible 24px neutral alignment grid used only in the outer app canvas
- **Card Style**: 18px radius white cards with 1px linen-gray borders, tiny shadow, and deliberate painted accent notches
- **Treatment**: warm white planes over a chalk-warm background with subtle top highlights and no glass blur

### Typography

- **Base Size**: 16px
- **Body Font**: Inter
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Instrument+Sans:wght@500;600;700&family=Inter:wght@400;500;600;700&family=IBM+Plex+Mono:wght@500;600&display=swap
- **Heading Font**: Instrument Sans
- **Letter Spacing**: -0.018em
- **Line Height**: 1.5
- **Mono Font**: IBM Plex Mono
- **Scale Ratio**: 1.22

## Rules

### Composition

Use a single product workspace as the dominant artifact: a neutral inspector/editor canvas with clipped color study moments attached to real controls, data, and notes.

### Density

Moderate product density with generous gutters, compact metadata, and spacious decision zones so color marks feel curated rather than busy.

### Hierarchy

Let graphite type, whitespace, and border weight establish hierarchy first; saturated color may only mark active sections, selected records, validation, focus, or measured chart values.

### Signature Patterns

- Paint-tab navigation: active tabs receive a short uneven color slab on the top edge while inactive tabs stay monochrome.
- Annotation chips use white pills with a 4px brushed color rail, mono labels, and tiny circular paint dot indicators tied to status.
- Data charts render as graphite tracks interrupted by small cobalt, tomato, citron, and mint tick marks instead of large filled graphs.
- Focus and selection states use offset double rings: a graphite hairline plus a saturated color halo displaced by 2px.
- Panel corners remain consistently 18px while color swatches are rectangular clipped stickers, preventing arbitrary soft blob geometry.

## Layout

### Breakpoints

mobile 375px, tablet 768px, desktop 1200px, wide 1440px

### Grid

Twelve-column desktop shell with a left product rail, central editor canvas, and right calibration inspector; collapses to stacked artifact cards below tablet width.

### Whitespace

Large warm-white gutters separate major panes; dense details live inside cards with 16px internal rhythm and 24px section gaps.

## Guidance

### Do

- Assign every saturated color to a named product role such as active tab, warning chip, focus ring, chart mark, or annotation.
- Keep the default interface warm white, soft gray, graphite, and hairline precise before introducing chroma.
- Use clipped rectangular swatches, rails, and dots as a repeatable system rather than illustrations.
- Check contrast for colored labels by pairing saturated marks with graphite text instead of relying on colored text alone.

### Don't

- Do not use rainbow gradients, neon glows, arbitrary confetti, or free-floating decorative blobs.
- Do not make the screen look like a textbook color theory exercise page or a flat poster catalog.
- Do not mix many radius sizes or use color as a substitute for product hierarchy and state design.
- Do not fill entire panels with saturated colors unless the product state truly requires a critical alert.
DESIGN.md
---
version: "alpha"
name: "Calibrated Paint Canvas"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  accent: "#D8D939"
  background: "#F8F6F1"
  border: "#DCD8CF"
  error: "#D94B3D"
  info: "#2767D8"
  muted: "#74736F"
  primary: "#1D4ED8"
  secondary: "#F05A3B"
  success: "#3DBB86"
  surface: "#FFFFFF"
  text: "#242424"
  warning: "#C9B900"
typography:
  headline-lg:
    fontFamily: "Instrument Sans"
    fontSize: "1.816rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.018em"
  headline-md:
    fontFamily: "Instrument Sans"
    fontSize: "1.488rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.018em"
  body-md:
    fontFamily: "Inter"
    fontSize: "16px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "-0.018em"
  label-md:
    fontFamily: "IBM Plex Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  full: "9999px"
  lg: "18px"
  md: "14px"
  none: "0px"
  sm: "10px"
spacing:
  base: "8px"
  xs: "4px"
  sm: "8px"
  md: "12px"
  lg: "16px"
  xl: "24px"
  2xl: "32px"
  3xl: "48px"
  4xl: "64px"
components:
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-background:
    backgroundColor: "{colors.background}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-primary:
    backgroundColor: "{colors.primary}"
  color-reference-secondary:
    backgroundColor: "{colors.secondary}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  button-primary:
    backgroundColor: "{colors.primary}"
    textColor: "#ffffff"
    typography: "{typography.label-md}"
    rounded: "{rounded.md}"
    padding: "{spacing.md}"
  card-surface:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.md}"
    padding: "{spacing.md}"
  input-default:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.md}"
    height: "44px"
---

# Calibrated Paint Canvas

## Overview

A premium neutral product interface where Apple-clean surfaces are interrupted by disciplined color-study marks that behave as navigation, annotation, focus, and data semantics rather than decoration.

### Values

- quiet product trust
- calibrated chroma with assigned jobs
- catalog-grade spacing and alignment
- legible interactive state design
- fresh color intelligence without chaos

### Anti-Values

- rainbow decoration without product role
- generic SaaS blobs or gradient hero art
- textbook color-wheel worksheets
- confetti-style accents
- overstuffed component catalogs

### Visual Character

- Warm off-white app shell with soft gray inset panels, 1px cool borders, and large unbroken negative space around a single workspace artifact.
- Small brushlike color swatches appear as clipped tabs, annotation chips, active rails, chart ticks, and focus rings with no full-bleed color fields.
- Graphite typography uses tight display tracking, tabular numerals, and restrained section labels to keep the interface product-first.
- Cards use one committed 18px radius geometry, feather-light shadows, and hairline separators so color accents carry state rather than volume.
- Interactive controls reveal chroma through narrow left edges, underlines, and halo outlines while default states remain white, gray, and quiet.

## Colors

Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.

| Token | Value |
|-------|-------|
| accent | `#D8D939` |
| background | `#F8F6F1` |
| border | `#DCD8CF` |
| error | `#D94B3D` |
| info | `#2767D8` |
| muted | `#74736F` |
| primary | `#1D4ED8` |
| secondary | `#F05A3B` |
| success | `#3DBB86` |
| surface | `#FFFFFF` |
| text | `#242424` |
| warning | `#C9B900` |

## Typography

- **Headline-Lg**: Instrument Sans, 1.816rem, weight 700, line-height 1.1.
- **Headline-Md**: Instrument Sans, 1.488rem, weight 600, line-height 1.15.
- **Body-Md**: Inter, 16px, weight 400, line-height 1.5.
- **Label-Md**: IBM Plex Mono, 0.75rem, weight 600, line-height 1.

## Layout

### Spacing Tokens

- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`

### Breakpoints

mobile 375px, tablet 768px, desktop 1200px, wide 1440px

### Grid

Twelve-column desktop shell with a left product rail, central editor canvas, and right calibration inspector; collapses to stacked artifact cards below tablet width.

### Whitespace

Large warm-white gutters separate major panes; dense details live inside cards with 16px internal rhythm and 24px section gaps.

## Elevation & Depth

### Shadows

- **Lg**: 0 24px 80px rgba(36, 36, 36, 0.12)
- **Md**: 0 12px 36px rgba(36, 36, 36, 0.08)
- **Sm**: 0 1px 2px rgba(36, 36, 36, 0.05)

## Shapes

### Rounded

- **Full**: `9999px`
- **Lg**: `18px`
- **Md**: `14px`
- **None**: `0px`
- **Sm**: `10px`

### Surfaces

- **Bg Pattern**: barely visible 24px neutral alignment grid used only in the outer app canvas
- **Card Style**: 18px radius white cards with 1px linen-gray borders, tiny shadow, and deliberate painted accent notches
- **Treatment**: warm white planes over a chalk-warm background with subtle top highlights and no glass blur

### Borders

- **Accent Width**: 4px
- **Character**: precise graphite and linen borders anchor the system; saturated borders appear only for active, focus, selection, or annotation roles
- **Default Width**: 1px
- **Style**: solid hairline borders with occasional brush-edge accent strips

## Components

### Composition

Use a single product workspace as the dominant artifact: a neutral inspector/editor canvas with clipped color study moments attached to real controls, data, and notes.

### Density

Moderate product density with generous gutters, compact metadata, and spacious decision zones so color marks feel curated rather than busy.

### Hierarchy

Let graphite type, whitespace, and border weight establish hierarchy first; saturated color may only mark active sections, selected records, validation, focus, or measured chart values.

### Signature Patterns

- Paint-tab navigation: active tabs receive a short uneven color slab on the top edge while inactive tabs stay monochrome.
- Annotation chips use white pills with a 4px brushed color rail, mono labels, and tiny circular paint dot indicators tied to status.
- Data charts render as graphite tracks interrupted by small cobalt, tomato, citron, and mint tick marks instead of large filled graphs.
- Focus and selection states use offset double rings: a graphite hairline plus a saturated color halo displaced by 2px.
- Panel corners remain consistently 18px while color swatches are rectangular clipped stickers, preventing arbitrary soft blob geometry.

## shadcn/ui Usage

When the target app uses shadcn/ui, copy DESIGN.md with shadcn instead of the plain DESIGN.md. It contains the same Katagami design-language source plus the shadcn/ui primitives, imports, theme variables, component recipes, and preview-shot guidance.

DESIGN.md with shadcn: `/language/en-019e4592-77b8-77c0-829f-b519e8bc1dea/DESIGN.with-shadcn.md`.

The shadcn page also exposes optional machine-readable files for automation, but the human-facing handoff is DESIGN.md with shadcn.

Install recommended primitives with `npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table`.

Use these primitives in shadcn apps:
- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table

Implementation rule for agents: import shadcn primitives from `@/components/ui/*`, apply the generated CSS variables first, then compose the language-specific recipes from the companion MD. Katagami remains the source of truth; shadcn names are the implementation surface.

## Do's and Don'ts

- Do Assign every saturated color to a named product role such as active tab, warning chip, focus ring, chart mark, or annotation.
- Do Keep the default interface warm white, soft gray, graphite, and hairline precise before introducing chroma.
- Do Use clipped rectangular swatches, rails, and dots as a repeatable system rather than illustrations.
- Do Check contrast for colored labels by pairing saturated marks with graphite text instead of relying on colored text alone.
- Don't Do not use rainbow gradients, neon glows, arbitrary confetti, or free-floating decorative blobs.
- Don't Do not make the screen look like a textbook color theory exercise page or a flat poster catalog.
- Don't Do not mix many radius sizes or use color as a substitute for product hierarchy and state design.
- Don't Do not fill entire panels with saturated colors unless the product state truly requires a critical alert.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "calibrated-paint-canvas",
  "type": "registry:theme",
  "title": "Calibrated Paint Canvas shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F8F6F1",
      "foreground": "#242424",
      "card": "#FFFFFF",
      "card-foreground": "#242424",
      "popover": "#FFFFFF",
      "popover-foreground": "#242424",
      "primary": "#1D4ED8",
      "primary-foreground": "#ffffff",
      "secondary": "#F05A3B",
      "secondary-foreground": "#ffffff",
      "muted": "#74736F",
      "muted-foreground": "#242424",
      "accent": "#D8D939",
      "accent-foreground": "#111111",
      "destructive": "#D94B3D",
      "border": "#DCD8CF",
      "input": "#DCD8CF",
      "ring": "#D8D939",
      "chart-1": "#1D4ED8",
      "chart-2": "#F05A3B",
      "chart-3": "#D8D939",
      "chart-4": "#3DBB86",
      "chart-5": "#C9B900",
      "sidebar": "#FFFFFF",
      "sidebar-foreground": "#242424",
      "sidebar-primary": "#1D4ED8",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#2767D8",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#DCD8CF",
      "sidebar-ring": "#D8D939",
      "radius": "14px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#1D4ED8",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#D8D939",
      "accent-foreground": "#111111",
      "destructive": "#D94B3D",
      "border": "#303642",
      "input": "#303642",
      "ring": "#D8D939",
      "chart-1": "#1D4ED8",
      "chart-2": "#F05A3B",
      "chart-3": "#D8D939",
      "chart-4": "#3DBB86",
      "chart-5": "#C9B900",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#1D4ED8",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#D8D939",
      "sidebar-accent-foreground": "#111111",
      "sidebar-border": "#303642",
      "sidebar-ring": "#D8D939",
      "radius": "14px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019e4592-77b8-77c0-829f-b519e8bc1dea",
    "slug": "calibrated-paint-canvas",
    "componentManifest": [
      "button",
      "card",
      "input",
      "textarea",
      "select",
      "dialog",
      "sheet",
      "tabs",
      "badge",
      "separator",
      "checkbox",
      "switch",
      "slider",
      "tooltip",
      "dropdown-menu",
      "table"
    ],
    "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
    "nativeTokenNames": {
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "colors": [
        "accent",
        "background",
        "border",
        "error",
        "info",
        "muted",
        "primary",
        "secondary",
        "success",
        "surface",
        "text",
        "warning"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ]
    }
  }
}
```
in the wild

embodiments

the full element showcase
embodiment · calibrated-paint-canvas
DESIGN.md

at a glance

Palette

Typography

headline-lgInstrument Sans · 29px · 700

The quick brown fox jumps

headline-mdInstrument Sans · 24px · 600

The quick brown fox jumps

body-mdInter · 16px · 400

The quick brown fox jumps

label-mdIBM Plex Mono · 12px · 600

The quick brown fox jumps

Components

New
Card title

Components rendered with this language’s tokens — colors, type, and rounded corners as specified.

Spacing

  • base8px
  • xs4px
  • sm8px
  • md12px
  • lg16px
  • xl24px
  • 2xl32px
  • 3xl48px
  • 4xl64px

Shape

full9999px
lg18px
md14px
none0px
sm10px
shadcn/ui

implementation kit

needs agent-authored kitcompatibility fallback
shadcn compatibility only
The generated theme variables are available, but the polished shadcn component recipes and shots have not been authored by the Katagami agent yet.
fallbackprimitives render
Compatibility proof
Local shadcn-style primitives accept the generated theme variables.
primaryaccentsurfacemutedwarningerror
table rhythm
buttonok
cardok
inputok
recommendedcompatibility fallback

DESIGN.md with shadcn

Copy this when the target app uses shadcn/ui. It packages the Katagami DESIGN.md context with the install list, theme variables, component recipes, preview-shot contract, and starter TSX in one Markdown companion.

advanced implementation filesoptional machine-readable theme, CSS, TSX starter, recipes, and preview contract
shadcn add
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table
theme css
:root {
  --background: #F8F6F1;
  --foreground: #242424;
  --card: #FFFFFF;
  --card-foreground: #242424;
  --popover: #FFFFFF;
  --popover-foreground: #242424;
  --primary: #1D4ED8;
  --primary-foreground: #ffffff;
  --secondary: #F05A3B;
  --secondary-foreground: #ffffff;
  --muted: #74736F;
  --muted-foreground: #242424;
  --accent: #D8D939;
  --accent-foreground: #111111;
  --destructive: #D94B3D;
  --border: #DCD8CF;
  --input: #DCD8CF;
  --ring: #D8D939;
  --chart-1: #1D4ED8;
  --chart-2: #F05A3B;
  --chart-3: #D8D939;
  --chart-4: #3DBB86;
  --chart-5: #C9B900;
  --sidebar: #FFFFFF;
  --sidebar-foreground: #242424;
  --sidebar-primary: #1D4ED8;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #2767D8;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #DCD8CF;
  --sidebar-ring: #D8D939;
  --radius: 14px;
}

.dark {
  --background: #0f1115;
  --foreground: #f8fafc;
  --card: #181b22;
  --card-foreground: #f8fafc;
  --popover: #181b22;
  --popover-foreground: #f8fafc;
  --primary: #1D4ED8;
  --primary-foreground: #ffffff;
  --secondary: #252a33;
  --secondary-foreground: #f8fafc;
  --muted: #252a33;
  --muted-foreground: #a1a1aa;
  --accent: #D8D939;
  --accent-foreground: #111111;
  --destructive: #D94B3D;
  --border: #303642;
  --input: #303642;
  --ring: #D8D939;
  --chart-1: #1D4ED8;
  --chart-2: #F05A3B;
  --chart-3: #D8D939;
  --chart-4: #3DBB86;
  --chart-5: #C9B900;
  --sidebar: #181b22;
  --sidebar-foreground: #f8fafc;
  --sidebar-primary: #1D4ED8;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #D8D939;
  --sidebar-accent-foreground: #111111;
  --sidebar-border: #303642;
  --sidebar-ring: #D8D939;
  --radius: 14px;
}
tsx starter
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
  Card,
  CardContent,
  CardDescription,
  CardFooter,
  CardHeader,
  CardTitle,
} from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";

export function CalibratedPaintCanvasShadcnKit() {
  return (
    <section className="grid gap-4 rounded-[var(--radius)] border bg-background p-4 text-foreground">
      <div className="flex items-start justify-between gap-4">
        <div>
          <Badge variant="outline">shadcn/ui</Badge>
          <h2 className="mt-3 text-2xl font-semibold tracking-tight">Calibrated Paint Canvas</h2>
          <p className="mt-1 max-w-xl text-sm text-muted-foreground">
            Use the Katagami registry theme, then compose these shadcn primitives
            with the language-specific component recipes.
          </p>
        </div>
        <Button>Apply theme</Button>
      </div>

      <Tabs defaultValue="components">
        <TabsList>
          <TabsTrigger value="components">Components</TabsTrigger>
          <TabsTrigger value="states">States</TabsTrigger>
          <TabsTrigger value="export">Export</TabsTrigger>
        </TabsList>
      </Tabs>

      <Card>
        <CardHeader>
          <CardTitle>Component recipe</CardTitle>
          <CardDescription>
            Replace this starter content with the agent-authored product scene
            from components.md and preview-shots.json.
          </CardDescription>
        </CardHeader>
        <CardContent className="grid gap-3 sm:grid-cols-[1fr_auto]">
          <Input defaultValue="Tokenized shadcn surface" aria-label="Recipe name" />
          <Button variant="secondary">Preview state</Button>
        </CardContent>
        <CardFooter className="justify-between">
          <Badge>Ready</Badge>
          <Button variant="outline">Copy recipe</Button>
        </CardFooter>
      </Card>
    </section>
  );
}
theme JSONstored + verified
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "cssVars": {
    "dark": {
      "accent": "#D8D939",
      "accent-foreground": "#111111",
      "background": "#0f1115",
      "border": "#303642",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "chart-1": "#1D4ED8",
      "chart-2": "#F05A3B",
      "chart-3": "#D8D939",
      "chart-4": "#3DBB86",
      "chart-5": "#C9B900",
      "destructive": "#D94B3D",
      "foreground": "#f8fafc",
      "input": "#303642",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#1D4ED8",
      "primary-foreground": "#ffffff",
      "radius": "14px",
      "ring": "#D8D939",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "sidebar": "#181b22",
      "sidebar-accent": "#D8D939",
      "sidebar-accent-foreground": "#111111",
      "sidebar-border": "#303642",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#1D4ED8",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-ring": "#D8D939"
    },
    "light": {
      "accent": "#D8D939",
      "accent-foreground": "#111111",
      "background": "#F8F6F1",
      "border": "#DCD8CF",
      "card": "#FFFFFF",
      "card-foreground": "#242424",
      "chart-1": "#1D4ED8",
      "chart-2": "#F05A3B",
      "chart-3": "#D8D939",
      "chart-4": "#3DBB86",
      "chart-5": "#C9B900",
      "destructive": "#D94B3D",
      "foreground": "#242424",
      "input": "#DCD8CF",
      "muted": "#74736F",
      "muted-foreground": "#242424",
      "popover": "#FFFFFF",
      "popover-foreground": "#242424",
      "primary": "#1D4ED8",
      "primary-foreground": "#ffffff",
      "radius": "14px",
      "ring": "#D8D939",
      "secondary": "#F05A3B",
      "secondary-foreground": "#ffffff",
      "sidebar": "#FFFFFF",
      "sidebar-accent": "#2767D8",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#DCD8CF",
      "sidebar-foreground": "#242424",
      "sidebar-primary": "#1D4ED8",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-ring": "#D8D939"
    },
    "theme": {}
  },
  "meta": {
    "componentManifest": [
      "button",
      "card",
      "input",
      "textarea",
      "select",
      "dialog",
      "sheet",
      "tabs",
      "badge",
      "separator",
      "checkbox",
      "switch",
      "slider",
      "tooltip",
      "dropdown-menu",
      "table"
    ],
    "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
    "languageId": "en-019e4592-77b8-77c0-829f-b519e8bc1dea",
    "nativeTokenNames": {
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "colors": [
        "accent",
        "background",
        "border",
        "error",
        "info",
        "muted",
        "primary",
        "secondary",
        "success",
        "surface",
        "text",
        "warning"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ]
    },
    "slug": "calibrated-paint-canvas",
    "source": "katagami"
  },
  "name": "calibrated-paint-canvas",
  "title": "Calibrated Paint Canvas shadcn Theme",
  "type": "registry:theme"
}
component recipescompatibility fallback
# Calibrated Paint Canvas shadcn/ui Components

Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019e4592-77b8-77c0-829f-b519e8bc1dea`
Slug: `calibrated-paint-canvas`

## Intent

A premium neutral product interface where Apple-clean surfaces are interrupted by disciplined color-study marks that behave as navigation, annotation, focus, and data semantics rather than decoration.

## Required primitives

- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table

Install with `npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table`.

## Token cues

Colors:

{
  "accent": "#D8D939",
  "background": "#F8F6F1",
  "border": "#DCD8CF",
  "error": "#D94B3D",
  "info": "#2767D8",
  "muted": "#74736F",
  "primary": "#1D4ED8",
  "secondary": "#F05A3B",
  "success": "#3DBB86",
  "surface": "#FFFFFF",
  "text": "#242424",
  "warning": "#C9B900"
}

Typography:

{
  "base_size": "16px",
  "body_font": "Inter",
  "google_fonts_url": "https://fonts.googleapis.com/css2?family=Instrument+Sans:wght@500;600;700&family=Inter:wght@400;500;600;700&family=IBM+Plex+Mono:wght@500;600&display=swap",
  "heading_font": "Instrument Sans",
  "letter_spacing": "-0.018em",
  "line_height": 1.5,
  "mono_font": "IBM Plex Mono",
  "scale_ratio": 1.22
}

## Visual character to preserve

- Warm off-white app shell with soft gray inset panels, 1px cool borders, and large unbroken negative space around a single workspace artifact.
- Small brushlike color swatches appear as clipped tabs, annotation chips, active rails, chart ticks, and focus rings with no full-bleed color fields.
- Graphite typography uses tight display tracking, tabular numerals, and restrained section labels to keep the interface product-first.
- Cards use one committed 18px radius geometry, feather-light shadows, and hairline separators so color accents carry state rather than volume.
- Interactive controls reveal chroma through narrow left edges, underlines, and halo outlines while default states remain white, gray, and quiet.

## ShadSync visual profile

{
  "family": "paper-collage",
  "material": "paper",
  "contour": "blob",
  "border": "solid",
  "underlay": true,
  "grain": false,
  "stickerBadges": true,
  "motion": "lift",
  "density": "balanced",
  "accents": [
    "primary",
    "accent",
    "secondary",
    "muted"
  ]
}

## Signature component recipes

### Button
Use `Button` for primary, secondary, outline, and ghost actions. Primary actions must expose the language's strongest contrast pair, while secondary and ghost actions should preserve the surface treatment instead of falling back to default neutral SaaS styling.

### Card
Use `Card`, `CardHeader`, `CardContent`, `CardFooter`, and `CardAction` as the main composition frame. Cards should demonstrate the language's surface, border, hierarchy, and density rules rather than appearing as generic rounded rectangles.

### Input and Textarea
Use `Input` and `Textarea` with visible focus rings, field labels, validation states, and the language's rhythm. Forms should show real product content, not placeholder-only controls.

### Select, Tabs, and Table
Use `Select`, `Tabs`, and `Table` to prove navigation, filtering, and dense data states. The table should show row rhythm, separators, hover/focus states, and an empty or status state when the language calls for it.

### Dialog and Sheet
Use `Dialog` for centered decisions and `Sheet` for contextual editing. Both should inherit the language's spacing, border, overlay, and motion rules.

## Preview shots

- `application-shell`: dashboard or workspace shell with navigation, cards, forms, and state badges.
- `detail-editor`: focused editing flow using input, textarea, select, switch/checkbox, dialog or sheet, and action buttons.
- `data-operations`: table-heavy operational view with tabs, dropdown menu affordances, badges, and destructive/empty states.
- Each preview shot must include a renderable `scene` payload with concrete headline, description, actions, and rows/fields/stats for the UI preview.

## Implementation contract

- Start from local `ui/src/components/ui` shadcn-style primitives; do not create a second component system.
- Apply `/katagami/shadcn/calibrated-paint-canvas/registry-theme.json` variables, then use these recipes for composition and state design.
- Preserve Katagami token names as source metadata; shadcn semantic names are only the export surface.
- Do: Assign every saturated color to a named product role such as active tab, warning chip, focus ring, chart mark, or annotation.; Keep the default interface warm white, soft gray, graphite, and hairline precise before introducing chroma.; Use clipped rectangular swatches, rails, and dots as a repeatable system rather than illustrations.; Check contrast for colored labels by pairing saturated marks with graphite text instead of relying on colored text alone.
- Do not: Do not use rainbow gradients, neon glows, arbitrary confetti, or free-floating decorative blobs.; Do not make the screen look like a textbook color theory exercise page or a flat poster catalog.; Do not mix many radius sizes or use color as a substitute for product hierarchy and state design.; Do not fill entire panels with saturated colors unless the product state truly requires a critical alert.

## Copy-paste component example

This generated starter proves the import shape. Production Katagami agents should replace it with a language-specific product composition.

```tsx
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
  Card,
  CardContent,
  CardDescription,
  CardFooter,
  CardHeader,
  CardTitle,
} from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";

export function CalibratedPaintCanvasShadcnKit() {
  return (
    <section className="grid gap-4 rounded-[var(--radius)] border bg-background p-4 text-foreground">
      <div className="flex items-start justify-between gap-4">
        <div>
          <Badge variant="outline">shadcn/ui</Badge>
          <h2 className="mt-3 text-2xl font-semibold tracking-tight">Calibrated Paint Canvas</h2>
          <p className="mt-1 max-w-xl text-sm text-muted-foreground">
            Use the Katagami registry theme, then compose these shadcn primitives
            with the language-specific component recipes.
          </p>
        </div>
        <Button>Apply theme</Button>
      </div>

      <Tabs defaultValue="components">
        <TabsList>
          <TabsTrigger value="components">Components</TabsTrigger>
          <TabsTrigger value="states">States</TabsTrigger>
          <TabsTrigger value="export">Export</TabsTrigger>
        </TabsList>
      </Tabs>

      <Card>
        <CardHeader>
          <CardTitle>Component recipe</CardTitle>
          <CardDescription>
            Replace this starter content with the agent-authored product scene
            from components.md and preview-shots.json.
          </CardDescription>
        </CardHeader>
        <CardContent className="grid gap-3 sm:grid-cols-[1fr_auto]">
          <Input defaultValue="Tokenized shadcn surface" aria-label="Recipe name" />
          <Button variant="secondary">Preview state</Button>
        </CardContent>
        <CardFooter className="justify-between">
          <Badge>Ready</Badge>
          <Button variant="outline">Copy recipe</Button>
        </CardFooter>
      </Card>
    </section>
  );
}
```

## Layout notes

{
  "breakpoints": "mobile 375px, tablet 768px, desktop 1200px, wide 1440px",
  "grid": "Twelve-column desktop shell with a left product rail, central editor canvas, and right calibration inspector; collapses to stacked artifact cards below tablet width.",
  "whitespace": "Large warm-white gutters separate major panes; dense details live inside cards with 16px internal rhythm and 24px section gaps."
}
preview shotscompatibility fallback
{
  "artifact": "katagami:shadcn-preview-shots",
  "version": "preview-shots-v1",
  "generator": "katagami-ui-compatibility-projection",
  "generatedBy": "katagami-ui-projection",
  "requiresVisualProfile": true,
  "schema": "katagami:shadcn-preview-shots/renderable-v1",
  "renderable": true,
  "language": {
    "id": "en-019e4592-77b8-77c0-829f-b519e8bc1dea",
    "name": "Calibrated Paint Canvas",
    "slug": "calibrated-paint-canvas"
  },
  "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
  "primitives": [
    "button",
    "card",
    "input",
    "textarea",
    "select",
    "dialog",
    "sheet",
    "tabs",
    "badge",
    "separator",
    "checkbox",
    "switch",
    "slider",
    "tooltip",
    "dropdown-menu",
    "table"
  ],
  "identityNotes": [
    "Warm off-white app shell with soft gray inset panels, 1px cool borders, and large unbroken negative space around a single workspace artifact.",
    "Small brushlike color swatches appear as clipped tabs, annotation chips, active rails, chart ticks, and focus rings with no full-bleed color fields.",
    "Graphite typography uses tight display tracking, tabular numerals, and restrained section labels to keep the interface product-first.",
    "Cards use one committed 18px radius geometry, feather-light shadows, and hairline separators so color accents carry state rather than volume.",
    "Interactive controls reveal chroma through narrow left edges, underlines, and halo outlines while default states remain white, gray, and quiet."
  ],
  "visualProfile": {
    "family": "paper-collage",
    "material": "paper",
    "contour": "blob",
    "border": "solid",
    "underlay": true,
    "grain": false,
    "stickerBadges": true,
    "motion": "still",
    "density": "balanced",
    "accents": [
      "primary",
      "accent",
      "secondary",
      "muted"
    ]
  },
  "shots": [
    {
      "id": "application-shell",
      "title": "Application shell",
      "viewport": "desktop",
      "primitives": [
        "button",
        "card",
        "input",
        "select",
        "tabs",
        "badge",
        "separator",
        "table"
      ],
      "composition": "A real product workspace with navigation, summary cards, filtering controls, and one dense content region.",
      "mustShow": [
        "primary and secondary actions",
        "card hierarchy",
        "filterable state",
        "table or list density"
      ],
      "avoid": [
        "component inventory walls",
        "placeholder-only content",
        "generic rounded SaaS chrome"
      ],
      "scene": {
        "eyebrow": "workspace spread",
        "headline": "Calibrated Paint Canvas launch room",
        "description": "A product team workspace where navigation, filters, metrics, and dense rows carry the language's visible structure.",
        "primaryAction": "Apply theme",
        "secondaryAction": "Review states",
        "stats": [
          {
            "label": "components",
            "value": "16",
            "tone": "accent"
          },
          {
            "label": "states",
            "value": "ready"
          },
          {
            "label": "density",
            "value": "balanced",
            "tone": "warning"
          }
        ],
        "rows": [
          {
            "label": "Primary flow",
            "value": "mapped",
            "status": "active"
          },
          {
            "label": "Token coverage",
            "value": "semantic",
            "status": "synced"
          },
          {
            "label": "Responsive proof",
            "value": "queued",
            "status": "review"
          }
        ],
        "statuses": [
          "Active",
          "Synced",
          "Draft"
        ]
      }
    },
    {
      "id": "detail-editor",
      "title": "Detail editor",
      "viewport": "tablet",
      "primitives": [
        "button",
        "card",
        "input",
        "textarea",
        "select",
        "checkbox",
        "switch",
        "slider",
        "dialog",
        "sheet"
      ],
      "composition": "A focused editing flow with form fields, validation, confirmation, and a contextual side panel.",
      "mustShow": [
        "focus ring",
        "error or destructive state",
        "dialog or sheet treatment",
        "written guidance content"
      ],
      "avoid": [
        "unstyled browser controls",
        "floating cards inside cards",
        "missing labels"
      ],
      "scene": {
        "eyebrow": "editing flow",
        "headline": "Language recipe editor",
        "description": "A focused form proving labels, validation, toggles, panel rhythm, and action hierarchy.",
        "primaryAction": "Save recipe",
        "secondaryAction": "Open sheet",
        "fields": [
          {
            "label": "Component family",
            "value": "Narrative cards"
          },
          {
            "label": "State treatment",
            "value": "Visible focus + validation"
          },
          {
            "label": "Motion",
            "value": "Small lift, no opacity-only fade"
          }
        ],
        "statuses": [
          "Focus",
          "Invalid",
          "Confirmed"
        ]
      }
    },
    {
      "id": "data-operations",
      "title": "Data operations",
      "viewport": "mobile",
      "primitives": [
        "button",
        "tabs",
        "badge",
        "dropdown-menu",
        "table",
        "tooltip",
        "separator"
      ],
      "composition": "A compact operational view proving row rhythm, stacked actions, menu states, badges, and empty/destructive states.",
      "mustShow": [
        "responsive reflow",
        "dense row styling",
        "menu affordance",
        "status badge system"
      ],
      "avoid": [
        "desktop-only tables",
        "text overflow",
        "default shadcn spacing without Katagami character"
      ],
      "scene": {
        "eyebrow": "operations",
        "headline": "Compact review queue",
        "description": "A narrow viewport scene with rows, menus, tooltips, badges, and destructive affordances.",
        "primaryAction": "Resolve",
        "secondaryAction": "Filter",
        "rows": [
          {
            "label": "Button hierarchy",
            "value": "approved",
            "status": "ok"
          },
          {
            "label": "Table rhythm",
            "value": "needs pass",
            "status": "watch"
          },
          {
            "label": "Empty state",
            "value": "designed",
            "status": "done"
          }
        ],
        "statuses": [
          "Queued",
          "Blocked",
          "Done"
        ]
      }
    }
  ],
  "componentRecipes": [
    {
      "primitive": "button",
      "intent": "Prove action hierarchy, focus, disabled, and destructive states."
    },
    {
      "primitive": "card",
      "intent": "Carry the language surface, border, elevation, and density rules."
    },
    {
      "primitive": "input",
      "intent": "Show labels, focus rings, validation, and spacing rhythm."
    },
    {
      "primitive": "textarea",
      "intent": "Show longer guidance, validation copy, and writing density."
    },
    {
      "primitive": "select",
      "intent": "Show filtering, selection contrast, and menu trigger styling."
    },
    {
      "primitive": "dialog",
      "intent": "Show centered decision states and overlay treatment."
    },
    {
      "primitive": "sheet",
      "intent": "Show contextual side panels and responsive editing."
    },
    {
      "primitive": "tabs",
      "intent": "Show navigational structure and active/inactive contrast."
    },
    {
      "primitive": "badge",
      "intent": "Show compact status vocabulary and semantic colors."
    },
    {
      "primitive": "separator",
      "intent": "Show section rhythm without generic gray dividers."
    },
    {
      "primitive": "checkbox",
      "intent": "Show binary selection with visible focus and checked states."
    },
    {
      "primitive": "switch",
      "intent": "Show settings toggles and on/off contrast."
    },
    {
      "primitive": "slider",
      "intent": "Show numeric adjustment with track/thumb styling."
    },
    {
      "primitive": "tooltip",
      "intent": "Show concise explanation styling above compact controls."
    },
    {
      "primitive": "dropdown-menu",
      "intent": "Show action menus, destructive items, and grouped choices."
    },
    {
      "primitive": "table",
      "intent": "Show dense operational data, separators, row states, and responsive behavior."
    }
  ],
  "qualityRules": {
    "do": [
      "Assign every saturated color to a named product role such as active tab, warning chip, focus ring, chart mark, or annotation.",
      "Keep the default interface warm white, soft gray, graphite, and hairline precise before introducing chroma.",
      "Use clipped rectangular swatches, rails, and dots as a repeatable system rather than illustrations.",
      "Check contrast for colored labels by pairing saturated marks with graphite text instead of relying on colored text alone."
    ],
    "dont": [
      "Do not use rainbow gradients, neon glows, arbitrary confetti, or free-floating decorative blobs.",
      "Do not make the screen look like a textbook color theory exercise page or a flat poster catalog.",
      "Do not mix many radius sizes or use color as a substitute for product hierarchy and state design.",
      "Do not fill entire panels with saturated colors unless the product state truly requires a critical alert."
    ]
  }
}
related

More like this