back to gallery
design language·washi-document-workspace

Washi Document Workspace

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 calm, light, text-first product language for AYA where long documents and synthesis work sit on warm paper-white surfaces, while context is woven around the reading pane as quiet trails, marginal signals, and inline metrics. Katagami, washi, weaving, negative space, and Japanese craft restraint are translated into precise spacing, layered apertures, fine hairlines, and disciplined rhythm rather than literal motifs or decoration.
values
Reading remains the center of gravity; analytics and status support the document instead of becoming a dashboard.Japanese inspiration is abstract and operational: restraint, precision, layering, rhythm, tactility, and useful negative space.Navigation behaves as a context map that shows threads, documents, references, and state without crowding the text.Every accent has a job: indigo marks focus, route, selection, and links; persimmon appears only for rare attention signals.Light minimalism must stay accessible, product-grade, and intentionally styled, never generic or under-specified.
anti-values
×Literal Japanese motifs, tourist cliches, sakura, waves, cranes, torii, seals, faux calligraphy, or stencil-pattern ornament.×Dashboard-first KPI card grids, saturated color blocks, or chart walls that displace the document.×Low-contrast gray minimalism, unstyled default controls, or decorative paper texture that reduces readability.×Using indigo as a broad brand wash or persimmon as a general secondary primary color.
tokens
color14 items
border
#DDD6C8
border soft
#E9E3D7
canvas
#F8F5EE
indigo
#243B66
indigo soft
#E8EDF7
persimmon
#B85C38
persimmon soft
#F6E7DF
success
#526B57
surface
#FFFDF8
surface subtle
#F1EEE6
text
#202421
text faint
#88877F
text muted
#62665F
warning
#8A6A2D
radii3 items
large
12px
medium
8px
small
4px
shadow2 items
default
avoid heavy shadow; prefer hairlines and tonal separation
raised
0 1px 2px rgba(32,36,33,0.06) only for transient overlays
spacing4 items
base
4px
density
compact metadata, relaxed prose
rhythm
8px row rhythm with 24-32px document gutters
section
20-28px between related blocks; 40-64px for major transitions
typography5 items
body
Inter, system-ui, sans-serif
line height
1.55-1.7 for documents; 1.25-1.4 for metadata
measure
68-82 characters for prose
mono
IBM Plex Mono or ui-monospace for timestamps, counters, and compact provenance
reading
Source Serif 4 or Georgia for optional long-form reading mode; otherwise a highly legible sans-serif text stack
rules
do
  • Prioritize readable text, document hierarchy, and source context before metrics.
  • Use cutout-like layering, hairlines, apertures, and precise gutters to evoke craft without decoration.
  • Keep controls custom, quiet, and accessible with visible focus states and clear labels.
  • Use indigo consistently for navigation location, active thread, focus, selected text, and links.
  • Use persimmon only for rare change, risk, or urgent review markers, always with text labels.
avoid
  • Do not add literal Japanese motifs, stencil patterns, paper fiber noise, seals, or faux calligraphic gestures.
  • Do not turn the workspace into a dashboard homepage or a grid of KPI cards.
  • Do not compress the reading measure to make room for decorative analytics.
  • Do not depend on pale gray text or color-only state indicators.
layout
document surface
Paper-like central sheet on warm canvas with fine borders, generous headings, inline summary bands, and annotations that feel cut into the margin rather than stacked as cards.
grid
Desktop shell: 232-280px context map, flexible 680-820px reading/work pane, optional 220-300px marginalia rail. Align to 4px base and keep reading pane visually dominant.
marginalia
Use right-side or inline marginal signals for confidence, freshness, source count, task status, and short trend notes. Keep charts tiny, labeled, and adjacent to the relevant text.
navigation

Context map, not dashboard: nested trails, document clusters, active route rail, compact counters, and provenance breadcrumbs.

responsive
On mobile, collapse context map to breadcrumb stack and place marginal analytics beneath the related heading in labeled disclosure rows. Preserve reading order first.
whitespace

Negative space is structural: empty gutters, indentation, and quiet pauses are preferred over filling every region with widgets.

guidance
accessibility
Body text near #202421 on paper surfaces; maintain WCAG AA contrast. Keyboard focus must be visible with a 2px indigo ring/rail. Status and metric chips require labels and cannot rely on color alone. Avoid body copy below 14px and reserve 12px for metadata only.
quality bar
Product-grade means every visible control has intentional border, hover, focus, active, disabled, and loading states; whitespace must improve comprehension rather than simply look sparse.
usage context

AYA-like knowledge workspaces, research editors, synthesis tools, AI copilots, reference management, and document-heavy operational products.

katagami spec
# Washi Document Workspace

## Philosophy

A calm, light, text-first product language for AYA where long documents and synthesis work sit on warm paper-white surfaces, while context is woven around the reading pane as quiet trails, marginal signals, and inline metrics. Katagami, washi, weaving, negative space, and Japanese craft restraint are translated into precise spacing, layered apertures, fine hairlines, and disciplined rhythm rather than literal motifs or decoration.

### Values

- Reading remains the center of gravity; analytics and status support the document instead of becoming a dashboard.
- Japanese inspiration is abstract and operational: restraint, precision, layering, rhythm, tactility, and useful negative space.
- Navigation behaves as a context map that shows threads, documents, references, and state without crowding the text.
- Every accent has a job: indigo marks focus, route, selection, and links; persimmon appears only for rare attention signals.
- Light minimalism must stay accessible, product-grade, and intentionally styled, never generic or under-specified.

### Anti-Values

- Literal Japanese motifs, tourist cliches, sakura, waves, cranes, torii, seals, faux calligraphy, or stencil-pattern ornament.
- Dashboard-first KPI card grids, saturated color blocks, or chart walls that displace the document.
- Low-contrast gray minimalism, unstyled default controls, or decorative paper texture that reduces readability.
- Using indigo as a broad brand wash or persimmon as a general secondary primary color.

### Visual Character

- Warm off-white canvas with subtle stone layers and sumi text.
- Fine cut-line borders, quiet insets, measured gutters, and layered document-adjacent context.
- Compact metadata and marginalia paired with generous prose measure and line height.
- A modern editorial workspace with precise custom controls and calm state language.

## Tokens

### Color

- **Border**: #DDD6C8
- **Border Soft**: #E9E3D7
- **Canvas**: #F8F5EE
- **Indigo**: #243B66
- **Indigo Soft**: #E8EDF7
- **Persimmon**: #B85C38
- **Persimmon Soft**: #F6E7DF
- **Success**: #526B57
- **Surface**: #FFFDF8
- **Surface Subtle**: #F1EEE6
- **Text**: #202421
- **Text Faint**: #88877F
- **Text Muted**: #62665F
- **Warning**: #8A6A2D

### Radii

- **Large**: 12px
- **Medium**: 8px
- **Small**: 4px

### Shadow

- **Default**: avoid heavy shadow; prefer hairlines and tonal separation
- **Raised**: 0 1px 2px rgba(32,36,33,0.06) only for transient overlays

### Spacing

- **Base**: 4px
- **Density**: compact metadata, relaxed prose
- **Rhythm**: 8px row rhythm with 24-32px document gutters
- **Section**: 20-28px between related blocks; 40-64px for major transitions

### Typography

- **Body**: Inter, system-ui, sans-serif
- **Line Height**: 1.55-1.7 for documents; 1.25-1.4 for metadata
- **Measure**: 68-82 characters for prose
- **Mono**: IBM Plex Mono or ui-monospace for timestamps, counters, and compact provenance
- **Reading**: Source Serif 4 or Georgia for optional long-form reading mode; otherwise a highly legible sans-serif text stack

## Rules

### Do

- Prioritize readable text, document hierarchy, and source context before metrics.
- Use cutout-like layering, hairlines, apertures, and precise gutters to evoke craft without decoration.
- Keep controls custom, quiet, and accessible with visible focus states and clear labels.
- Use indigo consistently for navigation location, active thread, focus, selected text, and links.
- Use persimmon only for rare change, risk, or urgent review markers, always with text labels.

### Dont

- Do not add literal Japanese motifs, stencil patterns, paper fiber noise, seals, or faux calligraphic gestures.
- Do not turn the workspace into a dashboard homepage or a grid of KPI cards.
- Do not compress the reading measure to make room for decorative analytics.
- Do not depend on pale gray text or color-only state indicators.

## Layout

### Document Surface

Paper-like central sheet on warm canvas with fine borders, generous headings, inline summary bands, and annotations that feel cut into the margin rather than stacked as cards.

### Grid

Desktop shell: 232-280px context map, flexible 680-820px reading/work pane, optional 220-300px marginalia rail. Align to 4px base and keep reading pane visually dominant.

### Marginalia

Use right-side or inline marginal signals for confidence, freshness, source count, task status, and short trend notes. Keep charts tiny, labeled, and adjacent to the relevant text.

### Navigation

Context map, not dashboard: nested trails, document clusters, active route rail, compact counters, and provenance breadcrumbs.

### Responsive

On mobile, collapse context map to breadcrumb stack and place marginal analytics beneath the related heading in labeled disclosure rows. Preserve reading order first.

### Whitespace

Negative space is structural: empty gutters, indentation, and quiet pauses are preferred over filling every region with widgets.

## Guidance

### Accessibility

Body text near #202421 on paper surfaces; maintain WCAG AA contrast. Keyboard focus must be visible with a 2px indigo ring/rail. Status and metric chips require labels and cannot rely on color alone. Avoid body copy below 14px and reserve 12px for metadata only.

### Quality Bar

Product-grade means every visible control has intentional border, hover, focus, active, disabled, and loading states; whitespace must improve comprehension rather than simply look sparse.

### Usage Context

AYA-like knowledge workspaces, research editors, synthesis tools, AI copilots, reference management, and document-heavy operational products.
DESIGN.md
---
version: "alpha"
name: "Washi Document Workspace"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
typography:
  headline-lg:
    fontFamily: "Inter"
    fontSize: "1.953rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.02em"
  headline-md:
    fontFamily: "Inter"
    fontSize: "1.563rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.02em"
  body-md:
    fontFamily: "Inter"
    fontSize: "16px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "-0.02em"
  label-md:
    fontFamily: "Inter"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  large: "12px"
  medium: "8px"
  small: "4px"
spacing:
  base: "4px"
  density: "compact metadata, relaxed prose"
  rhythm: "8px row rhythm with 24-32px document gutters"
  section: "20-28px between related blocks; 40-64px for major transitions"
---

# Washi Document Workspace

## Overview

A calm, light, text-first product language for AYA where long documents and synthesis work sit on warm paper-white surfaces, while context is woven around the reading pane as quiet trails, marginal signals, and inline metrics. Katagami, washi, weaving, negative space, and Japanese craft restraint are translated into precise spacing, layered apertures, fine hairlines, and disciplined rhythm rather than literal motifs or decoration.

### Values

- Reading remains the center of gravity; analytics and status support the document instead of becoming a dashboard.
- Japanese inspiration is abstract and operational: restraint, precision, layering, rhythm, tactility, and useful negative space.
- Navigation behaves as a context map that shows threads, documents, references, and state without crowding the text.
- Every accent has a job: indigo marks focus, route, selection, and links; persimmon appears only for rare attention signals.
- Light minimalism must stay accessible, product-grade, and intentionally styled, never generic or under-specified.

### Anti-Values

- Literal Japanese motifs, tourist cliches, sakura, waves, cranes, torii, seals, faux calligraphy, or stencil-pattern ornament.
- Dashboard-first KPI card grids, saturated color blocks, or chart walls that displace the document.
- Low-contrast gray minimalism, unstyled default controls, or decorative paper texture that reduces readability.
- Using indigo as a broad brand wash or persimmon as a general secondary primary color.

### Visual Character

- Warm off-white canvas with subtle stone layers and sumi text.
- Fine cut-line borders, quiet insets, measured gutters, and layered document-adjacent context.
- Compact metadata and marginalia paired with generous prose measure and line height.
- A modern editorial workspace with precise custom controls and calm state language.

## Typography

- **Headline-Lg**: Inter, 1.953rem, weight 700, line-height 1.1.
- **Headline-Md**: Inter, 1.563rem, weight 600, line-height 1.15.
- **Body-Md**: Inter, 16px, weight 400, line-height 1.5.
- **Label-Md**: Inter, 0.75rem, weight 600, line-height 1.

## Layout

### Spacing Tokens

- **Base**: `4px`
- **Density**: `compact metadata, relaxed prose`
- **Rhythm**: `8px row rhythm with 24-32px document gutters`
- **Section**: `20-28px between related blocks; 40-64px for major transitions`

### Document Surface

Paper-like central sheet on warm canvas with fine borders, generous headings, inline summary bands, and annotations that feel cut into the margin rather than stacked as cards.

### Grid

Desktop shell: 232-280px context map, flexible 680-820px reading/work pane, optional 220-300px marginalia rail. Align to 4px base and keep reading pane visually dominant.

### Marginalia

Use right-side or inline marginal signals for confidence, freshness, source count, task status, and short trend notes. Keep charts tiny, labeled, and adjacent to the relevant text.

### Navigation

Context map, not dashboard: nested trails, document clusters, active route rail, compact counters, and provenance breadcrumbs.

### Responsive

On mobile, collapse context map to breadcrumb stack and place marginal analytics beneath the related heading in labeled disclosure rows. Preserve reading order first.

### Whitespace

Negative space is structural: empty gutters, indentation, and quiet pauses are preferred over filling every region with widgets.

## Shapes

### Rounded

- **Large**: `12px`
- **Medium**: `8px`
- **Small**: `4px`

## Components

### Do

- Prioritize readable text, document hierarchy, and source context before metrics.
- Use cutout-like layering, hairlines, apertures, and precise gutters to evoke craft without decoration.
- Keep controls custom, quiet, and accessible with visible focus states and clear labels.
- Use indigo consistently for navigation location, active thread, focus, selected text, and links.
- Use persimmon only for rare change, risk, or urgent review markers, always with text labels.

### Dont

- Do not add literal Japanese motifs, stencil patterns, paper fiber noise, seals, or faux calligraphic gestures.
- Do not turn the workspace into a dashboard homepage or a grid of KPI cards.
- Do not compress the reading measure to make room for decorative analytics.
- Do not depend on pale gray text or color-only state indicators.

## 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-019edd3d-9d5e-7ae3-a10a-2d3165b293b9/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.

### Accessibility

Body text near #202421 on paper surfaces; maintain WCAG AA contrast. Keyboard focus must be visible with a 2px indigo ring/rail. Status and metric chips require labels and cannot rely on color alone. Avoid body copy below 14px and reserve 12px for metadata only.

### Quality Bar

Product-grade means every visible control has intentional border, hover, focus, active, disabled, and loading states; whitespace must improve comprehension rather than simply look sparse.

### Usage Context

AYA-like knowledge workspaces, research editors, synthesis tools, AI copilots, reference management, and document-heavy operational products.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "washi-document-workspace",
  "type": "registry:theme",
  "title": "Washi Document Workspace shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#ffffff",
      "foreground": "#111111",
      "card": "#ffffff",
      "card-foreground": "#111111",
      "popover": "#ffffff",
      "popover-foreground": "#111111",
      "primary": "#111111",
      "primary-foreground": "#ffffff",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#f4f4f5",
      "muted-foreground": "#111111",
      "accent": "#111111",
      "accent-foreground": "#ffffff",
      "destructive": "#dc2626",
      "border": "#e4e4e7",
      "input": "#e4e4e7",
      "ring": "#111111",
      "chart-1": "#111111",
      "chart-2": "#f4f4f5",
      "chart-3": "#111111",
      "chart-4": "#16a34a",
      "chart-5": "#d97706",
      "sidebar": "#ffffff",
      "sidebar-foreground": "#111111",
      "sidebar-primary": "#111111",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#111111",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#e4e4e7",
      "sidebar-ring": "#111111",
      "radius": "0.625rem"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#111111",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#111111",
      "accent-foreground": "#ffffff",
      "destructive": "#dc2626",
      "border": "#303642",
      "input": "#303642",
      "ring": "#111111",
      "chart-1": "#111111",
      "chart-2": "#f4f4f5",
      "chart-3": "#111111",
      "chart-4": "#16a34a",
      "chart-5": "#d97706",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#111111",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#111111",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#111111",
      "radius": "0.625rem"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019edd3d-9d5e-7ae3-a10a-2d3165b293b9",
    "slug": "washi-document-workspace",
    "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": {
      "color": [
        "border",
        "border_soft",
        "canvas",
        "indigo",
        "indigo_soft",
        "persimmon",
        "persimmon_soft",
        "success",
        "surface",
        "surface_subtle",
        "text",
        "text_faint",
        "text_muted",
        "warning"
      ],
      "radii": [
        "large",
        "medium",
        "small"
      ],
      "shadow": [
        "default",
        "raised"
      ],
      "spacing": [
        "base",
        "density",
        "rhythm",
        "section"
      ],
      "typography": [
        "body",
        "line_height",
        "measure",
        "mono",
        "reading"
      ]
    }
  }
}
```
in the wild

embodiments

the full element showcase
embodiment · washi-document-workspace
DESIGN.md

at a glance

Typography

headline-lgInter · 31px · 700

The quick brown fox jumps

headline-mdInter · 25px · 600

The quick brown fox jumps

body-mdInter · 16px · 400

The quick brown fox jumps

label-mdInter · 12px · 600

The quick brown fox jumps

Spacing

  • base4px
  • densitycompact metadata, relaxed prose
  • rhythm8px row rhythm with 24-32px document gutters
  • section20-28px between related blocks; 40-64px for major transitions

Shape

large12px
medium8px
small4px
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: #ffffff;
  --foreground: #111111;
  --card: #ffffff;
  --card-foreground: #111111;
  --popover: #ffffff;
  --popover-foreground: #111111;
  --primary: #111111;
  --primary-foreground: #ffffff;
  --secondary: #f4f4f5;
  --secondary-foreground: #111111;
  --muted: #f4f4f5;
  --muted-foreground: #111111;
  --accent: #111111;
  --accent-foreground: #ffffff;
  --destructive: #dc2626;
  --border: #e4e4e7;
  --input: #e4e4e7;
  --ring: #111111;
  --chart-1: #111111;
  --chart-2: #f4f4f5;
  --chart-3: #111111;
  --chart-4: #16a34a;
  --chart-5: #d97706;
  --sidebar: #ffffff;
  --sidebar-foreground: #111111;
  --sidebar-primary: #111111;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #111111;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #e4e4e7;
  --sidebar-ring: #111111;
  --radius: 0.625rem;
}

.dark {
  --background: #0f1115;
  --foreground: #f8fafc;
  --card: #181b22;
  --card-foreground: #f8fafc;
  --popover: #181b22;
  --popover-foreground: #f8fafc;
  --primary: #111111;
  --primary-foreground: #ffffff;
  --secondary: #252a33;
  --secondary-foreground: #f8fafc;
  --muted: #252a33;
  --muted-foreground: #a1a1aa;
  --accent: #111111;
  --accent-foreground: #ffffff;
  --destructive: #dc2626;
  --border: #303642;
  --input: #303642;
  --ring: #111111;
  --chart-1: #111111;
  --chart-2: #f4f4f5;
  --chart-3: #111111;
  --chart-4: #16a34a;
  --chart-5: #d97706;
  --sidebar: #181b22;
  --sidebar-foreground: #f8fafc;
  --sidebar-primary: #111111;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #111111;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #303642;
  --sidebar-ring: #111111;
  --radius: 0.625rem;
}
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 WashiDocumentWorkspaceShadcnKit() {
  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">Washi Document Workspace</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 JSONcompatibility fallback
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "washi-document-workspace",
  "type": "registry:theme",
  "title": "Washi Document Workspace shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#ffffff",
      "foreground": "#111111",
      "card": "#ffffff",
      "card-foreground": "#111111",
      "popover": "#ffffff",
      "popover-foreground": "#111111",
      "primary": "#111111",
      "primary-foreground": "#ffffff",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#f4f4f5",
      "muted-foreground": "#111111",
      "accent": "#111111",
      "accent-foreground": "#ffffff",
      "destructive": "#dc2626",
      "border": "#e4e4e7",
      "input": "#e4e4e7",
      "ring": "#111111",
      "chart-1": "#111111",
      "chart-2": "#f4f4f5",
      "chart-3": "#111111",
      "chart-4": "#16a34a",
      "chart-5": "#d97706",
      "sidebar": "#ffffff",
      "sidebar-foreground": "#111111",
      "sidebar-primary": "#111111",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#111111",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#e4e4e7",
      "sidebar-ring": "#111111",
      "radius": "0.625rem"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#111111",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#111111",
      "accent-foreground": "#ffffff",
      "destructive": "#dc2626",
      "border": "#303642",
      "input": "#303642",
      "ring": "#111111",
      "chart-1": "#111111",
      "chart-2": "#f4f4f5",
      "chart-3": "#111111",
      "chart-4": "#16a34a",
      "chart-5": "#d97706",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#111111",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#111111",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#111111",
      "radius": "0.625rem"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019edd3d-9d5e-7ae3-a10a-2d3165b293b9",
    "slug": "washi-document-workspace",
    "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": {
      "color": [
        "border",
        "border_soft",
        "canvas",
        "indigo",
        "indigo_soft",
        "persimmon",
        "persimmon_soft",
        "success",
        "surface",
        "surface_subtle",
        "text",
        "text_faint",
        "text_muted",
        "warning"
      ],
      "radii": [
        "large",
        "medium",
        "small"
      ],
      "shadow": [
        "default",
        "raised"
      ],
      "spacing": [
        "base",
        "density",
        "rhythm",
        "section"
      ],
      "typography": [
        "body",
        "line_height",
        "measure",
        "mono",
        "reading"
      ]
    }
  }
}
component recipescompatibility fallback
# Washi Document Workspace shadcn/ui Components

Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019edd3d-9d5e-7ae3-a10a-2d3165b293b9`
Slug: `washi-document-workspace`

## Intent

A calm, light, text-first product language for AYA where long documents and synthesis work sit on warm paper-white surfaces, while context is woven around the reading pane as quiet trails, marginal signals, and inline metrics. Katagami, washi, weaving, negative space, and Japanese craft restraint are translated into precise spacing, layered apertures, fine hairlines, and disciplined rhythm rather than literal motifs or 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:

Defined by the Katagami source fields.

Typography:

{
  "body": "Inter, system-ui, sans-serif",
  "line_height": "1.55-1.7 for documents; 1.25-1.4 for metadata",
  "measure": "68-82 characters for prose",
  "mono": "IBM Plex Mono or ui-monospace for timestamps, counters, and compact provenance",
  "reading": "Source Serif 4 or Georgia for optional long-form reading mode; otherwise a highly legible sans-serif text stack"
}

## Visual character to preserve

- Warm off-white canvas with subtle stone layers and sumi text.
- Fine cut-line borders, quiet insets, measured gutters, and layered document-adjacent context.
- Compact metadata and marginalia paired with generous prose measure and line height.
- A modern editorial workspace with precise custom controls and calm state language.

## ShadSync visual profile

{
  "family": "editorial",
  "material": "flat",
  "contour": "default",
  "border": "solid",
  "underlay": true,
  "grain": false,
  "stickerBadges": false,
  "motion": "still",
  "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/washi-document-workspace/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: follow the Katagami source guidance
- Do not: do not collapse the language into generic defaults

## 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 WashiDocumentWorkspaceShadcnKit() {
  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">Washi Document Workspace</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

{
  "document_surface": "Paper-like central sheet on warm canvas with fine borders, generous headings, inline summary bands, and annotations that feel cut into the margin rather than stacked as cards.",
  "grid": "Desktop shell: 232-280px context map, flexible 680-820px reading/work pane, optional 220-300px marginalia rail. Align to 4px base and keep reading pane visually dominant.",
  "marginalia": "Use right-side or inline marginal signals for confidence, freshness, source count, task status, and short trend notes. Keep charts tiny, labeled, and adjacent to the relevant text.",
  "navigation": "Context map, not dashboard: nested trails, document clusters, active route rail, compact counters, and provenance breadcrumbs.",
  "responsive": "On mobile, collapse context map to breadcrumb stack and place marginal analytics beneath the related heading in labeled disclosure rows. Preserve reading order first.",
  "whitespace": "Negative space is structural: empty gutters, indentation, and quiet pauses are preferred over filling every region with widgets."
}
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-019edd3d-9d5e-7ae3-a10a-2d3165b293b9",
    "name": "Washi Document Workspace",
    "slug": "washi-document-workspace"
  },
  "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 canvas with subtle stone layers and sumi text.",
    "Fine cut-line borders, quiet insets, measured gutters, and layered document-adjacent context.",
    "Compact metadata and marginalia paired with generous prose measure and line height.",
    "A modern editorial workspace with precise custom controls and calm state language."
  ],
  "visualProfile": {
    "family": "editorial",
    "material": "flat",
    "contour": "default",
    "border": "solid",
    "underlay": true,
    "grain": false,
    "stickerBadges": false,
    "motion": "still",
    "density": "dense",
    "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": "Washi Document Workspace 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": [],
    "dont": []
  }
}