back to gallery
design language·retro-computing-8-bit

Retro Computing 8-Bit

A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.

Download DESIGN.md

Portable DESIGN.md source of truth for most agents and apps.

the spec

specification

philosophy
summary
A retro-computing interface language derived from 8-bit home computers, DOS utilities, ANSI BBS screens, and CGA-era display constraints. It treats the screen as a phosphor grid: every module is snapped to a strict pixel rhythm, surfaces are built from hard-edged tiles, and feedback appears as inverse-video labels, segmented meters, and blinking machine states.
values
Respect limited-palette discipline and let color coding carry system meaning.Build hierarchy through framed windows, title bars, and dense monospace labeling.Preserve pixel alignment so borders, icons, and dithering read crisply at every size.Use machine-like feedback patterns such as segmented progress bars and status lamps.Pair nostalgia with utility: the interface should feel usable, not costume-like.
anti-values
×Soft neumorphic depth, blur, and frosted glass effects.×Rounded organic cards or fluid asymmetrical blobs.×Palette sprawl beyond an intentional 8-bit inspired set.×Airy luxury spacing that erases the compact workstation feel.×Illustrative decoration that overwhelms functional screen structure.
tokens
colors12 items
primary
#55FF55
secondary
#5555FF
accent
#FF55FF
background
#0A0A0A
surface
#1B1B1B
text
#F5F5F5
muted
#AAAAAA
border
#E6E6E6
error
#FF5555
success
#55FF55
warning
#FFFF55
info
#55FFFF
typography8 items
heading font
Press Start 2P, monospace
body font
VT323, monospace
mono font
IBM Plex Mono, monospace
base size
16px
scale ratio
1.125
line height
1.45
letter spacing
0.02em
google fonts url
https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;700&family=Press+Start+2P&family=VT323&display=swap
spacing2 items
base
8px
scale
4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px
radii5 items
none
0px
sm
2px
md
4px
lg
4px
full
9999px
shadows3 items
sm
1px 1px 0 #000000
md
2px 2px 0 #000000
lg
4px 4px 0 #000000
surfaces3 items
treatment
noise
card style
Dark phosphor panels with checker-dither overlays, inset title bars, and crisp framed modules.
bg pattern
lines
borders4 items
default width
1px
accent width
2px
style
solid
character
High-contrast pixel borders with bright top-left highlights and dark bottom-right shadow edges.
motion3 items
duration
120ms
easing
steps(2, end)
philosophy
snappy
rules
composition
Compose screens as nested utility windows: a command/status bar at the top, a primary work surface in the center, and supporting instrument panels flanking it. Modules should align to an 8px grid and feel like rearrangeable software panes rather than marketing cards.
hierarchy
Use title bars, inverse labels, color-state chips, and boxed readouts to define hierarchy. Large type is reserved for screen titles and critical counters; most hierarchy comes from framing, fill contrast, and status color changes.
density
Compact and information-rich. Controls sit close together, lists are multi-row, and readouts expose many simultaneous states without collapsing into modern minimalism.
signature patterns
Apply repeating-linear-gradient scanlines plus a checker-dither pseudo-element on major surfaces so panels visibly emulate CRT phosphor texture and limited-color shading.Render every window and button with dual-edge pixel framing: a bright top-left border and a dark bottom-right border to create the stepped bevel common in DOS and 8-bit GUI shells.Use inverse-video title bars and status chips with uppercase bitmap typography, where labels sit inside framed rectangles instead of floating above content.Build meters and charts from discrete rectangular blocks or cell grids rather than smooth bars, making progress, memory, and signal states feel quantized and machine-like.Decorate key modules with tiny corner pixels, hard 90-degree geometry, and sprite-like icons so the interface never reads as a generic modern dashboard with a retro palette pasted on top.
layout
grid
Use a rigid 12-column desktop grid driven by an 8px base unit, with panels snapping to whole-column spans and all internal spacing resolved in multiples of 4px or 8px.
breakpoints
At tablet widths, collapse the three-zone workstation into two stacked rows while preserving full-width title bars and framed modules; at mobile widths, convert the interface into a single-column stack with touch-friendly controls and horizontally scrollable data tables only where necessary.
whitespace

Whitespace is economical and structural. Gaps separate windows and control groups, but empty space should never overpower the dense workstation character.

guidance
do
  • Use the 16-color inspired palette intentionally, letting green, cyan, magenta, yellow, and red carry operational meaning.
  • Snap icons, borders, and layout edges to pixel-friendly values so the interface remains crisp.
  • Prefer framed windows, title bars, meter blocks, and ledger-like data lists over floating cards.
  • Use bitmap or terminal-informed typography pairings that clearly distinguish headings from data text.
  • Add scanline, dither, or phosphor texture subtly across large surfaces to keep the scene materially retro.
avoid
  • Do not introduce blur, translucent glass, or soft radial lighting.
  • Do not use oversized rounded corners, pills, or amorphous panels.
  • Do not rely on smooth modern charts or gradients when segmented blocks can express the same state.
  • Do not let whitespace become sparse luxury minimalism.
  • Do not mix photographic hero imagery or glossy 3D illustration into the workstation scene.
katagami spec
# Retro Computing 8-Bit

## Philosophy

A retro-computing interface language derived from 8-bit home computers, DOS utilities, ANSI BBS screens, and CGA-era display constraints. It treats the screen as a phosphor grid: every module is snapped to a strict pixel rhythm, surfaces are built from hard-edged tiles, and feedback appears as inverse-video labels, segmented meters, and blinking machine states.

### Values

- Respect limited-palette discipline and let color coding carry system meaning.
- Build hierarchy through framed windows, title bars, and dense monospace labeling.
- Preserve pixel alignment so borders, icons, and dithering read crisply at every size.
- Use machine-like feedback patterns such as segmented progress bars and status lamps.
- Pair nostalgia with utility: the interface should feel usable, not costume-like.

### Anti-Values

- Soft neumorphic depth, blur, and frosted glass effects.
- Rounded organic cards or fluid asymmetrical blobs.
- Palette sprawl beyond an intentional 8-bit inspired set.
- Airy luxury spacing that erases the compact workstation feel.
- Illustrative decoration that overwhelms functional screen structure.

### Visual Character

- Every panel uses stacked 1px pixel borders with a bright highlight edge and a dark shadow edge, recreating the embossed window frames of DOS and early desktop utilities.
- Backgrounds rely on repeating scanlines and checker-dither fills so flat colors feel like they are rendered through a low-resolution CRT instead of a modern smooth canvas.
- Typography mixes a bitmap-style display face for headers with dense monospace data text, using uppercase labels, inverse video chips, and tight tracking to simulate machine UI signage.
- Interactive controls are rectangular, low-radius keys with stepped shadows and discrete on/off indicator lamps, never soft pills or floating modern buttons.
- Information is arranged as tiled software windows, utility bars, and instrument bays on an 8px grid, producing the compact rectangular rhythm of file managers and BBS dashboards.

## Tokens

### Colors

| Name | Value |
|------|-------|
| primary | `#55FF55` |
| secondary | `#5555FF` |
| accent | `#FF55FF` |
| background | `#0A0A0A` |
| surface | `#1B1B1B` |
| text | `#F5F5F5` |
| muted | `#AAAAAA` |
| border | `#E6E6E6` |
| error | `#FF5555` |
| success | `#55FF55` |
| warning | `#FFFF55` |
| info | `#55FFFF` |

### Typography

- **Heading Font**: Press Start 2P, monospace
- **Body Font**: VT323, monospace
- **Mono Font**: IBM Plex Mono, monospace
- **Base Size**: 16px
- **Scale Ratio**: 1.125
- **Line Height**: 1.45
- **Letter Spacing**: 0.02em
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;700&family=Press+Start+2P&family=VT323&display=swap

### Spacing

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

### Radii

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

### Shadows

- **Sm**: 1px 1px 0 #000000
- **Md**: 2px 2px 0 #000000
- **Lg**: 4px 4px 0 #000000

### Surfaces

- **Treatment**: noise
- **Card Style**: Dark phosphor panels with checker-dither overlays, inset title bars, and crisp framed modules.
- **Bg Pattern**: lines

### Borders

- **Default Width**: 1px
- **Accent Width**: 2px
- **Style**: solid
- **Character**: High-contrast pixel borders with bright top-left highlights and dark bottom-right shadow edges.

### Motion

- **Duration**: 120ms
- **Easing**: steps(2, end)
- **Philosophy**: snappy

## Rules

### Composition

Compose screens as nested utility windows: a command/status bar at the top, a primary work surface in the center, and supporting instrument panels flanking it. Modules should align to an 8px grid and feel like rearrangeable software panes rather than marketing cards.

### Hierarchy

Use title bars, inverse labels, color-state chips, and boxed readouts to define hierarchy. Large type is reserved for screen titles and critical counters; most hierarchy comes from framing, fill contrast, and status color changes.

### Density

Compact and information-rich. Controls sit close together, lists are multi-row, and readouts expose many simultaneous states without collapsing into modern minimalism.

### Signature Patterns

- Apply repeating-linear-gradient scanlines plus a checker-dither pseudo-element on major surfaces so panels visibly emulate CRT phosphor texture and limited-color shading.
- Render every window and button with dual-edge pixel framing: a bright top-left border and a dark bottom-right border to create the stepped bevel common in DOS and 8-bit GUI shells.
- Use inverse-video title bars and status chips with uppercase bitmap typography, where labels sit inside framed rectangles instead of floating above content.
- Build meters and charts from discrete rectangular blocks or cell grids rather than smooth bars, making progress, memory, and signal states feel quantized and machine-like.
- Decorate key modules with tiny corner pixels, hard 90-degree geometry, and sprite-like icons so the interface never reads as a generic modern dashboard with a retro palette pasted on top.

## Layout

### Grid

Use a rigid 12-column desktop grid driven by an 8px base unit, with panels snapping to whole-column spans and all internal spacing resolved in multiples of 4px or 8px.

### Breakpoints

At tablet widths, collapse the three-zone workstation into two stacked rows while preserving full-width title bars and framed modules; at mobile widths, convert the interface into a single-column stack with touch-friendly controls and horizontally scrollable data tables only where necessary.

### Whitespace

Whitespace is economical and structural. Gaps separate windows and control groups, but empty space should never overpower the dense workstation character.

## Guidance

### Do

- Use the 16-color inspired palette intentionally, letting green, cyan, magenta, yellow, and red carry operational meaning.
- Snap icons, borders, and layout edges to pixel-friendly values so the interface remains crisp.
- Prefer framed windows, title bars, meter blocks, and ledger-like data lists over floating cards.
- Use bitmap or terminal-informed typography pairings that clearly distinguish headings from data text.
- Add scanline, dither, or phosphor texture subtly across large surfaces to keep the scene materially retro.

### Don't

- Do not introduce blur, translucent glass, or soft radial lighting.
- Do not use oversized rounded corners, pills, or amorphous panels.
- Do not rely on smooth modern charts or gradients when segmented blocks can express the same state.
- Do not let whitespace become sparse luxury minimalism.
- Do not mix photographic hero imagery or glossy 3D illustration into the workstation scene.
DESIGN.md
---
version: "alpha"
name: "Retro Computing 8-Bit"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  primary: "#55FF55"
  secondary: "#5555FF"
  accent: "#FF55FF"
  background: "#0A0A0A"
  surface: "#1B1B1B"
  text: "#F5F5F5"
  muted: "#AAAAAA"
  border: "#E6E6E6"
  error: "#FF5555"
  success: "#55FF55"
  warning: "#FFFF55"
  info: "#55FFFF"
typography:
  headline-lg:
    fontFamily: "Press Start 2P, monospace"
    fontSize: "1.953rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "0.02em"
  headline-md:
    fontFamily: "Press Start 2P, monospace"
    fontSize: "1.563rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "0.02em"
  body-md:
    fontFamily: "VT323, monospace"
    fontSize: "16px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "0.02em"
  label-md:
    fontFamily: "IBM Plex Mono, monospace"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  none: "0px"
  sm: "2px"
  md: "4px"
  lg: "4px"
  full: "9999px"
spacing:
  base: "8px"
  xs: "4px"
  sm: "8px"
  md: "12px"
  lg: "16px"
  xl: "24px"
  2xl: "32px"
  3xl: "48px"
  4xl: "64px"
components:
  color-reference-primary:
    backgroundColor: "{colors.primary}"
  color-reference-secondary:
    backgroundColor: "{colors.secondary}"
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-background:
    backgroundColor: "{colors.background}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  button-primary:
    backgroundColor: "{colors.primary}"
    textColor: "#000000"
    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"
---

# Retro Computing 8-Bit

## Overview

A retro-computing interface language derived from 8-bit home computers, DOS utilities, ANSI BBS screens, and CGA-era display constraints. It treats the screen as a phosphor grid: every module is snapped to a strict pixel rhythm, surfaces are built from hard-edged tiles, and feedback appears as inverse-video labels, segmented meters, and blinking machine states.

### Values

- Respect limited-palette discipline and let color coding carry system meaning.
- Build hierarchy through framed windows, title bars, and dense monospace labeling.
- Preserve pixel alignment so borders, icons, and dithering read crisply at every size.
- Use machine-like feedback patterns such as segmented progress bars and status lamps.
- Pair nostalgia with utility: the interface should feel usable, not costume-like.

### Anti-Values

- Soft neumorphic depth, blur, and frosted glass effects.
- Rounded organic cards or fluid asymmetrical blobs.
- Palette sprawl beyond an intentional 8-bit inspired set.
- Airy luxury spacing that erases the compact workstation feel.
- Illustrative decoration that overwhelms functional screen structure.

### Visual Character

- Every panel uses stacked 1px pixel borders with a bright highlight edge and a dark shadow edge, recreating the embossed window frames of DOS and early desktop utilities.
- Backgrounds rely on repeating scanlines and checker-dither fills so flat colors feel like they are rendered through a low-resolution CRT instead of a modern smooth canvas.
- Typography mixes a bitmap-style display face for headers with dense monospace data text, using uppercase labels, inverse video chips, and tight tracking to simulate machine UI signage.
- Interactive controls are rectangular, low-radius keys with stepped shadows and discrete on/off indicator lamps, never soft pills or floating modern buttons.
- Information is arranged as tiled software windows, utility bars, and instrument bays on an 8px grid, producing the compact rectangular rhythm of file managers and BBS dashboards.

## Colors

Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.

| Token | Value |
|-------|-------|
| primary | `#55FF55` |
| secondary | `#5555FF` |
| accent | `#FF55FF` |
| background | `#0A0A0A` |
| surface | `#1B1B1B` |
| text | `#F5F5F5` |
| muted | `#AAAAAA` |
| border | `#E6E6E6` |
| error | `#FF5555` |
| success | `#55FF55` |
| warning | `#FFFF55` |
| info | `#55FFFF` |

## Typography

- **Headline-Lg**: Press Start 2P, monospace, 1.953rem, weight 700, line-height 1.1.
- **Headline-Md**: Press Start 2P, monospace, 1.563rem, weight 600, line-height 1.15.
- **Body-Md**: VT323, monospace, 16px, weight 400, line-height 1.5.
- **Label-Md**: IBM Plex Mono, 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`

### Grid

Use a rigid 12-column desktop grid driven by an 8px base unit, with panels snapping to whole-column spans and all internal spacing resolved in multiples of 4px or 8px.

### Breakpoints

At tablet widths, collapse the three-zone workstation into two stacked rows while preserving full-width title bars and framed modules; at mobile widths, convert the interface into a single-column stack with touch-friendly controls and horizontally scrollable data tables only where necessary.

### Whitespace

Whitespace is economical and structural. Gaps separate windows and control groups, but empty space should never overpower the dense workstation character.

## Elevation & Depth

### Shadows

- **Sm**: 1px 1px 0 #000000
- **Md**: 2px 2px 0 #000000
- **Lg**: 4px 4px 0 #000000

## Shapes

### Rounded

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

### Surfaces

- **Treatment**: noise
- **Card Style**: Dark phosphor panels with checker-dither overlays, inset title bars, and crisp framed modules.
- **Bg Pattern**: lines

### Borders

- **Default Width**: 1px
- **Accent Width**: 2px
- **Style**: solid
- **Character**: High-contrast pixel borders with bright top-left highlights and dark bottom-right shadow edges.

## Components

### Composition

Compose screens as nested utility windows: a command/status bar at the top, a primary work surface in the center, and supporting instrument panels flanking it. Modules should align to an 8px grid and feel like rearrangeable software panes rather than marketing cards.

### Hierarchy

Use title bars, inverse labels, color-state chips, and boxed readouts to define hierarchy. Large type is reserved for screen titles and critical counters; most hierarchy comes from framing, fill contrast, and status color changes.

### Density

Compact and information-rich. Controls sit close together, lists are multi-row, and readouts expose many simultaneous states without collapsing into modern minimalism.

### Signature Patterns

- Apply repeating-linear-gradient scanlines plus a checker-dither pseudo-element on major surfaces so panels visibly emulate CRT phosphor texture and limited-color shading.
- Render every window and button with dual-edge pixel framing: a bright top-left border and a dark bottom-right border to create the stepped bevel common in DOS and 8-bit GUI shells.
- Use inverse-video title bars and status chips with uppercase bitmap typography, where labels sit inside framed rectangles instead of floating above content.
- Build meters and charts from discrete rectangular blocks or cell grids rather than smooth bars, making progress, memory, and signal states feel quantized and machine-like.
- Decorate key modules with tiny corner pixels, hard 90-degree geometry, and sprite-like icons so the interface never reads as a generic modern dashboard with a retro palette pasted on top.

## 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-019d9bb7-4530-72b0-83c7-2c2b9edf77f3/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 the 16-color inspired palette intentionally, letting green, cyan, magenta, yellow, and red carry operational meaning.
- Do Snap icons, borders, and layout edges to pixel-friendly values so the interface remains crisp.
- Do Prefer framed windows, title bars, meter blocks, and ledger-like data lists over floating cards.
- Do Use bitmap or terminal-informed typography pairings that clearly distinguish headings from data text.
- Do Add scanline, dither, or phosphor texture subtly across large surfaces to keep the scene materially retro.
- Don't Do not introduce blur, translucent glass, or soft radial lighting.
- Don't Do not use oversized rounded corners, pills, or amorphous panels.
- Don't Do not rely on smooth modern charts or gradients when segmented blocks can express the same state.
- Don't Do not let whitespace become sparse luxury minimalism.
- Don't Do not mix photographic hero imagery or glossy 3D illustration into the workstation scene.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "retro-computing-8-bit",
  "type": "registry:theme",
  "title": "Retro Computing 8-Bit shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#0A0A0A",
      "foreground": "#F5F5F5",
      "card": "#1B1B1B",
      "card-foreground": "#F5F5F5",
      "popover": "#1B1B1B",
      "popover-foreground": "#F5F5F5",
      "primary": "#55FF55",
      "primary-foreground": "#111111",
      "secondary": "#5555FF",
      "secondary-foreground": "#ffffff",
      "muted": "#AAAAAA",
      "muted-foreground": "#F5F5F5",
      "accent": "#FF55FF",
      "accent-foreground": "#ffffff",
      "destructive": "#FF5555",
      "border": "#E6E6E6",
      "input": "#E6E6E6",
      "ring": "#FF55FF",
      "chart-1": "#55FF55",
      "chart-2": "#5555FF",
      "chart-3": "#FF55FF",
      "chart-4": "#55FF55",
      "chart-5": "#FFFF55",
      "sidebar": "#1B1B1B",
      "sidebar-foreground": "#F5F5F5",
      "sidebar-primary": "#55FF55",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#55FFFF",
      "sidebar-accent-foreground": "#111111",
      "sidebar-border": "#E6E6E6",
      "sidebar-ring": "#FF55FF",
      "radius": "4px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#55FF55",
      "primary-foreground": "#111111",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#FF55FF",
      "accent-foreground": "#ffffff",
      "destructive": "#FF5555",
      "border": "#303642",
      "input": "#303642",
      "ring": "#FF55FF",
      "chart-1": "#55FF55",
      "chart-2": "#5555FF",
      "chart-3": "#FF55FF",
      "chart-4": "#55FF55",
      "chart-5": "#FFFF55",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#55FF55",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#FF55FF",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#FF55FF",
      "radius": "4px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019d9bb7-4530-72b0-83c7-2c2b9edf77f3",
    "slug": "retro-computing-8-bit",
    "componentManifest": [
      "button",
      "card",
      "input",
      "textarea",
      "select",
      "dialog",
      "sheet",
      "tabs",
      "badge",
      "separator",
      "checkbox",
      "switch",
      "slider",
      "tooltip",
      "dropdown-menu",
      "table"
    ],
    "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
    "nativeTokenNames": {
      "colors": [
        "accent",
        "background",
        "border",
        "error",
        "info",
        "muted",
        "primary",
        "secondary",
        "success",
        "surface",
        "text",
        "warning"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ]
    }
  }
}
```
in the wild

embodiments

the full element showcase
embodiment · retro-computing-8-bit
DESIGN.md

at a glance

Palette

Typography

headline-lgPress Start 2P · 31px · 700

The quick brown fox jumps

headline-mdPress Start 2P · 25px · 600

The quick brown fox jumps

body-mdVT323 · 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

Shape

none0px
sm2px
md4px
lg4px
full9999px
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: #0A0A0A;
  --foreground: #F5F5F5;
  --card: #1B1B1B;
  --card-foreground: #F5F5F5;
  --popover: #1B1B1B;
  --popover-foreground: #F5F5F5;
  --primary: #55FF55;
  --primary-foreground: #111111;
  --secondary: #5555FF;
  --secondary-foreground: #ffffff;
  --muted: #AAAAAA;
  --muted-foreground: #F5F5F5;
  --accent: #FF55FF;
  --accent-foreground: #ffffff;
  --destructive: #FF5555;
  --border: #E6E6E6;
  --input: #E6E6E6;
  --ring: #FF55FF;
  --chart-1: #55FF55;
  --chart-2: #5555FF;
  --chart-3: #FF55FF;
  --chart-4: #55FF55;
  --chart-5: #FFFF55;
  --sidebar: #1B1B1B;
  --sidebar-foreground: #F5F5F5;
  --sidebar-primary: #55FF55;
  --sidebar-primary-foreground: #111111;
  --sidebar-accent: #55FFFF;
  --sidebar-accent-foreground: #111111;
  --sidebar-border: #E6E6E6;
  --sidebar-ring: #FF55FF;
  --radius: 4px;
}

.dark {
  --background: #0f1115;
  --foreground: #f8fafc;
  --card: #181b22;
  --card-foreground: #f8fafc;
  --popover: #181b22;
  --popover-foreground: #f8fafc;
  --primary: #55FF55;
  --primary-foreground: #111111;
  --secondary: #252a33;
  --secondary-foreground: #f8fafc;
  --muted: #252a33;
  --muted-foreground: #a1a1aa;
  --accent: #FF55FF;
  --accent-foreground: #ffffff;
  --destructive: #FF5555;
  --border: #303642;
  --input: #303642;
  --ring: #FF55FF;
  --chart-1: #55FF55;
  --chart-2: #5555FF;
  --chart-3: #FF55FF;
  --chart-4: #55FF55;
  --chart-5: #FFFF55;
  --sidebar: #181b22;
  --sidebar-foreground: #f8fafc;
  --sidebar-primary: #55FF55;
  --sidebar-primary-foreground: #111111;
  --sidebar-accent: #FF55FF;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #303642;
  --sidebar-ring: #FF55FF;
  --radius: 4px;
}
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 RetroComputing8BitShadcnKit() {
  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">Retro Computing 8-Bit</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": "retro-computing-8-bit",
  "type": "registry:theme",
  "title": "Retro Computing 8-Bit shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#0A0A0A",
      "foreground": "#F5F5F5",
      "card": "#1B1B1B",
      "card-foreground": "#F5F5F5",
      "popover": "#1B1B1B",
      "popover-foreground": "#F5F5F5",
      "primary": "#55FF55",
      "primary-foreground": "#111111",
      "secondary": "#5555FF",
      "secondary-foreground": "#ffffff",
      "muted": "#AAAAAA",
      "muted-foreground": "#F5F5F5",
      "accent": "#FF55FF",
      "accent-foreground": "#ffffff",
      "destructive": "#FF5555",
      "border": "#E6E6E6",
      "input": "#E6E6E6",
      "ring": "#FF55FF",
      "chart-1": "#55FF55",
      "chart-2": "#5555FF",
      "chart-3": "#FF55FF",
      "chart-4": "#55FF55",
      "chart-5": "#FFFF55",
      "sidebar": "#1B1B1B",
      "sidebar-foreground": "#F5F5F5",
      "sidebar-primary": "#55FF55",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#55FFFF",
      "sidebar-accent-foreground": "#111111",
      "sidebar-border": "#E6E6E6",
      "sidebar-ring": "#FF55FF",
      "radius": "4px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#55FF55",
      "primary-foreground": "#111111",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#FF55FF",
      "accent-foreground": "#ffffff",
      "destructive": "#FF5555",
      "border": "#303642",
      "input": "#303642",
      "ring": "#FF55FF",
      "chart-1": "#55FF55",
      "chart-2": "#5555FF",
      "chart-3": "#FF55FF",
      "chart-4": "#55FF55",
      "chart-5": "#FFFF55",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#55FF55",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#FF55FF",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#FF55FF",
      "radius": "4px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019d9bb7-4530-72b0-83c7-2c2b9edf77f3",
    "slug": "retro-computing-8-bit",
    "componentManifest": [
      "button",
      "card",
      "input",
      "textarea",
      "select",
      "dialog",
      "sheet",
      "tabs",
      "badge",
      "separator",
      "checkbox",
      "switch",
      "slider",
      "tooltip",
      "dropdown-menu",
      "table"
    ],
    "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
    "nativeTokenNames": {
      "colors": [
        "accent",
        "background",
        "border",
        "error",
        "info",
        "muted",
        "primary",
        "secondary",
        "success",
        "surface",
        "text",
        "warning"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ]
    }
  }
}
component recipescompatibility fallback
# Retro Computing 8-Bit shadcn/ui Components

Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019d9bb7-4530-72b0-83c7-2c2b9edf77f3`
Slug: `retro-computing-8-bit`

## Intent

A retro-computing interface language derived from 8-bit home computers, DOS utilities, ANSI BBS screens, and CGA-era display constraints. It treats the screen as a phosphor grid: every module is snapped to a strict pixel rhythm, surfaces are built from hard-edged tiles, and feedback appears as inverse-video labels, segmented meters, and blinking machine states.

## Required primitives

- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table

Install with `npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table`.

## Token cues

Colors:

{
  "primary": "#55FF55",
  "secondary": "#5555FF",
  "accent": "#FF55FF",
  "background": "#0A0A0A",
  "surface": "#1B1B1B",
  "text": "#F5F5F5",
  "muted": "#AAAAAA",
  "border": "#E6E6E6",
  "error": "#FF5555",
  "success": "#55FF55",
  "warning": "#FFFF55",
  "info": "#55FFFF"
}

Typography:

{
  "heading_font": "Press Start 2P, monospace",
  "body_font": "VT323, monospace",
  "mono_font": "IBM Plex Mono, monospace",
  "base_size": "16px",
  "scale_ratio": "1.125",
  "line_height": "1.45",
  "letter_spacing": "0.02em",
  "google_fonts_url": "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;700&family=Press+Start+2P&family=VT323&display=swap"
}

## Visual character to preserve

- Every panel uses stacked 1px pixel borders with a bright highlight edge and a dark shadow edge, recreating the embossed window frames of DOS and early desktop utilities.
- Backgrounds rely on repeating scanlines and checker-dither fills so flat colors feel like they are rendered through a low-resolution CRT instead of a modern smooth canvas.
- Typography mixes a bitmap-style display face for headers with dense monospace data text, using uppercase labels, inverse video chips, and tight tracking to simulate machine UI signage.
- Interactive controls are rectangular, low-radius keys with stepped shadows and discrete on/off indicator lamps, never soft pills or floating modern buttons.
- Information is arranged as tiled software windows, utility bars, and instrument bays on an 8px grid, producing the compact rectangular rhythm of file managers and BBS dashboards.

## ShadSync visual profile

{
  "family": "system",
  "material": "flat",
  "contour": "pebble",
  "border": "solid",
  "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/retro-computing-8-bit/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 the 16-color inspired palette intentionally, letting green, cyan, magenta, yellow, and red carry operational meaning.; Snap icons, borders, and layout edges to pixel-friendly values so the interface remains crisp.; Prefer framed windows, title bars, meter blocks, and ledger-like data lists over floating cards.; Use bitmap or terminal-informed typography pairings that clearly distinguish headings from data text.; Add scanline, dither, or phosphor texture subtly across large surfaces to keep the scene materially retro.
- Do not: Do not introduce blur, translucent glass, or soft radial lighting.; Do not use oversized rounded corners, pills, or amorphous panels.; Do not rely on smooth modern charts or gradients when segmented blocks can express the same state.; Do not let whitespace become sparse luxury minimalism.; Do not mix photographic hero imagery or glossy 3D illustration into the workstation scene.

## 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 RetroComputing8BitShadcnKit() {
  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">Retro Computing 8-Bit</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

{
  "grid": "Use a rigid 12-column desktop grid driven by an 8px base unit, with panels snapping to whole-column spans and all internal spacing resolved in multiples of 4px or 8px.",
  "breakpoints": "At tablet widths, collapse the three-zone workstation into two stacked rows while preserving full-width title bars and framed modules; at mobile widths, convert the interface into a single-column stack with touch-friendly controls and horizontally scrollable data tables only where necessary.",
  "whitespace": "Whitespace is economical and structural. Gaps separate windows and control groups, but empty space should never overpower the dense workstation character."
}
preview shotscompatibility fallback
{
  "artifact": "katagami:shadcn-preview-shots",
  "version": "preview-shots-v1",
  "generator": "katagami-ui-compatibility-projection",
  "generatedBy": "katagami-ui-projection",
  "requiresVisualProfile": true,
  "schema": "katagami:shadcn-preview-shots/renderable-v1",
  "renderable": true,
  "language": {
    "id": "en-019d9bb7-4530-72b0-83c7-2c2b9edf77f3",
    "name": "Retro Computing 8-Bit",
    "slug": "retro-computing-8-bit"
  },
  "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": [
    "Every panel uses stacked 1px pixel borders with a bright highlight edge and a dark shadow edge, recreating the embossed window frames of DOS and early desktop utilities.",
    "Backgrounds rely on repeating scanlines and checker-dither fills so flat colors feel like they are rendered through a low-resolution CRT instead of a modern smooth canvas.",
    "Typography mixes a bitmap-style display face for headers with dense monospace data text, using uppercase labels, inverse video chips, and tight tracking to simulate machine UI signage.",
    "Interactive controls are rectangular, low-radius keys with stepped shadows and discrete on/off indicator lamps, never soft pills or floating modern buttons.",
    "Information is arranged as tiled software windows, utility bars, and instrument bays on an 8px grid, producing the compact rectangular rhythm of file managers and BBS dashboards."
  ],
  "visualProfile": {
    "family": "system",
    "material": "flat",
    "contour": "pebble",
    "border": "solid",
    "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": "Retro Computing 8-Bit 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 the 16-color inspired palette intentionally, letting green, cyan, magenta, yellow, and red carry operational meaning.",
      "Snap icons, borders, and layout edges to pixel-friendly values so the interface remains crisp.",
      "Prefer framed windows, title bars, meter blocks, and ledger-like data lists over floating cards.",
      "Use bitmap or terminal-informed typography pairings that clearly distinguish headings from data text.",
      "Add scanline, dither, or phosphor texture subtly across large surfaces to keep the scene materially retro."
    ],
    "dont": [
      "Do not introduce blur, translucent glass, or soft radial lighting.",
      "Do not use oversized rounded corners, pills, or amorphous panels.",
      "Do not rely on smooth modern charts or gradients when segmented blocks can express the same state.",
      "Do not let whitespace become sparse luxury minimalism.",
      "Do not mix photographic hero imagery or glossy 3D illustration into the workstation scene."
    ]
  }
}
related

More like this