Typography
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.
Portable DESIGN.md source of truth for most agents and apps.
Build screens as a planning easel: recessed dark lanes holding stacks of torn-paper slips pressed edge to edge, not independent cards on a page. Anchor a scene with one oversized slip or a four-lane wall; cluster slips tightly inside lanes and let broad slate show between lanes.
Each lane wears one marker-ink spine and you read status by colour first; an oversized slip carries the open decision; the single primary action is a marigold pill on the slip; pinned slips carry both a pin and a label; Space Mono metadata (slip number, lane count, timestamp) sits small but never below 12px.
High density inside lanes (8-16px gaps between stacked slips) released by broad exposed slate between lanes; a full wall signals a productive week. Slips stack straight — no tilt — so long titles stay readable.
Desktop contains to ~1180-1240px; the board is a 4-lane grid (minmax(0,1fr)), the dashboard a 236px lane-index sidebar plus a fluid overview, the landing a 100vw hero over a contained body.
24px page padding, 12-16px gaps between stacked slips inside a lane, 24-48px pauses between lanes and sections; broad slate fields separate major groups.
High inside lanes, generous between them — a busy wall that still scans.
Renders from ~390px mobile to 2560px+; tablet drops to two lanes, mobile stacks to a single lane, hides non-essential nav and table columns, and removes any tilt; only the landing hero spans 100vw.
pasteup
Pasteup handmade torn-and-cut paper collage: many overlapping layers of solid matte construction and kraft paper, each shape casting a soft paper drop-shadow, deckled torn edges with visible fiber, confident felt-marker outlines, a few cream washi-tape seams and pressed thumbtack dimples. Apply to planning and material subjects, never to the apparatus itself.
The landing hero is a wide paper-collage of the colour-spined lanes on a dark ground, with the dark left side carrying a legible overlay; the studio swaps the hero via --hero-image.
# Foolscap ## Philosophy Foolscap is a planning easel, not a feed. Every piece of work is a torn-paper slip held in a colour-spined lane on a dark slate-green board. Each lane wears one marker ink down its spine, so you read status by colour before you read a word; depth comes from paper and shadow, meaning from which lane a slip sits in. It is an independent reimagining of the sticky-note planning idea — lanes and stacks instead of scattered pins on light cork. ### Values - Work is physical — every container is a torn-paper slip with a soft drop-shadow - Colour is a lane — three marker inks down the spine carry status before the words do - Stacked, not scattered — slips press edge to edge in disciplined lanes, no tilt chaos - Movement is the record — slide a slip between lanes and it keeps its history - Bright paper on a dark easel — the slate carries depth, the paper carries reading ### Anti-Values - Scattered tilted notes on a light cork ground (that is the refinement's lane, not this one) - A single coloured accent edge on a card, or any grey SaaS border - An accent ink flooding a whole surface instead of marking a spine - Pure white or pure black surfaces, glassmorphism, gradients, or browser-default controls ### Visual Character - A deep charcoal slate-green easel ground with faint vertical paper-grain and a soft raking-light vignette, so the board reads like a lit studio chalkboard at night. - Warm foolscap-paper slips with torn deckled top and bottom edges (one shared CSS mask) and a soft paper drop-shadow, stacked edge to edge inside recessed dark lanes. - A coloured torn-paper spine down the left edge of each slip and lane in one of three marker inks — marigold, teal, coral — used as a lane system, never a single-edge accent border. - Hierarchy from stationery artifacts that mean something: a thumbtack only where pinned, a strip of cream washi tape only to attach a featured slip, a hand-drawn marker underline under section heads. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#1B2320` | | bg_2 | `#161D1A` | | surface | `#F2EBDC` | | surface_2 | `#E7DDC8` | | on_dark | `#EDE6D6` | | text | `#20262A` | | muted | `#877F6E` | | muted_dark | `#A9A292` | | border | `rgba(32,38,42,0.12)` | | accent | `#F2A114` | | on_accent | `#20262A` | | accent_teal | `#16B6C2` | | accent_coral | `#F2553D` | | success | `#4F9163` | | warning | `#E0A21A` | | error | `#D2492F` | | info | `#2E91A6` | ### Typography - **Base Size**: 17px - **Body Font**: Archivo - **Heading Font**: Fraunces - **Mono Font**: Space Mono - **Heading Weight**: 600 - **Heading Transform**: none - **Letter Spacing**: -0.02em - **Line Height**: 1.55 - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=Space+Mono:wght@400;700&display=swap ### Radii - **None**: 0 - **Card**: 16px - **Full**: 9999px ### Shadows - **Strip**: 0 1px 0 rgba(255,255,255,.45) inset, 0 3px 7px rgba(0,0,0,.34) - **Strip Hi**: 0 1px 0 rgba(255,255,255,.5) inset, 0 10px 22px rgba(0,0,0,.42) - **Pin**: 1px 2px 4px rgba(0,0,0,.5) ### Spacing - **Base**: 4px - **Scale**: [4,8,12,16,24,32,48,64,96] ### Surfaces - **Treatment**: Dark slate-green easel ground with vertical paper-grain and a raking-light vignette; warm foolscap-paper slips stacked in recessed dark lanes. - **Card Style**: Torn-paper slip: foolscap/kraft paper, deckled top+bottom mask, soft paper drop-shadow, a coloured spine down the left edge. Never bordered, never nested. - **Bg Pattern**: Faint 5px vertical paper-grain plus a soft corner vignette behind the lanes. ### Borders - **Default Width**: 0px - **Accent Width**: 0px; use a coloured torn-paper spine as its own system, never a single-edge accent border - **Style**: none - **Character**: No card borders; depth comes from paper drop-shadow. Hairline ink rules (1px) only inside the ledger table. ### Motion - **Duration**: 180ms - **Easing**: cubic-bezier(.2,.7,.3,1.1) - **Philosophy**: Slips lift off their stack on hover and settle on drop; sections rise into place on scroll. The settled state is the default and renders with no JavaScript; prefers-reduced-motion disables it. ## Rules ### Composition Build screens as a planning easel: recessed dark lanes holding stacks of torn-paper slips pressed edge to edge, not independent cards on a page. Anchor a scene with one oversized slip or a four-lane wall; cluster slips tightly inside lanes and let broad slate show between lanes. ### Hierarchy Each lane wears one marker-ink spine and you read status by colour first; an oversized slip carries the open decision; the single primary action is a marigold pill on the slip; pinned slips carry both a pin and a label; Space Mono metadata (slip number, lane count, timestamp) sits small but never below 12px. ### Density High density inside lanes (8-16px gaps between stacked slips) released by broad exposed slate between lanes; a full wall signals a productive week. Slips stack straight — no tilt — so long titles stay readable. ### Signature - Colour-spined lane: a recessed dark column of torn-paper slips stacked edge to edge, each slip and the lane head carrying one marker-ink spine down the left edge. - Torn-paper slip: warm foolscap/kraft paper with a deckled top and bottom edge (one shared CSS mask) and a soft paper drop-shadow, so the stack reads as physical paper. - Three marker inks (marigold #F2A114, teal #16B6C2, coral #F2553D) used as the lane/spine system and as pins, chips, marker underlines, and meter fills — highlighters, never floods, and they recolour on palette swap. - Stationery artifacts that mean something: a thumbtack pin only where pinned, a cream washi-tape strip only to attach a featured slip, a hand-drawn marker underline (inline SVG) under section heads. - Bright paper on a dark slate easel: the slate ground carries depth and the warm paper carries the reading, the inverse of a light-cork board. ## Layout ### Grid Desktop contains to ~1180-1240px; the board is a 4-lane grid (minmax(0,1fr)), the dashboard a 236px lane-index sidebar plus a fluid overview, the landing a 100vw hero over a contained body. ### Whitespace 24px page padding, 12-16px gaps between stacked slips inside a lane, 24-48px pauses between lanes and sections; broad slate fields separate major groups. ### Density High inside lanes, generous between them — a busy wall that still scans. ### Responsive Renders from ~390px mobile to 2560px+; tablet drops to two lanes, mobile stacks to a single lane, hides non-essential nav and table columns, and removes any tilt; only the landing hero spans 100vw. ### Breakpoints - **Mobile**: <= 560px - **Tablet**: 561px - 900px - **Desktop**: >= 901px ## Guidance ### Do - Read status by lane and spine colour; keep warm paper for reading and the slate ground for depth. - Stack slips straight in lanes; use a pin only where pinned and tape only to attach a featured slip. - Keep the three marker inks as highlighters — a spine, a pin, an underline, a chip, a meter fill — never a full-bleed flood. - Style every control as a paper object: foolscap inputs, teal focus inset, custom check/toggle/select, no native chrome. ### Don't - Do not scatter tilted notes on a light cork ground — that is the refinement's idea, not this one. - Do not give a slip a single coloured accent edge instead of the spine system, and never a grey border. - Do not flood a surface with an ink, use gradients or glass, or drop below 12px metadata / 17px body. - Do not present the embodiment as a generic component catalogue — it is a working planning board. ### Accessibility Dark ink on foolscap paper and warm paper on the slate ground both clear 4.5:1. Colour is always paired with a lane, a label, or a pin — never the sole signal. Focus is a 2px teal inset ring. Motion respects prefers-reduced-motion and the settled state renders with no JavaScript. ## Imagery Direction ### Pairs With pasteup ### Summary Pasteup handmade torn-and-cut paper collage: many overlapping layers of solid matte construction and kraft paper, each shape casting a soft paper drop-shadow, deckled torn edges with visible fiber, confident felt-marker outlines, a few cream washi-tape seams and pressed thumbtack dimples. Apply to planning and material subjects, never to the apparatus itself. ### Subjects - a studio planning easel of stacked torn-paper strip-lanes - a wall of overlapping paper slips with colour index tabs - a desk of cut-paper shapes pinned in columns - a torn-paper still life of stationery ### Usage The landing hero is a wide paper-collage of the colour-spined lanes on a dark ground, with the dark left side carrying a legible overlay; the studio swaps the hero via --hero-image.
---
version: "alpha"
name: "Foolscap"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#1B2320"
bg_2: "#161D1A"
surface: "#F2EBDC"
surface_2: "#E7DDC8"
on_dark: "#EDE6D6"
text: "#20262A"
muted: "#877F6E"
muted_dark: "#A9A292"
accent: "#F2A114"
on_accent: "#20262A"
accent_teal: "#16B6C2"
accent_coral: "#F2553D"
success: "#4F9163"
warning: "#E0A21A"
error: "#D2492F"
info: "#2E91A6"
typography:
headline-lg:
fontFamily: "Fraunces"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Fraunces"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "Archivo"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.02em"
label-md:
fontFamily: "Space Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
card: "16px"
full: "9999px"
spacing:
base: "4px"
xs: "4px"
sm: "8px"
md: "12px"
lg: "16px"
xl: "24px"
2xl: "32px"
3xl: "48px"
4xl: "64px"
step-8: "96px"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-bg_2:
backgroundColor: "{colors.bg_2}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_2:
backgroundColor: "{colors.surface_2}"
color-reference-on_dark:
backgroundColor: "{colors.on_dark}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-muted_dark:
backgroundColor: "{colors.muted_dark}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-on_accent:
backgroundColor: "{colors.on_accent}"
color-reference-accent_teal:
backgroundColor: "{colors.accent_teal}"
color-reference-accent_coral:
backgroundColor: "{colors.accent_coral}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-warning:
backgroundColor: "{colors.warning}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-info:
backgroundColor: "{colors.info}"
button-primary:
backgroundColor: "{colors.accent}"
textColor: "#000000"
typography: "{typography.label-md}"
rounded: "{rounded.none}"
padding: "{spacing.md}"
card-surface:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.none}"
padding: "{spacing.md}"
input-default:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.none}"
height: "44px"
---
# Foolscap
## Overview
Foolscap is a planning easel, not a feed. Every piece of work is a torn-paper slip held in a colour-spined lane on a dark slate-green board. Each lane wears one marker ink down its spine, so you read status by colour before you read a word; depth comes from paper and shadow, meaning from which lane a slip sits in. It is an independent reimagining of the sticky-note planning idea — lanes and stacks instead of scattered pins on light cork.
### Values
- Work is physical — every container is a torn-paper slip with a soft drop-shadow
- Colour is a lane — three marker inks down the spine carry status before the words do
- Stacked, not scattered — slips press edge to edge in disciplined lanes, no tilt chaos
- Movement is the record — slide a slip between lanes and it keeps its history
- Bright paper on a dark easel — the slate carries depth, the paper carries reading
### Anti-Values
- Scattered tilted notes on a light cork ground (that is the refinement's lane, not this one)
- A single coloured accent edge on a card, or any grey SaaS border
- An accent ink flooding a whole surface instead of marking a spine
- Pure white or pure black surfaces, glassmorphism, gradients, or browser-default controls
### Visual Character
- A deep charcoal slate-green easel ground with faint vertical paper-grain and a soft raking-light vignette, so the board reads like a lit studio chalkboard at night.
- Warm foolscap-paper slips with torn deckled top and bottom edges (one shared CSS mask) and a soft paper drop-shadow, stacked edge to edge inside recessed dark lanes.
- A coloured torn-paper spine down the left edge of each slip and lane in one of three marker inks — marigold, teal, coral — used as a lane system, never a single-edge accent border.
- Hierarchy from stationery artifacts that mean something: a thumbtack only where pinned, a strip of cream washi tape only to attach a featured slip, a hand-drawn marker underline under section heads.
## Colors
Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.
| Token | Value |
|-------|-------|
| bg | `#1B2320` |
| bg_2 | `#161D1A` |
| surface | `#F2EBDC` |
| surface_2 | `#E7DDC8` |
| on_dark | `#EDE6D6` |
| text | `#20262A` |
| muted | `#877F6E` |
| muted_dark | `#A9A292` |
| accent | `#F2A114` |
| on_accent | `#20262A` |
| accent_teal | `#16B6C2` |
| accent_coral | `#F2553D` |
| success | `#4F9163` |
| warning | `#E0A21A` |
| error | `#D2492F` |
| info | `#2E91A6` |
## Typography
- **Headline-Lg**: Fraunces, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Fraunces, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Archivo, 17px, weight 400, line-height 1.5.
- **Label-Md**: Space Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `4px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
- **Step-8**: `96px`
### Grid
Desktop contains to ~1180-1240px; the board is a 4-lane grid (minmax(0,1fr)), the dashboard a 236px lane-index sidebar plus a fluid overview, the landing a 100vw hero over a contained body.
### Whitespace
24px page padding, 12-16px gaps between stacked slips inside a lane, 24-48px pauses between lanes and sections; broad slate fields separate major groups.
### Density
High inside lanes, generous between them — a busy wall that still scans.
### Responsive
Renders from ~390px mobile to 2560px+; tablet drops to two lanes, mobile stacks to a single lane, hides non-essential nav and table columns, and removes any tilt; only the landing hero spans 100vw.
### Breakpoints
- **Mobile**: <= 560px
- **Tablet**: 561px - 900px
- **Desktop**: >= 901px
## Elevation & Depth
### Shadows
- **Strip**: 0 1px 0 rgba(255,255,255,.45) inset, 0 3px 7px rgba(0,0,0,.34)
- **Strip Hi**: 0 1px 0 rgba(255,255,255,.5) inset, 0 10px 22px rgba(0,0,0,.42)
- **Pin**: 1px 2px 4px rgba(0,0,0,.5)
## Shapes
### Rounded
- **None**: `0px`
- **Card**: `16px`
- **Full**: `9999px`
### Surfaces
- **Treatment**: Dark slate-green easel ground with vertical paper-grain and a raking-light vignette; warm foolscap-paper slips stacked in recessed dark lanes.
- **Card Style**: Torn-paper slip: foolscap/kraft paper, deckled top+bottom mask, soft paper drop-shadow, a coloured spine down the left edge. Never bordered, never nested.
- **Bg Pattern**: Faint 5px vertical paper-grain plus a soft corner vignette behind the lanes.
### Borders
- **Default Width**: 0px
- **Accent Width**: 0px; use a coloured torn-paper spine as its own system, never a single-edge accent border
- **Style**: none
- **Character**: No card borders; depth comes from paper drop-shadow. Hairline ink rules (1px) only inside the ledger table.
## Components
### Composition
Build screens as a planning easel: recessed dark lanes holding stacks of torn-paper slips pressed edge to edge, not independent cards on a page. Anchor a scene with one oversized slip or a four-lane wall; cluster slips tightly inside lanes and let broad slate show between lanes.
### Hierarchy
Each lane wears one marker-ink spine and you read status by colour first; an oversized slip carries the open decision; the single primary action is a marigold pill on the slip; pinned slips carry both a pin and a label; Space Mono metadata (slip number, lane count, timestamp) sits small but never below 12px.
### Density
High density inside lanes (8-16px gaps between stacked slips) released by broad exposed slate between lanes; a full wall signals a productive week. Slips stack straight — no tilt — so long titles stay readable.
### Signature
- Colour-spined lane: a recessed dark column of torn-paper slips stacked edge to edge, each slip and the lane head carrying one marker-ink spine down the left edge.
- Torn-paper slip: warm foolscap/kraft paper with a deckled top and bottom edge (one shared CSS mask) and a soft paper drop-shadow, so the stack reads as physical paper.
- Three marker inks (marigold #F2A114, teal #16B6C2, coral #F2553D) used as the lane/spine system and as pins, chips, marker underlines, and meter fills — highlighters, never floods, and they recolour on palette swap.
- Stationery artifacts that mean something: a thumbtack pin only where pinned, a cream washi-tape strip only to attach a featured slip, a hand-drawn marker underline (inline SVG) under section heads.
- Bright paper on a dark slate easel: the slate ground carries depth and the warm paper carries the reading, the inverse of a light-cork board.
## 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-019efb6b-0028-7243-b185-caec664fef8e/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 Read status by lane and spine colour; keep warm paper for reading and the slate ground for depth.
- Do Stack slips straight in lanes; use a pin only where pinned and tape only to attach a featured slip.
- Do Keep the three marker inks as highlighters — a spine, a pin, an underline, a chip, a meter fill — never a full-bleed flood.
- Do Style every control as a paper object: foolscap inputs, teal focus inset, custom check/toggle/select, no native chrome.
- Don't Do not scatter tilted notes on a light cork ground — that is the refinement's idea, not this one.
- Don't Do not give a slip a single coloured accent edge instead of the spine system, and never a grey border.
- Don't Do not flood a surface with an ink, use gradients or glass, or drop below 12px metadata / 17px body.
- Don't Do not present the embodiment as a generic component catalogue — it is a working planning board.
### Accessibility
Dark ink on foolscap paper and warm paper on the slate ground both clear 4.5:1. Colour is always paired with a lane, a label, or a pin — never the sole signal. Focus is a 2px teal inset ring. Motion respects prefers-reduced-motion and the settled state renders with no JavaScript.
## Imagery Direction
### Pairs With
pasteup
### Summary
Pasteup handmade torn-and-cut paper collage: many overlapping layers of solid matte construction and kraft paper, each shape casting a soft paper drop-shadow, deckled torn edges with visible fiber, confident felt-marker outlines, a few cream washi-tape seams and pressed thumbtack dimples. Apply to planning and material subjects, never to the apparatus itself.
### Subjects
- a studio planning easel of stacked torn-paper strip-lanes
- a wall of overlapping paper slips with colour index tabs
- a desk of cut-paper shapes pinned in columns
- a torn-paper still life of stationery
### Usage
The landing hero is a wide paper-collage of the colour-spined lanes on a dark ground, with the dark left side carrying a legible overlay; the studio swaps the hero via --hero-image.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "foolscap",
"type": "registry:theme",
"title": "Foolscap shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#1B2320",
"foreground": "#20262A",
"card": "#F2EBDC",
"card-foreground": "#20262A",
"popover": "#F2EBDC",
"popover-foreground": "#20262A",
"primary": "#20262A",
"primary-foreground": "#ffffff",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#877F6E",
"muted-foreground": "#20262A",
"accent": "#F2A114",
"accent-foreground": "#ffffff",
"destructive": "#D2492F",
"border": "rgba(32,38,42,0.12)",
"input": "rgba(32,38,42,0.12)",
"ring": "#F2A114",
"chart-1": "#20262A",
"chart-2": "#f4f4f5",
"chart-3": "#F2A114",
"chart-4": "#4F9163",
"chart-5": "#E0A21A",
"sidebar": "#F2EBDC",
"sidebar-foreground": "#20262A",
"sidebar-primary": "#20262A",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#2E91A6",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "rgba(32,38,42,0.12)",
"sidebar-ring": "#F2A114",
"radius": "0.625rem"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#20262A",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#F2A114",
"accent-foreground": "#ffffff",
"destructive": "#D2492F",
"border": "#303642",
"input": "#303642",
"ring": "#F2A114",
"chart-1": "#20262A",
"chart-2": "#f4f4f5",
"chart-3": "#F2A114",
"chart-4": "#4F9163",
"chart-5": "#E0A21A",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#20262A",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#F2A114",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#F2A114",
"radius": "0.625rem"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019efb6b-0028-7243-b185-caec664fef8e",
"slug": "foolscap",
"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": {
"colors": [
"accent",
"accent_coral",
"accent_teal",
"bg",
"bg_2",
"border",
"error",
"info",
"muted",
"muted_dark",
"on_accent",
"on_dark",
"success",
"surface",
"surface_2",
"text",
"warning"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"heading_transform",
"heading_weight",
"letter_spacing",
"line_height",
"mono_font"
],
"radii": [
"card",
"full",
"none"
],
"shadows": [
"pin",
"strip",
"strip_hi"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
]
}
}
}
```The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Agent-generated
produced by claude-opus-4-8 · sourced by claude-opus-4-8 · images by gpt-image-2
Keep Foolscapand swap a palette and an art style onto it — the landing & dashboard recolor live. The Studio does the same with all three lanes free.
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.
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table:root {
--background: #1B2320;
--foreground: #20262A;
--card: #F2EBDC;
--card-foreground: #20262A;
--popover: #F2EBDC;
--popover-foreground: #20262A;
--primary: #20262A;
--primary-foreground: #ffffff;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #877F6E;
--muted-foreground: #20262A;
--accent: #F2A114;
--accent-foreground: #ffffff;
--destructive: #D2492F;
--border: rgba(32,38,42,0.12);
--input: rgba(32,38,42,0.12);
--ring: #F2A114;
--chart-1: #20262A;
--chart-2: #f4f4f5;
--chart-3: #F2A114;
--chart-4: #4F9163;
--chart-5: #E0A21A;
--sidebar: #F2EBDC;
--sidebar-foreground: #20262A;
--sidebar-primary: #20262A;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #2E91A6;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: rgba(32,38,42,0.12);
--sidebar-ring: #F2A114;
--radius: 0.625rem;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #20262A;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #F2A114;
--accent-foreground: #ffffff;
--destructive: #D2492F;
--border: #303642;
--input: #303642;
--ring: #F2A114;
--chart-1: #20262A;
--chart-2: #f4f4f5;
--chart-3: #F2A114;
--chart-4: #4F9163;
--chart-5: #E0A21A;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #20262A;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #F2A114;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #F2A114;
--radius: 0.625rem;
}
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 FoolscapShadcnKit() {
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">Foolscap</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>
);
}
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "foolscap",
"type": "registry:theme",
"title": "Foolscap",
"description": "A planning-easel language: torn-paper slips held in colour-spined lanes on a dark slate-green board. Three marker inks (marigold, teal, coral) used as highlighters; warm foolscap paper as the card surface.",
"visualProfile": {
"ground": "dark-slate-green easel board (#1B2320), faint vertical paper-grain and raking-light vignette",
"material": "warm foolscap-paper slips with torn deckle edges (CSS mask) and a soft paper drop-shadow, sitting on the dark board; never glass, never gradients, never grey SaaS outlines",
"accentUsage": "three marker inks used as a lane/spine system — marigold #F2A114 (intake), teal #16B6C2 (in hand), coral #F2553D (pinned); a coloured spine, pin, marker underline, or chip, never a full-bleed flood",
"borders": "no card borders; depth from paper shadow; a coloured torn-paper spine runs down a slip's left edge as its own system, never a single-edge accent border",
"radius": "16px on lanes/cards, 9999px on pills/pins/dots/toggles, 0 on the deckle mask",
"typography": {
"display": "Fraunces 600",
"body": "Archivo 400",
"mono": "Space Mono 400"
},
"density": "comfortable, high-density inside lanes; 4px base grid"
},
"cssVars": {
"theme": {
"font-sans": "Archivo, system-ui, sans-serif",
"font-mono": "Space Mono, ui-monospace, monospace",
"font-heading": "Fraunces, Georgia, serif",
"radius": "16px"
},
"light": {
"background": "#1B2320",
"foreground": "#EDE6D6",
"card": "#F2EBDC",
"card-foreground": "#20262A",
"popover": "#F2EBDC",
"popover-foreground": "#20262A",
"primary": "#F2A114",
"primary-foreground": "#20262A",
"secondary": "#E7DDC8",
"secondary-foreground": "#20262A",
"muted": "#161D1A",
"muted-foreground": "#A9A292",
"accent": "#16B6C2",
"accent-foreground": "#06343A",
"destructive": "#D2492F",
"destructive-foreground": "#F2EBDC",
"border": "rgba(237,230,214,0.10)",
"input": "rgba(32,38,42,0.18)",
"ring": "#16B6C2",
"chart-1": "#F2A114",
"chart-2": "#16B6C2",
"chart-3": "#F2553D",
"chart-4": "#877F6E",
"chart-5": "#4F9163",
"sidebar": "#161D1A",
"sidebar-foreground": "#EDE6D6",
"sidebar-primary": "#F2A114",
"sidebar-primary-foreground": "#20262A",
"sidebar-accent": "#16B6C2",
"sidebar-accent-foreground": "#06343A",
"sidebar-border": "rgba(237,230,214,0.08)",
"sidebar-ring": "#16B6C2"
},
"dark": {
"background": "#141A17",
"foreground": "#EDE6D6",
"card": "#EAE1CF",
"card-foreground": "#20262A",
"popover": "#EAE1CF",
"popover-foreground": "#20262A",
"primary": "#F4AE2E",
"primary-foreground": "#20262A",
"secondary": "#DDD2BB",
"secondary-foreground": "#20262A",
"muted": "#10150F",
"muted-foreground": "#9E9787",
"accent": "#2BC3CE",
"accent-foreground": "#06343A",
"destructive": "#E0573D",
"destructive-foreground": "#141A17",
"border": "rgba(237,230,214,0.12)",
"input": "rgba(32,38,42,0.20)",
"ring": "#2BC3CE",
"chart-1": "#F4AE2E",
"chart-2": "#2BC3CE",
"chart-3": "#F4664E",
"chart-4": "#9E9787",
"chart-5": "#5FA374",
"sidebar": "#10150F",
"sidebar-foreground": "#EDE6D6",
"sidebar-primary": "#F4AE2E",
"sidebar-primary-foreground": "#20262A",
"sidebar-accent": "#2BC3CE",
"sidebar-accent-foreground": "#06343A",
"sidebar-border": "rgba(237,230,214,0.10)",
"sidebar-ring": "#2BC3CE"
}
}
}
# Foolscap shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019efb6b-0028-7243-b185-caec664fef8e`
Slug: `foolscap`
## Intent
Foolscap is a planning easel, not a feed. Every piece of work is a torn-paper slip held in a colour-spined lane on a dark slate-green board. Each lane wears one marker ink down its spine, so you read status by colour before you read a word; depth comes from paper and shadow, meaning from which lane a slip sits in. It is an independent reimagining of the sticky-note planning idea — lanes and stacks instead of scattered pins on light cork.
## 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:
{
"bg": "#1B2320",
"bg_2": "#161D1A",
"surface": "#F2EBDC",
"surface_2": "#E7DDC8",
"on_dark": "#EDE6D6",
"text": "#20262A",
"muted": "#877F6E",
"muted_dark": "#A9A292",
"border": "rgba(32,38,42,0.12)",
"accent": "#F2A114",
"on_accent": "#20262A",
"accent_teal": "#16B6C2",
"accent_coral": "#F2553D",
"success": "#4F9163",
"warning": "#E0A21A",
"error": "#D2492F",
"info": "#2E91A6"
}
Typography:
{
"base_size": "17px",
"body_font": "Archivo",
"heading_font": "Fraunces",
"mono_font": "Space Mono",
"heading_weight": "600",
"heading_transform": "none",
"letter_spacing": "-0.02em",
"line_height": "1.55",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=Space+Mono:wght@400;700&display=swap"
}
## Visual character to preserve
- A deep charcoal slate-green easel ground with faint vertical paper-grain and a soft raking-light vignette, so the board reads like a lit studio chalkboard at night.
- Warm foolscap-paper slips with torn deckled top and bottom edges (one shared CSS mask) and a soft paper drop-shadow, stacked edge to edge inside recessed dark lanes.
- A coloured torn-paper spine down the left edge of each slip and lane in one of three marker inks — marigold, teal, coral — used as a lane system, never a single-edge accent border.
- Hierarchy from stationery artifacts that mean something: a thumbtack only where pinned, a strip of cream washi tape only to attach a featured slip, a hand-drawn marker underline under section heads.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "dashed",
"underlay": false,
"grain": true,
"stickerBadges": false,
"motion": "lift",
"density": "dense",
"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/foolscap/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: Read status by lane and spine colour; keep warm paper for reading and the slate ground for depth.; Stack slips straight in lanes; use a pin only where pinned and tape only to attach a featured slip.; Keep the three marker inks as highlighters — a spine, a pin, an underline, a chip, a meter fill — never a full-bleed flood.; Style every control as a paper object: foolscap inputs, teal focus inset, custom check/toggle/select, no native chrome.
- Do not: Do not scatter tilted notes on a light cork ground — that is the refinement's idea, not this one.; Do not give a slip a single coloured accent edge instead of the spine system, and never a grey border.; Do not flood a surface with an ink, use gradients or glass, or drop below 12px metadata / 17px body.; Do not present the embodiment as a generic component catalogue — it is a working planning board.
## 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 FoolscapShadcnKit() {
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">Foolscap</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
{
"grid": "Desktop contains to ~1180-1240px; the board is a 4-lane grid (minmax(0,1fr)), the dashboard a 236px lane-index sidebar plus a fluid overview, the landing a 100vw hero over a contained body.",
"whitespace": "24px page padding, 12-16px gaps between stacked slips inside a lane, 24-48px pauses between lanes and sections; broad slate fields separate major groups.",
"density": "High inside lanes, generous between them — a busy wall that still scans.",
"responsive": "Renders from ~390px mobile to 2560px+; tablet drops to two lanes, mobile stacks to a single lane, hides non-essential nav and table columns, and removes any tilt; only the landing hero spans 100vw.",
"breakpoints": {
"mobile": "<= 560px",
"tablet": "561px - 900px",
"desktop": ">= 901px"
}
}
{
"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-019efb6b-0028-7243-b185-caec664fef8e",
"name": "Foolscap",
"slug": "foolscap"
},
"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": [
"A deep charcoal slate-green easel ground with faint vertical paper-grain and a soft raking-light vignette, so the board reads like a lit studio chalkboard at night.",
"Warm foolscap-paper slips with torn deckled top and bottom edges (one shared CSS mask) and a soft paper drop-shadow, stacked edge to edge inside recessed dark lanes.",
"A coloured torn-paper spine down the left edge of each slip and lane in one of three marker inks — marigold, teal, coral — used as a lane system, never a single-edge accent border.",
"Hierarchy from stationery artifacts that mean something: a thumbtack only where pinned, a strip of cream washi tape only to attach a featured slip, a hand-drawn marker underline under section heads."
],
"visualProfile": {
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "dashed",
"underlay": false,
"grain": true,
"stickerBadges": false,
"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": "Foolscap 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": [
"Read status by lane and spine colour; keep warm paper for reading and the slate ground for depth.",
"Stack slips straight in lanes; use a pin only where pinned and tape only to attach a featured slip.",
"Keep the three marker inks as highlighters — a spine, a pin, an underline, a chip, a meter fill — never a full-bleed flood.",
"Style every control as a paper object: foolscap inputs, teal focus inset, custom check/toggle/select, no native chrome."
],
"dont": [
"Do not scatter tilted notes on a light cork ground — that is the refinement's idea, not this one.",
"Do not give a slip a single coloured accent edge instead of the spine system, and never a grey border.",
"Do not flood a surface with an ink, use gradients or glass, or drop below 12px metadata / 17px body.",
"Do not present the embodiment as a generic component catalogue — it is a working planning board."
]
}
}