back to gallery
design language·pressure-field-ink-archive

Pressure-Field Ink Archive

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 production-credible product language for a contemporary Chinese ink and calligraphy collection interface, translating brush pressure, shi-force, paper absorption, liu-bai negative space, and seal discipline into responsive UI structure rather than decorative orientalism. It treats gesture as data density: heavier strokes indicate active states, dry fibers indicate archival uncertainty, and vermilion appears only as authorship or decisive action.
values
Calligraphic force understood as pressure, velocity, pause, and release rather than pictorial brush decoration.Scholarly archive clarity: provenance, seals, inscriptions, materials, and exhibition metadata remain readable before atmosphere.Liu-bai negative space as a structural layout principle with large quiet margins and asymmetric object placement.Material specificity through xuan-paper fibers, ink-density fields, and dry-edge diffusion that can be implemented with CSS.Disciplined cinnabar accents used for authorship marks, selected states, and primary confirmation only.Contemporary art-catalogue pacing that can host experimental ink abstraction without collapsing into themed nostalgia.
anti-values
×Orientalist shorthand such as dragons, bamboo sprays, lantern motifs, red-black theatrical minimalism, or tourist-calligraphy type.×Literal brush gimmicks pasted onto buttons or icons without relation to pressure, hierarchy, or content state.×Generic dashboard modules, equal card rows, or decorative texture that lowers archival legibility.×Overuse of red as a brand wash; vermilion must stay rare, positional, and meaningful.
tokens
borders4 items
accent width
4px
character
near-invisible graphite hairlines at rgba(23,24,22,0.08) interrupted by pressure bars and square cinnabar seal blocks
default width
1px
style
solid
colors12 items
accent
#A93424
background
#F4F0E6
border
#000000
error
#9F3B32
info
#536B78
muted
#74736C
primary
#1E211F
secondary
#62645F
success
#596F55
surface
#FBF8EF
text
#171816
warning
#9A7B3A
motion3 items
duration
320ms
easing
cubic-bezier(0.19, 1, 0.22, 1)
philosophy
motion behaves like wet ink settling: opacity deepens first, blur resolves second, and panels translate only 2-4px to preserve scholarly calm
radii5 items
full
9999px
lg
24px
md
16px
none
0
sm
0
shadows3 items
lg
0 44px 120px rgba(23,24,22,0.19)
md
0 18px 70px rgba(23,24,22,0.13)
sm
0 1px 0 rgba(23,24,22,0.08)
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64, 96, 128
surfaces3 items
bg pattern
multi-layer radial-gradient ink pools plus repeating-linear-gradient fiber threads at very low opacity
card style
flat archival paper sheets with hairline graphite borders, pressure-weighted ink rules, sparse seal-red stamps, and no generic rounded SaaS gloss
treatment
warm xuan-paper substrate with CSS fiber grain, soft ink blooms, and controlled dry-brush edge masks
typography8 items
base size
16px
body font
Commissioner
google fonts url
https://fonts.googleapis.com/css2?family=Commissioner:wght@400;500;600;700&family=Courier+Prime:wght@400;700&family=Gloock&display=swap
heading font
Gloock
letter spacing
-0.02em
line height
1.55
mono font
Courier Prime
scale ratio
1.24
rules
composition
Start with a large off-white void, then anchor one dense column of metadata near an edge rather than centering content.Use an asymmetric 12-column grid: object image or pressure field spans 7 columns, notes span 3, and at least 2 columns remain empty.Let pressure bars, stamps, and fiber fields define modules before conventional cards; avoid equal three-card rows.Place seal marks at terminal reading positions: after a title, beside a confirmed filter, or at the bottom of a provenance panel.Use one full-bleed ink-density field per screen to break the archive grid and give the language its embodied gesture.
density
Density moves like ink loading a brush: dense provenance clusters sit beside very open paper fields, with tight 4-12px relationships inside labels and 64-128px separations between interpretive zones.
hierarchy
Display titles use Gloock with tight tracking and large line-height contrast, paired with small Courier Prime folios for accession logic.Body information is calm Commissioner at 15-16px with -0.02em tracking, prioritizing provenance and scholarly notes over decorative copy.Active states deepen from graphite to ink-black; only the final committed or authored state receives seal red.Metadata chips are small, square, and text-heavy, while primary artwork descriptions receive broader line measure and more surrounding void.
signature patterns
Pressure-field backgrounds use multiple blurred radial-gradients whose opacity increases behind active panels, mapping interaction to ink density and depth.Paper cards use ::before fiber overlays and ::after dry-edge masks so every surface has xuan-paper tactility without using image assets.Navigation and selected objects use a pressure-rule system: thin graphite rules expand into thick ink bars and terminate in a small square vermilion seal.Archive records include stamp-like square counters rotated less than one degree, with inset red texture made from repeating-linear-gradients instead of emoji or icons.The main grid deliberately preserves a named liu-bai void by reserving empty columns and allowing the pressure field to cross module boundaries.
layout
breakpoints

mobile <= 640px, tablet 641px-1024px, desktop >= 1025px; mobile stacks metadata after the pressure field while preserving 48px minimum voids.

density
Low-to-medium overall density with a deliberate contrast between compact archive taxonomies and expansive unoccupied paper space; the page must pass the 8:1 spacing rhythm through 4px micro gaps and 128px major voids.
grid
Desktop uses a 12-column grid at max-width 1440px with 24px gutters, a 7-column gesture/object zone, a 3-column metadata zone, and 2 columns held empty as liu-bai void.
responsive
On tablet the grid becomes 6 columns with the void as a full-width pause between sections; on mobile all pressure rules move to the top edge and seal chips become inline terminal marks.
whitespace
Whitespace is treated as paper breathing room: never fill the top-left and bottom-right simultaneously, separate interpretive sections by 64-128px, and keep related metadata within 4-12px clusters.
guidance
do
  • Use ink density, blur, opacity, and rule weight as the main state language for hover, focus, selected, and confirmed actions.
  • Keep cinnabar/seal red under five percent of the viewport and reserve it for authorship, selection, destructive attention, or primary completion.
  • Pair large paper voids with dense accession metadata so the interface feels like a scholarly catalogue rather than a decorative theme.
  • Make surface texture procedural and subtle: fiber overlays should be visible on close inspection but never interfere with body text.
  • Use square stamps, accession folios, provenance columns, and seal placement to reference collection practice with specificity.
  • Maintain body text at 15-16px, -0.02em tracking, and generous leading for bilingual or transliterated archival content.
  • Let one compositional element break the grid: a pressure field, oversized artwork title, or full-bleed paper sheet.
avoid
  • Do not use bamboo, dragons, lanterns, chopstick icons, emoji, tourist brush-script fonts, or red-black theatrical clichés.
  • Do not flood the interface with red; if more than one primary surface is red, the seal discipline has failed.
  • Do not create three equal feature cards or generic dashboard widgets; every section needs distinct weight and purpose.
  • Do not paste brushstroke images behind buttons; pressure must be expressed through CSS weight, opacity, blur, and spacing.
  • Do not let texture reduce contrast below WCAG AA for body copy or metadata.
  • Do not center every title or fill every column; liu-bai void is a requirement, not leftover space.
  • Do not confuse East Asian minimalism generically with Chinese calligraphy scholarship; use provenance, seals, inscriptions, paper, and ink handling as anchors.
katagami spec
# Pressure-Field Ink Archive

## Philosophy

A production-credible product language for a contemporary Chinese ink and calligraphy collection interface, translating brush pressure, shi-force, paper absorption, liu-bai negative space, and seal discipline into responsive UI structure rather than decorative orientalism. It treats gesture as data density: heavier strokes indicate active states, dry fibers indicate archival uncertainty, and vermilion appears only as authorship or decisive action.

### Values

- Calligraphic force understood as pressure, velocity, pause, and release rather than pictorial brush decoration.
- Scholarly archive clarity: provenance, seals, inscriptions, materials, and exhibition metadata remain readable before atmosphere.
- Liu-bai negative space as a structural layout principle with large quiet margins and asymmetric object placement.
- Material specificity through xuan-paper fibers, ink-density fields, and dry-edge diffusion that can be implemented with CSS.
- Disciplined cinnabar accents used for authorship marks, selected states, and primary confirmation only.
- Contemporary art-catalogue pacing that can host experimental ink abstraction without collapsing into themed nostalgia.

### Anti-Values

- Orientalist shorthand such as dragons, bamboo sprays, lantern motifs, red-black theatrical minimalism, or tourist-calligraphy type.
- Literal brush gimmicks pasted onto buttons or icons without relation to pressure, hierarchy, or content state.
- Generic dashboard modules, equal card rows, or decorative texture that lowers archival legibility.
- Overuse of red as a brand wash; vermilion must stay rare, positional, and meaningful.

### Visual Character

- Off-white paper substrate uses layered radial ink-density stains and fine fiber noise pseudo-elements, never flat white app chrome.
- Interactive cards are asymmetric paper sheets with pressure-weighted left rules: 1px graphite at rest, 4px ink at focus, and vermilion only when selected.
- Hero composition reserves a broad liu-bai void while one dense metadata column and one oversized gestural pressure field break the grid.
- Controls use blurred ink-depth halos and variable opacity shadows to map hover or active states to brush pressure instead of glossy elevation.
- Seal-red marks appear as small square authorship chips, stamped counters, and confirmation buttons with hard edges and imperfect ink-fill texture.

## Tokens

### Borders

- **Accent Width**: 4px
- **Character**: near-invisible graphite hairlines at rgba(23,24,22,0.08) interrupted by pressure bars and square cinnabar seal blocks
- **Default Width**: 1px
- **Style**: solid

### Colors

| Name | Value |
|------|-------|
| accent | `#A93424` |
| background | `#F4F0E6` |
| border | `#000000` |
| error | `#9F3B32` |
| info | `#536B78` |
| muted | `#74736C` |
| primary | `#1E211F` |
| secondary | `#62645F` |
| success | `#596F55` |
| surface | `#FBF8EF` |
| text | `#171816` |
| warning | `#9A7B3A` |

### Motion

- **Duration**: 320ms
- **Easing**: cubic-bezier(0.19, 1, 0.22, 1)
- **Philosophy**: motion behaves like wet ink settling: opacity deepens first, blur resolves second, and panels translate only 2-4px to preserve scholarly calm

### Radii

- **Full**: 9999px
- **Lg**: 24px
- **Md**: 16px
- **None**: 0
- **Sm**: 0

### Shadows

- **Lg**: 0 44px 120px rgba(23,24,22,0.19)
- **Md**: 0 18px 70px rgba(23,24,22,0.13)
- **Sm**: 0 1px 0 rgba(23,24,22,0.08)

### Spacing

- **Base**: 8px
- **Scale**: [4,8,12,16,24,32,48,64,96,128]

### Surfaces

- **Bg Pattern**: multi-layer radial-gradient ink pools plus repeating-linear-gradient fiber threads at very low opacity
- **Card Style**: flat archival paper sheets with hairline graphite borders, pressure-weighted ink rules, sparse seal-red stamps, and no generic rounded SaaS gloss
- **Treatment**: warm xuan-paper substrate with CSS fiber grain, soft ink blooms, and controlled dry-brush edge masks

### Typography

- **Base Size**: 16px
- **Body Font**: Commissioner
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Commissioner:wght@400;500;600;700&family=Courier+Prime:wght@400;700&family=Gloock&display=swap
- **Heading Font**: Gloock
- **Letter Spacing**: -0.02em
- **Line Height**: 1.55
- **Mono Font**: Courier Prime
- **Scale Ratio**: 1.24

## Rules

### Composition

- Start with a large off-white void, then anchor one dense column of metadata near an edge rather than centering content.
- Use an asymmetric 12-column grid: object image or pressure field spans 7 columns, notes span 3, and at least 2 columns remain empty.
- Let pressure bars, stamps, and fiber fields define modules before conventional cards; avoid equal three-card rows.
- Place seal marks at terminal reading positions: after a title, beside a confirmed filter, or at the bottom of a provenance panel.
- Use one full-bleed ink-density field per screen to break the archive grid and give the language its embodied gesture.

### Density

Density moves like ink loading a brush: dense provenance clusters sit beside very open paper fields, with tight 4-12px relationships inside labels and 64-128px separations between interpretive zones.

### Hierarchy

- Display titles use Gloock with tight tracking and large line-height contrast, paired with small Courier Prime folios for accession logic.
- Body information is calm Commissioner at 15-16px with -0.02em tracking, prioritizing provenance and scholarly notes over decorative copy.
- Active states deepen from graphite to ink-black; only the final committed or authored state receives seal red.
- Metadata chips are small, square, and text-heavy, while primary artwork descriptions receive broader line measure and more surrounding void.

### Signature Patterns

- Pressure-field backgrounds use multiple blurred radial-gradients whose opacity increases behind active panels, mapping interaction to ink density and depth.
- Paper cards use ::before fiber overlays and ::after dry-edge masks so every surface has xuan-paper tactility without using image assets.
- Navigation and selected objects use a pressure-rule system: thin graphite rules expand into thick ink bars and terminate in a small square vermilion seal.
- Archive records include stamp-like square counters rotated less than one degree, with inset red texture made from repeating-linear-gradients instead of emoji or icons.
- The main grid deliberately preserves a named liu-bai void by reserving empty columns and allowing the pressure field to cross module boundaries.

## Layout

### Breakpoints

mobile <= 640px, tablet 641px-1024px, desktop >= 1025px; mobile stacks metadata after the pressure field while preserving 48px minimum voids.

### Density

Low-to-medium overall density with a deliberate contrast between compact archive taxonomies and expansive unoccupied paper space; the page must pass the 8:1 spacing rhythm through 4px micro gaps and 128px major voids.

### Grid

Desktop uses a 12-column grid at max-width 1440px with 24px gutters, a 7-column gesture/object zone, a 3-column metadata zone, and 2 columns held empty as liu-bai void.

### Responsive

On tablet the grid becomes 6 columns with the void as a full-width pause between sections; on mobile all pressure rules move to the top edge and seal chips become inline terminal marks.

### Whitespace

Whitespace is treated as paper breathing room: never fill the top-left and bottom-right simultaneously, separate interpretive sections by 64-128px, and keep related metadata within 4-12px clusters.

## Guidance

### Do

- Use ink density, blur, opacity, and rule weight as the main state language for hover, focus, selected, and confirmed actions.
- Keep cinnabar/seal red under five percent of the viewport and reserve it for authorship, selection, destructive attention, or primary completion.
- Pair large paper voids with dense accession metadata so the interface feels like a scholarly catalogue rather than a decorative theme.
- Make surface texture procedural and subtle: fiber overlays should be visible on close inspection but never interfere with body text.
- Use square stamps, accession folios, provenance columns, and seal placement to reference collection practice with specificity.
- Maintain body text at 15-16px, -0.02em tracking, and generous leading for bilingual or transliterated archival content.
- Let one compositional element break the grid: a pressure field, oversized artwork title, or full-bleed paper sheet.

### Don't

- Do not use bamboo, dragons, lanterns, chopstick icons, emoji, tourist brush-script fonts, or red-black theatrical clichés.
- Do not flood the interface with red; if more than one primary surface is red, the seal discipline has failed.
- Do not create three equal feature cards or generic dashboard widgets; every section needs distinct weight and purpose.
- Do not paste brushstroke images behind buttons; pressure must be expressed through CSS weight, opacity, blur, and spacing.
- Do not let texture reduce contrast below WCAG AA for body copy or metadata.
- Do not center every title or fill every column; liu-bai void is a requirement, not leftover space.
- Do not confuse East Asian minimalism generically with Chinese calligraphy scholarship; use provenance, seals, inscriptions, paper, and ink handling as anchors.

### Accessibility

Maintain 4.5:1 contrast on text, avoid using red alone for status, provide visible focus through both pressure-rule thickening and outline contrast, and keep motion subtle with reduced-motion support.

### Usage Context

Best for museum collection browsers, contemporary ink exhibition catalogues, provenance review tools, artist estate archives, and premium cultural-institution apps where material gesture and scholarly metadata must coexist.
DESIGN.md
---
version: "alpha"
name: "Pressure-Field Ink Archive"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  accent: "#A93424"
  background: "#F4F0E6"
  border: "#000000"
  error: "#9F3B32"
  info: "#536B78"
  muted: "#74736C"
  primary: "#1E211F"
  secondary: "#62645F"
  success: "#596F55"
  surface: "#FBF8EF"
  text: "#171816"
  warning: "#9A7B3A"
typography:
  headline-lg:
    fontFamily: "Gloock"
    fontSize: "1.907rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.02em"
  headline-md:
    fontFamily: "Gloock"
    fontSize: "1.538rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.02em"
  body-md:
    fontFamily: "Commissioner"
    fontSize: "16px"
    fontWeight: 400
    lineHeight: 1.55
    letterSpacing: "-0.02em"
  label-md:
    fontFamily: "Courier Prime"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  full: "9999px"
  lg: "24px"
  md: "16px"
  none: "0px"
  sm: "0px"
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-accent:
    backgroundColor: "{colors.accent}"
  color-reference-background:
    backgroundColor: "{colors.background}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-primary:
    backgroundColor: "{colors.primary}"
  color-reference-secondary:
    backgroundColor: "{colors.secondary}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  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"
---

# Pressure-Field Ink Archive

## Overview

A production-credible product language for a contemporary Chinese ink and calligraphy collection interface, translating brush pressure, shi-force, paper absorption, liu-bai negative space, and seal discipline into responsive UI structure rather than decorative orientalism. It treats gesture as data density: heavier strokes indicate active states, dry fibers indicate archival uncertainty, and vermilion appears only as authorship or decisive action.

### Values

- Calligraphic force understood as pressure, velocity, pause, and release rather than pictorial brush decoration.
- Scholarly archive clarity: provenance, seals, inscriptions, materials, and exhibition metadata remain readable before atmosphere.
- Liu-bai negative space as a structural layout principle with large quiet margins and asymmetric object placement.
- Material specificity through xuan-paper fibers, ink-density fields, and dry-edge diffusion that can be implemented with CSS.
- Disciplined cinnabar accents used for authorship marks, selected states, and primary confirmation only.
- Contemporary art-catalogue pacing that can host experimental ink abstraction without collapsing into themed nostalgia.

### Anti-Values

- Orientalist shorthand such as dragons, bamboo sprays, lantern motifs, red-black theatrical minimalism, or tourist-calligraphy type.
- Literal brush gimmicks pasted onto buttons or icons without relation to pressure, hierarchy, or content state.
- Generic dashboard modules, equal card rows, or decorative texture that lowers archival legibility.
- Overuse of red as a brand wash; vermilion must stay rare, positional, and meaningful.

### Visual Character

- Off-white paper substrate uses layered radial ink-density stains and fine fiber noise pseudo-elements, never flat white app chrome.
- Interactive cards are asymmetric paper sheets with pressure-weighted left rules: 1px graphite at rest, 4px ink at focus, and vermilion only when selected.
- Hero composition reserves a broad liu-bai void while one dense metadata column and one oversized gestural pressure field break the grid.
- Controls use blurred ink-depth halos and variable opacity shadows to map hover or active states to brush pressure instead of glossy elevation.
- Seal-red marks appear as small square authorship chips, stamped counters, and confirmation buttons with hard edges and imperfect ink-fill texture.

## 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 | `#A93424` |
| background | `#F4F0E6` |
| border | `#000000` |
| error | `#9F3B32` |
| info | `#536B78` |
| muted | `#74736C` |
| primary | `#1E211F` |
| secondary | `#62645F` |
| success | `#596F55` |
| surface | `#FBF8EF` |
| text | `#171816` |
| warning | `#9A7B3A` |

## Typography

- **Headline-Lg**: Gloock, 1.907rem, weight 700, line-height 1.1.
- **Headline-Md**: Gloock, 1.538rem, weight 600, line-height 1.15.
- **Body-Md**: Commissioner, 16px, weight 400, line-height 1.55.
- **Label-Md**: Courier Prime, 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`

### Breakpoints

mobile <= 640px, tablet 641px-1024px, desktop >= 1025px; mobile stacks metadata after the pressure field while preserving 48px minimum voids.

### Density

Low-to-medium overall density with a deliberate contrast between compact archive taxonomies and expansive unoccupied paper space; the page must pass the 8:1 spacing rhythm through 4px micro gaps and 128px major voids.

### Grid

Desktop uses a 12-column grid at max-width 1440px with 24px gutters, a 7-column gesture/object zone, a 3-column metadata zone, and 2 columns held empty as liu-bai void.

### Responsive

On tablet the grid becomes 6 columns with the void as a full-width pause between sections; on mobile all pressure rules move to the top edge and seal chips become inline terminal marks.

### Whitespace

Whitespace is treated as paper breathing room: never fill the top-left and bottom-right simultaneously, separate interpretive sections by 64-128px, and keep related metadata within 4-12px clusters.

## Elevation & Depth

### Shadows

- **Lg**: 0 44px 120px rgba(23,24,22,0.19)
- **Md**: 0 18px 70px rgba(23,24,22,0.13)
- **Sm**: 0 1px 0 rgba(23,24,22,0.08)

## Shapes

### Rounded

- **Full**: `9999px`
- **Lg**: `24px`
- **Md**: `16px`
- **None**: `0px`
- **Sm**: `0px`

### Surfaces

- **Bg Pattern**: multi-layer radial-gradient ink pools plus repeating-linear-gradient fiber threads at very low opacity
- **Card Style**: flat archival paper sheets with hairline graphite borders, pressure-weighted ink rules, sparse seal-red stamps, and no generic rounded SaaS gloss
- **Treatment**: warm xuan-paper substrate with CSS fiber grain, soft ink blooms, and controlled dry-brush edge masks

### Borders

- **Accent Width**: 4px
- **Character**: near-invisible graphite hairlines at rgba(23,24,22,0.08) interrupted by pressure bars and square cinnabar seal blocks
- **Default Width**: 1px
- **Style**: solid

## Components

### Composition

- Start with a large off-white void, then anchor one dense column of metadata near an edge rather than centering content.
- Use an asymmetric 12-column grid: object image or pressure field spans 7 columns, notes span 3, and at least 2 columns remain empty.
- Let pressure bars, stamps, and fiber fields define modules before conventional cards; avoid equal three-card rows.
- Place seal marks at terminal reading positions: after a title, beside a confirmed filter, or at the bottom of a provenance panel.
- Use one full-bleed ink-density field per screen to break the archive grid and give the language its embodied gesture.

### Density

Density moves like ink loading a brush: dense provenance clusters sit beside very open paper fields, with tight 4-12px relationships inside labels and 64-128px separations between interpretive zones.

### Hierarchy

- Display titles use Gloock with tight tracking and large line-height contrast, paired with small Courier Prime folios for accession logic.
- Body information is calm Commissioner at 15-16px with -0.02em tracking, prioritizing provenance and scholarly notes over decorative copy.
- Active states deepen from graphite to ink-black; only the final committed or authored state receives seal red.
- Metadata chips are small, square, and text-heavy, while primary artwork descriptions receive broader line measure and more surrounding void.

### Signature Patterns

- Pressure-field backgrounds use multiple blurred radial-gradients whose opacity increases behind active panels, mapping interaction to ink density and depth.
- Paper cards use ::before fiber overlays and ::after dry-edge masks so every surface has xuan-paper tactility without using image assets.
- Navigation and selected objects use a pressure-rule system: thin graphite rules expand into thick ink bars and terminate in a small square vermilion seal.
- Archive records include stamp-like square counters rotated less than one degree, with inset red texture made from repeating-linear-gradients instead of emoji or icons.
- The main grid deliberately preserves a named liu-bai void by reserving empty columns and allowing the pressure field to cross module boundaries.

## 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/pressure-field-ink-archive/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 ink density, blur, opacity, and rule weight as the main state language for hover, focus, selected, and confirmed actions.
- Do Keep cinnabar/seal red under five percent of the viewport and reserve it for authorship, selection, destructive attention, or primary completion.
- Do Pair large paper voids with dense accession metadata so the interface feels like a scholarly catalogue rather than a decorative theme.
- Do Make surface texture procedural and subtle: fiber overlays should be visible on close inspection but never interfere with body text.
- Do Use square stamps, accession folios, provenance columns, and seal placement to reference collection practice with specificity.
- Do Maintain body text at 15-16px, -0.02em tracking, and generous leading for bilingual or transliterated archival content.
- Do Let one compositional element break the grid: a pressure field, oversized artwork title, or full-bleed paper sheet.
- Don't Do not use bamboo, dragons, lanterns, chopstick icons, emoji, tourist brush-script fonts, or red-black theatrical clichés.
- Don't Do not flood the interface with red; if more than one primary surface is red, the seal discipline has failed.
- Don't Do not create three equal feature cards or generic dashboard widgets; every section needs distinct weight and purpose.
- Don't Do not paste brushstroke images behind buttons; pressure must be expressed through CSS weight, opacity, blur, and spacing.
- Don't Do not let texture reduce contrast below WCAG AA for body copy or metadata.
- Don't Do not center every title or fill every column; liu-bai void is a requirement, not leftover space.
- Don't Do not confuse East Asian minimalism generically with Chinese calligraphy scholarship; use provenance, seals, inscriptions, paper, and ink handling as anchors.

### Accessibility

Maintain 4.5:1 contrast on text, avoid using red alone for status, provide visible focus through both pressure-rule thickening and outline contrast, and keep motion subtle with reduced-motion support.

### Usage Context

Best for museum collection browsers, contemporary ink exhibition catalogues, provenance review tools, artist estate archives, and premium cultural-institution apps where material gesture and scholarly metadata must coexist.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "pressure-field-ink-archive",
  "type": "registry:theme",
  "title": "Pressure-Field Ink Archive shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F4F0E6",
      "foreground": "#171816",
      "card": "#FBF8EF",
      "card-foreground": "#171816",
      "popover": "#FBF8EF",
      "popover-foreground": "#171816",
      "primary": "#1E211F",
      "primary-foreground": "#ffffff",
      "secondary": "#62645F",
      "secondary-foreground": "#ffffff",
      "muted": "#74736C",
      "muted-foreground": "#171816",
      "accent": "#A93424",
      "accent-foreground": "#ffffff",
      "destructive": "#9F3B32",
      "border": "#000000",
      "input": "#000000",
      "ring": "#A93424",
      "chart-1": "#1E211F",
      "chart-2": "#62645F",
      "chart-3": "#A93424",
      "chart-4": "#596F55",
      "chart-5": "#9A7B3A",
      "sidebar": "#FBF8EF",
      "sidebar-foreground": "#171816",
      "sidebar-primary": "#1E211F",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#536B78",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#000000",
      "sidebar-ring": "#A93424",
      "radius": "16px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#1E211F",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#A93424",
      "accent-foreground": "#ffffff",
      "destructive": "#9F3B32",
      "border": "#303642",
      "input": "#303642",
      "ring": "#A93424",
      "chart-1": "#1E211F",
      "chart-2": "#62645F",
      "chart-3": "#A93424",
      "chart-4": "#596F55",
      "chart-5": "#9A7B3A",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#1E211F",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#A93424",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#A93424",
      "radius": "16px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "pressure-field-ink-archive",
    "slug": "pressure-field-ink-archive",
    "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": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "colors": [
        "accent",
        "background",
        "border",
        "error",
        "info",
        "muted",
        "primary",
        "secondary",
        "success",
        "surface",
        "text",
        "warning"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ]
    }
  }
}
```
in the wild

embodiments

the full element showcase
embodiment · pressure-field-ink-archive
DESIGN.md

at a glance

Palette

Typography

headline-lgGloock · 31px · 700

The quick brown fox jumps

headline-mdGloock · 25px · 600

The quick brown fox jumps

body-mdCommissioner · 16px · 400

The quick brown fox jumps

label-mdCourier Prime · 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

full9999px
lg24px
md16px
none0px
sm0px
shadcn/ui

implementation kit

needs agent-authored kitcompatibility fallback
shadcn compatibility only
The generated theme variables are available, but the polished shadcn component recipes and shots have not been authored by the Katagami agent yet.
fallbackprimitives render
Compatibility proof
Local shadcn-style primitives accept the generated theme variables.
primaryaccentsurfacemutedwarningerror
table rhythm
buttonok
cardok
inputok
recommendedcompatibility fallback

DESIGN.md with shadcn

Copy this when the target app uses shadcn/ui. It packages the Katagami DESIGN.md context with the install list, theme variables, component recipes, preview-shot contract, and starter TSX in one Markdown companion.

advanced implementation filesoptional machine-readable theme, CSS, TSX starter, recipes, and preview contract
shadcn add
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table
theme css
:root {
  --background: #F4F0E6;
  --foreground: #171816;
  --card: #FBF8EF;
  --card-foreground: #171816;
  --popover: #FBF8EF;
  --popover-foreground: #171816;
  --primary: #1E211F;
  --primary-foreground: #ffffff;
  --secondary: #62645F;
  --secondary-foreground: #ffffff;
  --muted: #74736C;
  --muted-foreground: #171816;
  --accent: #A93424;
  --accent-foreground: #ffffff;
  --destructive: #9F3B32;
  --border: #000000;
  --input: #000000;
  --ring: #A93424;
  --chart-1: #1E211F;
  --chart-2: #62645F;
  --chart-3: #A93424;
  --chart-4: #596F55;
  --chart-5: #9A7B3A;
  --sidebar: #FBF8EF;
  --sidebar-foreground: #171816;
  --sidebar-primary: #1E211F;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #536B78;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #000000;
  --sidebar-ring: #A93424;
  --radius: 16px;
}

.dark {
  --background: #0f1115;
  --foreground: #f8fafc;
  --card: #181b22;
  --card-foreground: #f8fafc;
  --popover: #181b22;
  --popover-foreground: #f8fafc;
  --primary: #1E211F;
  --primary-foreground: #ffffff;
  --secondary: #252a33;
  --secondary-foreground: #f8fafc;
  --muted: #252a33;
  --muted-foreground: #a1a1aa;
  --accent: #A93424;
  --accent-foreground: #ffffff;
  --destructive: #9F3B32;
  --border: #303642;
  --input: #303642;
  --ring: #A93424;
  --chart-1: #1E211F;
  --chart-2: #62645F;
  --chart-3: #A93424;
  --chart-4: #596F55;
  --chart-5: #9A7B3A;
  --sidebar: #181b22;
  --sidebar-foreground: #f8fafc;
  --sidebar-primary: #1E211F;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #A93424;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #303642;
  --sidebar-ring: #A93424;
  --radius: 16px;
}
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 PressureFieldInkArchiveShadcnKit() {
  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">Pressure-Field Ink Archive</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": "pressure-field-ink-archive",
  "type": "registry:theme",
  "title": "Pressure-Field Ink Archive shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F4F0E6",
      "foreground": "#171816",
      "card": "#FBF8EF",
      "card-foreground": "#171816",
      "popover": "#FBF8EF",
      "popover-foreground": "#171816",
      "primary": "#1E211F",
      "primary-foreground": "#ffffff",
      "secondary": "#62645F",
      "secondary-foreground": "#ffffff",
      "muted": "#74736C",
      "muted-foreground": "#171816",
      "accent": "#A93424",
      "accent-foreground": "#ffffff",
      "destructive": "#9F3B32",
      "border": "#000000",
      "input": "#000000",
      "ring": "#A93424",
      "chart-1": "#1E211F",
      "chart-2": "#62645F",
      "chart-3": "#A93424",
      "chart-4": "#596F55",
      "chart-5": "#9A7B3A",
      "sidebar": "#FBF8EF",
      "sidebar-foreground": "#171816",
      "sidebar-primary": "#1E211F",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#536B78",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#000000",
      "sidebar-ring": "#A93424",
      "radius": "16px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#1E211F",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#A93424",
      "accent-foreground": "#ffffff",
      "destructive": "#9F3B32",
      "border": "#303642",
      "input": "#303642",
      "ring": "#A93424",
      "chart-1": "#1E211F",
      "chart-2": "#62645F",
      "chart-3": "#A93424",
      "chart-4": "#596F55",
      "chart-5": "#9A7B3A",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#1E211F",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#A93424",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#A93424",
      "radius": "16px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "pressure-field-ink-archive",
    "slug": "pressure-field-ink-archive",
    "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": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "colors": [
        "accent",
        "background",
        "border",
        "error",
        "info",
        "muted",
        "primary",
        "secondary",
        "success",
        "surface",
        "text",
        "warning"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ]
    }
  }
}
component recipescompatibility fallback
# Pressure-Field Ink Archive shadcn/ui Components

Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `pressure-field-ink-archive`
Slug: `pressure-field-ink-archive`

## Intent

A production-credible product language for a contemporary Chinese ink and calligraphy collection interface, translating brush pressure, shi-force, paper absorption, liu-bai negative space, and seal discipline into responsive UI structure rather than decorative orientalism. It treats gesture as data density: heavier strokes indicate active states, dry fibers indicate archival uncertainty, and vermilion appears only as authorship or decisive action.

## 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": "#A93424",
  "background": "#F4F0E6",
  "border": "#000000",
  "error": "#9F3B32",
  "info": "#536B78",
  "muted": "#74736C",
  "primary": "#1E211F",
  "secondary": "#62645F",
  "success": "#596F55",
  "surface": "#FBF8EF",
  "text": "#171816",
  "warning": "#9A7B3A"
}

Typography:

{
  "base_size": "16px",
  "body_font": "Commissioner",
  "google_fonts_url": "https://fonts.googleapis.com/css2?family=Commissioner:wght@400;500;600;700&family=Courier+Prime:wght@400;700&family=Gloock&display=swap",
  "heading_font": "Gloock",
  "letter_spacing": "-0.02em",
  "line_height": 1.55,
  "mono_font": "Courier Prime",
  "scale_ratio": 1.24
}

## Visual character to preserve

- Off-white paper substrate uses layered radial ink-density stains and fine fiber noise pseudo-elements, never flat white app chrome.
- Interactive cards are asymmetric paper sheets with pressure-weighted left rules: 1px graphite at rest, 4px ink at focus, and vermilion only when selected.
- Hero composition reserves a broad liu-bai void while one dense metadata column and one oversized gestural pressure field break the grid.
- Controls use blurred ink-depth halos and variable opacity shadows to map hover or active states to brush pressure instead of glossy elevation.
- Seal-red marks appear as small square authorship chips, stamped counters, and confirmation buttons with hard edges and imperfect ink-fill texture.

## ShadSync visual profile

{
  "family": "paper-collage",
  "material": "paper",
  "contour": "default",
  "border": "solid",
  "underlay": true,
  "grain": true,
  "stickerBadges": true,
  "motion": "lift-rotate",
  "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/pressure-field-ink-archive/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 ink density, blur, opacity, and rule weight as the main state language for hover, focus, selected, and confirmed actions.; Keep cinnabar/seal red under five percent of the viewport and reserve it for authorship, selection, destructive attention, or primary completion.; Pair large paper voids with dense accession metadata so the interface feels like a scholarly catalogue rather than a decorative theme.; Make surface texture procedural and subtle: fiber overlays should be visible on close inspection but never interfere with body text.; Use square stamps, accession folios, provenance columns, and seal placement to reference collection practice with specificity.; Maintain body text at 15-16px, -0.02em tracking, and generous leading for bilingual or transliterated archival content.; Let one compositional element break the grid: a pressure field, oversized artwork title, or full-bleed paper sheet.
- Do not: Do not use bamboo, dragons, lanterns, chopstick icons, emoji, tourist brush-script fonts, or red-black theatrical clichés.; Do not flood the interface with red; if more than one primary surface is red, the seal discipline has failed.; Do not create three equal feature cards or generic dashboard widgets; every section needs distinct weight and purpose.; Do not paste brushstroke images behind buttons; pressure must be expressed through CSS weight, opacity, blur, and spacing.; Do not let texture reduce contrast below WCAG AA for body copy or metadata.; Do not center every title or fill every column; liu-bai void is a requirement, not leftover space.; Do not confuse East Asian minimalism generically with Chinese calligraphy scholarship; use provenance, seals, inscriptions, paper, and ink handling as anchors.

## 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 PressureFieldInkArchiveShadcnKit() {
  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">Pressure-Field Ink Archive</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

{
  "breakpoints": "mobile <= 640px, tablet 641px-1024px, desktop >= 1025px; mobile stacks metadata after the pressure field while preserving 48px minimum voids.",
  "density": "Low-to-medium overall density with a deliberate contrast between compact archive taxonomies and expansive unoccupied paper space; the page must pass the 8:1 spacing rhythm through 4px micro gaps and 128px major voids.",
  "grid": "Desktop uses a 12-column grid at max-width 1440px with 24px gutters, a 7-column gesture/object zone, a 3-column metadata zone, and 2 columns held empty as liu-bai void.",
  "responsive": "On tablet the grid becomes 6 columns with the void as a full-width pause between sections; on mobile all pressure rules move to the top edge and seal chips become inline terminal marks.",
  "whitespace": "Whitespace is treated as paper breathing room: never fill the top-left and bottom-right simultaneously, separate interpretive sections by 64-128px, and keep related metadata within 4-12px clusters."
}
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": "pressure-field-ink-archive",
    "name": "Pressure-Field Ink Archive",
    "slug": "pressure-field-ink-archive"
  },
  "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": [
    "Off-white paper substrate uses layered radial ink-density stains and fine fiber noise pseudo-elements, never flat white app chrome.",
    "Interactive cards are asymmetric paper sheets with pressure-weighted left rules: 1px graphite at rest, 4px ink at focus, and vermilion only when selected.",
    "Hero composition reserves a broad liu-bai void while one dense metadata column and one oversized gestural pressure field break the grid.",
    "Controls use blurred ink-depth halos and variable opacity shadows to map hover or active states to brush pressure instead of glossy elevation.",
    "Seal-red marks appear as small square authorship chips, stamped counters, and confirmation buttons with hard edges and imperfect ink-fill texture."
  ],
  "visualProfile": {
    "family": "paper-collage",
    "material": "paper",
    "contour": "default",
    "border": "solid",
    "underlay": true,
    "grain": true,
    "stickerBadges": true,
    "motion": "lift-rotate",
    "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": "Pressure-Field Ink Archive 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 ink density, blur, opacity, and rule weight as the main state language for hover, focus, selected, and confirmed actions.",
      "Keep cinnabar/seal red under five percent of the viewport and reserve it for authorship, selection, destructive attention, or primary completion.",
      "Pair large paper voids with dense accession metadata so the interface feels like a scholarly catalogue rather than a decorative theme.",
      "Make surface texture procedural and subtle: fiber overlays should be visible on close inspection but never interfere with body text.",
      "Use square stamps, accession folios, provenance columns, and seal placement to reference collection practice with specificity.",
      "Maintain body text at 15-16px, -0.02em tracking, and generous leading for bilingual or transliterated archival content.",
      "Let one compositional element break the grid: a pressure field, oversized artwork title, or full-bleed paper sheet."
    ],
    "dont": [
      "Do not use bamboo, dragons, lanterns, chopstick icons, emoji, tourist brush-script fonts, or red-black theatrical clichés.",
      "Do not flood the interface with red; if more than one primary surface is red, the seal discipline has failed.",
      "Do not create three equal feature cards or generic dashboard widgets; every section needs distinct weight and purpose.",
      "Do not paste brushstroke images behind buttons; pressure must be expressed through CSS weight, opacity, blur, and spacing.",
      "Do not let texture reduce contrast below WCAG AA for body copy or metadata.",
      "Do not center every title or fill every column; liu-bai void is a requirement, not leftover space.",
      "Do not confuse East Asian minimalism generically with Chinese calligraphy scholarship; use provenance, seals, inscriptions, paper, and ink handling as anchors."
    ]
  }
}
related

More like this