Minimal Repro
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.
specification
philosophy
tokens
borders4 items
- breakpoint
- 3px solid #B6422C
- dashed
- 1px dashed rgba(42,41,36,0.32)
- primary
- 1px solid #2A2924
- subtle
- 1px solid rgba(42,41,36,0.18)
colors14 items
motion5 items
- duration base
- 160ms
- duration fast
- 90ms
- duration slow
- 260ms
- easing
- linear
- principle
- Short deterministic replay ticks only; every transition must feel inspectable and disabled under reduced motion.
opacity3 items
- disabled
- 0.42
- muted
- 0.68
- overlay
- 0.88
radii5 items
- lg
- 24px
- md
- 16px
- none
- 0
- pill
- 9999px
- sm
- 0
shadows4 items
- hairline
- 0 0 0 1px rgba(42,41,36,0.14)
- inset
- inset 0 0 0 1px rgba(42,41,36,0.20)
- lift
- 0 18px 44px rgba(22,21,18,0.08)
- none
- none
spacing11 items
- 0
- 0
- 1
- 4px
- 2
- 8px
- 3
- 12px
- 4
- 16px
- 5
- 24px
- 6
- 32px
- 7
- 48px
- 8
- 64px
- 9
- 96px
- 10
- 128px
surfaces4 items
- failure seam
- #B6422C 3px rule used once per view to mark the active breakpoint
- log strip
- #ECE6DA compressed trace rows separated by dashed borders
- paper
- #FFFDF8 notebook panels with 1px ink border and almost no shadow
- repro frame
- #F7F4EE inset evidence area with nested rectangular bounds
typography5 items
- body font
- IBM Plex Sans
- google fonts url
- https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap
- heading font
- IBM Plex Sans
- mono font
- IBM Plex Mono
- scale
- Tight product scale: 12px metadata, 15px body, 22px section titles, 48-72px proof headlines with -0.04em tracking.
rules
Alternate a spacious central proof area with dense log rails. The tightest recurring gap is 8px and the largest section gap is 96px or more, preserving an 8:1 spacing ratio.
layout
Mixed density is required: the central reproduction frame breathes, while logs, variables, and environment metadata compress into tight rows for rapid scanning.
Desktop uses a 12-column grid with 24px gutters and a 1240px max width. The hero allocates seven columns to the evidence frame, four to the environment rail, and one column to breathing room. Tablet collapses to six columns and mobile stacks all modules with the failure seam above the assertion.
At 900px collapse rails under the proof frame; at 640px turn the step list and diff pane into single-column cards with horizontal code scrolling.
Use 8px and 12px inside dense logs, 24px between related controls, 48px between evidence groups, and 80px around the principal proof frame.
guidance
- Lead every screen with one inspectable evidence frame before showing metrics or navigation.
- Use monospace labels for variables, environment values, timestamps, and assertion text.
- Keep the palette restrained to paper, ink, sage, and one vermilion failure accent.
- Make focus states, severity labels, and selected rows explicit with borders and text, not color alone.
- Do not create a generic SaaS analytics dashboard or three equal metric cards.
- Do not use rainbow severities, soft gradients, glassmorphism, or celebratory success visuals.
- Do not hide form controls behind browser defaults; inputs, selects, toggles, and checkboxes must be visibly styled.
- Do not scatter multiple red accents across a view; one active failure seam is the signature.
imagery
A reproduction notebook with one failing assertion seam, environment metadata rail, and a full-bleed diff specimen.
1.5px mono-line icons with square terminals and no filled duotone treatment.
Sparse line diagrams of test fixtures, cropped UI evidence, and annotated rectangles; no mascots or decorative scenes.
generative
Motion should feel like stepping through a test replay: short, linear, and user-controlled.
Warm paper, ink, muted sage, and vermilion only.
Optional canvas is limited to static trace lines or tiny deterministic playback ticks; avoid particles and decorative shader fields.
katagami spec
# Minimal Repro ## Philosophy Minimal Repro is built from the discipline of reducing a bug report until the cause becomes undeniable. It avoids decorative polish and instead makes evidence legible: nested test frames, exact step labels, sparse annotations, and one controlled breakpoint accent. The language feels calm, procedural, and slightly forensic, with white space used as isolation rather than luxury. Its beauty comes from showing less, but showing each remaining relationship with absolute precision. ### Values - Reduction before expression: remove every element that does not clarify the state being reproduced. - Evidence hierarchy: source, input, observed result, and expected result must be visually distinct. - Traceable structure: nested frames and step numbers show how a user reached the present state. - Quiet confidence: neutral surfaces dominate so the single failure accent can be trusted. - Operational readability: long text, code, timestamps, and controls remain comfortable for extended review. - Deterministic motion: transitions are short, linear, and never obscure state changes. ### Anti-Values - Decorative dashboards with interchangeable cards and celebratory metrics. - Colorful severity rainbows that make every condition compete for attention. - Soft neumorphic shadows, arbitrary gradients, or ornamental illustration. - Dense chrome that hides the minimal sequence needed to understand the case. ### Visual Character - Warm notebook paper surfaces (#F7F4EE and #FFFDF8) are bounded by hard 1px ink borders so every module feels like reproducible evidence rather than decoration. - A single vermilion failure seam (#B6422C) appears as a 3px rule on the active breakpoint, paired with text labels so severity is never communicated by color alone. - Nested rectangular frames, dashed trace dividers, and compact monospace metadata create the visual rhythm of a reduced test case with only necessary variables exposed. - Whitespace is deliberately uneven: the central proof receives generous space while environment rails and log rows compress into dense, scannable fixtures. ## Tokens ### Borders - **Breakpoint**: 3px solid #B6422C - **Dashed**: 1px dashed rgba(42,41,36,0.32) - **Primary**: 1px solid #2A2924 - **Subtle**: 1px solid rgba(42,41,36,0.18) ### Colors | Name | Value | |------|-------| | accent | `#2F5D50` | | background | `#F7F4EE` | | border | `#2A2924` | | border_subtle | `#C9C0B2` | | danger | `#B6422C` | | foreground | `#161512` | | info | `#3D5E78` | | muted | `#D8D1C5` | | primary | `#B6422C` | | secondary | `#5D655F` | | success | `#3E6A52` | | surface | `#FFFDF8` | | surface_alt | `#ECE6DA` | | warning | `#A66A21` | ### Motion - **Duration Base**: 160ms - **Duration Fast**: 90ms - **Duration Slow**: 260ms - **Easing**: linear - **Principle**: Short deterministic replay ticks only; every transition must feel inspectable and disabled under reduced motion. ### Opacity - **Disabled**: 0.42 - **Muted**: 0.68 - **Overlay**: 0.88 ### Radii - **Lg**: 24px - **Md**: 16px - **None**: 0 - **Pill**: 9999px - **Sm**: 0 ### Shadows - **Hairline**: 0 0 0 1px rgba(42,41,36,0.14) - **Inset**: inset 0 0 0 1px rgba(42,41,36,0.20) - **Lift**: 0 18px 44px rgba(22,21,18,0.08) - **None**: none ### Spacing - **0**: 0 - **1**: 4px - **2**: 8px - **3**: 12px - **4**: 16px - **5**: 24px - **6**: 32px - **7**: 48px - **8**: 64px - **9**: 96px - **10**: 128px ### Surfaces - **Failure Seam**: #B6422C 3px rule used once per view to mark the active breakpoint - **Log Strip**: #ECE6DA compressed trace rows separated by dashed borders - **Paper**: #FFFDF8 notebook panels with 1px ink border and almost no shadow - **Repro Frame**: #F7F4EE inset evidence area with nested rectangular bounds ### Typography - **Body Font**: IBM Plex Sans - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap - **Heading Font**: IBM Plex Sans - **Mono Font**: IBM Plex Mono - **Scale**: Tight product scale: 12px metadata, 15px body, 22px section titles, 48-72px proof headlines with -0.04em tracking. ## Rules ### Composition - Lead with one oversized evidence frame; never distribute attention across three equal cards. - Use nested rectangles to show reproduction scope: environment outside, steps in the middle, failing assertion inside. - Keep metadata in compact rails so the central artifact remains spacious and inspectable. - Place the vermilion breakpoint accent at exactly one active failure seam per view. - Break the grid with one full-width code or diff specimen to create a memorable proof moment. - Prefer left-aligned, ragged layouts with measured gaps over centered marketing symmetry. ### Density Alternate a spacious central proof area with dense log rails. The tightest recurring gap is 8px and the largest section gap is 96px or more, preserving an 8:1 spacing ratio. ### Hierarchy - Display headings use editorial serif contrast and tight tracking for the case title. - Procedural labels use mono uppercase with tabular numerals and appear before each evidence group. - Body copy is plain and readable, with muted color for explanation and ink color for facts. - Primary actions are outlined with a vermilion seam instead of filled saturated buttons. - Terminal excerpts invert the palette but keep the same border rhythm. ### Signature Patterns - Render the main artifact as nested bordered rectangles: outer environment frame, middle reproduction steps, inner assertion panel, each using CSS border and inset spacing rather than shadows. - Use exactly one vermilion breakpoint seam per composition with border-left or border-top set to 3px solid #B6422C and an adjacent monospace label describing the failed assertion. - Pair spacious evidence canvases with compressed metadata rails by combining CSS grid column spans, 8px log rows, and 64px section gaps to show investigation hierarchy. - Display code, diff, and event traces in IBM Plex Mono with dashed row separators, muted paper backgrounds, and explicit focus outlines for all interactive controls. ## Layout ### Density Mixed density is required: the central reproduction frame breathes, while logs, variables, and environment metadata compress into tight rows for rapid scanning. ### Grid Desktop uses a 12-column grid with 24px gutters and a 1240px max width. The hero allocates seven columns to the evidence frame, four to the environment rail, and one column to breathing room. Tablet collapses to six columns and mobile stacks all modules with the failure seam above the assertion. ### Responsive At 900px collapse rails under the proof frame; at 640px turn the step list and diff pane into single-column cards with horizontal code scrolling. ### Spacing Use 8px and 12px inside dense logs, 24px between related controls, 48px between evidence groups, and 80px around the principal proof frame. ## Guidance ### Do - Lead every screen with one inspectable evidence frame before showing metrics or navigation. - Use monospace labels for variables, environment values, timestamps, and assertion text. - Keep the palette restrained to paper, ink, sage, and one vermilion failure accent. - Make focus states, severity labels, and selected rows explicit with borders and text, not color alone. ### Don't - Do not create a generic SaaS analytics dashboard or three equal metric cards. - Do not use rainbow severities, soft gradients, glassmorphism, or celebratory success visuals. - Do not hide form controls behind browser defaults; inputs, selects, toggles, and checkboxes must be visibly styled. - Do not scatter multiple red accents across a view; one active failure seam is the signature. ### Accessibility Maintain WCAG AA contrast for all text. Pair the vermilion seam with labels, icons, or assertion text. Keep body copy at 15-16px with 1.5 line height, provide visible 2px focus outlines, style every form control, and honor prefers-reduced-motion by disabling replay ticks. ### Usage Context Best for developer tools, QA review products, incident replay, API debugging, compliance evidence, changelog verification, and any product where a small reproducible sequence matters more than broad exploration. ## Imagery Direction ### Hero Image Direction A reproduction notebook with one failing assertion seam, environment metadata rail, and a full-bleed diff specimen. ### Icon Style 1.5px mono-line icons with square terminals and no filled duotone treatment. ### Illustration Style Sparse line diagrams of test fixtures, cropped UI evidence, and annotated rectangles; no mascots or decorative scenes. ### Image Gen Prompts - Minimal debugging interface with nested paper rectangles, vermilion failure seam, monochrome logs, warm off-white background, precise typographic labels ## Generative Canvas ### Animation Philosophy Motion should feel like stepping through a test replay: short, linear, and user-controlled. ### Shader Palette Warm paper, ink, muted sage, and vermilion only. ### Techniques Optional canvas is limited to static trace lines or tiny deterministic playback ticks; avoid particles and decorative shader fields.
DESIGN.md
---
version: "alpha"
name: "Minimal Repro"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
accent: "#2F5D50"
background: "#F7F4EE"
border: "#2A2924"
border_subtle: "#C9C0B2"
danger: "#B6422C"
foreground: "#161512"
info: "#3D5E78"
muted: "#D8D1C5"
primary: "#B6422C"
secondary: "#5D655F"
success: "#3E6A52"
surface: "#FFFDF8"
surface_alt: "#ECE6DA"
warning: "#A66A21"
typography:
headline-lg:
fontFamily: "IBM Plex Sans"
fontSize: "1.953rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "IBM Plex Sans"
fontSize: "1.563rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "IBM Plex Sans"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.02em"
label-md:
fontFamily: "IBM Plex Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
lg: "24px"
md: "16px"
none: "0px"
pill: "9999px"
sm: "0px"
spacing:
0: "0px"
1: "4px"
2: "8px"
3: "12px"
4: "16px"
5: "24px"
6: "32px"
7: "48px"
8: "64px"
9: "96px"
10: "128px"
components:
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-background:
backgroundColor: "{colors.background}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-border_subtle:
backgroundColor: "{colors.border_subtle}"
color-reference-danger:
backgroundColor: "{colors.danger}"
color-reference-foreground:
backgroundColor: "{colors.foreground}"
color-reference-info:
backgroundColor: "{colors.info}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-primary:
backgroundColor: "{colors.primary}"
color-reference-secondary:
backgroundColor: "{colors.secondary}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_alt:
backgroundColor: "{colors.surface_alt}"
color-reference-warning:
backgroundColor: "{colors.warning}"
button-primary:
backgroundColor: "{colors.primary}"
textColor: "#ffffff"
typography: "{typography.label-md}"
rounded: "{rounded.md}"
padding: "12px"
card-surface:
backgroundColor: "{colors.surface}"
textColor: "{colors.primary}"
rounded: "{rounded.md}"
padding: "16px"
input-default:
backgroundColor: "{colors.surface}"
textColor: "{colors.primary}"
rounded: "{rounded.md}"
height: "44px"
---
# Minimal Repro
## Overview
Minimal Repro is built from the discipline of reducing a bug report until the cause becomes undeniable. It avoids decorative polish and instead makes evidence legible: nested test frames, exact step labels, sparse annotations, and one controlled breakpoint accent. The language feels calm, procedural, and slightly forensic, with white space used as isolation rather than luxury. Its beauty comes from showing less, but showing each remaining relationship with absolute precision.
### Values
- Reduction before expression: remove every element that does not clarify the state being reproduced.
- Evidence hierarchy: source, input, observed result, and expected result must be visually distinct.
- Traceable structure: nested frames and step numbers show how a user reached the present state.
- Quiet confidence: neutral surfaces dominate so the single failure accent can be trusted.
- Operational readability: long text, code, timestamps, and controls remain comfortable for extended review.
- Deterministic motion: transitions are short, linear, and never obscure state changes.
### Anti-Values
- Decorative dashboards with interchangeable cards and celebratory metrics.
- Colorful severity rainbows that make every condition compete for attention.
- Soft neumorphic shadows, arbitrary gradients, or ornamental illustration.
- Dense chrome that hides the minimal sequence needed to understand the case.
### Visual Character
- Warm notebook paper surfaces (#F7F4EE and #FFFDF8) are bounded by hard 1px ink borders so every module feels like reproducible evidence rather than decoration.
- A single vermilion failure seam (#B6422C) appears as a 3px rule on the active breakpoint, paired with text labels so severity is never communicated by color alone.
- Nested rectangular frames, dashed trace dividers, and compact monospace metadata create the visual rhythm of a reduced test case with only necessary variables exposed.
- Whitespace is deliberately uneven: the central proof receives generous space while environment rails and log rows compress into dense, scannable fixtures.
## 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 | `#2F5D50` |
| background | `#F7F4EE` |
| border | `#2A2924` |
| border_subtle | `#C9C0B2` |
| danger | `#B6422C` |
| foreground | `#161512` |
| info | `#3D5E78` |
| muted | `#D8D1C5` |
| primary | `#B6422C` |
| secondary | `#5D655F` |
| success | `#3E6A52` |
| surface | `#FFFDF8` |
| surface_alt | `#ECE6DA` |
| warning | `#A66A21` |
## Typography
- **Headline-Lg**: IBM Plex Sans, 1.953rem, weight 700, line-height 1.1.
- **Headline-Md**: IBM Plex Sans, 1.563rem, weight 600, line-height 1.15.
- **Body-Md**: IBM Plex Sans, 16px, weight 400, line-height 1.5.
- **Label-Md**: IBM Plex Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **0**: `0px`
- **1**: `4px`
- **2**: `8px`
- **3**: `12px`
- **4**: `16px`
- **5**: `24px`
- **6**: `32px`
- **7**: `48px`
- **8**: `64px`
- **9**: `96px`
- **10**: `128px`
### Density
Mixed density is required: the central reproduction frame breathes, while logs, variables, and environment metadata compress into tight rows for rapid scanning.
### Grid
Desktop uses a 12-column grid with 24px gutters and a 1240px max width. The hero allocates seven columns to the evidence frame, four to the environment rail, and one column to breathing room. Tablet collapses to six columns and mobile stacks all modules with the failure seam above the assertion.
### Responsive
At 900px collapse rails under the proof frame; at 640px turn the step list and diff pane into single-column cards with horizontal code scrolling.
### Spacing
Use 8px and 12px inside dense logs, 24px between related controls, 48px between evidence groups, and 80px around the principal proof frame.
## Elevation & Depth
### Shadows
- **Hairline**: 0 0 0 1px rgba(42,41,36,0.14)
- **Inset**: inset 0 0 0 1px rgba(42,41,36,0.20)
- **Lift**: 0 18px 44px rgba(22,21,18,0.08)
- **None**: none
## Shapes
### Rounded
- **Lg**: `24px`
- **Md**: `16px`
- **None**: `0px`
- **Pill**: `9999px`
- **Sm**: `0px`
### Surfaces
- **Failure Seam**: #B6422C 3px rule used once per view to mark the active breakpoint
- **Log Strip**: #ECE6DA compressed trace rows separated by dashed borders
- **Paper**: #FFFDF8 notebook panels with 1px ink border and almost no shadow
- **Repro Frame**: #F7F4EE inset evidence area with nested rectangular bounds
### Borders
- **Breakpoint**: 3px solid #B6422C
- **Dashed**: 1px dashed rgba(42,41,36,0.32)
- **Primary**: 1px solid #2A2924
- **Subtle**: 1px solid rgba(42,41,36,0.18)
## Components
### Composition
- Lead with one oversized evidence frame; never distribute attention across three equal cards.
- Use nested rectangles to show reproduction scope: environment outside, steps in the middle, failing assertion inside.
- Keep metadata in compact rails so the central artifact remains spacious and inspectable.
- Place the vermilion breakpoint accent at exactly one active failure seam per view.
- Break the grid with one full-width code or diff specimen to create a memorable proof moment.
- Prefer left-aligned, ragged layouts with measured gaps over centered marketing symmetry.
### Density
Alternate a spacious central proof area with dense log rails. The tightest recurring gap is 8px and the largest section gap is 96px or more, preserving an 8:1 spacing ratio.
### Hierarchy
- Display headings use editorial serif contrast and tight tracking for the case title.
- Procedural labels use mono uppercase with tabular numerals and appear before each evidence group.
- Body copy is plain and readable, with muted color for explanation and ink color for facts.
- Primary actions are outlined with a vermilion seam instead of filled saturated buttons.
- Terminal excerpts invert the palette but keep the same border rhythm.
### Signature Patterns
- Render the main artifact as nested bordered rectangles: outer environment frame, middle reproduction steps, inner assertion panel, each using CSS border and inset spacing rather than shadows.
- Use exactly one vermilion breakpoint seam per composition with border-left or border-top set to 3px solid #B6422C and an adjacent monospace label describing the failed assertion.
- Pair spacious evidence canvases with compressed metadata rails by combining CSS grid column spans, 8px log rows, and 64px section gaps to show investigation hierarchy.
- Display code, diff, and event traces in IBM Plex Mono with dashed row separators, muted paper backgrounds, and explicit focus outlines for all interactive controls.
## 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-019e04f8-a451-77a0-9f09-f18b7b7dbe5c/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 Lead every screen with one inspectable evidence frame before showing metrics or navigation.
- Do Use monospace labels for variables, environment values, timestamps, and assertion text.
- Do Keep the palette restrained to paper, ink, sage, and one vermilion failure accent.
- Do Make focus states, severity labels, and selected rows explicit with borders and text, not color alone.
- Don't Do not create a generic SaaS analytics dashboard or three equal metric cards.
- Don't Do not use rainbow severities, soft gradients, glassmorphism, or celebratory success visuals.
- Don't Do not hide form controls behind browser defaults; inputs, selects, toggles, and checkboxes must be visibly styled.
- Don't Do not scatter multiple red accents across a view; one active failure seam is the signature.
### Accessibility
Maintain WCAG AA contrast for all text. Pair the vermilion seam with labels, icons, or assertion text. Keep body copy at 15-16px with 1.5 line height, provide visible 2px focus outlines, style every form control, and honor prefers-reduced-motion by disabling replay ticks.
### Usage Context
Best for developer tools, QA review products, incident replay, API debugging, compliance evidence, changelog verification, and any product where a small reproducible sequence matters more than broad exploration.
## Imagery Direction
### Hero Image Direction
A reproduction notebook with one failing assertion seam, environment metadata rail, and a full-bleed diff specimen.
### Icon Style
1.5px mono-line icons with square terminals and no filled duotone treatment.
### Illustration Style
Sparse line diagrams of test fixtures, cropped UI evidence, and annotated rectangles; no mascots or decorative scenes.
### Image Gen Prompts
- Minimal debugging interface with nested paper rectangles, vermilion failure seam, monochrome logs, warm off-white background, precise typographic labels
## Generative Canvas
### Animation Philosophy
Motion should feel like stepping through a test replay: short, linear, and user-controlled.
### Shader Palette
Warm paper, ink, muted sage, and vermilion only.
### Techniques
Optional canvas is limited to static trace lines or tiny deterministic playback ticks; avoid particles and decorative shader fields.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "minimal-repro",
"type": "registry:theme",
"title": "Minimal Repro shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F7F4EE",
"foreground": "#161512",
"card": "#FFFDF8",
"card-foreground": "#161512",
"popover": "#FFFDF8",
"popover-foreground": "#161512",
"primary": "#B6422C",
"primary-foreground": "#ffffff",
"secondary": "#5D655F",
"secondary-foreground": "#ffffff",
"muted": "#D8D1C5",
"muted-foreground": "#161512",
"accent": "#2F5D50",
"accent-foreground": "#ffffff",
"destructive": "#dc2626",
"border": "#2A2924",
"input": "#2A2924",
"ring": "#2F5D50",
"chart-1": "#B6422C",
"chart-2": "#5D655F",
"chart-3": "#2F5D50",
"chart-4": "#3E6A52",
"chart-5": "#A66A21",
"sidebar": "#FFFDF8",
"sidebar-foreground": "#161512",
"sidebar-primary": "#B6422C",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#3D5E78",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#2A2924",
"sidebar-ring": "#2F5D50",
"radius": "16px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#B6422C",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#2F5D50",
"accent-foreground": "#ffffff",
"destructive": "#dc2626",
"border": "#303642",
"input": "#303642",
"ring": "#2F5D50",
"chart-1": "#B6422C",
"chart-2": "#5D655F",
"chart-3": "#2F5D50",
"chart-4": "#3E6A52",
"chart-5": "#A66A21",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#B6422C",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#2F5D50",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#2F5D50",
"radius": "16px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019e04f8-a451-77a0-9f09-f18b7b7dbe5c",
"slug": "minimal-repro",
"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": [
"breakpoint",
"dashed",
"primary",
"subtle"
],
"colors": [
"accent",
"background",
"border",
"border_subtle",
"danger",
"foreground",
"info",
"muted",
"primary",
"secondary",
"success",
"surface",
"surface_alt",
"warning"
],
"motion": [
"duration_base",
"duration_fast",
"duration_slow",
"easing",
"principle"
],
"opacity": [
"disabled",
"muted",
"overlay"
],
"radii": [
"lg",
"md",
"none",
"pill",
"sm"
],
"shadows": [
"hairline",
"inset",
"lift",
"none"
],
"spacing": [
"0",
"1",
"10",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
],
"surfaces": [
"failure_seam",
"log_strip",
"paper",
"repro_frame"
],
"typography": [
"body_font",
"google_fonts_url",
"heading_font",
"mono_font",
"scale"
]
}
}
}
```embodiments
at a glance
Typography
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Components
Components rendered with this language’s tokens — colors, type, and rounded corners as specified.
Spacing
- 00px
- 14px
- 28px
- 312px
- 416px
- 524px
- 632px
- 748px
- 864px
- 996px
- 10128px
Shape
implementation kit
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
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table:root {
--background: #F7F4EE;
--foreground: #161512;
--card: #FFFDF8;
--card-foreground: #161512;
--popover: #FFFDF8;
--popover-foreground: #161512;
--primary: #B6422C;
--primary-foreground: #ffffff;
--secondary: #5D655F;
--secondary-foreground: #ffffff;
--muted: #D8D1C5;
--muted-foreground: #161512;
--accent: #2F5D50;
--accent-foreground: #ffffff;
--destructive: #dc2626;
--border: #2A2924;
--input: #2A2924;
--ring: #2F5D50;
--chart-1: #B6422C;
--chart-2: #5D655F;
--chart-3: #2F5D50;
--chart-4: #3E6A52;
--chart-5: #A66A21;
--sidebar: #FFFDF8;
--sidebar-foreground: #161512;
--sidebar-primary: #B6422C;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #3D5E78;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #2A2924;
--sidebar-ring: #2F5D50;
--radius: 16px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #B6422C;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #2F5D50;
--accent-foreground: #ffffff;
--destructive: #dc2626;
--border: #303642;
--input: #303642;
--ring: #2F5D50;
--chart-1: #B6422C;
--chart-2: #5D655F;
--chart-3: #2F5D50;
--chart-4: #3E6A52;
--chart-5: #A66A21;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #B6422C;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #2F5D50;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #2F5D50;
--radius: 16px;
}
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 MinimalReproShadcnKit() {
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">Minimal Repro</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>
);
}
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "minimal-repro",
"type": "registry:theme",
"title": "Minimal Repro shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F7F4EE",
"foreground": "#161512",
"card": "#FFFDF8",
"card-foreground": "#161512",
"popover": "#FFFDF8",
"popover-foreground": "#161512",
"primary": "#B6422C",
"primary-foreground": "#ffffff",
"secondary": "#5D655F",
"secondary-foreground": "#ffffff",
"muted": "#D8D1C5",
"muted-foreground": "#161512",
"accent": "#2F5D50",
"accent-foreground": "#ffffff",
"destructive": "#dc2626",
"border": "#2A2924",
"input": "#2A2924",
"ring": "#2F5D50",
"chart-1": "#B6422C",
"chart-2": "#5D655F",
"chart-3": "#2F5D50",
"chart-4": "#3E6A52",
"chart-5": "#A66A21",
"sidebar": "#FFFDF8",
"sidebar-foreground": "#161512",
"sidebar-primary": "#B6422C",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#3D5E78",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#2A2924",
"sidebar-ring": "#2F5D50",
"radius": "16px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#B6422C",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#2F5D50",
"accent-foreground": "#ffffff",
"destructive": "#dc2626",
"border": "#303642",
"input": "#303642",
"ring": "#2F5D50",
"chart-1": "#B6422C",
"chart-2": "#5D655F",
"chart-3": "#2F5D50",
"chart-4": "#3E6A52",
"chart-5": "#A66A21",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#B6422C",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#2F5D50",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#2F5D50",
"radius": "16px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019e04f8-a451-77a0-9f09-f18b7b7dbe5c",
"slug": "minimal-repro",
"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": [
"breakpoint",
"dashed",
"primary",
"subtle"
],
"colors": [
"accent",
"background",
"border",
"border_subtle",
"danger",
"foreground",
"info",
"muted",
"primary",
"secondary",
"success",
"surface",
"surface_alt",
"warning"
],
"motion": [
"duration_base",
"duration_fast",
"duration_slow",
"easing",
"principle"
],
"opacity": [
"disabled",
"muted",
"overlay"
],
"radii": [
"lg",
"md",
"none",
"pill",
"sm"
],
"shadows": [
"hairline",
"inset",
"lift",
"none"
],
"spacing": [
"0",
"1",
"10",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
],
"surfaces": [
"failure_seam",
"log_strip",
"paper",
"repro_frame"
],
"typography": [
"body_font",
"google_fonts_url",
"heading_font",
"mono_font",
"scale"
]
}
}
}
# Minimal Repro shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019e04f8-a451-77a0-9f09-f18b7b7dbe5c`
Slug: `minimal-repro`
## Intent
Minimal Repro is built from the discipline of reducing a bug report until the cause becomes undeniable. It avoids decorative polish and instead makes evidence legible: nested test frames, exact step labels, sparse annotations, and one controlled breakpoint accent. The language feels calm, procedural, and slightly forensic, with white space used as isolation rather than luxury. Its beauty comes from showing less, but showing each remaining relationship with absolute precision.
## 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": "#2F5D50",
"background": "#F7F4EE",
"border": "#2A2924",
"border_subtle": "#C9C0B2",
"danger": "#B6422C",
"foreground": "#161512",
"info": "#3D5E78",
"muted": "#D8D1C5",
"primary": "#B6422C",
"secondary": "#5D655F",
"success": "#3E6A52",
"surface": "#FFFDF8",
"surface_alt": "#ECE6DA",
"warning": "#A66A21"
}
Typography:
{
"body_font": "IBM Plex Sans",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap",
"heading_font": "IBM Plex Sans",
"mono_font": "IBM Plex Mono",
"scale": "Tight product scale: 12px metadata, 15px body, 22px section titles, 48-72px proof headlines with -0.04em tracking."
}
## Visual character to preserve
- Warm notebook paper surfaces (#F7F4EE and #FFFDF8) are bounded by hard 1px ink borders so every module feels like reproducible evidence rather than decoration.
- A single vermilion failure seam (#B6422C) appears as a 3px rule on the active breakpoint, paired with text labels so severity is never communicated by color alone.
- Nested rectangular frames, dashed trace dividers, and compact monospace metadata create the visual rhythm of a reduced test case with only necessary variables exposed.
- Whitespace is deliberately uneven: the central proof receives generous space while environment rails and log rows compress into dense, scannable fixtures.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "dashed",
"underlay": false,
"grain": true,
"stickerBadges": false,
"motion": "still",
"density": "dense",
"accents": [
"primary",
"accent",
"secondary",
"muted"
]
}
## Signature component recipes
### Button
Use `Button` for primary, secondary, outline, and ghost actions. Primary actions must expose the language's strongest contrast pair, while secondary and ghost actions should preserve the surface treatment instead of falling back to default neutral SaaS styling.
### Card
Use `Card`, `CardHeader`, `CardContent`, `CardFooter`, and `CardAction` as the main composition frame. Cards should demonstrate the language's surface, border, hierarchy, and density rules rather than appearing as generic rounded rectangles.
### Input and Textarea
Use `Input` and `Textarea` with visible focus rings, field labels, validation states, and the language's rhythm. Forms should show real product content, not placeholder-only controls.
### Select, Tabs, and Table
Use `Select`, `Tabs`, and `Table` to prove navigation, filtering, and dense data states. The table should show row rhythm, separators, hover/focus states, and an empty or status state when the language calls for it.
### Dialog and Sheet
Use `Dialog` for centered decisions and `Sheet` for contextual editing. Both should inherit the language's spacing, border, overlay, and motion rules.
## Preview shots
- `application-shell`: dashboard or workspace shell with navigation, cards, forms, and state badges.
- `detail-editor`: focused editing flow using input, textarea, select, switch/checkbox, dialog or sheet, and action buttons.
- `data-operations`: table-heavy operational view with tabs, dropdown menu affordances, badges, and destructive/empty states.
- Each preview shot must include a renderable `scene` payload with concrete headline, description, actions, and rows/fields/stats for the UI preview.
## Implementation contract
- Start from local `ui/src/components/ui` shadcn-style primitives; do not create a second component system.
- Apply `/katagami/shadcn/minimal-repro/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: Lead every screen with one inspectable evidence frame before showing metrics or navigation.; Use monospace labels for variables, environment values, timestamps, and assertion text.; Keep the palette restrained to paper, ink, sage, and one vermilion failure accent.; Make focus states, severity labels, and selected rows explicit with borders and text, not color alone.
- Do not: Do not create a generic SaaS analytics dashboard or three equal metric cards.; Do not use rainbow severities, soft gradients, glassmorphism, or celebratory success visuals.; Do not hide form controls behind browser defaults; inputs, selects, toggles, and checkboxes must be visibly styled.; Do not scatter multiple red accents across a view; one active failure seam is the signature.
## 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 MinimalReproShadcnKit() {
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">Minimal Repro</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": "Mixed density is required: the central reproduction frame breathes, while logs, variables, and environment metadata compress into tight rows for rapid scanning.",
"grid": "Desktop uses a 12-column grid with 24px gutters and a 1240px max width. The hero allocates seven columns to the evidence frame, four to the environment rail, and one column to breathing room. Tablet collapses to six columns and mobile stacks all modules with the failure seam above the assertion.",
"responsive": "At 900px collapse rails under the proof frame; at 640px turn the step list and diff pane into single-column cards with horizontal code scrolling.",
"spacing": "Use 8px and 12px inside dense logs, 24px between related controls, 48px between evidence groups, and 80px around the principal proof frame."
}
{
"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-019e04f8-a451-77a0-9f09-f18b7b7dbe5c",
"name": "Minimal Repro",
"slug": "minimal-repro"
},
"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 notebook paper surfaces (#F7F4EE and #FFFDF8) are bounded by hard 1px ink borders so every module feels like reproducible evidence rather than decoration.",
"A single vermilion failure seam (#B6422C) appears as a 3px rule on the active breakpoint, paired with text labels so severity is never communicated by color alone.",
"Nested rectangular frames, dashed trace dividers, and compact monospace metadata create the visual rhythm of a reduced test case with only necessary variables exposed.",
"Whitespace is deliberately uneven: the central proof receives generous space while environment rails and log rows compress into dense, scannable fixtures."
],
"visualProfile": {
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "dashed",
"underlay": false,
"grain": true,
"stickerBadges": false,
"motion": "still",
"density": "dense",
"accents": [
"primary",
"accent",
"secondary",
"muted"
]
},
"shots": [
{
"id": "application-shell",
"title": "Application shell",
"viewport": "desktop",
"primitives": [
"button",
"card",
"input",
"select",
"tabs",
"badge",
"separator",
"table"
],
"composition": "A real product workspace with navigation, summary cards, filtering controls, and one dense content region.",
"mustShow": [
"primary and secondary actions",
"card hierarchy",
"filterable state",
"table or list density"
],
"avoid": [
"component inventory walls",
"placeholder-only content",
"generic rounded SaaS chrome"
],
"scene": {
"eyebrow": "workspace spread",
"headline": "Minimal Repro 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": [
"Lead every screen with one inspectable evidence frame before showing metrics or navigation.",
"Use monospace labels for variables, environment values, timestamps, and assertion text.",
"Keep the palette restrained to paper, ink, sage, and one vermilion failure accent.",
"Make focus states, severity labels, and selected rows explicit with borders and text, not color alone."
],
"dont": [
"Do not create a generic SaaS analytics dashboard or three equal metric cards.",
"Do not use rainbow severities, soft gradients, glassmorphism, or celebratory success visuals.",
"Do not hide form controls behind browser defaults; inputs, selects, toggles, and checkboxes must be visibly styled.",
"Do not scatter multiple red accents across a view; one active failure seam is the signature."
]
}
}