back to gallerydo avoid
design language·mixed-media-inked-visual-essay
Mixed-Media Inked Visual Essay
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
Mixed-Media Inked Visual Essay is a design language for art-directed editorial interfaces that feel drawn, revised, and assembled under a curator's lamp. It crosses the confidence of ink drawing with the precision of digital fine art: charcoal black linework cuts through bone-white space, graphite washes hold atmosphere, and muted gallery tones create the restraint of a serious visual essay. The language favors visible authorship over seamless neutrality. It treats every screen as a page-spread where annotation, metaphor, and composition explain an argument as much as the copy does.
values
expressive line as structure, not decorationeditorial pacing with deliberate pauses and asymmetryvisual metaphor made legible through annotated compositiondigital craft that preserves the friction of hand-drawn mediagallery restraint: quiet palette, strong contrast, no commercial glosslayered evidence where captions, marks, and panels build meaning
anti-values
×generic SaaS dashboard symmetry×airbrushed gradients or plastic dimensionality×decorative doodles detached from content×over-colored illustration that weakens the ink voice×perfectly rounded friendliness without editorial tension
tokens
colors12 items
primary
#0B0A08
secondary
#F3EFE6
accent
#8C7A64
background
#E9E3D7
surface
#FBF8F0
text
#11100E
muted
#6D6760
border
#27231F
error
#8A2F24
success
#4F6A50
warning
#A8792A
info
#536879
typography8 items
- heading font
- Fraunces
- body font
- Newsreader
- mono font
- Fragment Mono
- base size
- 16px
- scale ratio
- 1.28
- line height
- 1.55
- letter spacing
- -0.02em
- google fonts url
- https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght,SOFT,WONK@9..144,500..900,20..80,0..1&family=Newsreader:opsz,wght@6..72,300..700&family=Fragment+Mono:ital@0;1&display=swap
spacing2 items
- base
- 8px
- scale
- 4, 8, 12, 16, 24, 32, 48, 64, 96, 128
radii5 items
- none
- 0
- sm
- 0
- md
- 16px
- lg
- 24px
- full
- 9999px
shadows3 items
- sm
- 3px 4px 0 rgba(17,16,14,0.22)
- md
- 8px 10px 0 rgba(17,16,14,0.18)
- lg
- 0 24px 80px rgba(17,16,14,0.24)
surfaces3 items
- treatment
- bone-white paper surfaces with graphite wash overlays, visible grain, and multiply-blended ink stains
- card style
- thin gallery mat border, one offset charcoal rule, square corners or restrained 16px radius only for digital controls
- bg pattern
- paper fiber noise simulated with repeating radial gradients plus faint registration grid marks
borders4 items
- default width
- 1px
- accent width
- 3px
- style
- solid mixed with hand-dashed annotation strokes
- character
- borders should look printed or inked: offset duplicates, uneven SVG dividers, and heavy black emphasis only at conceptual pivots
motion3 items
- duration
- 240ms
- easing
- cubic-bezier(.2,.7,.1,1)
- philosophy
- motion behaves like editorial reveal: a wash settles, an annotation line draws in, and panels lift by offset shadow rather than bouncing
rules
composition
Use a visual-essay spread: one dominant metaphor panel, two or three supporting evidence cards, and a narrow annotation margin. Keep the main axis asymmetrical, with panels slightly rotated or vertically staggered. Let linework bridge sections so the composition reads as one argument. Reserve empty space as a gallery wall rather than filling every gap. Place captions close to imagery and let numerals or pull quotes puncture the grid.
hierarchy
Display hierarchy comes from Fraunces optical contrast, oversized section numerals, and heavy ink rules. Body text stays literary and readable in Newsreader with generous measure. Mono labels function as curator notes, proof marks, coordinates, and source tags. Important actions are framed like stamped exhibition labels rather than glossy buttons.
density
Moderate editorial density: copy and controls are compact, but each illustrated panel needs breathing room. The screen should feel like an annotated portfolio plate, not a data table or component inventory.
signature patterns
Ink-ragged panels: content blocks use clip-path polygons plus an offset :before border to imitate hand-cut ink plates.Graphite wash atmosphere: layered radial gradients and blend modes create muted pools behind key panels without becoming decorative gradients.Annotation spine: a vertical margin of mono captions, coordinates, and drawn connector lines explains the visual metaphor.Gallery caption plaques: actions and metadata sit in bone-white plaques with heavy top rules and stamped mono labels.Expressive SVG rulework: section breaks use uneven hand-drawn paths instead of straight default horizontal rules.
layout
density
Medium density with high negative space: content clusters are concise while illustrated panels and annotations get room to breathe, preserving the visual essay rhythm.
grid
Desktop uses a 12-column editorial grid with 24px gutters and a 1360px max width; main essay spans 7 columns, annotation rail spans 2, evidence cards span 3. Tablet collapses to 6 columns; mobile becomes one column with annotation notes inline.
breakpoints
Mobile 0-639px, tablet 640-1023px, desktop 1024px and above; at each breakpoint panels stack before text becomes cramped.
whitespace
Whitespace is treated like gallery wall: wide margins, interrupted gutters, and deliberate blank zones around inked metaphors rather than uniformly distributed padding.
responsive
At desktop the screen is a spread with a side rail; tablet forms a stacked feature and two-column evidence grid; mobile preserves the art direction by turning annotations into caption strips below each panel.
guidance
- Use black linework as a structural system for grids, dividers, connectors, and emphasis.
- Let muted washes support hierarchy behind important panels while keeping text on high-contrast bone surfaces.
- Choose editorial scenes: visual essays, critical portfolios, investigative explainers, cultural reviews, or artist notebooks.
- Make every decorative mark carry meaning as annotation, framing, evidence, or metaphor.
- Use mono type sparingly for coordinates, captions, source labels, and stamped actions.
- Preserve imperfect human rhythm through slight rotations, offset borders, and uneven drawn rules.
- Keep accessibility high by placing all long text on clean light surfaces with strong charcoal contrast.
- Do not turn the language into a generic sketchy whiteboard style.
- Do not use bright illustration palettes, candy gradients, or playful cartoon color.
- Do not center every card in a symmetrical dashboard grid.
- Do not rely on stock icons when linework and typographic marks can carry the metaphor.
- Do not place body copy over busy wash textures.
- Do not over-round panels; square editorial framing is the default.
- Do not add texture without also using it to reinforce depth, grouping, or narrative sequence.
katagami spec
# Mixed-Media Inked Visual Essay ## Philosophy Mixed-Media Inked Visual Essay is a design language for art-directed editorial interfaces that feel drawn, revised, and assembled under a curator's lamp. It crosses the confidence of ink drawing with the precision of digital fine art: charcoal black linework cuts through bone-white space, graphite washes hold atmosphere, and muted gallery tones create the restraint of a serious visual essay. The language favors visible authorship over seamless neutrality. It treats every screen as a page-spread where annotation, metaphor, and composition explain an argument as much as the copy does. ### Values - expressive line as structure, not decoration - editorial pacing with deliberate pauses and asymmetry - visual metaphor made legible through annotated composition - digital craft that preserves the friction of hand-drawn media - gallery restraint: quiet palette, strong contrast, no commercial gloss - layered evidence where captions, marks, and panels build meaning ### Anti-Values - generic SaaS dashboard symmetry - airbrushed gradients or plastic dimensionality - decorative doodles detached from content - over-colored illustration that weakens the ink voice - perfectly rounded friendliness without editorial tension ### Visual Character - Large bone-white page fields interrupted by irregular charcoal ink panels using clip-path polygons and rough outline offsets. - Graphite wash textures built from layered radial gradients, multiply blending, and low-opacity paper grain overlays. - Expressive hand-drawn divider lines made with SVG strokes, dashed borders, and rotated annotation rules. - Editorial essay grid with oversized pull-quote numerals, margin notes, and staggered image-text panels. - Digital fine-art framing through thin gallery mat borders, caption plaques, and restrained muted wash accents. ## Tokens ### Colors | Name | Value | |------|-------| | primary | `#0B0A08` | | secondary | `#F3EFE6` | | accent | `#8C7A64` | | background | `#E9E3D7` | | surface | `#FBF8F0` | | text | `#11100E` | | muted | `#6D6760` | | border | `#27231F` | | error | `#8A2F24` | | success | `#4F6A50` | | warning | `#A8792A` | | info | `#536879` | ### Typography - **Heading Font**: Fraunces - **Body Font**: Newsreader - **Mono Font**: Fragment Mono - **Base Size**: 16px - **Scale Ratio**: 1.28 - **Line Height**: 1.55 - **Letter Spacing**: -0.02em - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght,SOFT,WONK@9..144,500..900,20..80,0..1&family=Newsreader:opsz,wght@6..72,300..700&family=Fragment+Mono:ital@0;1&display=swap ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64,96,128] ### Radii - **None**: 0 - **Sm**: 0 - **Md**: 16px - **Lg**: 24px - **Full**: 9999px ### Shadows - **Sm**: 3px 4px 0 rgba(17,16,14,0.22) - **Md**: 8px 10px 0 rgba(17,16,14,0.18) - **Lg**: 0 24px 80px rgba(17,16,14,0.24) ### Surfaces - **Treatment**: bone-white paper surfaces with graphite wash overlays, visible grain, and multiply-blended ink stains - **Card Style**: thin gallery mat border, one offset charcoal rule, square corners or restrained 16px radius only for digital controls - **Bg Pattern**: paper fiber noise simulated with repeating radial gradients plus faint registration grid marks ### Borders - **Default Width**: 1px - **Accent Width**: 3px - **Style**: solid mixed with hand-dashed annotation strokes - **Character**: borders should look printed or inked: offset duplicates, uneven SVG dividers, and heavy black emphasis only at conceptual pivots ### Motion - **Duration**: 240ms - **Easing**: cubic-bezier(.2,.7,.1,1) - **Philosophy**: motion behaves like editorial reveal: a wash settles, an annotation line draws in, and panels lift by offset shadow rather than bouncing ## Rules ### Composition Use a visual-essay spread: one dominant metaphor panel, two or three supporting evidence cards, and a narrow annotation margin. Keep the main axis asymmetrical, with panels slightly rotated or vertically staggered. Let linework bridge sections so the composition reads as one argument. Reserve empty space as a gallery wall rather than filling every gap. Place captions close to imagery and let numerals or pull quotes puncture the grid. ### Hierarchy Display hierarchy comes from Fraunces optical contrast, oversized section numerals, and heavy ink rules. Body text stays literary and readable in Newsreader with generous measure. Mono labels function as curator notes, proof marks, coordinates, and source tags. Important actions are framed like stamped exhibition labels rather than glossy buttons. ### Density Moderate editorial density: copy and controls are compact, but each illustrated panel needs breathing room. The screen should feel like an annotated portfolio plate, not a data table or component inventory. ### Signature Patterns - Ink-ragged panels: content blocks use clip-path polygons plus an offset :before border to imitate hand-cut ink plates. - Graphite wash atmosphere: layered radial gradients and blend modes create muted pools behind key panels without becoming decorative gradients. - Annotation spine: a vertical margin of mono captions, coordinates, and drawn connector lines explains the visual metaphor. - Gallery caption plaques: actions and metadata sit in bone-white plaques with heavy top rules and stamped mono labels. - Expressive SVG rulework: section breaks use uneven hand-drawn paths instead of straight default horizontal rules. ## Layout ### Density Medium density with high negative space: content clusters are concise while illustrated panels and annotations get room to breathe, preserving the visual essay rhythm. ### Grid Desktop uses a 12-column editorial grid with 24px gutters and a 1360px max width; main essay spans 7 columns, annotation rail spans 2, evidence cards span 3. Tablet collapses to 6 columns; mobile becomes one column with annotation notes inline. ### Breakpoints Mobile 0-639px, tablet 640-1023px, desktop 1024px and above; at each breakpoint panels stack before text becomes cramped. ### Whitespace Whitespace is treated like gallery wall: wide margins, interrupted gutters, and deliberate blank zones around inked metaphors rather than uniformly distributed padding. ### Responsive At desktop the screen is a spread with a side rail; tablet forms a stacked feature and two-column evidence grid; mobile preserves the art direction by turning annotations into caption strips below each panel. ## Guidance ### Do - Use black linework as a structural system for grids, dividers, connectors, and emphasis. - Let muted washes support hierarchy behind important panels while keeping text on high-contrast bone surfaces. - Choose editorial scenes: visual essays, critical portfolios, investigative explainers, cultural reviews, or artist notebooks. - Make every decorative mark carry meaning as annotation, framing, evidence, or metaphor. - Use mono type sparingly for coordinates, captions, source labels, and stamped actions. - Preserve imperfect human rhythm through slight rotations, offset borders, and uneven drawn rules. - Keep accessibility high by placing all long text on clean light surfaces with strong charcoal contrast. ### Don't - Do not turn the language into a generic sketchy whiteboard style. - Do not use bright illustration palettes, candy gradients, or playful cartoon color. - Do not center every card in a symmetrical dashboard grid. - Do not rely on stock icons when linework and typographic marks can carry the metaphor. - Do not place body copy over busy wash textures. - Do not over-round panels; square editorial framing is the default. - Do not add texture without also using it to reinforce depth, grouping, or narrative sequence. ### Usage Context Best for editorial illustration showcases, digital fine-art essays, art-directed reports, museum learning tools, cultural criticism, and interfaces where visual metaphor clarifies a complex argument. ### Accessibility Maintain WCAG AA contrast by reserving washes for backgrounds, keeping body text charcoal on bone white, and never using line-only cues without labels. Motion must be subtle and nonessential.
DESIGN.md
---
version: "alpha"
name: "Mixed-Media Inked Visual Essay"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
primary: "#0B0A08"
secondary: "#F3EFE6"
accent: "#8C7A64"
background: "#E9E3D7"
surface: "#FBF8F0"
text: "#11100E"
muted: "#6D6760"
border: "#27231F"
error: "#8A2F24"
success: "#4F6A50"
warning: "#A8792A"
info: "#536879"
typography:
headline-lg:
fontFamily: "Fraunces"
fontSize: "2.097rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Fraunces"
fontSize: "1.638rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "Newsreader"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.55
letterSpacing: "-0.02em"
label-md:
fontFamily: "Fragment Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
sm: "0px"
md: "16px"
lg: "24px"
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}"
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"
---
# Mixed-Media Inked Visual Essay
## Overview
Mixed-Media Inked Visual Essay is a design language for art-directed editorial interfaces that feel drawn, revised, and assembled under a curator's lamp. It crosses the confidence of ink drawing with the precision of digital fine art: charcoal black linework cuts through bone-white space, graphite washes hold atmosphere, and muted gallery tones create the restraint of a serious visual essay. The language favors visible authorship over seamless neutrality. It treats every screen as a page-spread where annotation, metaphor, and composition explain an argument as much as the copy does.
### Values
- expressive line as structure, not decoration
- editorial pacing with deliberate pauses and asymmetry
- visual metaphor made legible through annotated composition
- digital craft that preserves the friction of hand-drawn media
- gallery restraint: quiet palette, strong contrast, no commercial gloss
- layered evidence where captions, marks, and panels build meaning
### Anti-Values
- generic SaaS dashboard symmetry
- airbrushed gradients or plastic dimensionality
- decorative doodles detached from content
- over-colored illustration that weakens the ink voice
- perfectly rounded friendliness without editorial tension
### Visual Character
- Large bone-white page fields interrupted by irregular charcoal ink panels using clip-path polygons and rough outline offsets.
- Graphite wash textures built from layered radial gradients, multiply blending, and low-opacity paper grain overlays.
- Expressive hand-drawn divider lines made with SVG strokes, dashed borders, and rotated annotation rules.
- Editorial essay grid with oversized pull-quote numerals, margin notes, and staggered image-text panels.
- Digital fine-art framing through thin gallery mat borders, caption plaques, and restrained muted wash accents.
## 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 | `#0B0A08` |
| secondary | `#F3EFE6` |
| accent | `#8C7A64` |
| background | `#E9E3D7` |
| surface | `#FBF8F0` |
| text | `#11100E` |
| muted | `#6D6760` |
| border | `#27231F` |
| error | `#8A2F24` |
| success | `#4F6A50` |
| warning | `#A8792A` |
| info | `#536879` |
## Typography
- **Headline-Lg**: Fraunces, 2.097rem, weight 700, line-height 1.1.
- **Headline-Md**: Fraunces, 1.638rem, weight 600, line-height 1.15.
- **Body-Md**: Newsreader, 16px, weight 400, line-height 1.55.
- **Label-Md**: Fragment 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 density with high negative space: content clusters are concise while illustrated panels and annotations get room to breathe, preserving the visual essay rhythm.
### Grid
Desktop uses a 12-column editorial grid with 24px gutters and a 1360px max width; main essay spans 7 columns, annotation rail spans 2, evidence cards span 3. Tablet collapses to 6 columns; mobile becomes one column with annotation notes inline.
### Breakpoints
Mobile 0-639px, tablet 640-1023px, desktop 1024px and above; at each breakpoint panels stack before text becomes cramped.
### Whitespace
Whitespace is treated like gallery wall: wide margins, interrupted gutters, and deliberate blank zones around inked metaphors rather than uniformly distributed padding.
### Responsive
At desktop the screen is a spread with a side rail; tablet forms a stacked feature and two-column evidence grid; mobile preserves the art direction by turning annotations into caption strips below each panel.
## Elevation & Depth
### Shadows
- **Sm**: 3px 4px 0 rgba(17,16,14,0.22)
- **Md**: 8px 10px 0 rgba(17,16,14,0.18)
- **Lg**: 0 24px 80px rgba(17,16,14,0.24)
## Shapes
### Rounded
- **None**: `0px`
- **Sm**: `0px`
- **Md**: `16px`
- **Lg**: `24px`
- **Full**: `9999px`
### Surfaces
- **Treatment**: bone-white paper surfaces with graphite wash overlays, visible grain, and multiply-blended ink stains
- **Card Style**: thin gallery mat border, one offset charcoal rule, square corners or restrained 16px radius only for digital controls
- **Bg Pattern**: paper fiber noise simulated with repeating radial gradients plus faint registration grid marks
### Borders
- **Default Width**: 1px
- **Accent Width**: 3px
- **Style**: solid mixed with hand-dashed annotation strokes
- **Character**: borders should look printed or inked: offset duplicates, uneven SVG dividers, and heavy black emphasis only at conceptual pivots
## Components
### Composition
Use a visual-essay spread: one dominant metaphor panel, two or three supporting evidence cards, and a narrow annotation margin. Keep the main axis asymmetrical, with panels slightly rotated or vertically staggered. Let linework bridge sections so the composition reads as one argument. Reserve empty space as a gallery wall rather than filling every gap. Place captions close to imagery and let numerals or pull quotes puncture the grid.
### Hierarchy
Display hierarchy comes from Fraunces optical contrast, oversized section numerals, and heavy ink rules. Body text stays literary and readable in Newsreader with generous measure. Mono labels function as curator notes, proof marks, coordinates, and source tags. Important actions are framed like stamped exhibition labels rather than glossy buttons.
### Density
Moderate editorial density: copy and controls are compact, but each illustrated panel needs breathing room. The screen should feel like an annotated portfolio plate, not a data table or component inventory.
### Signature Patterns
- Ink-ragged panels: content blocks use clip-path polygons plus an offset :before border to imitate hand-cut ink plates.
- Graphite wash atmosphere: layered radial gradients and blend modes create muted pools behind key panels without becoming decorative gradients.
- Annotation spine: a vertical margin of mono captions, coordinates, and drawn connector lines explains the visual metaphor.
- Gallery caption plaques: actions and metadata sit in bone-white plaques with heavy top rules and stamped mono labels.
- Expressive SVG rulework: section breaks use uneven hand-drawn paths instead of straight default horizontal rules.
## shadcn/ui Usage
When the target app uses shadcn/ui, copy DESIGN.md with shadcn instead of the plain DESIGN.md. It contains the same Katagami design-language source plus the shadcn/ui primitives, imports, theme variables, component recipes, and preview-shot guidance.
DESIGN.md with shadcn: `/language/en-019dde35-fb23-7c90-a7cf-c38ccf8495f8/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 black linework as a structural system for grids, dividers, connectors, and emphasis.
- Do Let muted washes support hierarchy behind important panels while keeping text on high-contrast bone surfaces.
- Do Choose editorial scenes: visual essays, critical portfolios, investigative explainers, cultural reviews, or artist notebooks.
- Do Make every decorative mark carry meaning as annotation, framing, evidence, or metaphor.
- Do Use mono type sparingly for coordinates, captions, source labels, and stamped actions.
- Do Preserve imperfect human rhythm through slight rotations, offset borders, and uneven drawn rules.
- Do Keep accessibility high by placing all long text on clean light surfaces with strong charcoal contrast.
- Don't Do not turn the language into a generic sketchy whiteboard style.
- Don't Do not use bright illustration palettes, candy gradients, or playful cartoon color.
- Don't Do not center every card in a symmetrical dashboard grid.
- Don't Do not rely on stock icons when linework and typographic marks can carry the metaphor.
- Don't Do not place body copy over busy wash textures.
- Don't Do not over-round panels; square editorial framing is the default.
- Don't Do not add texture without also using it to reinforce depth, grouping, or narrative sequence.
### Usage Context
Best for editorial illustration showcases, digital fine-art essays, art-directed reports, museum learning tools, cultural criticism, and interfaces where visual metaphor clarifies a complex argument.
### Accessibility
Maintain WCAG AA contrast by reserving washes for backgrounds, keeping body text charcoal on bone white, and never using line-only cues without labels. Motion must be subtle and nonessential.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "mixed-media-inked-visual-essay",
"type": "registry:theme",
"title": "Mixed-Media Inked Visual Essay shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#E9E3D7",
"foreground": "#11100E",
"card": "#FBF8F0",
"card-foreground": "#11100E",
"popover": "#FBF8F0",
"popover-foreground": "#11100E",
"primary": "#0B0A08",
"primary-foreground": "#ffffff",
"secondary": "#F3EFE6",
"secondary-foreground": "#111111",
"muted": "#6D6760",
"muted-foreground": "#11100E",
"accent": "#8C7A64",
"accent-foreground": "#ffffff",
"destructive": "#8A2F24",
"border": "#27231F",
"input": "#27231F",
"ring": "#8C7A64",
"chart-1": "#0B0A08",
"chart-2": "#F3EFE6",
"chart-3": "#8C7A64",
"chart-4": "#4F6A50",
"chart-5": "#A8792A",
"sidebar": "#FBF8F0",
"sidebar-foreground": "#11100E",
"sidebar-primary": "#0B0A08",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#536879",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#27231F",
"sidebar-ring": "#8C7A64",
"radius": "16px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#0B0A08",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#8C7A64",
"accent-foreground": "#ffffff",
"destructive": "#8A2F24",
"border": "#303642",
"input": "#303642",
"ring": "#8C7A64",
"chart-1": "#0B0A08",
"chart-2": "#F3EFE6",
"chart-3": "#8C7A64",
"chart-4": "#4F6A50",
"chart-5": "#A8792A",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#0B0A08",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#8C7A64",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#8C7A64",
"radius": "16px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019dde35-fb23-7c90-a7cf-c38ccf8495f8",
"slug": "mixed-media-inked-visual-essay",
"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",
"primary",
"secondary",
"success",
"surface",
"text",
"warning"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
],
"spacing": [
"base",
"scale"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"lg",
"md",
"sm"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
]
}
}
}
```in the wild
embodiments
the full element showcase
embodiment · mixed-media-inked-visual-essay
DESIGN.md
at a glance
Typography
headline-lgFraunces · 34px · 700
The quick brown fox jumps
headline-mdFraunces · 26px · 600
The quick brown fox jumps
body-mdNewsreader · 16px · 400
The quick brown fox jumps
label-mdFragment 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
md16px
lg24px
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: #E9E3D7;
--foreground: #11100E;
--card: #FBF8F0;
--card-foreground: #11100E;
--popover: #FBF8F0;
--popover-foreground: #11100E;
--primary: #0B0A08;
--primary-foreground: #ffffff;
--secondary: #F3EFE6;
--secondary-foreground: #111111;
--muted: #6D6760;
--muted-foreground: #11100E;
--accent: #8C7A64;
--accent-foreground: #ffffff;
--destructive: #8A2F24;
--border: #27231F;
--input: #27231F;
--ring: #8C7A64;
--chart-1: #0B0A08;
--chart-2: #F3EFE6;
--chart-3: #8C7A64;
--chart-4: #4F6A50;
--chart-5: #A8792A;
--sidebar: #FBF8F0;
--sidebar-foreground: #11100E;
--sidebar-primary: #0B0A08;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #536879;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #27231F;
--sidebar-ring: #8C7A64;
--radius: 16px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #0B0A08;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #8C7A64;
--accent-foreground: #ffffff;
--destructive: #8A2F24;
--border: #303642;
--input: #303642;
--ring: #8C7A64;
--chart-1: #0B0A08;
--chart-2: #F3EFE6;
--chart-3: #8C7A64;
--chart-4: #4F6A50;
--chart-5: #A8792A;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #0B0A08;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #8C7A64;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #8C7A64;
--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 MixedMediaInkedVisualEssayShadcnKit() {
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">Mixed-Media Inked Visual Essay</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": "mixed-media-inked-visual-essay",
"type": "registry:theme",
"title": "Mixed-Media Inked Visual Essay shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#E9E3D7",
"foreground": "#11100E",
"card": "#FBF8F0",
"card-foreground": "#11100E",
"popover": "#FBF8F0",
"popover-foreground": "#11100E",
"primary": "#0B0A08",
"primary-foreground": "#ffffff",
"secondary": "#F3EFE6",
"secondary-foreground": "#111111",
"muted": "#6D6760",
"muted-foreground": "#11100E",
"accent": "#8C7A64",
"accent-foreground": "#ffffff",
"destructive": "#8A2F24",
"border": "#27231F",
"input": "#27231F",
"ring": "#8C7A64",
"chart-1": "#0B0A08",
"chart-2": "#F3EFE6",
"chart-3": "#8C7A64",
"chart-4": "#4F6A50",
"chart-5": "#A8792A",
"sidebar": "#FBF8F0",
"sidebar-foreground": "#11100E",
"sidebar-primary": "#0B0A08",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#536879",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#27231F",
"sidebar-ring": "#8C7A64",
"radius": "16px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#0B0A08",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#8C7A64",
"accent-foreground": "#ffffff",
"destructive": "#8A2F24",
"border": "#303642",
"input": "#303642",
"ring": "#8C7A64",
"chart-1": "#0B0A08",
"chart-2": "#F3EFE6",
"chart-3": "#8C7A64",
"chart-4": "#4F6A50",
"chart-5": "#A8792A",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#0B0A08",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#8C7A64",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#8C7A64",
"radius": "16px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019dde35-fb23-7c90-a7cf-c38ccf8495f8",
"slug": "mixed-media-inked-visual-essay",
"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",
"primary",
"secondary",
"success",
"surface",
"text",
"warning"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
],
"spacing": [
"base",
"scale"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"lg",
"md",
"sm"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
]
}
}
}
component recipescompatibility fallback
# Mixed-Media Inked Visual Essay shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019dde35-fb23-7c90-a7cf-c38ccf8495f8`
Slug: `mixed-media-inked-visual-essay`
## Intent
Mixed-Media Inked Visual Essay is a design language for art-directed editorial interfaces that feel drawn, revised, and assembled under a curator's lamp. It crosses the confidence of ink drawing with the precision of digital fine art: charcoal black linework cuts through bone-white space, graphite washes hold atmosphere, and muted gallery tones create the restraint of a serious visual essay. The language favors visible authorship over seamless neutrality. It treats every screen as a page-spread where annotation, metaphor, and composition explain an argument as much as the copy does.
## 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": "#0B0A08",
"secondary": "#F3EFE6",
"accent": "#8C7A64",
"background": "#E9E3D7",
"surface": "#FBF8F0",
"text": "#11100E",
"muted": "#6D6760",
"border": "#27231F",
"error": "#8A2F24",
"success": "#4F6A50",
"warning": "#A8792A",
"info": "#536879"
}
Typography:
{
"heading_font": "Fraunces",
"body_font": "Newsreader",
"mono_font": "Fragment Mono",
"base_size": "16px",
"scale_ratio": 1.28,
"line_height": 1.55,
"letter_spacing": "-0.02em",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght,SOFT,WONK@9..144,500..900,20..80,0..1&family=Newsreader:opsz,wght@6..72,300..700&family=Fragment+Mono:ital@0;1&display=swap"
}
## Visual character to preserve
- Large bone-white page fields interrupted by irregular charcoal ink panels using clip-path polygons and rough outline offsets.
- Graphite wash textures built from layered radial gradients, multiply blending, and low-opacity paper grain overlays.
- Expressive hand-drawn divider lines made with SVG strokes, dashed borders, and rotated annotation rules.
- Editorial essay grid with oversized pull-quote numerals, margin notes, and staggered image-text panels.
- Digital fine-art framing through thin gallery mat borders, caption plaques, and restrained muted wash accents.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "blob",
"border": "dashed",
"underlay": true,
"grain": true,
"stickerBadges": true,
"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/mixed-media-inked-visual-essay/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 black linework as a structural system for grids, dividers, connectors, and emphasis.; Let muted washes support hierarchy behind important panels while keeping text on high-contrast bone surfaces.; Choose editorial scenes: visual essays, critical portfolios, investigative explainers, cultural reviews, or artist notebooks.; Make every decorative mark carry meaning as annotation, framing, evidence, or metaphor.; Use mono type sparingly for coordinates, captions, source labels, and stamped actions.; Preserve imperfect human rhythm through slight rotations, offset borders, and uneven drawn rules.; Keep accessibility high by placing all long text on clean light surfaces with strong charcoal contrast.
- Do not: Do not turn the language into a generic sketchy whiteboard style.; Do not use bright illustration palettes, candy gradients, or playful cartoon color.; Do not center every card in a symmetrical dashboard grid.; Do not rely on stock icons when linework and typographic marks can carry the metaphor.; Do not place body copy over busy wash textures.; Do not over-round panels; square editorial framing is the default.; Do not add texture without also using it to reinforce depth, grouping, or narrative sequence.
## 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 MixedMediaInkedVisualEssayShadcnKit() {
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">Mixed-Media Inked Visual Essay</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 density with high negative space: content clusters are concise while illustrated panels and annotations get room to breathe, preserving the visual essay rhythm.",
"grid": "Desktop uses a 12-column editorial grid with 24px gutters and a 1360px max width; main essay spans 7 columns, annotation rail spans 2, evidence cards span 3. Tablet collapses to 6 columns; mobile becomes one column with annotation notes inline.",
"breakpoints": "Mobile 0-639px, tablet 640-1023px, desktop 1024px and above; at each breakpoint panels stack before text becomes cramped.",
"whitespace": "Whitespace is treated like gallery wall: wide margins, interrupted gutters, and deliberate blank zones around inked metaphors rather than uniformly distributed padding.",
"responsive": "At desktop the screen is a spread with a side rail; tablet forms a stacked feature and two-column evidence grid; mobile preserves the art direction by turning annotations into caption strips below each panel."
}
preview shotscompatibility fallback
{
"artifact": "katagami:shadcn-preview-shots",
"version": "preview-shots-v1",
"generator": "katagami-ui-compatibility-projection",
"generatedBy": "katagami-ui-projection",
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"renderable": true,
"language": {
"id": "en-019dde35-fb23-7c90-a7cf-c38ccf8495f8",
"name": "Mixed-Media Inked Visual Essay",
"slug": "mixed-media-inked-visual-essay"
},
"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": [
"Large bone-white page fields interrupted by irregular charcoal ink panels using clip-path polygons and rough outline offsets.",
"Graphite wash textures built from layered radial gradients, multiply blending, and low-opacity paper grain overlays.",
"Expressive hand-drawn divider lines made with SVG strokes, dashed borders, and rotated annotation rules.",
"Editorial essay grid with oversized pull-quote numerals, margin notes, and staggered image-text panels.",
"Digital fine-art framing through thin gallery mat borders, caption plaques, and restrained muted wash accents."
],
"visualProfile": {
"family": "paper-collage",
"material": "paper",
"contour": "blob",
"border": "dashed",
"underlay": true,
"grain": true,
"stickerBadges": true,
"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": "Mixed-Media Inked Visual Essay 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 black linework as a structural system for grids, dividers, connectors, and emphasis.",
"Let muted washes support hierarchy behind important panels while keeping text on high-contrast bone surfaces.",
"Choose editorial scenes: visual essays, critical portfolios, investigative explainers, cultural reviews, or artist notebooks.",
"Make every decorative mark carry meaning as annotation, framing, evidence, or metaphor.",
"Use mono type sparingly for coordinates, captions, source labels, and stamped actions.",
"Preserve imperfect human rhythm through slight rotations, offset borders, and uneven drawn rules.",
"Keep accessibility high by placing all long text on clean light surfaces with strong charcoal contrast."
],
"dont": [
"Do not turn the language into a generic sketchy whiteboard style.",
"Do not use bright illustration palettes, candy gradients, or playful cartoon color.",
"Do not center every card in a symmetrical dashboard grid.",
"Do not rely on stock icons when linework and typographic marks can carry the metaphor.",
"Do not place body copy over busy wash textures.",
"Do not over-round panels; square editorial framing is the default.",
"Do not add texture without also using it to reinforce depth, grouping, or narrative sequence."
]
}
}