back to gallerydo avoid
design language·ma-wabi-sabi-spatial-minimalism
Ma Wabi-Sabi Spatial Minimalism
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
Ma Wabi-Sabi Spatial Minimalism translates Japanese ideas of interval, emptiness, quiet affordance, and imperfect material presence into a digital interface language. It draws from MUJI no-brand restraint, Kenya Hara’s idea of emptiness as an open vessel, Naoto Fukasawa’s without-thought product affordances, and Tadao Ando’s disciplined planes of concrete, light, and shadow. The language is not decorative minimalism; it is spatial editing. Every component earns its place by leaving enough silence around it for the user to understand function, hierarchy, and mood without visual coercion.
values
Active emptinessMaterial restraintQuiet affordanceWeathered precisionLight as hierarchyNo-brand neutrality
anti-values
×Ornamental Japanism×Luxury spa minimalism×Tech showroom gloss×Over-compression
tokens
colors16 items
primary
#1A1714
secondary
#5F5951
accent
#8A6F4D
background
#FFFFFF
surface
#F7F5F0
text
#1A1714
muted
#7C766D
border
#D8D2C8
error
#8B2F2A
success
#4E6B4A
warning
#9A6B22
info
#4D6270
stone
#B8B0A4
shadow_grey
#3E3B37
weathered_wood
#77624D
paper_warm
#FAF9F6
typography10 items
- heading font
- Noto Serif JP
- body font
- IBM Plex Sans
- mono font
- IBM Plex Mono
- base size
- 16px
- scale ratio
- 1.25
- line height
- 1.55
- letter spacing
- -0.02em
- google fonts url
- https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600&family=Noto+Serif+JP:wght@500;600;700&display=swap
- sizes
- caption 12px·body 16px·lead 18px·h3 22px·h2 32px·h1 48px
- weights
- regular 400·medium 500·semibold 600·bold 700
spacing2 items
- base
- 8px
- scale
- 4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px, 96px, 128px
radii5 items
- none
- 0px
- sm
- 0px
- md
- 0px
- lg
- 16px
- full
- 9999px
shadows3 items
- sm
- 0 1px 0 rgba(26, 23, 20, 0.08)
- md
- 0 18px 50px rgba(26, 23, 20, 0.08)
- lg
- 0 28px 80px rgba(26, 23, 20, 0.10)
surfaces4 items
- treatment
- paper
- card style
- Flat warm-white or stone paper planes with visible edge restraint, slight noise, and no glossy highlight.
- bg pattern
- noise
- texture css
- radial speckle overlays at 0.035 opacity plus long horizontal shadow bands to imply concrete and paper grain.
borders4 items
- default width
- 1px
- accent width
- 2px
- style
- solid
- character
- Thin stone hairlines define planes quietly; selected areas receive a single charcoal leading edge rather than thick frames.
motion3 items
- duration
- 180ms
- easing
- cubic-bezier(0.2, 0, 0.1, 1)
- philosophy
- deliberate; transitions should feel like a paper screen settling, never bouncing or celebrating.
rules
composition
Use a quiet asymmetrical grid: reserve one column or bay as ma, place primary work slightly off center, and let secondary controls sit in narrow vertical planes. Do not center everything. Major groups need 48px to 96px of visible interval before the next group. Use alignment and silence to create rhythm.
hierarchy
Establish priority by spatial isolation, typographic scale, hairline accents, and shadow density. H1 and key numbers use Noto Serif JP with generous line height; labels use IBM Plex Mono in small caps. Accent color appears only on status marks, selected text, and one call to action.
density
Medium-low density with deliberate pauses: lists are compact enough for work but never crowded, forms have full-height controls, and the screen should feel edited rather than empty.
signature patterns
A persistent empty ma bay is implemented as a blank grid column or sidebar gutter with only one vertical hairline and rotated section label.Important panels use a 2px charcoal inset left border while all other edges remain 1px stone hairlines.Paper-concrete texture is created with pseudo-element radial speckles and horizontal shadow bands at very low opacity across the full canvas.Section headers combine small IBM Plex Mono overlines with widely spaced negative space below, separated by a short 32px hairline rule.Interactive focus states use an offset square outline and a muted earth fill, preserving 0px structural corners instead of glow or color floods.
layout
density
Medium-low density chosen to preserve ma; every cluster gets enough void to read as a deliberate pause rather than unused screen.
grid
Desktop uses a 12-column grid with 24px gutters and max width 1360px; column 1 is often left empty as ma, content spans columns 2-12 with nested 3/6/3 working regions.
whitespace
Whitespace is active structure. Use 48px minimum between primary regions, 64px around hero or decision areas, and 96px top/bottom intervals where a user should slow down.
breakpoints
- desktop
- 1200px and above: 12 columns with empty ma bay
- tablet
- 768px-1199px: 8 columns, ma bay becomes top interval
- mobile
- 0-767px: single column, intervals reduce to 32px but remain visible
responsive
Collapse side rails beneath the main panel on tablet, stack all panels on mobile, keep controls 44px minimum, and allow tables to become card rows rather than horizontal overflow.
guidance
- Use pure #FFFFFF for the main background and reserve warm off-white for paper surfaces only.
- Keep letter-spacing at -0.02em on all text and rely on Noto Serif JP plus IBM Plex Sans for quiet authority.
- Create at least one intentionally empty spatial bay in desktop layouts to make ma visible.
- Use 0px square corners for structural UI, reserving 9999px only for tags, avatars, and tiny status pills.
- Express hierarchy with hairlines, shadow, spacing, and type scale before adding color.
- Let forms and controls feel tactile through border weight, inset edges, and measured hover fills.
- Use muted earth accent sparingly for selected states, not as a brand wash.
- Make imperfections subtle: texture should be barely visible and never reduce legibility.
- Do not use gradients, glossy cards, glassmorphism, neon, or crypto-style color washes.
- Do not decorate with stereotypical Japanese motifs, brush fonts, red circles, waves, or floral patterns.
- Do not fill every grid column; visible emptiness is part of the layout system.
- Do not use random radii such as 8px, 12px, 20px, 32px, or 48px.
- Do not center all content or make symmetrical landing-page sections.
- Do not use pastel beige backgrounds in place of actual white and material surfaces.
- Do not hide affordances so much that controls become ambiguous.
- Do not add multiple accent colors; one muted earth accent is enough.
katagami spec
# Ma Wabi-Sabi Spatial Minimalism
## Philosophy
Ma Wabi-Sabi Spatial Minimalism translates Japanese ideas of interval, emptiness, quiet affordance, and imperfect material presence into a digital interface language. It draws from MUJI no-brand restraint, Kenya Hara’s idea of emptiness as an open vessel, Naoto Fukasawa’s without-thought product affordances, and Tadao Ando’s disciplined planes of concrete, light, and shadow. The language is not decorative minimalism; it is spatial editing. Every component earns its place by leaving enough silence around it for the user to understand function, hierarchy, and mood without visual coercion.
### Values
- {"name":"Active emptiness","explanation":"White and off-white fields behave as structural intervals, not leftover space. Large gaps, isolated controls, and quiet panels make pause legible."}
- {"name":"Material restraint","explanation":"Surfaces suggest paper, stone, concrete, weathered wood, and shadow through slight texture and edge discipline rather than illustration."}
- {"name":"Quiet affordance","explanation":"Controls are obvious through proportion, placement, weight, and tactile borders, avoiding loud color or decorative states."}
- {"name":"Weathered precision","explanation":"The layout is measured and rigorous, while micro-textures and muted earth tones keep it human and imperfect."}
- {"name":"Light as hierarchy","explanation":"Priority comes from illumination, shadow, and exposed space rather than badges, gradients, or saturated accents."}
- {"name":"No-brand neutrality","explanation":"The interface recedes behind the work, using understated typography and sparse labeling in the spirit of MUJI."}
### Anti-Values
- {"name":"Ornamental Japanism","explanation":"No cherry blossoms, faux calligraphy, red sun motifs, or decorative cultural clichés."}
- {"name":"Luxury spa minimalism","explanation":"Avoid beige-on-beige softness, excessive rounded corners, and lifestyle calm that weakens function."}
- {"name":"Tech showroom gloss","explanation":"No glassmorphism, neon accents, gradient buttons, or polished SaaS hero effects."}
- {"name":"Over-compression","explanation":"Do not pack the screen to prove efficiency; the space between objects is part of the content."}
### Visual Character
- A 12-column desktop grid with one deliberately empty left bay and asymmetrical content blocks offset into the remaining columns.
- Flat off-white paper panels with 1px stone borders and a single charcoal hairline accent on the leading edge of important containers.
- Large ma intervals: 48px to 96px gaps between major regions, leaving visible pause around forms, metrics, and navigation.
- Subtle concrete-paper texture made with low-opacity noise and thin horizontal shadow bands instead of gradients or decorative imagery.
- Square 0px corners on structural panels and controls, with only small tags and avatars using fully rounded 9999px pills.
## Tokens
### Colors
| Name | Value |
|------|-------|
| primary | `#1A1714` |
| secondary | `#5F5951` |
| accent | `#8A6F4D` |
| background | `#FFFFFF` |
| surface | `#F7F5F0` |
| text | `#1A1714` |
| muted | `#7C766D` |
| border | `#D8D2C8` |
| error | `#8B2F2A` |
| success | `#4E6B4A` |
| warning | `#9A6B22` |
| info | `#4D6270` |
| stone | `#B8B0A4` |
| shadow_grey | `#3E3B37` |
| weathered_wood | `#77624D` |
| paper_warm | `#FAF9F6` |
### Typography
- **Heading Font**: Noto Serif JP
- **Body Font**: IBM Plex Sans
- **Mono Font**: IBM Plex Mono
- **Base Size**: 16px
- **Scale Ratio**: 1.25
- **Line Height**: 1.55
- **Letter Spacing**: -0.02em
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600&family=Noto+Serif+JP:wght@500;600;700&display=swap
- **Sizes**: {"caption":"12px","body":"16px","lead":"18px","h3":"22px","h2":"32px","h1":"48px"}
- **Weights**: {"regular":400,"medium":500,"semibold":600,"bold":700}
### Spacing
- **Base**: 8px
- **Scale**: ["4px","8px","12px","16px","24px","32px","48px","64px","96px","128px"]
### Radii
- **None**: 0px
- **Sm**: 0px
- **Md**: 0px
- **Lg**: 16px
- **Full**: 9999px
### Shadows
- **Sm**: 0 1px 0 rgba(26, 23, 20, 0.08)
- **Md**: 0 18px 50px rgba(26, 23, 20, 0.08)
- **Lg**: 0 28px 80px rgba(26, 23, 20, 0.10)
### Surfaces
- **Treatment**: paper
- **Card Style**: Flat warm-white or stone paper planes with visible edge restraint, slight noise, and no glossy highlight.
- **Bg Pattern**: noise
- **Texture Css**: radial speckle overlays at 0.035 opacity plus long horizontal shadow bands to imply concrete and paper grain.
### Borders
- **Default Width**: 1px
- **Accent Width**: 2px
- **Style**: solid
- **Character**: Thin stone hairlines define planes quietly; selected areas receive a single charcoal leading edge rather than thick frames.
### Motion
- **Duration**: 180ms
- **Easing**: cubic-bezier(0.2, 0, 0.1, 1)
- **Philosophy**: deliberate; transitions should feel like a paper screen settling, never bouncing or celebrating.
## Rules
### Composition
Use a quiet asymmetrical grid: reserve one column or bay as ma, place primary work slightly off center, and let secondary controls sit in narrow vertical planes. Do not center everything. Major groups need 48px to 96px of visible interval before the next group. Use alignment and silence to create rhythm.
### Hierarchy
Establish priority by spatial isolation, typographic scale, hairline accents, and shadow density. H1 and key numbers use Noto Serif JP with generous line height; labels use IBM Plex Mono in small caps. Accent color appears only on status marks, selected text, and one call to action.
### Density
Medium-low density with deliberate pauses: lists are compact enough for work but never crowded, forms have full-height controls, and the screen should feel edited rather than empty.
### Signature Patterns
- A persistent empty ma bay is implemented as a blank grid column or sidebar gutter with only one vertical hairline and rotated section label.
- Important panels use a 2px charcoal inset left border while all other edges remain 1px stone hairlines.
- Paper-concrete texture is created with pseudo-element radial speckles and horizontal shadow bands at very low opacity across the full canvas.
- Section headers combine small IBM Plex Mono overlines with widely spaced negative space below, separated by a short 32px hairline rule.
- Interactive focus states use an offset square outline and a muted earth fill, preserving 0px structural corners instead of glow or color floods.
## Layout
### Density
Medium-low density chosen to preserve ma; every cluster gets enough void to read as a deliberate pause rather than unused screen.
### Grid
Desktop uses a 12-column grid with 24px gutters and max width 1360px; column 1 is often left empty as ma, content spans columns 2-12 with nested 3/6/3 working regions.
### Whitespace
Whitespace is active structure. Use 48px minimum between primary regions, 64px around hero or decision areas, and 96px top/bottom intervals where a user should slow down.
### Breakpoints
- **Desktop**: 1200px and above: 12 columns with empty ma bay
- **Tablet**: 768px-1199px: 8 columns, ma bay becomes top interval
- **Mobile**: 0-767px: single column, intervals reduce to 32px but remain visible
### Responsive
Collapse side rails beneath the main panel on tablet, stack all panels on mobile, keep controls 44px minimum, and allow tables to become card rows rather than horizontal overflow.
## Guidance
### Do
- Use pure #FFFFFF for the main background and reserve warm off-white for paper surfaces only.
- Keep letter-spacing at -0.02em on all text and rely on Noto Serif JP plus IBM Plex Sans for quiet authority.
- Create at least one intentionally empty spatial bay in desktop layouts to make ma visible.
- Use 0px square corners for structural UI, reserving 9999px only for tags, avatars, and tiny status pills.
- Express hierarchy with hairlines, shadow, spacing, and type scale before adding color.
- Let forms and controls feel tactile through border weight, inset edges, and measured hover fills.
- Use muted earth accent sparingly for selected states, not as a brand wash.
- Make imperfections subtle: texture should be barely visible and never reduce legibility.
### Don't
- Do not use gradients, glossy cards, glassmorphism, neon, or crypto-style color washes.
- Do not decorate with stereotypical Japanese motifs, brush fonts, red circles, waves, or floral patterns.
- Do not fill every grid column; visible emptiness is part of the layout system.
- Do not use random radii such as 8px, 12px, 20px, 32px, or 48px.
- Do not center all content or make symmetrical landing-page sections.
- Do not use pastel beige backgrounds in place of actual white and material surfaces.
- Do not hide affordances so much that controls become ambiguous.
- Do not add multiple accent colors; one muted earth accent is enough.
### Usage Context
Best for editorial tools, product inventory, design archives, calm operations dashboards, architecture portfolios, material libraries, and focused planning interfaces where reduction, touch, and careful reading matter.
### Accessibility
Maintain WCAG AA contrast on all text, make focus states visible with offset square outlines, keep touch targets at least 44px, never encode status by color alone, and ensure texture overlays stay behind content with low opacity.
DESIGN.md
---
version: "alpha"
name: "Ma Wabi-Sabi Spatial Minimalism"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
primary: "#1A1714"
secondary: "#5F5951"
accent: "#8A6F4D"
background: "#FFFFFF"
surface: "#F7F5F0"
text: "#1A1714"
muted: "#7C766D"
border: "#D8D2C8"
error: "#8B2F2A"
success: "#4E6B4A"
warning: "#9A6B22"
info: "#4D6270"
stone: "#B8B0A4"
shadow_grey: "#3E3B37"
weathered_wood: "#77624D"
paper_warm: "#FAF9F6"
typography:
headline-lg:
fontFamily: "Noto Serif JP"
fontSize: "1.953rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Noto Serif JP"
fontSize: "1.563rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "IBM Plex Sans"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.55
letterSpacing: "-0.02em"
label-md:
fontFamily: "IBM Plex Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
sm: "0px"
md: "0px"
lg: "16px"
full: "9999px"
spacing:
base: "8px"
xs: "4px"
sm: "8px"
md: "12px"
lg: "16px"
xl: "24px"
2xl: "32px"
3xl: "48px"
4xl: "64px"
step-8: "96px"
step-9: "128px"
components:
color-reference-primary:
backgroundColor: "{colors.primary}"
color-reference-secondary:
backgroundColor: "{colors.secondary}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-background:
backgroundColor: "{colors.background}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-warning:
backgroundColor: "{colors.warning}"
color-reference-info:
backgroundColor: "{colors.info}"
color-reference-stone:
backgroundColor: "{colors.stone}"
color-reference-shadow_grey:
backgroundColor: "{colors.shadow_grey}"
color-reference-weathered_wood:
backgroundColor: "{colors.weathered_wood}"
color-reference-paper_warm:
backgroundColor: "{colors.paper_warm}"
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"
---
# Ma Wabi-Sabi Spatial Minimalism
## Overview
Ma Wabi-Sabi Spatial Minimalism translates Japanese ideas of interval, emptiness, quiet affordance, and imperfect material presence into a digital interface language. It draws from MUJI no-brand restraint, Kenya Hara’s idea of emptiness as an open vessel, Naoto Fukasawa’s without-thought product affordances, and Tadao Ando’s disciplined planes of concrete, light, and shadow. The language is not decorative minimalism; it is spatial editing. Every component earns its place by leaving enough silence around it for the user to understand function, hierarchy, and mood without visual coercion.
### Values
- {"name":"Active emptiness","explanation":"White and off-white fields behave as structural intervals, not leftover space. Large gaps, isolated controls, and quiet panels make pause legible."}
- {"name":"Material restraint","explanation":"Surfaces suggest paper, stone, concrete, weathered wood, and shadow through slight texture and edge discipline rather than illustration."}
- {"name":"Quiet affordance","explanation":"Controls are obvious through proportion, placement, weight, and tactile borders, avoiding loud color or decorative states."}
- {"name":"Weathered precision","explanation":"The layout is measured and rigorous, while micro-textures and muted earth tones keep it human and imperfect."}
- {"name":"Light as hierarchy","explanation":"Priority comes from illumination, shadow, and exposed space rather than badges, gradients, or saturated accents."}
- {"name":"No-brand neutrality","explanation":"The interface recedes behind the work, using understated typography and sparse labeling in the spirit of MUJI."}
### Anti-Values
- {"name":"Ornamental Japanism","explanation":"No cherry blossoms, faux calligraphy, red sun motifs, or decorative cultural clichés."}
- {"name":"Luxury spa minimalism","explanation":"Avoid beige-on-beige softness, excessive rounded corners, and lifestyle calm that weakens function."}
- {"name":"Tech showroom gloss","explanation":"No glassmorphism, neon accents, gradient buttons, or polished SaaS hero effects."}
- {"name":"Over-compression","explanation":"Do not pack the screen to prove efficiency; the space between objects is part of the content."}
### Visual Character
- A 12-column desktop grid with one deliberately empty left bay and asymmetrical content blocks offset into the remaining columns.
- Flat off-white paper panels with 1px stone borders and a single charcoal hairline accent on the leading edge of important containers.
- Large ma intervals: 48px to 96px gaps between major regions, leaving visible pause around forms, metrics, and navigation.
- Subtle concrete-paper texture made with low-opacity noise and thin horizontal shadow bands instead of gradients or decorative imagery.
- Square 0px corners on structural panels and controls, with only small tags and avatars using fully rounded 9999px pills.
## Colors
Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.
| Token | Value |
|-------|-------|
| primary | `#1A1714` |
| secondary | `#5F5951` |
| accent | `#8A6F4D` |
| background | `#FFFFFF` |
| surface | `#F7F5F0` |
| text | `#1A1714` |
| muted | `#7C766D` |
| border | `#D8D2C8` |
| error | `#8B2F2A` |
| success | `#4E6B4A` |
| warning | `#9A6B22` |
| info | `#4D6270` |
| stone | `#B8B0A4` |
| shadow_grey | `#3E3B37` |
| weathered_wood | `#77624D` |
| paper_warm | `#FAF9F6` |
## Typography
- **Headline-Lg**: Noto Serif JP, 1.953rem, weight 700, line-height 1.1.
- **Headline-Md**: Noto Serif JP, 1.563rem, weight 600, line-height 1.15.
- **Body-Md**: IBM Plex Sans, 16px, weight 400, line-height 1.55.
- **Label-Md**: IBM Plex Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
- **Step-8**: `96px`
- **Step-9**: `128px`
### Density
Medium-low density chosen to preserve ma; every cluster gets enough void to read as a deliberate pause rather than unused screen.
### Grid
Desktop uses a 12-column grid with 24px gutters and max width 1360px; column 1 is often left empty as ma, content spans columns 2-12 with nested 3/6/3 working regions.
### Whitespace
Whitespace is active structure. Use 48px minimum between primary regions, 64px around hero or decision areas, and 96px top/bottom intervals where a user should slow down.
### Breakpoints
- **Desktop**: 1200px and above: 12 columns with empty ma bay
- **Tablet**: 768px-1199px: 8 columns, ma bay becomes top interval
- **Mobile**: 0-767px: single column, intervals reduce to 32px but remain visible
### Responsive
Collapse side rails beneath the main panel on tablet, stack all panels on mobile, keep controls 44px minimum, and allow tables to become card rows rather than horizontal overflow.
## Elevation & Depth
### Shadows
- **Sm**: 0 1px 0 rgba(26, 23, 20, 0.08)
- **Md**: 0 18px 50px rgba(26, 23, 20, 0.08)
- **Lg**: 0 28px 80px rgba(26, 23, 20, 0.10)
## Shapes
### Rounded
- **None**: `0px`
- **Sm**: `0px`
- **Md**: `0px`
- **Lg**: `16px`
- **Full**: `9999px`
### Surfaces
- **Treatment**: paper
- **Card Style**: Flat warm-white or stone paper planes with visible edge restraint, slight noise, and no glossy highlight.
- **Bg Pattern**: noise
- **Texture Css**: radial speckle overlays at 0.035 opacity plus long horizontal shadow bands to imply concrete and paper grain.
### Borders
- **Default Width**: 1px
- **Accent Width**: 2px
- **Style**: solid
- **Character**: Thin stone hairlines define planes quietly; selected areas receive a single charcoal leading edge rather than thick frames.
## Components
### Composition
Use a quiet asymmetrical grid: reserve one column or bay as ma, place primary work slightly off center, and let secondary controls sit in narrow vertical planes. Do not center everything. Major groups need 48px to 96px of visible interval before the next group. Use alignment and silence to create rhythm.
### Hierarchy
Establish priority by spatial isolation, typographic scale, hairline accents, and shadow density. H1 and key numbers use Noto Serif JP with generous line height; labels use IBM Plex Mono in small caps. Accent color appears only on status marks, selected text, and one call to action.
### Density
Medium-low density with deliberate pauses: lists are compact enough for work but never crowded, forms have full-height controls, and the screen should feel edited rather than empty.
### Signature Patterns
- A persistent empty ma bay is implemented as a blank grid column or sidebar gutter with only one vertical hairline and rotated section label.
- Important panels use a 2px charcoal inset left border while all other edges remain 1px stone hairlines.
- Paper-concrete texture is created with pseudo-element radial speckles and horizontal shadow bands at very low opacity across the full canvas.
- Section headers combine small IBM Plex Mono overlines with widely spaced negative space below, separated by a short 32px hairline rule.
- Interactive focus states use an offset square outline and a muted earth fill, preserving 0px structural corners instead of glow or color floods.
## 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/ma-wabi-sabi-spatial-minimalism/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 pure #FFFFFF for the main background and reserve warm off-white for paper surfaces only.
- Do Keep letter-spacing at -0.02em on all text and rely on Noto Serif JP plus IBM Plex Sans for quiet authority.
- Do Create at least one intentionally empty spatial bay in desktop layouts to make ma visible.
- Do Use 0px square corners for structural UI, reserving 9999px only for tags, avatars, and tiny status pills.
- Do Express hierarchy with hairlines, shadow, spacing, and type scale before adding color.
- Do Let forms and controls feel tactile through border weight, inset edges, and measured hover fills.
- Do Use muted earth accent sparingly for selected states, not as a brand wash.
- Do Make imperfections subtle: texture should be barely visible and never reduce legibility.
- Don't Do not use gradients, glossy cards, glassmorphism, neon, or crypto-style color washes.
- Don't Do not decorate with stereotypical Japanese motifs, brush fonts, red circles, waves, or floral patterns.
- Don't Do not fill every grid column; visible emptiness is part of the layout system.
- Don't Do not use random radii such as 8px, 12px, 20px, 32px, or 48px.
- Don't Do not center all content or make symmetrical landing-page sections.
- Don't Do not use pastel beige backgrounds in place of actual white and material surfaces.
- Don't Do not hide affordances so much that controls become ambiguous.
- Don't Do not add multiple accent colors; one muted earth accent is enough.
### Usage Context
Best for editorial tools, product inventory, design archives, calm operations dashboards, architecture portfolios, material libraries, and focused planning interfaces where reduction, touch, and careful reading matter.
### Accessibility
Maintain WCAG AA contrast on all text, make focus states visible with offset square outlines, keep touch targets at least 44px, never encode status by color alone, and ensure texture overlays stay behind content with low opacity.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "ma-wabi-sabi-spatial-minimalism",
"type": "registry:theme",
"title": "Ma Wabi-Sabi Spatial Minimalism shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#FFFFFF",
"foreground": "#1A1714",
"card": "#F7F5F0",
"card-foreground": "#1A1714",
"popover": "#F7F5F0",
"popover-foreground": "#1A1714",
"primary": "#1A1714",
"primary-foreground": "#ffffff",
"secondary": "#5F5951",
"secondary-foreground": "#ffffff",
"muted": "#7C766D",
"muted-foreground": "#1A1714",
"accent": "#8A6F4D",
"accent-foreground": "#ffffff",
"destructive": "#8B2F2A",
"border": "#D8D2C8",
"input": "#D8D2C8",
"ring": "#8A6F4D",
"chart-1": "#1A1714",
"chart-2": "#5F5951",
"chart-3": "#8A6F4D",
"chart-4": "#4E6B4A",
"chart-5": "#9A6B22",
"sidebar": "#F7F5F0",
"sidebar-foreground": "#1A1714",
"sidebar-primary": "#1A1714",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#4D6270",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#D8D2C8",
"sidebar-ring": "#8A6F4D",
"radius": "0px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#1A1714",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#8A6F4D",
"accent-foreground": "#ffffff",
"destructive": "#8B2F2A",
"border": "#303642",
"input": "#303642",
"ring": "#8A6F4D",
"chart-1": "#1A1714",
"chart-2": "#5F5951",
"chart-3": "#8A6F4D",
"chart-4": "#4E6B4A",
"chart-5": "#9A6B22",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#1A1714",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#8A6F4D",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#8A6F4D",
"radius": "0px"
}
},
"meta": {
"source": "katagami",
"languageId": "ma-wabi-sabi-spatial-minimalism",
"slug": "ma-wabi-sabi-spatial-minimalism",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"colors": [
"accent",
"background",
"border",
"error",
"info",
"muted",
"paper_warm",
"primary",
"secondary",
"shadow_grey",
"stone",
"success",
"surface",
"text",
"warning",
"weathered_wood"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio",
"sizes",
"weights"
],
"spacing": [
"base",
"scale"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"lg",
"md",
"sm"
],
"surfaces": [
"bg_pattern",
"card_style",
"texture_css",
"treatment"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
]
}
}
}
```in the wild
embodiments
the full element showcase
embodiment · ma-wabi-sabi-spatial-minimalism
DESIGN.md
at a glance
Typography
headline-lgNoto Serif JP · 31px · 700
The quick brown fox jumps
headline-mdNoto Serif JP · 25px · 600
The quick brown fox jumps
body-mdIBM Plex Sans · 16px · 400
The quick brown fox jumps
label-mdIBM Plex Mono · 12px · 600
The quick brown fox jumps
Components
New
Card title
Components rendered with this language’s tokens — colors, type, and rounded corners as specified.
Spacing
- base8px
- xs4px
- sm8px
- md12px
- lg16px
- xl24px
- 2xl32px
- 3xl48px
- 4xl64px
- step-896px
- step-9128px
Shape
none0px
sm0px
md0px
lg16px
full9999px
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: #FFFFFF;
--foreground: #1A1714;
--card: #F7F5F0;
--card-foreground: #1A1714;
--popover: #F7F5F0;
--popover-foreground: #1A1714;
--primary: #1A1714;
--primary-foreground: #ffffff;
--secondary: #5F5951;
--secondary-foreground: #ffffff;
--muted: #7C766D;
--muted-foreground: #1A1714;
--accent: #8A6F4D;
--accent-foreground: #ffffff;
--destructive: #8B2F2A;
--border: #D8D2C8;
--input: #D8D2C8;
--ring: #8A6F4D;
--chart-1: #1A1714;
--chart-2: #5F5951;
--chart-3: #8A6F4D;
--chart-4: #4E6B4A;
--chart-5: #9A6B22;
--sidebar: #F7F5F0;
--sidebar-foreground: #1A1714;
--sidebar-primary: #1A1714;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #4D6270;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #D8D2C8;
--sidebar-ring: #8A6F4D;
--radius: 0px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #1A1714;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #8A6F4D;
--accent-foreground: #ffffff;
--destructive: #8B2F2A;
--border: #303642;
--input: #303642;
--ring: #8A6F4D;
--chart-1: #1A1714;
--chart-2: #5F5951;
--chart-3: #8A6F4D;
--chart-4: #4E6B4A;
--chart-5: #9A6B22;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #1A1714;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #8A6F4D;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #8A6F4D;
--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 MaWabiSabiSpatialMinimalismShadcnKit() {
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">Ma Wabi-Sabi Spatial Minimalism</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": "ma-wabi-sabi-spatial-minimalism",
"type": "registry:theme",
"title": "Ma Wabi-Sabi Spatial Minimalism shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#FFFFFF",
"foreground": "#1A1714",
"card": "#F7F5F0",
"card-foreground": "#1A1714",
"popover": "#F7F5F0",
"popover-foreground": "#1A1714",
"primary": "#1A1714",
"primary-foreground": "#ffffff",
"secondary": "#5F5951",
"secondary-foreground": "#ffffff",
"muted": "#7C766D",
"muted-foreground": "#1A1714",
"accent": "#8A6F4D",
"accent-foreground": "#ffffff",
"destructive": "#8B2F2A",
"border": "#D8D2C8",
"input": "#D8D2C8",
"ring": "#8A6F4D",
"chart-1": "#1A1714",
"chart-2": "#5F5951",
"chart-3": "#8A6F4D",
"chart-4": "#4E6B4A",
"chart-5": "#9A6B22",
"sidebar": "#F7F5F0",
"sidebar-foreground": "#1A1714",
"sidebar-primary": "#1A1714",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#4D6270",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#D8D2C8",
"sidebar-ring": "#8A6F4D",
"radius": "0px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#1A1714",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#8A6F4D",
"accent-foreground": "#ffffff",
"destructive": "#8B2F2A",
"border": "#303642",
"input": "#303642",
"ring": "#8A6F4D",
"chart-1": "#1A1714",
"chart-2": "#5F5951",
"chart-3": "#8A6F4D",
"chart-4": "#4E6B4A",
"chart-5": "#9A6B22",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#1A1714",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#8A6F4D",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#8A6F4D",
"radius": "0px"
}
},
"meta": {
"source": "katagami",
"languageId": "ma-wabi-sabi-spatial-minimalism",
"slug": "ma-wabi-sabi-spatial-minimalism",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"colors": [
"accent",
"background",
"border",
"error",
"info",
"muted",
"paper_warm",
"primary",
"secondary",
"shadow_grey",
"stone",
"success",
"surface",
"text",
"warning",
"weathered_wood"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio",
"sizes",
"weights"
],
"spacing": [
"base",
"scale"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"lg",
"md",
"sm"
],
"surfaces": [
"bg_pattern",
"card_style",
"texture_css",
"treatment"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
]
}
}
}
component recipescompatibility fallback
# Ma Wabi-Sabi Spatial Minimalism shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `ma-wabi-sabi-spatial-minimalism`
Slug: `ma-wabi-sabi-spatial-minimalism`
## Intent
Ma Wabi-Sabi Spatial Minimalism translates Japanese ideas of interval, emptiness, quiet affordance, and imperfect material presence into a digital interface language. It draws from MUJI no-brand restraint, Kenya Hara’s idea of emptiness as an open vessel, Naoto Fukasawa’s without-thought product affordances, and Tadao Ando’s disciplined planes of concrete, light, and shadow. The language is not decorative minimalism; it is spatial editing. Every component earns its place by leaving enough silence around it for the user to understand function, hierarchy, and mood without visual coercion.
## 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:
{
"primary": "#1A1714",
"secondary": "#5F5951",
"accent": "#8A6F4D",
"background": "#FFFFFF",
"surface": "#F7F5F0",
"text": "#1A1714",
"muted": "#7C766D",
"border": "#D8D2C8",
"error": "#8B2F2A",
"success": "#4E6B4A",
"warning": "#9A6B22",
"info": "#4D6270",
"stone": "#B8B0A4",
"shadow_grey": "#3E3B37",
"weathered_wood": "#77624D",
"paper_warm": "#FAF9F6"
}
Typography:
{
"heading_font": "Noto Serif JP",
"body_font": "IBM Plex Sans",
"mono_font": "IBM Plex Mono",
"base_size": "16px",
"scale_ratio": 1.25,
"line_height": 1.55,
"letter_spacing": "-0.02em",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600&family=Noto+Serif+JP:wght@500;600;700&display=swap",
"sizes": {
"caption": "12px",
"body": "16px",
"lead": "18px",
"h3": "22px",
"h2": "32px",
"h1": "48px"
},
"weights": {
"regular": 400,
"medium": 500,
"semibold": 600,
"bold": 700
}
}
## Visual character to preserve
- A 12-column desktop grid with one deliberately empty left bay and asymmetrical content blocks offset into the remaining columns.
- Flat off-white paper panels with 1px stone borders and a single charcoal hairline accent on the leading edge of important containers.
- Large ma intervals: 48px to 96px gaps between major regions, leaving visible pause around forms, metrics, and navigation.
- Subtle concrete-paper texture made with low-opacity noise and thin horizontal shadow bands instead of gradients or decorative imagery.
- Square 0px corners on structural panels and controls, with only small tags and avatars using fully rounded 9999px pills.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "pebble",
"border": "solid",
"underlay": true,
"grain": true,
"stickerBadges": false,
"motion": "lift-rotate",
"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/ma-wabi-sabi-spatial-minimalism/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 pure #FFFFFF for the main background and reserve warm off-white for paper surfaces only.; Keep letter-spacing at -0.02em on all text and rely on Noto Serif JP plus IBM Plex Sans for quiet authority.; Create at least one intentionally empty spatial bay in desktop layouts to make ma visible.; Use 0px square corners for structural UI, reserving 9999px only for tags, avatars, and tiny status pills.; Express hierarchy with hairlines, shadow, spacing, and type scale before adding color.; Let forms and controls feel tactile through border weight, inset edges, and measured hover fills.; Use muted earth accent sparingly for selected states, not as a brand wash.; Make imperfections subtle: texture should be barely visible and never reduce legibility.
- Do not: Do not use gradients, glossy cards, glassmorphism, neon, or crypto-style color washes.; Do not decorate with stereotypical Japanese motifs, brush fonts, red circles, waves, or floral patterns.; Do not fill every grid column; visible emptiness is part of the layout system.; Do not use random radii such as 8px, 12px, 20px, 32px, or 48px.; Do not center all content or make symmetrical landing-page sections.; Do not use pastel beige backgrounds in place of actual white and material surfaces.; Do not hide affordances so much that controls become ambiguous.; Do not add multiple accent colors; one muted earth accent is enough.
## 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 MaWabiSabiSpatialMinimalismShadcnKit() {
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">Ma Wabi-Sabi Spatial Minimalism</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
{
"density": "Medium-low density chosen to preserve ma; every cluster gets enough void to read as a deliberate pause rather than unused screen.",
"grid": "Desktop uses a 12-column grid with 24px gutters and max width 1360px; column 1 is often left empty as ma, content spans columns 2-12 with nested 3/6/3 working regions.",
"whitespace": "Whitespace is active structure. Use 48px minimum between primary regions, 64px around hero or decision areas, and 96px top/bottom intervals where a user should slow down.",
"breakpoints": {
"desktop": "1200px and above: 12 columns with empty ma bay",
"tablet": "768px-1199px: 8 columns, ma bay becomes top interval",
"mobile": "0-767px: single column, intervals reduce to 32px but remain visible"
},
"responsive": "Collapse side rails beneath the main panel on tablet, stack all panels on mobile, keep controls 44px minimum, and allow tables to become card rows rather than horizontal overflow."
}
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": "ma-wabi-sabi-spatial-minimalism",
"name": "Ma Wabi-Sabi Spatial Minimalism",
"slug": "ma-wabi-sabi-spatial-minimalism"
},
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"primitives": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"identityNotes": [
"A 12-column desktop grid with one deliberately empty left bay and asymmetrical content blocks offset into the remaining columns.",
"Flat off-white paper panels with 1px stone borders and a single charcoal hairline accent on the leading edge of important containers.",
"Large ma intervals: 48px to 96px gaps between major regions, leaving visible pause around forms, metrics, and navigation.",
"Subtle concrete-paper texture made with low-opacity noise and thin horizontal shadow bands instead of gradients or decorative imagery.",
"Square 0px corners on structural panels and controls, with only small tags and avatars using fully rounded 9999px pills."
],
"visualProfile": {
"family": "paper-collage",
"material": "paper",
"contour": "pebble",
"border": "solid",
"underlay": true,
"grain": true,
"stickerBadges": false,
"motion": "lift-rotate",
"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": "Ma Wabi-Sabi Spatial Minimalism 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 pure #FFFFFF for the main background and reserve warm off-white for paper surfaces only.",
"Keep letter-spacing at -0.02em on all text and rely on Noto Serif JP plus IBM Plex Sans for quiet authority.",
"Create at least one intentionally empty spatial bay in desktop layouts to make ma visible.",
"Use 0px square corners for structural UI, reserving 9999px only for tags, avatars, and tiny status pills.",
"Express hierarchy with hairlines, shadow, spacing, and type scale before adding color.",
"Let forms and controls feel tactile through border weight, inset edges, and measured hover fills.",
"Use muted earth accent sparingly for selected states, not as a brand wash.",
"Make imperfections subtle: texture should be barely visible and never reduce legibility."
],
"dont": [
"Do not use gradients, glossy cards, glassmorphism, neon, or crypto-style color washes.",
"Do not decorate with stereotypical Japanese motifs, brush fonts, red circles, waves, or floral patterns.",
"Do not fill every grid column; visible emptiness is part of the layout system.",
"Do not use random radii such as 8px, 12px, 20px, 32px, or 48px.",
"Do not center all content or make symmetrical landing-page sections.",
"Do not use pastel beige backgrounds in place of actual white and material surfaces.",
"Do not hide affordances so much that controls become ambiguous.",
"Do not add multiple accent colors; one muted earth accent is enough."
]
}
}
related