back to gallery
design language·compact-editorial-ink-fine-art

Compact Editorial Ink Fine Art

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
Compact Editorial Ink Fine Art treats software as a disciplined page: a warm paper field carrying uncompromising black ink, ruled grids, captioned panels, and authored marginalia. It draws from editorial layout, fine-art ink drawing, sumi-e restraint, and Raymond Pettibon-like text-image tension, but translates those sources into usable interface structure rather than decorative illustration. The language is compact, literary, and severe: information is edited down, hierarchy is created with line weight and placement, and empty paper is allowed to speak as loudly as dense marks.
values
Ink as authorityThe page is the interfaceRestraint over ornamentVisible editorial hierarchyAuthored marginaliaFine-art tactility
anti-values
×Generic minimalism that relies on white cards, soft gray borders, and interchangeable SaaS spacing.×Stock sketchiness, playful doodles, fake hand-drawn icons, or random scribbles detached from information structure.×Decorative color palettes; accents are restrained to oxblood or cobalt editorial marks used for meaning.×Vague artsy language without concrete rules for grids, captions, typography, line weights, and controls.
tokens
borders4 items
accent width
4px
character
Borders behave like printed rules: hairlines divide reading columns, 2px lines frame decisions, and 4px strokes mark primary editorial emphasis.
default width
1px
style
solid
colors18 items
accent
#7A1E22
background
#F4EFE3
border
#0A0A09
cobalt
#1F4E8C
error
#9B1C1F
graphite
#58544D
info
#1D4E89
ink_wash
#D8D0C0
muted
#6F6A60
oxblood
#7A1E22
paper_bone
#EFE6D2
paper_white
#FFFDF5
primary
#0A0A09
secondary
#3C3A35
success
#355C3A
surface
#FFF9EB
text
#11100D
warning
#A86A16
motion3 items
duration
140ms
easing
cubic-bezier(0.2, 0, 0.1, 1)
philosophy
deliberate, nearly print-static transitions that snap like a page proof being marked
radii5 items
full
9999px
lg
4px
md
2px
none
0
sm
1px
shadows3 items
lg
8px 8px 0 rgba(10,10,9,0.92)
md
4px 4px 0 #0A0A09
sm
2px 2px 0 #0A0A09
spacing2 items
base
8px
scale
4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px, 96px, 128px
surfaces3 items
bg pattern
noise
card style
Flat warm paper panels with visible grain, squared corners, black editorial rules, and occasional offset ink-shadow registration.
treatment
paper
typography10 items
base size
16px
body font
Source Serif 4, Georgia, serif
caption font
IBM Plex Mono, ui-monospace, monospace
caption letter spacing
0.08em
google fonts url
https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Libre+Baskerville:wght@400;700&family=Source+Serif+4:opsz,wght@8..60,400;8..60,500;8..60,700&display=swap
heading font
Libre Baskerville, Georgia, serif
letter spacing
-0.01em
line height
1.48
mono font
IBM Plex Mono, ui-monospace, SFMono-Regular, Menlo, monospace
scale ratio
1.2
rules
composition
Use an editorial grid before any component decisions: a large paper margin, a compact left folio rail, a main column for authored content, and a secondary annotation column. Align panel edges to rules; let at least one quadrant remain quiet. Dense areas should feel printed, not boxed. Prefer horizontal rules, vertical gutters, and caption attachments over rounded cards. Keep iconography scarce and text-led.
density
The language is compact inside panels but spacious between panels: controls are tightly set with 8-16px internal rhythm while page gutters reach 48-96px on desktop. A screen should feel like an edited broadsheet proof with precise islands of information on a quiet paper ground.
hierarchy
Hierarchy moves from 4px black decision strokes to 2px panel frames to 1px hairline rules, then to typography. H1 headings use literary serif scale and tight leading; section labels use uppercase mono captions; body copy uses Source Serif; data and controls use IBM Plex Mono. Oxblood or cobalt may identify one active item, never decorate multiple unrelated elements.
signature patterns
Every major panel uses a CSS pseudo-element caption tab pinned to its top-left edge with uppercase mono text and a 1px black rule extending from it.Important containers use mixed line weights: 4px top or left border for emphasis, 2px outer border, and 1px internal ruled dividers.Paper texture is generated with layered radial-gradient and linear-gradient noise on body and panels, not image assets or decorative illustration.Ink accents are CSS-only: short uneven underlines, bracket corners, and circled counters made with borders, box-shadow offsets, and pseudo-elements.Asymmetric editorial grid uses a narrow folio rail plus main and marginal annotation columns that collapse to a single ruled column on mobile.
layout
breakpoints
Mobile <= 640px becomes a single column with full-width controls and hidden decorative rail; tablet 641-1024px uses two columns with marginalia beneath; desktop >= 1025px uses full folio/main/margin spread.
density

Compact editorial density: high information per panel with strict captioning, offset by large paper margins so the interface stays calm and literary.

grid
Desktop uses a max-width 1320px spread with 72px folio rail, 1fr main column, and 320px marginalia column separated by 24px gutters and black vertical rules. Panels use internal 12-column editorial subgrids when needed.
responsive
At 375px: one column, 16px gutters, 44px controls, panel captions remain visible. At 768px: two-column stacked annotations, 24px gutters. At 1440px: full three-zone editorial spread with folio rail and marginal notes.
whitespace
Whitespace is not generic emptiness; it is paper margin. Keep generous outer padding of 24px mobile, 40px tablet, 64px desktop and allow quiet unused zones beside dense captioned panels.
guidance
do
  • Use warm paper and dense black ink as the default visual contract before introducing accent color.
  • Give every panel an authored caption tab or marginal note so the screen reads like an edited page.
  • Build hierarchy through line weight: 4px for primary emphasis, 2px for frames, 1px for rules and table divisions.
  • Keep microcopy concise, literary, and specific: write captions like proof notes rather than marketing labels.
  • Reserve oxblood or cobalt for one editorial state such as active, urgent, selected, or referenced.
  • Use squared or nearly squared corners and offset ink shadows to maintain printed materiality.
  • Leave deliberate negative space around dense panels; do not fill the page simply because space exists.
  • Style inputs, tables, buttons, toggles, and dialogs with the same ruled-paper grammar as layout panels.
avoid
  • Do not use generic SaaS cards with soft shadows, large border radii, pastel fills, or floating glass effects.
  • Do not add decorative doodles, random sketch strokes, stock hand-drawn icons, or fake notebook chaos.
  • Do not rely on color alone for hierarchy; accents must be secondary to line weight and typographic order.
  • Do not center every block or make the composition evenly symmetrical; preserve editorial asymmetry.
  • Do not use vague artsy labels when a precise caption, folio, note, rule, or annotation would work.
  • Do not over-texturize the paper; grain should be visible only as material tactility, never as visual noise.
  • Do not hide form states behind default browser styling; every state needs an ink or rule treatment.
katagami spec
# Compact Editorial Ink Fine Art

## Philosophy

Compact Editorial Ink Fine Art treats software as a disciplined page: a warm paper field carrying uncompromising black ink, ruled grids, captioned panels, and authored marginalia. It draws from editorial layout, fine-art ink drawing, sumi-e restraint, and Raymond Pettibon-like text-image tension, but translates those sources into usable interface structure rather than decorative illustration. The language is compact, literary, and severe: information is edited down, hierarchy is created with line weight and placement, and empty paper is allowed to speak as loudly as dense marks.

### Values

- {"description":"Primary actions, panel frames, graph strokes, and headings use dense black ink so decisions feel authored, not merely tinted.","name":"Ink as authority"}
- {"description":"Screens are composed like editorial spreads with columns, gutters, captions, rules, folios, and annotation zones instead of floating app chrome.","name":"The page is the interface"}
- {"description":"Large quiet paper areas, a reduced palette, and sparse microcopy prevent the visual system from becoming sketchy or decorative.","name":"Restraint over ornament"}
- {"description":"Line weights, ruled dividers, caption blocks, and typographic scale establish reading order before color or icons are used.","name":"Visible editorial hierarchy"}
- {"description":"Labels, notes, and status messages feel like concise editorial annotations in graphite gray, positioned at edges and corners.","name":"Authored marginalia"}
- {"description":"Subtle paper grain and slight ink overshoot give the UI material presence while keeping components precise and production-ready.","name":"Fine-art tactility"}

### Anti-Values

- Generic minimalism that relies on white cards, soft gray borders, and interchangeable SaaS spacing.
- Stock sketchiness, playful doodles, fake hand-drawn icons, or random scribbles detached from information structure.
- Decorative color palettes; accents are restrained to oxblood or cobalt editorial marks used for meaning.
- Vague artsy language without concrete rules for grids, captions, typography, line weights, and controls.

### Visual Character

- Warm bone paper background with a subtle layered fiber/noise texture applied globally and on every panel surface.
- Dense black ruled editorial grid: panels, tables, controls, and dividers use 1px, 2px, and 4px black line-weight hierarchy.
- Caption blocks attach to panel edges as uppercase serif or mono labels with hairline rules and graphite annotation text.
- Sparse negative space is deliberately asymmetrical: compact content islands sit inside generous paper margins and oversized gutters.
- Ink-mark accents appear as short brush-like underlines, bracket rules, or circled counts created with CSS borders/pseudo-elements, never decorative doodles.

## Tokens

### Borders

- **Accent Width**: 4px
- **Character**: Borders behave like printed rules: hairlines divide reading columns, 2px lines frame decisions, and 4px strokes mark primary editorial emphasis.
- **Default Width**: 1px
- **Style**: solid

### Colors

| Name | Value |
|------|-------|
| accent | `#7A1E22` |
| background | `#F4EFE3` |
| border | `#0A0A09` |
| cobalt | `#1F4E8C` |
| error | `#9B1C1F` |
| graphite | `#58544D` |
| info | `#1D4E89` |
| ink_wash | `#D8D0C0` |
| muted | `#6F6A60` |
| oxblood | `#7A1E22` |
| paper_bone | `#EFE6D2` |
| paper_white | `#FFFDF5` |
| primary | `#0A0A09` |
| secondary | `#3C3A35` |
| success | `#355C3A` |
| surface | `#FFF9EB` |
| text | `#11100D` |
| warning | `#A86A16` |

### Motion

- **Duration**: 140ms
- **Easing**: cubic-bezier(0.2, 0, 0.1, 1)
- **Philosophy**: deliberate, nearly print-static transitions that snap like a page proof being marked

### Radii

- **Full**: 9999px
- **Lg**: 4px
- **Md**: 2px
- **None**: 0
- **Sm**: 1px

### Shadows

- **Lg**: 8px 8px 0 rgba(10,10,9,0.92)
- **Md**: 4px 4px 0 #0A0A09
- **Sm**: 2px 2px 0 #0A0A09

### Spacing

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

### Surfaces

- **Bg Pattern**: noise
- **Card Style**: Flat warm paper panels with visible grain, squared corners, black editorial rules, and occasional offset ink-shadow registration.
- **Treatment**: paper

### Typography

- **Base Size**: 16px
- **Body Font**: Source Serif 4, Georgia, serif
- **Caption Font**: IBM Plex Mono, ui-monospace, monospace
- **Caption Letter Spacing**: 0.08em
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Libre+Baskerville:wght@400;700&family=Source+Serif+4:opsz,wght@8..60,400;8..60,500;8..60,700&display=swap
- **Heading Font**: Libre Baskerville, Georgia, serif
- **Letter Spacing**: -0.01em
- **Line Height**: 1.48
- **Mono Font**: IBM Plex Mono, ui-monospace, SFMono-Regular, Menlo, monospace
- **Scale Ratio**: 1.2

## Rules

### Composition

Use an editorial grid before any component decisions: a large paper margin, a compact left folio rail, a main column for authored content, and a secondary annotation column. Align panel edges to rules; let at least one quadrant remain quiet. Dense areas should feel printed, not boxed. Prefer horizontal rules, vertical gutters, and caption attachments over rounded cards. Keep iconography scarce and text-led.

### Density

The language is compact inside panels but spacious between panels: controls are tightly set with 8-16px internal rhythm while page gutters reach 48-96px on desktop. A screen should feel like an edited broadsheet proof with precise islands of information on a quiet paper ground.

### Hierarchy

Hierarchy moves from 4px black decision strokes to 2px panel frames to 1px hairline rules, then to typography. H1 headings use literary serif scale and tight leading; section labels use uppercase mono captions; body copy uses Source Serif; data and controls use IBM Plex Mono. Oxblood or cobalt may identify one active item, never decorate multiple unrelated elements.

### Signature Patterns

- Every major panel uses a CSS pseudo-element caption tab pinned to its top-left edge with uppercase mono text and a 1px black rule extending from it.
- Important containers use mixed line weights: 4px top or left border for emphasis, 2px outer border, and 1px internal ruled dividers.
- Paper texture is generated with layered radial-gradient and linear-gradient noise on body and panels, not image assets or decorative illustration.
- Ink accents are CSS-only: short uneven underlines, bracket corners, and circled counters made with borders, box-shadow offsets, and pseudo-elements.
- Asymmetric editorial grid uses a narrow folio rail plus main and marginal annotation columns that collapse to a single ruled column on mobile.

## Layout

### Breakpoints

Mobile <= 640px becomes a single column with full-width controls and hidden decorative rail; tablet 641-1024px uses two columns with marginalia beneath; desktop >= 1025px uses full folio/main/margin spread.

### Density

Compact editorial density: high information per panel with strict captioning, offset by large paper margins so the interface stays calm and literary.

### Grid

Desktop uses a max-width 1320px spread with 72px folio rail, 1fr main column, and 320px marginalia column separated by 24px gutters and black vertical rules. Panels use internal 12-column editorial subgrids when needed.

### Responsive

At 375px: one column, 16px gutters, 44px controls, panel captions remain visible. At 768px: two-column stacked annotations, 24px gutters. At 1440px: full three-zone editorial spread with folio rail and marginal notes.

### Whitespace

Whitespace is not generic emptiness; it is paper margin. Keep generous outer padding of 24px mobile, 40px tablet, 64px desktop and allow quiet unused zones beside dense captioned panels.

## Guidance

### Do

- Use warm paper and dense black ink as the default visual contract before introducing accent color.
- Give every panel an authored caption tab or marginal note so the screen reads like an edited page.
- Build hierarchy through line weight: 4px for primary emphasis, 2px for frames, 1px for rules and table divisions.
- Keep microcopy concise, literary, and specific: write captions like proof notes rather than marketing labels.
- Reserve oxblood or cobalt for one editorial state such as active, urgent, selected, or referenced.
- Use squared or nearly squared corners and offset ink shadows to maintain printed materiality.
- Leave deliberate negative space around dense panels; do not fill the page simply because space exists.
- Style inputs, tables, buttons, toggles, and dialogs with the same ruled-paper grammar as layout panels.

### Don't

- Do not use generic SaaS cards with soft shadows, large border radii, pastel fills, or floating glass effects.
- Do not add decorative doodles, random sketch strokes, stock hand-drawn icons, or fake notebook chaos.
- Do not rely on color alone for hierarchy; accents must be secondary to line weight and typographic order.
- Do not center every block or make the composition evenly symmetrical; preserve editorial asymmetry.
- Do not use vague artsy labels when a precise caption, folio, note, rule, or annotation would work.
- Do not over-texturize the paper; grain should be visible only as material tactility, never as visual noise.
- Do not hide form states behind default browser styling; every state needs an ink or rule treatment.

### Accessibility

Maintain high contrast between black ink and paper surfaces. Ensure accent states also include border weight, labels, or symbols. Keep body text at 16px or larger, controls at least 44px tall on touch viewports, and focus states as visible 2px or 4px ink outlines with offset.

### Usage Context

Best for editorial dashboards, research notebooks, curatorial tools, literary archives, fine-art commerce, critique workflows, and analytic products that need authority, restraint, and authored interpretation.
DESIGN.md
---
version: "alpha"
name: "Compact Editorial Ink Fine Art"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  accent: "#7A1E22"
  background: "#F4EFE3"
  border: "#0A0A09"
  cobalt: "#1F4E8C"
  error: "#9B1C1F"
  graphite: "#58544D"
  info: "#1D4E89"
  ink_wash: "#D8D0C0"
  muted: "#6F6A60"
  oxblood: "#7A1E22"
  paper_bone: "#EFE6D2"
  paper_white: "#FFFDF5"
  primary: "#0A0A09"
  secondary: "#3C3A35"
  success: "#355C3A"
  surface: "#FFF9EB"
  text: "#11100D"
  warning: "#A86A16"
typography:
  headline-lg:
    fontFamily: "Libre Baskerville, Georgia, serif"
    fontSize: "1.728rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.01em"
  headline-md:
    fontFamily: "Libre Baskerville, Georgia, serif"
    fontSize: "1.44rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.01em"
  body-md:
    fontFamily: "Source Serif 4, Georgia, serif"
    fontSize: "16px"
    fontWeight: 400
    lineHeight: 1.48
    letterSpacing: "-0.01em"
  label-md:
    fontFamily: "IBM Plex Mono, ui-monospace, SFMono-Regular, Menlo, monospace"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  full: "9999px"
  lg: "4px"
  md: "2px"
  none: "0px"
  sm: "1px"
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-cobalt:
    backgroundColor: "{colors.cobalt}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-graphite:
    backgroundColor: "{colors.graphite}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  color-reference-ink_wash:
    backgroundColor: "{colors.ink_wash}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-oxblood:
    backgroundColor: "{colors.oxblood}"
  color-reference-paper_bone:
    backgroundColor: "{colors.paper_bone}"
  color-reference-paper_white:
    backgroundColor: "{colors.paper_white}"
  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"
---

# Compact Editorial Ink Fine Art

## Overview

Compact Editorial Ink Fine Art treats software as a disciplined page: a warm paper field carrying uncompromising black ink, ruled grids, captioned panels, and authored marginalia. It draws from editorial layout, fine-art ink drawing, sumi-e restraint, and Raymond Pettibon-like text-image tension, but translates those sources into usable interface structure rather than decorative illustration. The language is compact, literary, and severe: information is edited down, hierarchy is created with line weight and placement, and empty paper is allowed to speak as loudly as dense marks.

### Values

- {"description":"Primary actions, panel frames, graph strokes, and headings use dense black ink so decisions feel authored, not merely tinted.","name":"Ink as authority"}
- {"description":"Screens are composed like editorial spreads with columns, gutters, captions, rules, folios, and annotation zones instead of floating app chrome.","name":"The page is the interface"}
- {"description":"Large quiet paper areas, a reduced palette, and sparse microcopy prevent the visual system from becoming sketchy or decorative.","name":"Restraint over ornament"}
- {"description":"Line weights, ruled dividers, caption blocks, and typographic scale establish reading order before color or icons are used.","name":"Visible editorial hierarchy"}
- {"description":"Labels, notes, and status messages feel like concise editorial annotations in graphite gray, positioned at edges and corners.","name":"Authored marginalia"}
- {"description":"Subtle paper grain and slight ink overshoot give the UI material presence while keeping components precise and production-ready.","name":"Fine-art tactility"}

### Anti-Values

- Generic minimalism that relies on white cards, soft gray borders, and interchangeable SaaS spacing.
- Stock sketchiness, playful doodles, fake hand-drawn icons, or random scribbles detached from information structure.
- Decorative color palettes; accents are restrained to oxblood or cobalt editorial marks used for meaning.
- Vague artsy language without concrete rules for grids, captions, typography, line weights, and controls.

### Visual Character

- Warm bone paper background with a subtle layered fiber/noise texture applied globally and on every panel surface.
- Dense black ruled editorial grid: panels, tables, controls, and dividers use 1px, 2px, and 4px black line-weight hierarchy.
- Caption blocks attach to panel edges as uppercase serif or mono labels with hairline rules and graphite annotation text.
- Sparse negative space is deliberately asymmetrical: compact content islands sit inside generous paper margins and oversized gutters.
- Ink-mark accents appear as short brush-like underlines, bracket rules, or circled counts created with CSS borders/pseudo-elements, never decorative doodles.

## 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 | `#7A1E22` |
| background | `#F4EFE3` |
| border | `#0A0A09` |
| cobalt | `#1F4E8C` |
| error | `#9B1C1F` |
| graphite | `#58544D` |
| info | `#1D4E89` |
| ink_wash | `#D8D0C0` |
| muted | `#6F6A60` |
| oxblood | `#7A1E22` |
| paper_bone | `#EFE6D2` |
| paper_white | `#FFFDF5` |
| primary | `#0A0A09` |
| secondary | `#3C3A35` |
| success | `#355C3A` |
| surface | `#FFF9EB` |
| text | `#11100D` |
| warning | `#A86A16` |

## Typography

- **Headline-Lg**: Libre Baskerville, Georgia, serif, 1.728rem, weight 700, line-height 1.1.
- **Headline-Md**: Libre Baskerville, Georgia, serif, 1.44rem, weight 600, line-height 1.15.
- **Body-Md**: Source Serif 4, Georgia, serif, 16px, weight 400, line-height 1.48.
- **Label-Md**: IBM Plex Mono, ui-monospace, SFMono-Regular, Menlo, monospace, 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 becomes a single column with full-width controls and hidden decorative rail; tablet 641-1024px uses two columns with marginalia beneath; desktop >= 1025px uses full folio/main/margin spread.

### Density

Compact editorial density: high information per panel with strict captioning, offset by large paper margins so the interface stays calm and literary.

### Grid

Desktop uses a max-width 1320px spread with 72px folio rail, 1fr main column, and 320px marginalia column separated by 24px gutters and black vertical rules. Panels use internal 12-column editorial subgrids when needed.

### Responsive

At 375px: one column, 16px gutters, 44px controls, panel captions remain visible. At 768px: two-column stacked annotations, 24px gutters. At 1440px: full three-zone editorial spread with folio rail and marginal notes.

### Whitespace

Whitespace is not generic emptiness; it is paper margin. Keep generous outer padding of 24px mobile, 40px tablet, 64px desktop and allow quiet unused zones beside dense captioned panels.

## Elevation & Depth

### Shadows

- **Lg**: 8px 8px 0 rgba(10,10,9,0.92)
- **Md**: 4px 4px 0 #0A0A09
- **Sm**: 2px 2px 0 #0A0A09

## Shapes

### Rounded

- **Full**: `9999px`
- **Lg**: `4px`
- **Md**: `2px`
- **None**: `0px`
- **Sm**: `1px`

### Surfaces

- **Bg Pattern**: noise
- **Card Style**: Flat warm paper panels with visible grain, squared corners, black editorial rules, and occasional offset ink-shadow registration.
- **Treatment**: paper

### Borders

- **Accent Width**: 4px
- **Character**: Borders behave like printed rules: hairlines divide reading columns, 2px lines frame decisions, and 4px strokes mark primary editorial emphasis.
- **Default Width**: 1px
- **Style**: solid

## Components

### Composition

Use an editorial grid before any component decisions: a large paper margin, a compact left folio rail, a main column for authored content, and a secondary annotation column. Align panel edges to rules; let at least one quadrant remain quiet. Dense areas should feel printed, not boxed. Prefer horizontal rules, vertical gutters, and caption attachments over rounded cards. Keep iconography scarce and text-led.

### Density

The language is compact inside panels but spacious between panels: controls are tightly set with 8-16px internal rhythm while page gutters reach 48-96px on desktop. A screen should feel like an edited broadsheet proof with precise islands of information on a quiet paper ground.

### Hierarchy

Hierarchy moves from 4px black decision strokes to 2px panel frames to 1px hairline rules, then to typography. H1 headings use literary serif scale and tight leading; section labels use uppercase mono captions; body copy uses Source Serif; data and controls use IBM Plex Mono. Oxblood or cobalt may identify one active item, never decorate multiple unrelated elements.

### Signature Patterns

- Every major panel uses a CSS pseudo-element caption tab pinned to its top-left edge with uppercase mono text and a 1px black rule extending from it.
- Important containers use mixed line weights: 4px top or left border for emphasis, 2px outer border, and 1px internal ruled dividers.
- Paper texture is generated with layered radial-gradient and linear-gradient noise on body and panels, not image assets or decorative illustration.
- Ink accents are CSS-only: short uneven underlines, bracket corners, and circled counters made with borders, box-shadow offsets, and pseudo-elements.
- Asymmetric editorial grid uses a narrow folio rail plus main and marginal annotation columns that collapse to a single ruled column on mobile.

## 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/compact-editorial-ink-fine-art/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 warm paper and dense black ink as the default visual contract before introducing accent color.
- Do Give every panel an authored caption tab or marginal note so the screen reads like an edited page.
- Do Build hierarchy through line weight: 4px for primary emphasis, 2px for frames, 1px for rules and table divisions.
- Do Keep microcopy concise, literary, and specific: write captions like proof notes rather than marketing labels.
- Do Reserve oxblood or cobalt for one editorial state such as active, urgent, selected, or referenced.
- Do Use squared or nearly squared corners and offset ink shadows to maintain printed materiality.
- Do Leave deliberate negative space around dense panels; do not fill the page simply because space exists.
- Do Style inputs, tables, buttons, toggles, and dialogs with the same ruled-paper grammar as layout panels.
- Don't Do not use generic SaaS cards with soft shadows, large border radii, pastel fills, or floating glass effects.
- Don't Do not add decorative doodles, random sketch strokes, stock hand-drawn icons, or fake notebook chaos.
- Don't Do not rely on color alone for hierarchy; accents must be secondary to line weight and typographic order.
- Don't Do not center every block or make the composition evenly symmetrical; preserve editorial asymmetry.
- Don't Do not use vague artsy labels when a precise caption, folio, note, rule, or annotation would work.
- Don't Do not over-texturize the paper; grain should be visible only as material tactility, never as visual noise.
- Don't Do not hide form states behind default browser styling; every state needs an ink or rule treatment.

### Accessibility

Maintain high contrast between black ink and paper surfaces. Ensure accent states also include border weight, labels, or symbols. Keep body text at 16px or larger, controls at least 44px tall on touch viewports, and focus states as visible 2px or 4px ink outlines with offset.

### Usage Context

Best for editorial dashboards, research notebooks, curatorial tools, literary archives, fine-art commerce, critique workflows, and analytic products that need authority, restraint, and authored interpretation.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "compact-editorial-ink-fine-art",
  "type": "registry:theme",
  "title": "Compact Editorial Ink Fine Art shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F4EFE3",
      "foreground": "#11100D",
      "card": "#FFF9EB",
      "card-foreground": "#11100D",
      "popover": "#FFF9EB",
      "popover-foreground": "#11100D",
      "primary": "#0A0A09",
      "primary-foreground": "#ffffff",
      "secondary": "#3C3A35",
      "secondary-foreground": "#ffffff",
      "muted": "#6F6A60",
      "muted-foreground": "#11100D",
      "accent": "#7A1E22",
      "accent-foreground": "#ffffff",
      "destructive": "#9B1C1F",
      "border": "#0A0A09",
      "input": "#0A0A09",
      "ring": "#7A1E22",
      "chart-1": "#0A0A09",
      "chart-2": "#3C3A35",
      "chart-3": "#7A1E22",
      "chart-4": "#355C3A",
      "chart-5": "#A86A16",
      "sidebar": "#FFF9EB",
      "sidebar-foreground": "#11100D",
      "sidebar-primary": "#0A0A09",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#1D4E89",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#0A0A09",
      "sidebar-ring": "#7A1E22",
      "radius": "2px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#0A0A09",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#7A1E22",
      "accent-foreground": "#ffffff",
      "destructive": "#9B1C1F",
      "border": "#303642",
      "input": "#303642",
      "ring": "#7A1E22",
      "chart-1": "#0A0A09",
      "chart-2": "#3C3A35",
      "chart-3": "#7A1E22",
      "chart-4": "#355C3A",
      "chart-5": "#A86A16",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#0A0A09",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#7A1E22",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#7A1E22",
      "radius": "2px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "compact-editorial-ink-fine-art",
    "slug": "compact-editorial-ink-fine-art",
    "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",
        "cobalt",
        "error",
        "graphite",
        "info",
        "ink_wash",
        "muted",
        "oxblood",
        "paper_bone",
        "paper_white",
        "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",
        "caption_font",
        "caption_letter_spacing",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ]
    }
  }
}
```
in the wild

embodiments

the full element showcase
embodiment · compact-editorial-ink-fine-art
DESIGN.md

at a glance

Palette

Typography

headline-lgLibre Baskerville · 28px · 700

The quick brown fox jumps

headline-mdLibre Baskerville · 23px · 600

The quick brown fox jumps

body-mdSource Serif 4 · 16px · 400

The quick brown fox jumps

label-mdIBM Plex Mono · 12px · 600

The quick brown fox jumps

Components

New
Card title

Components rendered with this language’s tokens — colors, type, and rounded corners as specified.

Spacing

  • base8px
  • xs4px
  • sm8px
  • md12px
  • lg16px
  • xl24px
  • 2xl32px
  • 3xl48px
  • 4xl64px
  • step-896px
  • step-9128px

Shape

full9999px
lg4px
md2px
none0px
sm1px
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: #F4EFE3;
  --foreground: #11100D;
  --card: #FFF9EB;
  --card-foreground: #11100D;
  --popover: #FFF9EB;
  --popover-foreground: #11100D;
  --primary: #0A0A09;
  --primary-foreground: #ffffff;
  --secondary: #3C3A35;
  --secondary-foreground: #ffffff;
  --muted: #6F6A60;
  --muted-foreground: #11100D;
  --accent: #7A1E22;
  --accent-foreground: #ffffff;
  --destructive: #9B1C1F;
  --border: #0A0A09;
  --input: #0A0A09;
  --ring: #7A1E22;
  --chart-1: #0A0A09;
  --chart-2: #3C3A35;
  --chart-3: #7A1E22;
  --chart-4: #355C3A;
  --chart-5: #A86A16;
  --sidebar: #FFF9EB;
  --sidebar-foreground: #11100D;
  --sidebar-primary: #0A0A09;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #1D4E89;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #0A0A09;
  --sidebar-ring: #7A1E22;
  --radius: 2px;
}

.dark {
  --background: #0f1115;
  --foreground: #f8fafc;
  --card: #181b22;
  --card-foreground: #f8fafc;
  --popover: #181b22;
  --popover-foreground: #f8fafc;
  --primary: #0A0A09;
  --primary-foreground: #ffffff;
  --secondary: #252a33;
  --secondary-foreground: #f8fafc;
  --muted: #252a33;
  --muted-foreground: #a1a1aa;
  --accent: #7A1E22;
  --accent-foreground: #ffffff;
  --destructive: #9B1C1F;
  --border: #303642;
  --input: #303642;
  --ring: #7A1E22;
  --chart-1: #0A0A09;
  --chart-2: #3C3A35;
  --chart-3: #7A1E22;
  --chart-4: #355C3A;
  --chart-5: #A86A16;
  --sidebar: #181b22;
  --sidebar-foreground: #f8fafc;
  --sidebar-primary: #0A0A09;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #7A1E22;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #303642;
  --sidebar-ring: #7A1E22;
  --radius: 2px;
}
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 CompactEditorialInkFineArtShadcnKit() {
  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">Compact Editorial Ink Fine Art</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": "compact-editorial-ink-fine-art",
  "type": "registry:theme",
  "title": "Compact Editorial Ink Fine Art shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F4EFE3",
      "foreground": "#11100D",
      "card": "#FFF9EB",
      "card-foreground": "#11100D",
      "popover": "#FFF9EB",
      "popover-foreground": "#11100D",
      "primary": "#0A0A09",
      "primary-foreground": "#ffffff",
      "secondary": "#3C3A35",
      "secondary-foreground": "#ffffff",
      "muted": "#6F6A60",
      "muted-foreground": "#11100D",
      "accent": "#7A1E22",
      "accent-foreground": "#ffffff",
      "destructive": "#9B1C1F",
      "border": "#0A0A09",
      "input": "#0A0A09",
      "ring": "#7A1E22",
      "chart-1": "#0A0A09",
      "chart-2": "#3C3A35",
      "chart-3": "#7A1E22",
      "chart-4": "#355C3A",
      "chart-5": "#A86A16",
      "sidebar": "#FFF9EB",
      "sidebar-foreground": "#11100D",
      "sidebar-primary": "#0A0A09",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#1D4E89",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#0A0A09",
      "sidebar-ring": "#7A1E22",
      "radius": "2px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#0A0A09",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#7A1E22",
      "accent-foreground": "#ffffff",
      "destructive": "#9B1C1F",
      "border": "#303642",
      "input": "#303642",
      "ring": "#7A1E22",
      "chart-1": "#0A0A09",
      "chart-2": "#3C3A35",
      "chart-3": "#7A1E22",
      "chart-4": "#355C3A",
      "chart-5": "#A86A16",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#0A0A09",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#7A1E22",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#7A1E22",
      "radius": "2px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "compact-editorial-ink-fine-art",
    "slug": "compact-editorial-ink-fine-art",
    "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",
        "cobalt",
        "error",
        "graphite",
        "info",
        "ink_wash",
        "muted",
        "oxblood",
        "paper_bone",
        "paper_white",
        "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",
        "caption_font",
        "caption_letter_spacing",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ]
    }
  }
}
component recipescompatibility fallback
# Compact Editorial Ink Fine Art shadcn/ui Components

Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `compact-editorial-ink-fine-art`
Slug: `compact-editorial-ink-fine-art`

## Intent

Compact Editorial Ink Fine Art treats software as a disciplined page: a warm paper field carrying uncompromising black ink, ruled grids, captioned panels, and authored marginalia. It draws from editorial layout, fine-art ink drawing, sumi-e restraint, and Raymond Pettibon-like text-image tension, but translates those sources into usable interface structure rather than decorative illustration. The language is compact, literary, and severe: information is edited down, hierarchy is created with line weight and placement, and empty paper is allowed to speak as loudly as dense marks.

## 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": "#7A1E22",
  "background": "#F4EFE3",
  "border": "#0A0A09",
  "cobalt": "#1F4E8C",
  "error": "#9B1C1F",
  "graphite": "#58544D",
  "info": "#1D4E89",
  "ink_wash": "#D8D0C0",
  "muted": "#6F6A60",
  "oxblood": "#7A1E22",
  "paper_bone": "#EFE6D2",
  "paper_white": "#FFFDF5",
  "primary": "#0A0A09",
  "secondary": "#3C3A35",
  "success": "#355C3A",
  "surface": "#FFF9EB",
  "text": "#11100D",
  "warning": "#A86A16"
}

Typography:

{
  "base_size": "16px",
  "body_font": "Source Serif 4, Georgia, serif",
  "caption_font": "IBM Plex Mono, ui-monospace, monospace",
  "caption_letter_spacing": "0.08em",
  "google_fonts_url": "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Libre+Baskerville:wght@400;700&family=Source+Serif+4:opsz,wght@8..60,400;8..60,500;8..60,700&display=swap",
  "heading_font": "Libre Baskerville, Georgia, serif",
  "letter_spacing": "-0.01em",
  "line_height": 1.48,
  "mono_font": "IBM Plex Mono, ui-monospace, SFMono-Regular, Menlo, monospace",
  "scale_ratio": 1.2
}

## Visual character to preserve

- Warm bone paper background with a subtle layered fiber/noise texture applied globally and on every panel surface.
- Dense black ruled editorial grid: panels, tables, controls, and dividers use 1px, 2px, and 4px black line-weight hierarchy.
- Caption blocks attach to panel edges as uppercase serif or mono labels with hairline rules and graphite annotation text.
- Sparse negative space is deliberately asymmetrical: compact content islands sit inside generous paper margins and oversized gutters.
- Ink-mark accents appear as short brush-like underlines, bracket rules, or circled counts created with CSS borders/pseudo-elements, never decorative doodles.

## ShadSync visual profile

{
  "family": "paper-collage",
  "material": "paper",
  "contour": "default",
  "border": "solid",
  "underlay": true,
  "grain": true,
  "stickerBadges": false,
  "motion": "still",
  "density": "dense",
  "accents": [
    "primary",
    "accent",
    "secondary",
    "muted"
  ]
}

## Signature component recipes

### Button
Use `Button` for primary, secondary, outline, and ghost actions. Primary actions must expose the language's strongest contrast pair, while secondary and ghost actions should preserve the surface treatment instead of falling back to default neutral SaaS styling.

### Card
Use `Card`, `CardHeader`, `CardContent`, `CardFooter`, and `CardAction` as the main composition frame. Cards should demonstrate the language's surface, border, hierarchy, and density rules rather than appearing as generic rounded rectangles.

### Input and Textarea
Use `Input` and `Textarea` with visible focus rings, field labels, validation states, and the language's rhythm. Forms should show real product content, not placeholder-only controls.

### Select, Tabs, and Table
Use `Select`, `Tabs`, and `Table` to prove navigation, filtering, and dense data states. The table should show row rhythm, separators, hover/focus states, and an empty or status state when the language calls for it.

### Dialog and Sheet
Use `Dialog` for centered decisions and `Sheet` for contextual editing. Both should inherit the language's spacing, border, overlay, and motion rules.

## Preview shots

- `application-shell`: dashboard or workspace shell with navigation, cards, forms, and state badges.
- `detail-editor`: focused editing flow using input, textarea, select, switch/checkbox, dialog or sheet, and action buttons.
- `data-operations`: table-heavy operational view with tabs, dropdown menu affordances, badges, and destructive/empty states.
- Each preview shot must include a renderable `scene` payload with concrete headline, description, actions, and rows/fields/stats for the UI preview.

## Implementation contract

- Start from local `ui/src/components/ui` shadcn-style primitives; do not create a second component system.
- Apply `/katagami/shadcn/compact-editorial-ink-fine-art/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 warm paper and dense black ink as the default visual contract before introducing accent color.; Give every panel an authored caption tab or marginal note so the screen reads like an edited page.; Build hierarchy through line weight: 4px for primary emphasis, 2px for frames, 1px for rules and table divisions.; Keep microcopy concise, literary, and specific: write captions like proof notes rather than marketing labels.; Reserve oxblood or cobalt for one editorial state such as active, urgent, selected, or referenced.; Use squared or nearly squared corners and offset ink shadows to maintain printed materiality.; Leave deliberate negative space around dense panels; do not fill the page simply because space exists.; Style inputs, tables, buttons, toggles, and dialogs with the same ruled-paper grammar as layout panels.
- Do not: Do not use generic SaaS cards with soft shadows, large border radii, pastel fills, or floating glass effects.; Do not add decorative doodles, random sketch strokes, stock hand-drawn icons, or fake notebook chaos.; Do not rely on color alone for hierarchy; accents must be secondary to line weight and typographic order.; Do not center every block or make the composition evenly symmetrical; preserve editorial asymmetry.; Do not use vague artsy labels when a precise caption, folio, note, rule, or annotation would work.; Do not over-texturize the paper; grain should be visible only as material tactility, never as visual noise.; Do not hide form states behind default browser styling; every state needs an ink or rule treatment.

## 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 CompactEditorialInkFineArtShadcnKit() {
  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">Compact Editorial Ink Fine Art</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 becomes a single column with full-width controls and hidden decorative rail; tablet 641-1024px uses two columns with marginalia beneath; desktop >= 1025px uses full folio/main/margin spread.",
  "density": "Compact editorial density: high information per panel with strict captioning, offset by large paper margins so the interface stays calm and literary.",
  "grid": "Desktop uses a max-width 1320px spread with 72px folio rail, 1fr main column, and 320px marginalia column separated by 24px gutters and black vertical rules. Panels use internal 12-column editorial subgrids when needed.",
  "responsive": "At 375px: one column, 16px gutters, 44px controls, panel captions remain visible. At 768px: two-column stacked annotations, 24px gutters. At 1440px: full three-zone editorial spread with folio rail and marginal notes.",
  "whitespace": "Whitespace is not generic emptiness; it is paper margin. Keep generous outer padding of 24px mobile, 40px tablet, 64px desktop and allow quiet unused zones beside dense captioned panels."
}
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": "compact-editorial-ink-fine-art",
    "name": "Compact Editorial Ink Fine Art",
    "slug": "compact-editorial-ink-fine-art"
  },
  "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
  "primitives": [
    "button",
    "card",
    "input",
    "textarea",
    "select",
    "dialog",
    "sheet",
    "tabs",
    "badge",
    "separator",
    "checkbox",
    "switch",
    "slider",
    "tooltip",
    "dropdown-menu",
    "table"
  ],
  "identityNotes": [
    "Warm bone paper background with a subtle layered fiber/noise texture applied globally and on every panel surface.",
    "Dense black ruled editorial grid: panels, tables, controls, and dividers use 1px, 2px, and 4px black line-weight hierarchy.",
    "Caption blocks attach to panel edges as uppercase serif or mono labels with hairline rules and graphite annotation text.",
    "Sparse negative space is deliberately asymmetrical: compact content islands sit inside generous paper margins and oversized gutters.",
    "Ink-mark accents appear as short brush-like underlines, bracket rules, or circled counts created with CSS borders/pseudo-elements, never decorative doodles."
  ],
  "visualProfile": {
    "family": "paper-collage",
    "material": "paper",
    "contour": "default",
    "border": "solid",
    "underlay": true,
    "grain": true,
    "stickerBadges": false,
    "motion": "still",
    "density": "dense",
    "accents": [
      "primary",
      "accent",
      "secondary",
      "muted"
    ]
  },
  "shots": [
    {
      "id": "application-shell",
      "title": "Application shell",
      "viewport": "desktop",
      "primitives": [
        "button",
        "card",
        "input",
        "select",
        "tabs",
        "badge",
        "separator",
        "table"
      ],
      "composition": "A real product workspace with navigation, summary cards, filtering controls, and one dense content region.",
      "mustShow": [
        "primary and secondary actions",
        "card hierarchy",
        "filterable state",
        "table or list density"
      ],
      "avoid": [
        "component inventory walls",
        "placeholder-only content",
        "generic rounded SaaS chrome"
      ],
      "scene": {
        "eyebrow": "workspace spread",
        "headline": "Compact Editorial Ink Fine Art 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 warm paper and dense black ink as the default visual contract before introducing accent color.",
      "Give every panel an authored caption tab or marginal note so the screen reads like an edited page.",
      "Build hierarchy through line weight: 4px for primary emphasis, 2px for frames, 1px for rules and table divisions.",
      "Keep microcopy concise, literary, and specific: write captions like proof notes rather than marketing labels.",
      "Reserve oxblood or cobalt for one editorial state such as active, urgent, selected, or referenced.",
      "Use squared or nearly squared corners and offset ink shadows to maintain printed materiality.",
      "Leave deliberate negative space around dense panels; do not fill the page simply because space exists.",
      "Style inputs, tables, buttons, toggles, and dialogs with the same ruled-paper grammar as layout panels."
    ],
    "dont": [
      "Do not use generic SaaS cards with soft shadows, large border radii, pastel fills, or floating glass effects.",
      "Do not add decorative doodles, random sketch strokes, stock hand-drawn icons, or fake notebook chaos.",
      "Do not rely on color alone for hierarchy; accents must be secondary to line weight and typographic order.",
      "Do not center every block or make the composition evenly symmetrical; preserve editorial asymmetry.",
      "Do not use vague artsy labels when a precise caption, folio, note, rule, or annotation would work.",
      "Do not over-texturize the paper; grain should be visible only as material tactility, never as visual noise.",
      "Do not hide form states behind default browser styling; every state needs an ink or rule treatment."
    ]
  }
}
related

More like this