back to gallerydo avoid
design language·liu-bai-void
Liu Bai Void
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 contemplative interface language built from warm paper, disciplined ink typography, severe right angles, and one restrained cinnabar seal. It treats empty space as the primary surface, allowing a few carefully placed controls and reading artifacts to feel rare and intentional.
values
intentional emptinesstypographic solitudepaper warmthcinnabar restraintsharp formal disciplineslow attentive reading
anti-values
×decorative filling×dashboard density×rounded friendliness×chromatic hierarchy×bouncy motion
tokens
borders8 items
- color
- rgba(28,25,23,0.08)
- radius lg
- 0px
- radius md
- 0px
- radius none
- 0px
- radius sm
- 0px
- style
- solid
- width default
- 1px
- width thin
- 1px
colors12 items
accent
#a83226
accent_light
rgba(168,50,38,0.08)
background
#faf8f5
border
rgba(28,25,23,0.08)
focus
#292524
muted
#a8a29e
primary
#1c1917
success
#5f6f52
surface
#ffffff
surface_alt
#f5f1eb
text
#1c1917
text_secondary
#78716c
density4 items
- content max width
- 640px
- min touch target
- 44px
- sidebar width
- 280px
- void ratio
- 0.70
motion5 items
- duration default
- 200ms
- duration fast
- 150ms
- duration slow
- 300ms
- easing
- cubic-bezier(.2,0,.1,1)
- type
- opacity only; no translate, scale, bounce, or parallax
radii5 items
- lg
- 0px
- md
- 0px
- none
- 0px
- pill
- 0px
- sm
- 0px
shadows4 items
- default
- 0 1px 3px rgba(28,25,23,0.03)
- elevated
- 0 2px 4px rgba(28,25,23,0.03)
- none
- none
- subtle
- 0 1px 2px rgba(28,25,23,0.025)
spacing10 items
- 2xl
- 96px
- 3xl
- 128px
- element isolation
- 64px
- lg
- 32px
- md
- 16px
- section gap
- 128px
- sm
- 8px
- unit
- 8px
- xl
- 64px
- xs
- 4px
surfaces4 items
- card
- #ffffff panels with 1px 8% ink border and 0px radius
- inset
- #f5f1eb for selected reading rows and annotation wells
- paper
- #faf8f5 base canvas with visible quietness rather than texture
- void
- transparent open space; never filled simply to balance a grid
typography11 items
- base size
- 16px
- font body
- Source Sans 3, sans-serif
- font heading
- Noto Serif SC, serif
- font mono
- IBM Plex Mono, monospace
- google fonts url
- https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@500;700&family=Source+Sans+3:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap
- letter spacing body
- -0.02em
- letter spacing heading
- -0.04em
- line height body
- 1.56
- line height heading
- 1.14
- scale ratio
- 1.414
- sizes
- 2xl 45px·3xl 64px·4xl 90px·base 16px·lg 22px·sm 13px·xl 32px·xs 11px
rules
composition
Every screen begins as a void. Elements are placed one at a time, each earning its position through necessity. The dominant material is emptiness — at least 70% of any viewport must remain untouched. Elements exist in isolation, never crowded, never touching unless semantically bound. Alignment is absolute: every element snaps to an invisible grid of intention. Asymmetric balance preferred — a single element anchored in the lower-third carries more weight than a centered cluster.
density
Ultra-low density. Content max-width is 640px even on wide screens — the flanking void is part of the design. Lists show 4-6 items maximum before pagination. Cards are separated by 64px minimum. Never fill available space — leave it deliberately empty. Information is revealed progressively, never all at once. Scrolling is preferred over cramming.
hierarchy
Typography alone establishes hierarchy. Size jumps are dramatic (1.414 ratio) creating clear strata: display, heading, body, caption. Weight variations within a single size create sub-hierarchy. Color is NOT used for hierarchy — everything is ink-black or stone-gray. The single red accent marks importance through rarity, not through scale. Whitespace amplifies hierarchy: more isolation means more importance.
signature patterns
The Seal Stamp: a single small cinnabar accent element, styled as a 10px square dot or 1px vertical chop mark, appears at most twice per screen with precise absolute or grid placement.The Vast Margin: CSS constrains content to max-width:640px and surrounds it with clamp(24px,9vw,128px) margins so the background void remains visually dominant.The Single Rule: sections are separated by one 1px rgba(28,25,23,0.08) horizontal rule with 64px breathing room above and below; no stacked dividers.The Ink Drop Interaction: links, buttons, radios, and selects respond through opacity and font-weight changes only, keeping backgrounds, shadows, and spatial movement still.The Empty Scroll: loading and empty states use a single muted line in a large blank panel, treating absence as the natural state rather than an error.
layout
not set
guidance
- Leave at least 70% of the viewport as intentional void
- Use typography scale (1.414) to create clear visual strata without other cues
- Place the red accent sparingly — maximum twice per screen, like a seal on a painting
- Use sharp 0px border-radius everywhere — precision over friendliness
- Separate sections with a single 1px rule at 8% opacity
- Let content breathe with 64-128px between major elements
- Use opacity transitions only (200ms) — no spatial movement
- Center content in a narrow column (max 640px) with vast flanking margins
- Use Noto Serif SC for headings to honor the cultural lineage
- Embrace empty states — void is not an error, it is the natural condition
- Never use border-radius — all corners must be sharp
- Never fill available space — leave it deliberately empty
- Never use color for hierarchy — ink black and stone gray only
- Never add decorative elements, icons, or illustrations where typography suffices
- Never use spatial animations (slides, scales, bounces) — opacity only
- Never stack dividers or use thick borders
- Never add shadows beyond the barely-perceptible (0.03 opacity max)
- Never crowd elements — minimum 64px between unrelated items
- Never use the accent red for large areas — it is a dot, a stamp, a mark
- Never center-align body text — left-aligned for reading, centered only for single-line display headings
katagami spec
# Liu Bai Void
## Philosophy
A contemplative interface language built from warm paper, disciplined ink typography, severe right angles, and one restrained cinnabar seal. It treats empty space as the primary surface, allowing a few carefully placed controls and reading artifacts to feel rare and intentional.
### Values
- intentional emptiness
- typographic solitude
- paper warmth
- cinnabar restraint
- sharp formal discipline
- slow attentive reading
### Anti-Values
- decorative filling
- dashboard density
- rounded friendliness
- chromatic hierarchy
- bouncy motion
### Visual Character
- Warm off-white paper fields occupy most of the viewport, with content constrained to a 640px reading column and 96–128px section gaps in CSS.
- All geometry uses square 0px corners, hairline rgba(28,25,23,0.08) rules, and no visible shadow beyond a barely perceptible ink lift.
- A tiny cinnabar red seal mark appears no more than twice per screen as a dot, vertical bar, or stamp-like label rather than a large colored area.
- Hierarchy is carried by Noto Serif SC display type with -0.04em tracking, Source Sans 3 body copy with -0.02em tracking, and large whitespace jumps.
## Tokens
### Borders
- **Color**: rgba(28,25,23,0.08)
- **Radius Lg**: 0px
- **Radius Md**: 0px
- **Radius None**: 0px
- **Radius Sm**: 0px
- **Style**: solid
- **Width Default**: 1px
- **Width Thin**: 1px
### Colors
| Name | Value |
|------|-------|
| accent | `#a83226` |
| accent_light | `rgba(168,50,38,0.08)` |
| background | `#faf8f5` |
| border | `rgba(28,25,23,0.08)` |
| focus | `#292524` |
| muted | `#a8a29e` |
| primary | `#1c1917` |
| success | `#5f6f52` |
| surface | `#ffffff` |
| surface_alt | `#f5f1eb` |
| text | `#1c1917` |
| text_secondary | `#78716c` |
### Density
- **Content Max Width**: 640px
- **Min Touch Target**: 44px
- **Sidebar Width**: 280px
- **Void Ratio**: 0.70
### Motion
- **Duration Default**: 200ms
- **Duration Fast**: 150ms
- **Duration Slow**: 300ms
- **Easing**: cubic-bezier(.2,0,.1,1)
- **Type**: opacity only; no translate, scale, bounce, or parallax
### Radii
- **Lg**: 0px
- **Md**: 0px
- **None**: 0px
- **Pill**: 0px
- **Sm**: 0px
### Shadows
- **Default**: 0 1px 3px rgba(28,25,23,0.03)
- **Elevated**: 0 2px 4px rgba(28,25,23,0.03)
- **None**: none
- **Subtle**: 0 1px 2px rgba(28,25,23,0.025)
### Spacing
- **2xl**: 96px
- **3xl**: 128px
- **Element Isolation**: 64px
- **Lg**: 32px
- **Md**: 16px
- **Section Gap**: 128px
- **Sm**: 8px
- **Unit**: 8px
- **Xl**: 64px
- **Xs**: 4px
### Surfaces
- **Card**: #ffffff panels with 1px 8% ink border and 0px radius
- **Inset**: #f5f1eb for selected reading rows and annotation wells
- **Paper**: #faf8f5 base canvas with visible quietness rather than texture
- **Void**: transparent open space; never filled simply to balance a grid
### Typography
- **Base Size**: 16px
- **Font Body**: Source Sans 3, sans-serif
- **Font Heading**: Noto Serif SC, serif
- **Font Mono**: IBM Plex Mono, monospace
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@500;700&family=Source+Sans+3:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap
- **Letter Spacing Body**: -0.02em
- **Letter Spacing Heading**: -0.04em
- **Line Height Body**: 1.56
- **Line Height Heading**: 1.14
- **Scale Ratio**: 1.414
- **Sizes**: {"2xl":"45px","3xl":"64px","4xl":"90px","base":"16px","lg":"22px","sm":"13px","xl":"32px","xs":"11px"}
## Rules
### Composition
Every screen begins as a void. Elements are placed one at a time, each earning its position through necessity. The dominant material is emptiness — at least 70% of any viewport must remain untouched. Elements exist in isolation, never crowded, never touching unless semantically bound. Alignment is absolute: every element snaps to an invisible grid of intention. Asymmetric balance preferred — a single element anchored in the lower-third carries more weight than a centered cluster.
### Density
Ultra-low density. Content max-width is 640px even on wide screens — the flanking void is part of the design. Lists show 4-6 items maximum before pagination. Cards are separated by 64px minimum. Never fill available space — leave it deliberately empty. Information is revealed progressively, never all at once. Scrolling is preferred over cramming.
### Hierarchy
Typography alone establishes hierarchy. Size jumps are dramatic (1.414 ratio) creating clear strata: display, heading, body, caption. Weight variations within a single size create sub-hierarchy. Color is NOT used for hierarchy — everything is ink-black or stone-gray. The single red accent marks importance through rarity, not through scale. Whitespace amplifies hierarchy: more isolation means more importance.
### Signature Patterns
- The Seal Stamp: a single small cinnabar accent element, styled as a 10px square dot or 1px vertical chop mark, appears at most twice per screen with precise absolute or grid placement.
- The Vast Margin: CSS constrains content to max-width:640px and surrounds it with clamp(24px,9vw,128px) margins so the background void remains visually dominant.
- The Single Rule: sections are separated by one 1px rgba(28,25,23,0.08) horizontal rule with 64px breathing room above and below; no stacked dividers.
- The Ink Drop Interaction: links, buttons, radios, and selects respond through opacity and font-weight changes only, keeping backgrounds, shadows, and spatial movement still.
- The Empty Scroll: loading and empty states use a single muted line in a large blank panel, treating absence as the natural state rather than an error.
## Guidance
### Do
- Leave at least 70% of the viewport as intentional void
- Use typography scale (1.414) to create clear visual strata without other cues
- Place the red accent sparingly — maximum twice per screen, like a seal on a painting
- Use sharp 0px border-radius everywhere — precision over friendliness
- Separate sections with a single 1px rule at 8% opacity
- Let content breathe with 64-128px between major elements
- Use opacity transitions only (200ms) — no spatial movement
- Center content in a narrow column (max 640px) with vast flanking margins
- Use Noto Serif SC for headings to honor the cultural lineage
- Embrace empty states — void is not an error, it is the natural condition
### Don't
- Never use border-radius — all corners must be sharp
- Never fill available space — leave it deliberately empty
- Never use color for hierarchy — ink black and stone gray only
- Never add decorative elements, icons, or illustrations where typography suffices
- Never use spatial animations (slides, scales, bounces) — opacity only
- Never stack dividers or use thick borders
- Never add shadows beyond the barely-perceptible (0.03 opacity max)
- Never crowd elements — minimum 64px between unrelated items
- Never use the accent red for large areas — it is a dot, a stamp, a mark
- Never center-align body text — left-aligned for reading, centered only for single-line display headings
### Usage Context
Ideal for reading applications, portfolio sites, editorial layouts, meditation apps, journaling tools, and any interface where focused attention and contemplative pace matter more than information density or task throughput.
### Accessibility
High contrast ratio between ink (#1c1917) and warm white (#faf8f5) exceeds WCAG AAA. Large touch targets (44px min). Generous line-height (1.8) aids readability. The minimal interface reduces cognitive load. Font sizes never below 13px. Focus states use the ink-black outline (2px solid) for keyboard navigation. Reduced motion by default — only opacity transitions.
DESIGN.md
---
version: "alpha"
name: "Liu Bai Void"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
accent: "#a83226"
background: "#faf8f5"
focus: "#292524"
muted: "#a8a29e"
primary: "#1c1917"
success: "#5f6f52"
surface: "#ffffff"
surface_alt: "#f5f1eb"
text: "#1c1917"
text_secondary: "#78716c"
typography:
headline-lg:
fontFamily: "Inter"
fontSize: "2.827rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Inter"
fontSize: "1.999rem"
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:
lg: "0px"
md: "0px"
none: "0px"
pill: "0px"
sm: "0px"
spacing:
2xl: "96px"
3xl: "128px"
element_isolation: "64px"
lg: "32px"
md: "16px"
section_gap: "128px"
sm: "8px"
unit: "8px"
xl: "64px"
xs: "4px"
components:
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-background:
backgroundColor: "{colors.background}"
color-reference-focus:
backgroundColor: "{colors.focus}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-primary:
backgroundColor: "{colors.primary}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_alt:
backgroundColor: "{colors.surface_alt}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-text_secondary:
backgroundColor: "{colors.text_secondary}"
button-primary:
backgroundColor: "{colors.primary}"
textColor: "#ffffff"
typography: "{typography.label-md}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
card-surface:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
input-default:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
height: "44px"
---
# Liu Bai Void
## Overview
A contemplative interface language built from warm paper, disciplined ink typography, severe right angles, and one restrained cinnabar seal. It treats empty space as the primary surface, allowing a few carefully placed controls and reading artifacts to feel rare and intentional.
### Values
- intentional emptiness
- typographic solitude
- paper warmth
- cinnabar restraint
- sharp formal discipline
- slow attentive reading
### Anti-Values
- decorative filling
- dashboard density
- rounded friendliness
- chromatic hierarchy
- bouncy motion
### Visual Character
- Warm off-white paper fields occupy most of the viewport, with content constrained to a 640px reading column and 96–128px section gaps in CSS.
- All geometry uses square 0px corners, hairline rgba(28,25,23,0.08) rules, and no visible shadow beyond a barely perceptible ink lift.
- A tiny cinnabar red seal mark appears no more than twice per screen as a dot, vertical bar, or stamp-like label rather than a large colored area.
- Hierarchy is carried by Noto Serif SC display type with -0.04em tracking, Source Sans 3 body copy with -0.02em tracking, and large whitespace jumps.
## Colors
Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.
| Token | Value |
|-------|-------|
| accent | `#a83226` |
| background | `#faf8f5` |
| focus | `#292524` |
| muted | `#a8a29e` |
| primary | `#1c1917` |
| success | `#5f6f52` |
| surface | `#ffffff` |
| surface_alt | `#f5f1eb` |
| text | `#1c1917` |
| text_secondary | `#78716c` |
## Typography
- **Headline-Lg**: Inter, 2.827rem, weight 700, line-height 1.1.
- **Headline-Md**: Inter, 1.999rem, 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
- **2xl**: `96px`
- **3xl**: `128px`
- **Element Isolation**: `64px`
- **Lg**: `32px`
- **Md**: `16px`
- **Section Gap**: `128px`
- **Sm**: `8px`
- **Unit**: `8px`
- **Xl**: `64px`
- **Xs**: `4px`
## Elevation & Depth
### Shadows
- **Default**: 0 1px 3px rgba(28,25,23,0.03)
- **Elevated**: 0 2px 4px rgba(28,25,23,0.03)
- **None**: none
- **Subtle**: 0 1px 2px rgba(28,25,23,0.025)
## Shapes
### Rounded
- **Lg**: `0px`
- **Md**: `0px`
- **None**: `0px`
- **Pill**: `0px`
- **Sm**: `0px`
### Surfaces
- **Card**: #ffffff panels with 1px 8% ink border and 0px radius
- **Inset**: #f5f1eb for selected reading rows and annotation wells
- **Paper**: #faf8f5 base canvas with visible quietness rather than texture
- **Void**: transparent open space; never filled simply to balance a grid
### Borders
- **Color**: rgba(28,25,23,0.08)
- **Radius Lg**: 0px
- **Radius Md**: 0px
- **Radius None**: 0px
- **Radius Sm**: 0px
- **Style**: solid
- **Width Default**: 1px
- **Width Thin**: 1px
## Components
### Composition
Every screen begins as a void. Elements are placed one at a time, each earning its position through necessity. The dominant material is emptiness — at least 70% of any viewport must remain untouched. Elements exist in isolation, never crowded, never touching unless semantically bound. Alignment is absolute: every element snaps to an invisible grid of intention. Asymmetric balance preferred — a single element anchored in the lower-third carries more weight than a centered cluster.
### Density
Ultra-low density. Content max-width is 640px even on wide screens — the flanking void is part of the design. Lists show 4-6 items maximum before pagination. Cards are separated by 64px minimum. Never fill available space — leave it deliberately empty. Information is revealed progressively, never all at once. Scrolling is preferred over cramming.
### Hierarchy
Typography alone establishes hierarchy. Size jumps are dramatic (1.414 ratio) creating clear strata: display, heading, body, caption. Weight variations within a single size create sub-hierarchy. Color is NOT used for hierarchy — everything is ink-black or stone-gray. The single red accent marks importance through rarity, not through scale. Whitespace amplifies hierarchy: more isolation means more importance.
### Signature Patterns
- The Seal Stamp: a single small cinnabar accent element, styled as a 10px square dot or 1px vertical chop mark, appears at most twice per screen with precise absolute or grid placement.
- The Vast Margin: CSS constrains content to max-width:640px and surrounds it with clamp(24px,9vw,128px) margins so the background void remains visually dominant.
- The Single Rule: sections are separated by one 1px rgba(28,25,23,0.08) horizontal rule with 64px breathing room above and below; no stacked dividers.
- The Ink Drop Interaction: links, buttons, radios, and selects respond through opacity and font-weight changes only, keeping backgrounds, shadows, and spatial movement still.
- The Empty Scroll: loading and empty states use a single muted line in a large blank panel, treating absence as the natural state rather than an error.
## 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-019dacc4-917f-7df0-820d-768bfdc71dca/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 Leave at least 70% of the viewport as intentional void
- Do Use typography scale (1.414) to create clear visual strata without other cues
- Do Place the red accent sparingly — maximum twice per screen, like a seal on a painting
- Do Use sharp 0px border-radius everywhere — precision over friendliness
- Do Separate sections with a single 1px rule at 8% opacity
- Do Let content breathe with 64-128px between major elements
- Do Use opacity transitions only (200ms) — no spatial movement
- Do Center content in a narrow column (max 640px) with vast flanking margins
- Do Use Noto Serif SC for headings to honor the cultural lineage
- Do Embrace empty states — void is not an error, it is the natural condition
- Don't Never use border-radius — all corners must be sharp
- Don't Never fill available space — leave it deliberately empty
- Don't Never use color for hierarchy — ink black and stone gray only
- Don't Never add decorative elements, icons, or illustrations where typography suffices
- Don't Never use spatial animations (slides, scales, bounces) — opacity only
- Don't Never stack dividers or use thick borders
- Don't Never add shadows beyond the barely-perceptible (0.03 opacity max)
- Don't Never crowd elements — minimum 64px between unrelated items
- Don't Never use the accent red for large areas — it is a dot, a stamp, a mark
- Don't Never center-align body text — left-aligned for reading, centered only for single-line display headings
### Usage Context
Ideal for reading applications, portfolio sites, editorial layouts, meditation apps, journaling tools, and any interface where focused attention and contemplative pace matter more than information density or task throughput.
### Accessibility
High contrast ratio between ink (#1c1917) and warm white (#faf8f5) exceeds WCAG AAA. Large touch targets (44px min). Generous line-height (1.8) aids readability. The minimal interface reduces cognitive load. Font sizes never below 13px. Focus states use the ink-black outline (2px solid) for keyboard navigation. Reduced motion by default — only opacity transitions.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "liu-bai-void",
"type": "registry:theme",
"title": "Liu Bai Void shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#faf8f5",
"foreground": "#1c1917",
"card": "#ffffff",
"card-foreground": "#1c1917",
"popover": "#ffffff",
"popover-foreground": "#1c1917",
"primary": "#1c1917",
"primary-foreground": "#ffffff",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#a8a29e",
"muted-foreground": "#78716c",
"accent": "#a83226",
"accent-foreground": "#ffffff",
"destructive": "#dc2626",
"border": "rgba(28,25,23,0.08)",
"input": "rgba(28,25,23,0.08)",
"ring": "#a83226",
"chart-1": "#1c1917",
"chart-2": "#f4f4f5",
"chart-3": "#a83226",
"chart-4": "#5f6f52",
"chart-5": "#d97706",
"sidebar": "#ffffff",
"sidebar-foreground": "#1c1917",
"sidebar-primary": "#1c1917",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#a83226",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "rgba(28,25,23,0.08)",
"sidebar-ring": "#a83226",
"radius": "0px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#1c1917",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#a83226",
"accent-foreground": "#ffffff",
"destructive": "#dc2626",
"border": "#303642",
"input": "#303642",
"ring": "#a83226",
"chart-1": "#1c1917",
"chart-2": "#f4f4f5",
"chart-3": "#a83226",
"chart-4": "#5f6f52",
"chart-5": "#d97706",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#1c1917",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#a83226",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#a83226",
"radius": "0px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019dacc4-917f-7df0-820d-768bfdc71dca",
"slug": "liu-bai-void",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"borders": [
"color",
"radius_lg",
"radius_md",
"radius_none",
"radius_sm",
"style",
"width_default",
"width_thin"
],
"colors": [
"accent",
"accent_light",
"background",
"border",
"focus",
"muted",
"primary",
"success",
"surface",
"surface_alt",
"text",
"text_secondary"
],
"density": [
"content_max_width",
"min_touch_target",
"sidebar_width",
"void_ratio"
],
"motion": [
"duration_default",
"duration_fast",
"duration_slow",
"easing",
"type"
],
"radii": [
"lg",
"md",
"none",
"pill",
"sm"
],
"shadows": [
"default",
"elevated",
"none",
"subtle"
],
"spacing": [
"2xl",
"3xl",
"element_isolation",
"lg",
"md",
"section_gap",
"sm",
"unit",
"xl",
"xs"
],
"surfaces": [
"card",
"inset",
"paper",
"void"
],
"typography": [
"base_size",
"font_body",
"font_heading",
"font_mono",
"google_fonts_url",
"letter_spacing_body",
"letter_spacing_heading",
"line_height_body",
"line_height_heading",
"scale_ratio",
"sizes"
]
}
}
}
```in the wild
embodiments
the full element showcase
embodiment · liu-bai-void
DESIGN.md
at a glance
Typography
headline-lgInter · 45px · 700
The quick brown fox jumps
headline-mdInter · 32px · 600
The quick brown fox jumps
body-mdInter · 16px · 400
The quick brown fox jumps
label-mdInter · 12px · 600
The quick brown fox jumps
Components
New
Card title
Components rendered with this language’s tokens — colors, type, and rounded corners as specified.
Spacing
- 2xl96px
- 3xl128px
- element_isolation64px
- lg32px
- md16px
- section_gap128px
- sm8px
- unit8px
- xl64px
- xs4px
Shape
lg0px
md0px
none0px
pill0px
sm0px
shadcn/ui
implementation kit
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 tabletheme css
:root {
--background: #faf8f5;
--foreground: #1c1917;
--card: #ffffff;
--card-foreground: #1c1917;
--popover: #ffffff;
--popover-foreground: #1c1917;
--primary: #1c1917;
--primary-foreground: #ffffff;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #a8a29e;
--muted-foreground: #78716c;
--accent: #a83226;
--accent-foreground: #ffffff;
--destructive: #dc2626;
--border: rgba(28,25,23,0.08);
--input: rgba(28,25,23,0.08);
--ring: #a83226;
--chart-1: #1c1917;
--chart-2: #f4f4f5;
--chart-3: #a83226;
--chart-4: #5f6f52;
--chart-5: #d97706;
--sidebar: #ffffff;
--sidebar-foreground: #1c1917;
--sidebar-primary: #1c1917;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #a83226;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: rgba(28,25,23,0.08);
--sidebar-ring: #a83226;
--radius: 0px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #1c1917;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #a83226;
--accent-foreground: #ffffff;
--destructive: #dc2626;
--border: #303642;
--input: #303642;
--ring: #a83226;
--chart-1: #1c1917;
--chart-2: #f4f4f5;
--chart-3: #a83226;
--chart-4: #5f6f52;
--chart-5: #d97706;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #1c1917;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #a83226;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #a83226;
--radius: 0px;
}
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 LiuBaiVoidShadcnKit() {
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">Liu Bai Void</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": "liu-bai-void",
"type": "registry:theme",
"title": "Liu Bai Void shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#faf8f5",
"foreground": "#1c1917",
"card": "#ffffff",
"card-foreground": "#1c1917",
"popover": "#ffffff",
"popover-foreground": "#1c1917",
"primary": "#1c1917",
"primary-foreground": "#ffffff",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#a8a29e",
"muted-foreground": "#78716c",
"accent": "#a83226",
"accent-foreground": "#ffffff",
"destructive": "#dc2626",
"border": "rgba(28,25,23,0.08)",
"input": "rgba(28,25,23,0.08)",
"ring": "#a83226",
"chart-1": "#1c1917",
"chart-2": "#f4f4f5",
"chart-3": "#a83226",
"chart-4": "#5f6f52",
"chart-5": "#d97706",
"sidebar": "#ffffff",
"sidebar-foreground": "#1c1917",
"sidebar-primary": "#1c1917",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#a83226",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "rgba(28,25,23,0.08)",
"sidebar-ring": "#a83226",
"radius": "0px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#1c1917",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#a83226",
"accent-foreground": "#ffffff",
"destructive": "#dc2626",
"border": "#303642",
"input": "#303642",
"ring": "#a83226",
"chart-1": "#1c1917",
"chart-2": "#f4f4f5",
"chart-3": "#a83226",
"chart-4": "#5f6f52",
"chart-5": "#d97706",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#1c1917",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#a83226",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#a83226",
"radius": "0px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019dacc4-917f-7df0-820d-768bfdc71dca",
"slug": "liu-bai-void",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"borders": [
"color",
"radius_lg",
"radius_md",
"radius_none",
"radius_sm",
"style",
"width_default",
"width_thin"
],
"colors": [
"accent",
"accent_light",
"background",
"border",
"focus",
"muted",
"primary",
"success",
"surface",
"surface_alt",
"text",
"text_secondary"
],
"density": [
"content_max_width",
"min_touch_target",
"sidebar_width",
"void_ratio"
],
"motion": [
"duration_default",
"duration_fast",
"duration_slow",
"easing",
"type"
],
"radii": [
"lg",
"md",
"none",
"pill",
"sm"
],
"shadows": [
"default",
"elevated",
"none",
"subtle"
],
"spacing": [
"2xl",
"3xl",
"element_isolation",
"lg",
"md",
"section_gap",
"sm",
"unit",
"xl",
"xs"
],
"surfaces": [
"card",
"inset",
"paper",
"void"
],
"typography": [
"base_size",
"font_body",
"font_heading",
"font_mono",
"google_fonts_url",
"letter_spacing_body",
"letter_spacing_heading",
"line_height_body",
"line_height_heading",
"scale_ratio",
"sizes"
]
}
}
}
component recipescompatibility fallback
# Liu Bai Void shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019dacc4-917f-7df0-820d-768bfdc71dca`
Slug: `liu-bai-void`
## Intent
A contemplative interface language built from warm paper, disciplined ink typography, severe right angles, and one restrained cinnabar seal. It treats empty space as the primary surface, allowing a few carefully placed controls and reading artifacts to feel rare and intentional.
## Required primitives
- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table
Install with `npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table`.
## Token cues
Colors:
{
"accent": "#a83226",
"accent_light": "rgba(168,50,38,0.08)",
"background": "#faf8f5",
"border": "rgba(28,25,23,0.08)",
"focus": "#292524",
"muted": "#a8a29e",
"primary": "#1c1917",
"success": "#5f6f52",
"surface": "#ffffff",
"surface_alt": "#f5f1eb",
"text": "#1c1917",
"text_secondary": "#78716c"
}
Typography:
{
"base_size": "16px",
"font_body": "Source Sans 3, sans-serif",
"font_heading": "Noto Serif SC, serif",
"font_mono": "IBM Plex Mono, monospace",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@500;700&family=Source+Sans+3:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap",
"letter_spacing_body": "-0.02em",
"letter_spacing_heading": "-0.04em",
"line_height_body": 1.56,
"line_height_heading": 1.14,
"scale_ratio": 1.414,
"sizes": {
"2xl": "45px",
"3xl": "64px",
"4xl": "90px",
"base": "16px",
"lg": "22px",
"sm": "13px",
"xl": "32px",
"xs": "11px"
}
}
## Visual character to preserve
- Warm off-white paper fields occupy most of the viewport, with content constrained to a 640px reading column and 96–128px section gaps in CSS.
- All geometry uses square 0px corners, hairline rgba(28,25,23,0.08) rules, and no visible shadow beyond a barely perceptible ink lift.
- A tiny cinnabar red seal mark appears no more than twice per screen as a dot, vertical bar, or stamp-like label rather than a large colored area.
- Hierarchy is carried by Noto Serif SC display type with -0.04em tracking, Source Sans 3 body copy with -0.02em tracking, and large whitespace jumps.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "solid",
"underlay": false,
"grain": true,
"stickerBadges": true,
"motion": "lift",
"density": "balanced",
"accents": [
"primary",
"accent",
"secondary",
"muted"
]
}
## Signature component recipes
### Button
Use `Button` for primary, secondary, outline, and ghost actions. Primary actions must expose the language's strongest contrast pair, while secondary and ghost actions should preserve the surface treatment instead of falling back to default neutral SaaS styling.
### Card
Use `Card`, `CardHeader`, `CardContent`, `CardFooter`, and `CardAction` as the main composition frame. Cards should demonstrate the language's surface, border, hierarchy, and density rules rather than appearing as generic rounded rectangles.
### Input and Textarea
Use `Input` and `Textarea` with visible focus rings, field labels, validation states, and the language's rhythm. Forms should show real product content, not placeholder-only controls.
### Select, Tabs, and Table
Use `Select`, `Tabs`, and `Table` to prove navigation, filtering, and dense data states. The table should show row rhythm, separators, hover/focus states, and an empty or status state when the language calls for it.
### Dialog and Sheet
Use `Dialog` for centered decisions and `Sheet` for contextual editing. Both should inherit the language's spacing, border, overlay, and motion rules.
## Preview shots
- `application-shell`: dashboard or workspace shell with navigation, cards, forms, and state badges.
- `detail-editor`: focused editing flow using input, textarea, select, switch/checkbox, dialog or sheet, and action buttons.
- `data-operations`: table-heavy operational view with tabs, dropdown menu affordances, badges, and destructive/empty states.
- Each preview shot must include a renderable `scene` payload with concrete headline, description, actions, and rows/fields/stats for the UI preview.
## Implementation contract
- Start from local `ui/src/components/ui` shadcn-style primitives; do not create a second component system.
- Apply `/katagami/shadcn/liu-bai-void/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: Leave at least 70% of the viewport as intentional void; Use typography scale (1.414) to create clear visual strata without other cues; Place the red accent sparingly — maximum twice per screen, like a seal on a painting; Use sharp 0px border-radius everywhere — precision over friendliness; Separate sections with a single 1px rule at 8% opacity; Let content breathe with 64-128px between major elements; Use opacity transitions only (200ms) — no spatial movement; Center content in a narrow column (max 640px) with vast flanking margins; Use Noto Serif SC for headings to honor the cultural lineage; Embrace empty states — void is not an error, it is the natural condition
- Do not: Never use border-radius — all corners must be sharp; Never fill available space — leave it deliberately empty; Never use color for hierarchy — ink black and stone gray only; Never add decorative elements, icons, or illustrations where typography suffices; Never use spatial animations (slides, scales, bounces) — opacity only; Never stack dividers or use thick borders; Never add shadows beyond the barely-perceptible (0.03 opacity max); Never crowd elements — minimum 64px between unrelated items; Never use the accent red for large areas — it is a dot, a stamp, a mark; Never center-align body text — left-aligned for reading, centered only for single-line display headings
## 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 LiuBaiVoidShadcnKit() {
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">Liu Bai Void</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
Defined by the Katagami source fields.
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-019dacc4-917f-7df0-820d-768bfdc71dca",
"name": "Liu Bai Void",
"slug": "liu-bai-void"
},
"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 paper fields occupy most of the viewport, with content constrained to a 640px reading column and 96–128px section gaps in CSS.",
"All geometry uses square 0px corners, hairline rgba(28,25,23,0.08) rules, and no visible shadow beyond a barely perceptible ink lift.",
"A tiny cinnabar red seal mark appears no more than twice per screen as a dot, vertical bar, or stamp-like label rather than a large colored area.",
"Hierarchy is carried by Noto Serif SC display type with -0.04em tracking, Source Sans 3 body copy with -0.02em tracking, and large whitespace jumps."
],
"visualProfile": {
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "solid",
"underlay": false,
"grain": true,
"stickerBadges": true,
"motion": "lift",
"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": "Liu Bai Void 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": [
"Leave at least 70% of the viewport as intentional void",
"Use typography scale (1.414) to create clear visual strata without other cues",
"Place the red accent sparingly — maximum twice per screen, like a seal on a painting",
"Use sharp 0px border-radius everywhere — precision over friendliness",
"Separate sections with a single 1px rule at 8% opacity",
"Let content breathe with 64-128px between major elements",
"Use opacity transitions only (200ms) — no spatial movement",
"Center content in a narrow column (max 640px) with vast flanking margins",
"Use Noto Serif SC for headings to honor the cultural lineage",
"Embrace empty states — void is not an error, it is the natural condition"
],
"dont": [
"Never use border-radius — all corners must be sharp",
"Never fill available space — leave it deliberately empty",
"Never use color for hierarchy — ink black and stone gray only",
"Never add decorative elements, icons, or illustrations where typography suffices",
"Never use spatial animations (slides, scales, bounces) — opacity only",
"Never stack dividers or use thick borders",
"Never add shadows beyond the barely-perceptible (0.03 opacity max)",
"Never crowd elements — minimum 64px between unrelated items",
"Never use the accent red for large areas — it is a dot, a stamp, a mark",
"Never center-align body text — left-aligned for reading, centered only for single-line display headings"
]
}
}
related
More like this
Compact Editorial Ink Fine Artshares ink-wash · brush-gesture · void-compositionCrossover Editorial Ink Fine Artshares ink-wash · brush-gesture · monochrome-contrastDigital Watercolor Texture Systemshares ink-wash · brush-gesture · void-compositionE-Ink Neurography Manualsshares ink-wash · brush-gesture · void-compositionEditorial Ink Atelier with Electric Accentsshares ink-wash · brush-gesture · void-compositionEditorial Ink Fine Artshares ink-wash · brush-gesture · void-composition