back to gallerydo avoid
design language·ink-wash-motion
Ink Wash Motion
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 for living ink on warm paper: content appears as if painted into existence, structure breathes with soft diffusion, and sparse vermillion marks punctuate otherwise restrained sumi surfaces.
values
living stillnessliubai negative spacewarm paper tactilitydiluted sumi hierarchysparse vermillion emphasisslow organic motionvisible imperfection
anti-values
×synthetic SaaS chrome×fast abrupt animation×pure white sterile backgrounds×dense equal-card grids×rainbow accent palettes
tokens
borders4 items
- color
- rgba(26,22,18,0.09)
- ink rule
- 1px solid rgba(26,22,18,0.09)
- style
- solid
- width
- 1px
colors12 items
accent
#b83a2d
background
#f0ebe2
border
rgba(26,22,18,0.09)
ink_wash_light
rgba(45,40,36,0.05)
ink_wash_medium
rgba(45,40,36,0.15)
muted
#756b61
primary
#2d2824
secondary
#3f6858
surface
#f7f1e8
surface_solid
#f7f1e8
tertiary
#6a5a3a
text
#1a1612
motion7 items
- duration diffuse
- 20000ms
- duration fast
- 420ms
- duration normal
- 800ms
- duration slow
- 1600ms
- easing organic
- cubic-bezier(0.23, 1, 0.32, 1)
- paint in
- opacity + blur(6px to 0) + translateY(16px to 0)
- reduced motion
- disable drift and blur animations
radii3 items
- container
- 24px
- control
- 9999px
- sharp
- 0px
shadows2 items
- ink pool
- 0 8px 32px rgba(45,40,36,0.18)
- paper lift
- 0 18px 55px rgba(106,90,58,0.13)
spacing10 items
- 2xl
- 48px
- 3xl
- 64px
- 4xl
- 96px
- 5xl
- 128px
- lg
- 24px
- md
- 16px
- sm
- 8px
- unit
- 8px
- xl
- 32px
- xs
- 4px
surfaces4 items
- card
- #f7f1e8 with translucent ink wash pseudo-elements
- paper
- #f0ebe2 with subtle SVG fiber noise
- seal
- flat vermillion chip on paper
- toolbar
- rgba(247,241,232,0.78) with backdrop-filter blur(12px)
typography11 items
- base size
- 16px
- font body
- Noto Sans SC, sans-serif
- font heading
- ZCOOL XiaoWei, serif
- font mono
- IBM Plex Mono, monospace
- google fonts url
- https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Noto+Sans+SC:wght@400;500;700&family=ZCOOL+XiaoWei&display=swap
- letter spacing body
- -0.02em
- letter spacing heading
- -0.035em
- line height body
- 1.56
- line height heading
- 1.12
- scale ratio
- 1.25
- sizes
- 2xl 61px·base 16px·lg 25px·md 20px·sm 14px·xl 39px·xs 12px
rules
composition
Use one dominant restoration canvas rather than rows of equal cards.Pair dense control clusters with large empty paper fields.Keep scroll direction vertical, like unrolling a handscroll.Let ink blooms occupy negative space instead of adding decorative widgets.Break the grid with one oversized media panel or transcript strip.
density
Moderate density: one dense restoration console per viewport balanced by 64px to 128px empty intervals.
hierarchy
Headings use ZCOOL XiaoWei at -0.035em tracking and 1.12 line height.Body copy uses Noto Sans SC at 16px, -0.02em tracking, and 1.56 line height.Numeric and timecode labels use IBM Plex Mono in small all-caps capsules.Vermillion only marks primary action, current frame, or provenance stamp.
signature patterns
- 0
- css concept body::before and .wash-field::after use radial-gradient rgba(45,40,36,.10) blobs animated with transform scale and opacity.·description Layered radial-gradient pseudo-elements slowly scale and drift for twenty-second cycles, resembling ink dispersing through water without creating a synthetic rainbow gradient.·name Ink diffusion background
- 1
- css concept @keyframes paintIn { from { opacity:0; filter:blur(6px); transform:translateY(16px) } to { opacity:1; filter:blur(0); transform:none } }·description Panels and controls enter with blur-to-sharp opacity transitions and a short vertical settle, making interface structure appear brushed onto paper.·name Paint-in reveal
- 2
- css concept .paper-panel::before uses low-opacity radial-gradient washes; border:1px solid rgba(26,22,18,.09); border-radius:24px.·description Cards use a 24px radius, hairline ink borders, warm shadows, and inset pseudo-elements with diluted sumi and moss washes clipped inside the panel.·name Paper wash panels
- 3
- css concept .seal { background:#b83a2d; color:#f7f1e8; border-radius:0 or 9999px; letter-spacing:.08em }·description Small square or pill vermillion marks provide emphasis like a carved seal, used sparingly on active states and provenance metadata.·name Seal-stamp emphasis
layout
not set
guidance
- Use animated ink diffusion backgrounds that slowly breathe and pulse.
- Apply paint-in blur-to-sharp reveals on major panels.
- Maintain generous negative space as active liubai composition.
- Use warm brown shadows and near-invisible ink borders.
- Keep vermillion emphasis sparse, like a seal stamp.
- Style every input, select, checkbox, and button as paper controls.
- Do not use pure white backgrounds or cold grey SaaS borders.
- Do not create equal three-card catalog sections.
- Do not use abrupt transitions under 400ms for primary movement.
- Do not mix arbitrary radius values; commit to 24px containers and pill controls.
- Do not use more than two accents in a viewport.
- Do not leave browser-default form elements visible.
katagami spec
# Ink Wash Motion
## Philosophy
A contemplative interface language for living ink on warm paper: content appears as if painted into existence, structure breathes with soft diffusion, and sparse vermillion marks punctuate otherwise restrained sumi surfaces.
### Values
- living stillness
- liubai negative space
- warm paper tactility
- diluted sumi hierarchy
- sparse vermillion emphasis
- slow organic motion
- visible imperfection
### Anti-Values
- synthetic SaaS chrome
- fast abrupt animation
- pure white sterile backgrounds
- dense equal-card grids
- rainbow accent palettes
### Visual Character
- Warm rice-paper foundations use #f0ebe2 and fibrous noise overlays so every panel feels absorbent rather than glassy or plastic.
- Diluted sumi hierarchy uses near-black text, low-opacity ink washes, and soft radial blooms instead of hard grey divider systems.
- Sparse vermillion marks appear as small seal-like chips and focus states, never as broad saturated fills or decorative gradients.
- Slow paint-in motion combines opacity, blur removal, and small translate transforms with cubic-bezier(0.23, 1, 0.32, 1) timing.
- Asymmetric scroll composition leaves large liubai voids beside dense restoration controls so emptiness becomes a structural element.
## Tokens
### Borders
- **Color**: rgba(26,22,18,0.09)
- **Ink Rule**: 1px solid rgba(26,22,18,0.09)
- **Style**: solid
- **Width**: 1px
### Colors
| Name | Value |
|------|-------|
| accent | `#b83a2d` |
| background | `#f0ebe2` |
| border | `rgba(26,22,18,0.09)` |
| ink_wash_light | `rgba(45,40,36,0.05)` |
| ink_wash_medium | `rgba(45,40,36,0.15)` |
| muted | `#756b61` |
| primary | `#2d2824` |
| secondary | `#3f6858` |
| surface | `#f7f1e8` |
| surface_solid | `#f7f1e8` |
| tertiary | `#6a5a3a` |
| text | `#1a1612` |
### Motion
- **Duration Diffuse**: 20000ms
- **Duration Fast**: 420ms
- **Duration Normal**: 800ms
- **Duration Slow**: 1600ms
- **Easing Organic**: cubic-bezier(0.23, 1, 0.32, 1)
- **Paint In**: opacity + blur(6px to 0) + translateY(16px to 0)
- **Reduced Motion**: disable drift and blur animations
### Radii
- **Container**: 24px
- **Control**: 9999px
- **Sharp**: 0px
### Shadows
- **Ink Pool**: 0 8px 32px rgba(45,40,36,0.18)
- **Paper Lift**: 0 18px 55px rgba(106,90,58,0.13)
### Spacing
- **2xl**: 48px
- **3xl**: 64px
- **4xl**: 96px
- **5xl**: 128px
- **Lg**: 24px
- **Md**: 16px
- **Sm**: 8px
- **Unit**: 8px
- **Xl**: 32px
- **Xs**: 4px
### Surfaces
- **Card**: #f7f1e8 with translucent ink wash pseudo-elements
- **Paper**: #f0ebe2 with subtle SVG fiber noise
- **Seal**: flat vermillion chip on paper
- **Toolbar**: rgba(247,241,232,0.78) with backdrop-filter blur(12px)
### Typography
- **Base Size**: 16px
- **Font Body**: Noto Sans SC, sans-serif
- **Font Heading**: ZCOOL XiaoWei, serif
- **Font Mono**: IBM Plex Mono, monospace
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Noto+Sans+SC:wght@400;500;700&family=ZCOOL+XiaoWei&display=swap
- **Letter Spacing Body**: -0.02em
- **Letter Spacing Heading**: -0.035em
- **Line Height Body**: 1.56
- **Line Height Heading**: 1.12
- **Scale Ratio**: 1.25
- **Sizes**: {"2xl":"61px","base":"16px","lg":"25px","md":"20px","sm":"14px","xl":"39px","xs":"12px"}
## Rules
### Composition
- Use one dominant restoration canvas rather than rows of equal cards.
- Pair dense control clusters with large empty paper fields.
- Keep scroll direction vertical, like unrolling a handscroll.
- Let ink blooms occupy negative space instead of adding decorative widgets.
- Break the grid with one oversized media panel or transcript strip.
### Density
Moderate density: one dense restoration console per viewport balanced by 64px to 128px empty intervals.
### Hierarchy
- Headings use ZCOOL XiaoWei at -0.035em tracking and 1.12 line height.
- Body copy uses Noto Sans SC at 16px, -0.02em tracking, and 1.56 line height.
- Numeric and timecode labels use IBM Plex Mono in small all-caps capsules.
- Vermillion only marks primary action, current frame, or provenance stamp.
### Signature Patterns
- {"css_concept":"body::before and .wash-field::after use radial-gradient rgba(45,40,36,.10) blobs animated with transform scale and opacity.","description":"Layered radial-gradient pseudo-elements slowly scale and drift for twenty-second cycles, resembling ink dispersing through water without creating a synthetic rainbow gradient.","name":"Ink diffusion background"}
- {"css_concept":"@keyframes paintIn { from { opacity:0; filter:blur(6px); transform:translateY(16px) } to { opacity:1; filter:blur(0); transform:none } }","description":"Panels and controls enter with blur-to-sharp opacity transitions and a short vertical settle, making interface structure appear brushed onto paper.","name":"Paint-in reveal"}
- {"css_concept":".paper-panel::before uses low-opacity radial-gradient washes; border:1px solid rgba(26,22,18,.09); border-radius:24px.","description":"Cards use a 24px radius, hairline ink borders, warm shadows, and inset pseudo-elements with diluted sumi and moss washes clipped inside the panel.","name":"Paper wash panels"}
- {"css_concept":".seal { background:#b83a2d; color:#f7f1e8; border-radius:0 or 9999px; letter-spacing:.08em }","description":"Small square or pill vermillion marks provide emphasis like a carved seal, used sparingly on active states and provenance metadata.","name":"Seal-stamp emphasis"}
## Guidance
### Do
- Use animated ink diffusion backgrounds that slowly breathe and pulse.
- Apply paint-in blur-to-sharp reveals on major panels.
- Maintain generous negative space as active liubai composition.
- Use warm brown shadows and near-invisible ink borders.
- Keep vermillion emphasis sparse, like a seal stamp.
- Style every input, select, checkbox, and button as paper controls.
### Don't
- Do not use pure white backgrounds or cold grey SaaS borders.
- Do not create equal three-card catalog sections.
- Do not use abrupt transitions under 400ms for primary movement.
- Do not mix arbitrary radius values; commit to 24px containers and pill controls.
- Do not use more than two accents in a viewport.
- Do not leave browser-default form elements visible.
### Accessibility
- **Contrast**: #1a1612 on #f0ebe2 exceeds WCAG AA; #756b61 is reserved for larger or secondary copy.
- **Focus**: 3px vermillion outline with offset on all controls.
- **Motion**: prefers-reduced-motion disables diffusion and paint-in blur.
### Usage Context
Film restoration tools, meditative media archives, nature-documentary libraries, art gallery interpretation systems, storytelling products, and wellness applications.
DESIGN.md
---
version: "alpha"
name: "Ink Wash Motion"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
accent: "#b83a2d"
background: "#f0ebe2"
muted: "#756b61"
primary: "#2d2824"
secondary: "#3f6858"
surface: "#f7f1e8"
surface_solid: "#f7f1e8"
tertiary: "#6a5a3a"
text: "#1a1612"
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:
container: "24px"
control: "9999px"
sharp: "0px"
spacing:
2xl: "48px"
3xl: "64px"
4xl: "96px"
5xl: "128px"
lg: "24px"
md: "16px"
sm: "8px"
unit: "8px"
xl: "32px"
xs: "4px"
components:
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-background:
backgroundColor: "{colors.background}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-primary:
backgroundColor: "{colors.primary}"
color-reference-secondary:
backgroundColor: "{colors.secondary}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_solid:
backgroundColor: "{colors.surface_solid}"
color-reference-tertiary:
backgroundColor: "{colors.tertiary}"
color-reference-text:
backgroundColor: "{colors.text}"
button-primary:
backgroundColor: "{colors.primary}"
textColor: "#ffffff"
typography: "{typography.label-md}"
rounded: "16px"
padding: "{spacing.md}"
card-surface:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "16px"
padding: "{spacing.md}"
input-default:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "16px"
height: "44px"
---
# Ink Wash Motion
## Overview
A contemplative interface language for living ink on warm paper: content appears as if painted into existence, structure breathes with soft diffusion, and sparse vermillion marks punctuate otherwise restrained sumi surfaces.
### Values
- living stillness
- liubai negative space
- warm paper tactility
- diluted sumi hierarchy
- sparse vermillion emphasis
- slow organic motion
- visible imperfection
### Anti-Values
- synthetic SaaS chrome
- fast abrupt animation
- pure white sterile backgrounds
- dense equal-card grids
- rainbow accent palettes
### Visual Character
- Warm rice-paper foundations use #f0ebe2 and fibrous noise overlays so every panel feels absorbent rather than glassy or plastic.
- Diluted sumi hierarchy uses near-black text, low-opacity ink washes, and soft radial blooms instead of hard grey divider systems.
- Sparse vermillion marks appear as small seal-like chips and focus states, never as broad saturated fills or decorative gradients.
- Slow paint-in motion combines opacity, blur removal, and small translate transforms with cubic-bezier(0.23, 1, 0.32, 1) timing.
- Asymmetric scroll composition leaves large liubai voids beside dense restoration controls so emptiness becomes a structural element.
## 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 | `#b83a2d` |
| background | `#f0ebe2` |
| muted | `#756b61` |
| primary | `#2d2824` |
| secondary | `#3f6858` |
| surface | `#f7f1e8` |
| surface_solid | `#f7f1e8` |
| tertiary | `#6a5a3a` |
| text | `#1a1612` |
## 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
- **2xl**: `48px`
- **3xl**: `64px`
- **4xl**: `96px`
- **5xl**: `128px`
- **Lg**: `24px`
- **Md**: `16px`
- **Sm**: `8px`
- **Unit**: `8px`
- **Xl**: `32px`
- **Xs**: `4px`
## Elevation & Depth
### Shadows
- **Ink Pool**: 0 8px 32px rgba(45,40,36,0.18)
- **Paper Lift**: 0 18px 55px rgba(106,90,58,0.13)
## Shapes
### Rounded
- **Container**: `24px`
- **Control**: `9999px`
- **Sharp**: `0px`
### Surfaces
- **Card**: #f7f1e8 with translucent ink wash pseudo-elements
- **Paper**: #f0ebe2 with subtle SVG fiber noise
- **Seal**: flat vermillion chip on paper
- **Toolbar**: rgba(247,241,232,0.78) with backdrop-filter blur(12px)
### Borders
- **Color**: rgba(26,22,18,0.09)
- **Ink Rule**: 1px solid rgba(26,22,18,0.09)
- **Style**: solid
- **Width**: 1px
## Components
### Composition
- Use one dominant restoration canvas rather than rows of equal cards.
- Pair dense control clusters with large empty paper fields.
- Keep scroll direction vertical, like unrolling a handscroll.
- Let ink blooms occupy negative space instead of adding decorative widgets.
- Break the grid with one oversized media panel or transcript strip.
### Density
Moderate density: one dense restoration console per viewport balanced by 64px to 128px empty intervals.
### Hierarchy
- Headings use ZCOOL XiaoWei at -0.035em tracking and 1.12 line height.
- Body copy uses Noto Sans SC at 16px, -0.02em tracking, and 1.56 line height.
- Numeric and timecode labels use IBM Plex Mono in small all-caps capsules.
- Vermillion only marks primary action, current frame, or provenance stamp.
### Signature Patterns
- {"css_concept":"body::before and .wash-field::after use radial-gradient rgba(45,40,36,.10) blobs animated with transform scale and opacity.","description":"Layered radial-gradient pseudo-elements slowly scale and drift for twenty-second cycles, resembling ink dispersing through water without creating a synthetic rainbow gradient.","name":"Ink diffusion background"}
- {"css_concept":"@keyframes paintIn { from { opacity:0; filter:blur(6px); transform:translateY(16px) } to { opacity:1; filter:blur(0); transform:none } }","description":"Panels and controls enter with blur-to-sharp opacity transitions and a short vertical settle, making interface structure appear brushed onto paper.","name":"Paint-in reveal"}
- {"css_concept":".paper-panel::before uses low-opacity radial-gradient washes; border:1px solid rgba(26,22,18,.09); border-radius:24px.","description":"Cards use a 24px radius, hairline ink borders, warm shadows, and inset pseudo-elements with diluted sumi and moss washes clipped inside the panel.","name":"Paper wash panels"}
- {"css_concept":".seal { background:#b83a2d; color:#f7f1e8; border-radius:0 or 9999px; letter-spacing:.08em }","description":"Small square or pill vermillion marks provide emphasis like a carved seal, used sparingly on active states and provenance metadata.","name":"Seal-stamp emphasis"}
## 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-019dacc5-7ef2-7ae2-aa88-8dd096d61a60/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 Use animated ink diffusion backgrounds that slowly breathe and pulse.
- Do Apply paint-in blur-to-sharp reveals on major panels.
- Do Maintain generous negative space as active liubai composition.
- Do Use warm brown shadows and near-invisible ink borders.
- Do Keep vermillion emphasis sparse, like a seal stamp.
- Do Style every input, select, checkbox, and button as paper controls.
- Don't Do not use pure white backgrounds or cold grey SaaS borders.
- Don't Do not create equal three-card catalog sections.
- Don't Do not use abrupt transitions under 400ms for primary movement.
- Don't Do not mix arbitrary radius values; commit to 24px containers and pill controls.
- Don't Do not use more than two accents in a viewport.
- Don't Do not leave browser-default form elements visible.
### Accessibility
- **Contrast**: #1a1612 on #f0ebe2 exceeds WCAG AA; #756b61 is reserved for larger or secondary copy.
- **Focus**: 3px vermillion outline with offset on all controls.
- **Motion**: prefers-reduced-motion disables diffusion and paint-in blur.
### Usage Context
Film restoration tools, meditative media archives, nature-documentary libraries, art gallery interpretation systems, storytelling products, and wellness applications.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "ink-wash-motion",
"type": "registry:theme",
"title": "Ink Wash Motion shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#f0ebe2",
"foreground": "#1a1612",
"card": "#f7f1e8",
"card-foreground": "#1a1612",
"popover": "#f7f1e8",
"popover-foreground": "#1a1612",
"primary": "#2d2824",
"primary-foreground": "#ffffff",
"secondary": "#3f6858",
"secondary-foreground": "#ffffff",
"muted": "#756b61",
"muted-foreground": "#1a1612",
"accent": "#b83a2d",
"accent-foreground": "#ffffff",
"destructive": "#dc2626",
"border": "rgba(26,22,18,0.09)",
"input": "rgba(26,22,18,0.09)",
"ring": "#b83a2d",
"chart-1": "#2d2824",
"chart-2": "#3f6858",
"chart-3": "#b83a2d",
"chart-4": "#16a34a",
"chart-5": "#d97706",
"sidebar": "#f7f1e8",
"sidebar-foreground": "#1a1612",
"sidebar-primary": "#2d2824",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#b83a2d",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "rgba(26,22,18,0.09)",
"sidebar-ring": "#b83a2d",
"radius": "0.625rem"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#2d2824",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#b83a2d",
"accent-foreground": "#ffffff",
"destructive": "#dc2626",
"border": "#303642",
"input": "#303642",
"ring": "#b83a2d",
"chart-1": "#2d2824",
"chart-2": "#3f6858",
"chart-3": "#b83a2d",
"chart-4": "#16a34a",
"chart-5": "#d97706",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#2d2824",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#b83a2d",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#b83a2d",
"radius": "0.625rem"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019dacc5-7ef2-7ae2-aa88-8dd096d61a60",
"slug": "ink-wash-motion",
"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",
"ink_rule",
"style",
"width"
],
"colors": [
"accent",
"background",
"border",
"ink_wash_light",
"ink_wash_medium",
"muted",
"primary",
"secondary",
"surface",
"surface_solid",
"tertiary",
"text"
],
"motion": [
"duration_diffuse",
"duration_fast",
"duration_normal",
"duration_slow",
"easing_organic",
"paint_in",
"reduced_motion"
],
"radii": [
"container",
"control",
"sharp"
],
"shadows": [
"ink_pool",
"paper_lift"
],
"spacing": [
"2xl",
"3xl",
"4xl",
"5xl",
"lg",
"md",
"sm",
"unit",
"xl",
"xs"
],
"surfaces": [
"card",
"paper",
"seal",
"toolbar"
],
"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 · ink-wash-motion
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
Components
New
Card title
Components rendered with this language’s tokens — colors, type, and rounded corners as specified.
Spacing
- 2xl48px
- 3xl64px
- 4xl96px
- 5xl128px
- lg24px
- md16px
- sm8px
- unit8px
- xl32px
- xs4px
Shape
container24px
control9999px
sharp0px
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: #f0ebe2;
--foreground: #1a1612;
--card: #f7f1e8;
--card-foreground: #1a1612;
--popover: #f7f1e8;
--popover-foreground: #1a1612;
--primary: #2d2824;
--primary-foreground: #ffffff;
--secondary: #3f6858;
--secondary-foreground: #ffffff;
--muted: #756b61;
--muted-foreground: #1a1612;
--accent: #b83a2d;
--accent-foreground: #ffffff;
--destructive: #dc2626;
--border: rgba(26,22,18,0.09);
--input: rgba(26,22,18,0.09);
--ring: #b83a2d;
--chart-1: #2d2824;
--chart-2: #3f6858;
--chart-3: #b83a2d;
--chart-4: #16a34a;
--chart-5: #d97706;
--sidebar: #f7f1e8;
--sidebar-foreground: #1a1612;
--sidebar-primary: #2d2824;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #b83a2d;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: rgba(26,22,18,0.09);
--sidebar-ring: #b83a2d;
--radius: 0.625rem;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #2d2824;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #b83a2d;
--accent-foreground: #ffffff;
--destructive: #dc2626;
--border: #303642;
--input: #303642;
--ring: #b83a2d;
--chart-1: #2d2824;
--chart-2: #3f6858;
--chart-3: #b83a2d;
--chart-4: #16a34a;
--chart-5: #d97706;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #2d2824;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #b83a2d;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #b83a2d;
--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 InkWashMotionShadcnKit() {
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">Ink Wash Motion</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": "ink-wash-motion",
"type": "registry:theme",
"title": "Ink Wash Motion shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#f0ebe2",
"foreground": "#1a1612",
"card": "#f7f1e8",
"card-foreground": "#1a1612",
"popover": "#f7f1e8",
"popover-foreground": "#1a1612",
"primary": "#2d2824",
"primary-foreground": "#ffffff",
"secondary": "#3f6858",
"secondary-foreground": "#ffffff",
"muted": "#756b61",
"muted-foreground": "#1a1612",
"accent": "#b83a2d",
"accent-foreground": "#ffffff",
"destructive": "#dc2626",
"border": "rgba(26,22,18,0.09)",
"input": "rgba(26,22,18,0.09)",
"ring": "#b83a2d",
"chart-1": "#2d2824",
"chart-2": "#3f6858",
"chart-3": "#b83a2d",
"chart-4": "#16a34a",
"chart-5": "#d97706",
"sidebar": "#f7f1e8",
"sidebar-foreground": "#1a1612",
"sidebar-primary": "#2d2824",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#b83a2d",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "rgba(26,22,18,0.09)",
"sidebar-ring": "#b83a2d",
"radius": "0.625rem"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#2d2824",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#b83a2d",
"accent-foreground": "#ffffff",
"destructive": "#dc2626",
"border": "#303642",
"input": "#303642",
"ring": "#b83a2d",
"chart-1": "#2d2824",
"chart-2": "#3f6858",
"chart-3": "#b83a2d",
"chart-4": "#16a34a",
"chart-5": "#d97706",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#2d2824",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#b83a2d",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#b83a2d",
"radius": "0.625rem"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019dacc5-7ef2-7ae2-aa88-8dd096d61a60",
"slug": "ink-wash-motion",
"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",
"ink_rule",
"style",
"width"
],
"colors": [
"accent",
"background",
"border",
"ink_wash_light",
"ink_wash_medium",
"muted",
"primary",
"secondary",
"surface",
"surface_solid",
"tertiary",
"text"
],
"motion": [
"duration_diffuse",
"duration_fast",
"duration_normal",
"duration_slow",
"easing_organic",
"paint_in",
"reduced_motion"
],
"radii": [
"container",
"control",
"sharp"
],
"shadows": [
"ink_pool",
"paper_lift"
],
"spacing": [
"2xl",
"3xl",
"4xl",
"5xl",
"lg",
"md",
"sm",
"unit",
"xl",
"xs"
],
"surfaces": [
"card",
"paper",
"seal",
"toolbar"
],
"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
# Ink Wash Motion shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019dacc5-7ef2-7ae2-aa88-8dd096d61a60`
Slug: `ink-wash-motion`
## Intent
A contemplative interface language for living ink on warm paper: content appears as if painted into existence, structure breathes with soft diffusion, and sparse vermillion marks punctuate otherwise restrained sumi surfaces.
## 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": "#b83a2d",
"background": "#f0ebe2",
"border": "rgba(26,22,18,0.09)",
"ink_wash_light": "rgba(45,40,36,0.05)",
"ink_wash_medium": "rgba(45,40,36,0.15)",
"muted": "#756b61",
"primary": "#2d2824",
"secondary": "#3f6858",
"surface": "#f7f1e8",
"surface_solid": "#f7f1e8",
"tertiary": "#6a5a3a",
"text": "#1a1612"
}
Typography:
{
"base_size": "16px",
"font_body": "Noto Sans SC, sans-serif",
"font_heading": "ZCOOL XiaoWei, serif",
"font_mono": "IBM Plex Mono, monospace",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Noto+Sans+SC:wght@400;500;700&family=ZCOOL+XiaoWei&display=swap",
"letter_spacing_body": "-0.02em",
"letter_spacing_heading": "-0.035em",
"line_height_body": "1.56",
"line_height_heading": "1.12",
"scale_ratio": "1.25",
"sizes": {
"2xl": "61px",
"base": "16px",
"lg": "25px",
"md": "20px",
"sm": "14px",
"xl": "39px",
"xs": "12px"
}
}
## Visual character to preserve
- Warm rice-paper foundations use #f0ebe2 and fibrous noise overlays so every panel feels absorbent rather than glassy or plastic.
- Diluted sumi hierarchy uses near-black text, low-opacity ink washes, and soft radial blooms instead of hard grey divider systems.
- Sparse vermillion marks appear as small seal-like chips and focus states, never as broad saturated fills or decorative gradients.
- Slow paint-in motion combines opacity, blur removal, and small translate transforms with cubic-bezier(0.23, 1, 0.32, 1) timing.
- Asymmetric scroll composition leaves large liubai voids beside dense restoration controls so emptiness becomes a structural element.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "solid",
"underlay": false,
"grain": true,
"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/ink-wash-motion/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: Use animated ink diffusion backgrounds that slowly breathe and pulse.; Apply paint-in blur-to-sharp reveals on major panels.; Maintain generous negative space as active liubai composition.; Use warm brown shadows and near-invisible ink borders.; Keep vermillion emphasis sparse, like a seal stamp.; Style every input, select, checkbox, and button as paper controls.
- Do not: Do not use pure white backgrounds or cold grey SaaS borders.; Do not create equal three-card catalog sections.; Do not use abrupt transitions under 400ms for primary movement.; Do not mix arbitrary radius values; commit to 24px containers and pill controls.; Do not use more than two accents in a viewport.; Do not leave browser-default form elements visible.
## 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 InkWashMotionShadcnKit() {
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">Ink Wash Motion</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-019dacc5-7ef2-7ae2-aa88-8dd096d61a60",
"name": "Ink Wash Motion",
"slug": "ink-wash-motion"
},
"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 rice-paper foundations use #f0ebe2 and fibrous noise overlays so every panel feels absorbent rather than glassy or plastic.",
"Diluted sumi hierarchy uses near-black text, low-opacity ink washes, and soft radial blooms instead of hard grey divider systems.",
"Sparse vermillion marks appear as small seal-like chips and focus states, never as broad saturated fills or decorative gradients.",
"Slow paint-in motion combines opacity, blur removal, and small translate transforms with cubic-bezier(0.23, 1, 0.32, 1) timing.",
"Asymmetric scroll composition leaves large liubai voids beside dense restoration controls so emptiness becomes a structural element."
],
"visualProfile": {
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "solid",
"underlay": false,
"grain": true,
"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": "Ink Wash Motion 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": [
"Use animated ink diffusion backgrounds that slowly breathe and pulse.",
"Apply paint-in blur-to-sharp reveals on major panels.",
"Maintain generous negative space as active liubai composition.",
"Use warm brown shadows and near-invisible ink borders.",
"Keep vermillion emphasis sparse, like a seal stamp.",
"Style every input, select, checkbox, and button as paper controls."
],
"dont": [
"Do not use pure white backgrounds or cold grey SaaS borders.",
"Do not create equal three-card catalog sections.",
"Do not use abrupt transitions under 400ms for primary movement.",
"Do not mix arbitrary radius values; commit to 24px containers and pill controls.",
"Do not use more than two accents in a viewport.",
"Do not leave browser-default form elements visible."
]
}
}
related
More like this
Buncho Scrapbookshares japanese-ma · paper-texture · asymmetric-spaceBungu Minimalshares japanese-ma · paper-texture · asymmetric-spaceFusen Boardshares japanese-ma · paper-texture · asymmetric-spaceJapanese Stationery Grid Systemshares japanese-ma · paper-texture · asymmetric-spaceKukan Press Gridshares japanese-ma · paper-texture · asymmetric-spaceShuimo Mistshares japanese-ma · paper-texture · asymmetric-space