back to gallery
design language·porcelain-service-terminal

Porcelain Service Terminal

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
Porcelain Service Terminal imagines a ceramic android care kiosk as a ritual instrument: warm white shell, graphite manga framing, muted teal service LEDs, amber acknowledgement glows, and transparent terminal panes that make maintenance feel calm, humane, and exact. It rejects spectacle in favor of a grounded late-90s speculative interface where robotics, queue etiquette, and quiet existential cybernetics are expressed through service posture and precise panel choreography.
values
Make the machine feel physically present: a warm ceramic object with seams, screwless panels, service doors, lens slots, and softened contact zones rather than an abstract app surface.Use minimal black-and-white manga structure as architecture: gutters, framed crops, quiet speed-line registration marks, and inkweight hierarchy instead of character illustration.Treat code and terminal language as ritual prompts: short commands, diagnostic receipts, queue states, and calibration messages that help a human understand the android without hacker theatrics.Keep the emotional register caring and procedural, as if the kiosk tends appointments, repairs, and consent checks for human-scale robotics.Anchor futurism in Y2K hardware/software materiality: rounded panels, translucent overlays, service LEDs, cartridge-like modules, and boot-era typography restraint.Let existential cybernetics appear as small questions about presence, maintenance, and memory, never as ominous villain AI or neon dystopia.Use color sparingly: porcelain whites, bone neutrals, graphite linework, one muted teal service channel, and faint amber status confirmations.
anti-values
×No green matrix rain, black-and-green hacker terminal walls, threat dashboards, or generic command-center cyberpunk.×No neon purple/cyan nightlife glow, chrome overload, laser grids, or high-saturation synthetic triads.×No anime character fan art, mascot portraits, or figurative android pinups; the android is implied by service ergonomics and interface behavior.×No SaaS card grids, analytics dashboards, CRM widgets, pricing cards, or equal feature tiles.×No cold hospital minimalism that erases touch, warmth, queue etiquette, or the ceramic body of the machine.
tokens
borders4 items
accent width
2px
character
Graphite manga linework: exposed gutters, panel seams, bracket ticks, and clipped terminal labels.
default width
1.5px
style
solid
colors12 items
accent
#4F898A
background
#EEE6D9
border
#2B2924
error
#8A3D32
info
#6D7F91
muted
#746E64
primary
#F4EFE6
secondary
#D8CBB8
success
#4F898A
surface
#FFF9EF
text
#1E1D1A
warning
#B68142
motion3 items
duration
180ms
easing
cubic-bezier(0.2, 0.0, 0.2, 1)
philosophy
Motion behaves like a kiosk acknowledgement: brief LED breathing, receipt advancement, and focus settling, never flashy transitions.
radii5 items
full
9999px
lg
32px
md
24px
none
0
sm
16px
shadows3 items
lg
0 38px 80px rgba(54,43,28,0.14)
md
0 18px 42px rgba(54,43,28,0.10)
sm
0 1px 0 rgba(30,29,26,0.18)
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64, 96, 128
surfaces3 items
bg pattern
Bare bone field with sparse registration ticks and very faint 16px service-paper ruling.
card style
Rounded ceramic plates, 2px graphite outlines, inner 1px bone highlight, clipped label tabs, and restrained translucent terminal overlays.
treatment
Warm porcelain fills with subtle bone radial light, matte grain, and graphite hairline seams.
typography8 items
base size
16px
body font
Newsreader
google fonts url
https://fonts.googleapis.com/css2?family=Alegreya+Sans+SC:wght@500;700;800&family=Newsreader:opsz,wght@6..72,400;6..72,500;6..72,600&family=IBM+Plex+Mono:wght@400;500;600&display=swap
heading font
Alegreya Sans SC
letter spacing
-0.02em
line height
1.56
mono font
IBM Plex Mono
scale ratio
1.24
rules
composition
Use a scene-first service kiosk screen with one dominant ceramic terminal body, one dense diagnostic rail, one receipt-like ritual strip, and one large blank porcelain pause. Never distribute content into equal cards; panel sizes must feel like a physical machine face with auxiliary overlays attached to it.
density
Alternate calm ceramic voids with dense procedural bands. The tightest microcopy gaps can be 4px, while major service zones require 64-96px pauses so the interface feels ritualized rather than crowded.
hierarchy
Primary hierarchy comes from scale and inkweight: oversized small-caps headings, body text in editorial service notes, mono labels for states and command fragments, teal LEDs for current service, and amber dots for acknowledged steps. Display line-height stays tight while body text breathes.
signature patterns
Porcelain chassis grid: a large rounded CSS panel spanning multiple columns with inset seam lines, screwless service hatches, and touch-height control bays.Transparent terminal vellum: absolute or grid-layered panes with backdrop-filter, clipped corner captions, mono command prompts, and graphite manga gutters visible underneath.Service LED grammar: muted teal pill indicators and pin-sized amber dots placed on panel edges to show state without flooding the composition with color.Manga maintenance gutters: black caption rails, registration ticks, and asymmetric crop lines that structure the page without drawing characters or fan-art imagery.Receipt ritual strip: narrow perforated queue/consent log with monospace timestamps, caret prompts, and one highlighted next action for humane robot service.
layout
breakpoints

mobile <= 640px, tablet 641px-980px, desktop >= 981px; mobile removes absolute overlap but preserves clipped labels, LED grammar, and manga gutters.

density
Medium density with deliberate contrast: dense diagnostic strips and microcopy rails sit beside large quiet ceramic fields, producing an 8:1 spacing rhythm from 4px ticks to 96px section pauses.
grid
Desktop uses a 12-column max-width 1240px grid: dominant kiosk spans 7 columns, diagnostic vellum overlays 5, and the receipt rail breaks the grid full-width. Tablet moves to 6 columns; mobile stacks in ritual order.
responsive
Maintain the scene as a kiosk, not a dashboard: the service body appears first, then current appointment, diagnostic rail, receipt ritual, and maintenance notes. Avoid equal card rows at every width.
whitespace
Whitespace must feel like unmarked porcelain: broad outer margins, generous top pauses, and tight grouped labels. Related controls sit at 4-12px; unrelated service zones separate at 48-96px.
guidance
do
  • Use warm porcelain, bone, graphite, muted teal, and faint amber exactly as a restrained service hardware palette.
  • Make the main screen a specific fictional product scene: a ceramic android care kiosk performing queue, consent, calibration, or repair service.
  • Let manga influence come from gutters, ink line hierarchy, registration ticks, and panel pacing rather than illustrated characters.
  • Use terminal motifs as short readable ritual fragments: boot states, caret prompts, service logs, and calibration checks.
  • Place LEDs at functional edges and labels, with teal for live service and amber for acknowledgement only.
  • Keep one dominant panel and at least one grid break such as a full-width receipt strip or offset terminal vellum.
  • Preserve accessible contrast with graphite text on porcelain and visible focus outlines in teal or graphite.
  • Use Y2K material hints through translucent panels, rounded modules, service ports, label tabs, and compact monospace system language.
avoid
  • Do not use the forbidden green matrix rain, hacker dashboards, neon cyberpunk, black terminal walls, or threat-intelligence aesthetics.
  • Do not create three equal cards in a row, SaaS analytics panels, CRM tables, project-management boards, or generic app component catalogs.
  • Do not add anime characters, mascot portraits, android pinups, or fan-art references.
  • Do not overuse gradients, glows, shadows, or high-saturation colors; the porcelain body and linework should carry identity.
  • Do not make terminal text unreadably decorative or fill empty space with random code fragments.
  • Do not let the interface feel coldly medical; keep care rituals, hand-height controls, and human consent visible.
  • Do not use rounded corners outside the defined 0/16/24/32/9999 scale.
  • Do not represent robotics as military targeting, surveillance, or ominous AI takeover language.
katagami spec
# Porcelain Service Terminal

## Philosophy

Porcelain Service Terminal imagines a ceramic android care kiosk as a ritual instrument: warm white shell, graphite manga framing, muted teal service LEDs, amber acknowledgement glows, and transparent terminal panes that make maintenance feel calm, humane, and exact. It rejects spectacle in favor of a grounded late-90s speculative interface where robotics, queue etiquette, and quiet existential cybernetics are expressed through service posture and precise panel choreography.

### Values

- Make the machine feel physically present: a warm ceramic object with seams, screwless panels, service doors, lens slots, and softened contact zones rather than an abstract app surface.
- Use minimal black-and-white manga structure as architecture: gutters, framed crops, quiet speed-line registration marks, and inkweight hierarchy instead of character illustration.
- Treat code and terminal language as ritual prompts: short commands, diagnostic receipts, queue states, and calibration messages that help a human understand the android without hacker theatrics.
- Keep the emotional register caring and procedural, as if the kiosk tends appointments, repairs, and consent checks for human-scale robotics.
- Anchor futurism in Y2K hardware/software materiality: rounded panels, translucent overlays, service LEDs, cartridge-like modules, and boot-era typography restraint.
- Let existential cybernetics appear as small questions about presence, maintenance, and memory, never as ominous villain AI or neon dystopia.
- Use color sparingly: porcelain whites, bone neutrals, graphite linework, one muted teal service channel, and faint amber status confirmations.

### Anti-Values

- No green matrix rain, black-and-green hacker terminal walls, threat dashboards, or generic command-center cyberpunk.
- No neon purple/cyan nightlife glow, chrome overload, laser grids, or high-saturation synthetic triads.
- No anime character fan art, mascot portraits, or figurative android pinups; the android is implied by service ergonomics and interface behavior.
- No SaaS card grids, analytics dashboards, CRM widgets, pricing cards, or equal feature tiles.
- No cold hospital minimalism that erases touch, warmth, queue etiquette, or the ceramic body of the machine.

### Visual Character

- Use large rounded porcelain panels with inset graphite seams, 24px corner radii, and one dominant vertical service-body silhouette built from CSS grid spans.
- Layer transparent terminal panes over ceramic surfaces with thin black manga gutters, clipped corner labels, and low-opacity ruled underlays using repeating-linear-gradient CSS.
- Place muted teal LED pills and tiny amber acknowledgement dots only at service-state edges, never as broad decorative glows or cyberpunk ambience.
- Create black-and-white manga pacing through asymmetric panel crops, registration ticks, narrow caption rails, and dense microcopy bands beside spacious blank ceramic fields.
- Represent robotics care through touch-height controls, queue receipts, maintenance checklists, and consent prompts arranged as human-scale ritual steps.

## Tokens

### Borders

- **Accent Width**: 2px
- **Character**: Graphite manga linework: exposed gutters, panel seams, bracket ticks, and clipped terminal labels.
- **Default Width**: 1.5px
- **Style**: solid

### Colors

| Name | Value |
|------|-------|
| accent | `#4F898A` |
| background | `#EEE6D9` |
| border | `#2B2924` |
| error | `#8A3D32` |
| info | `#6D7F91` |
| muted | `#746E64` |
| primary | `#F4EFE6` |
| secondary | `#D8CBB8` |
| success | `#4F898A` |
| surface | `#FFF9EF` |
| text | `#1E1D1A` |
| warning | `#B68142` |

### Motion

- **Duration**: 180ms
- **Easing**: cubic-bezier(0.2, 0.0, 0.2, 1)
- **Philosophy**: Motion behaves like a kiosk acknowledgement: brief LED breathing, receipt advancement, and focus settling, never flashy transitions.

### Radii

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

### Shadows

- **Lg**: 0 38px 80px rgba(54,43,28,0.14)
- **Md**: 0 18px 42px rgba(54,43,28,0.10)
- **Sm**: 0 1px 0 rgba(30,29,26,0.18)

### Spacing

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

### Surfaces

- **Bg Pattern**: Bare bone field with sparse registration ticks and very faint 16px service-paper ruling.
- **Card Style**: Rounded ceramic plates, 2px graphite outlines, inner 1px bone highlight, clipped label tabs, and restrained translucent terminal overlays.
- **Treatment**: Warm porcelain fills with subtle bone radial light, matte grain, and graphite hairline seams.

### Typography

- **Base Size**: 16px
- **Body Font**: Newsreader
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Alegreya+Sans+SC:wght@500;700;800&family=Newsreader:opsz,wght@6..72,400;6..72,500;6..72,600&family=IBM+Plex+Mono:wght@400;500;600&display=swap
- **Heading Font**: Alegreya Sans SC
- **Letter Spacing**: -0.02em
- **Line Height**: 1.56
- **Mono Font**: IBM Plex Mono
- **Scale Ratio**: 1.24

## Rules

### Composition

Use a scene-first service kiosk screen with one dominant ceramic terminal body, one dense diagnostic rail, one receipt-like ritual strip, and one large blank porcelain pause. Never distribute content into equal cards; panel sizes must feel like a physical machine face with auxiliary overlays attached to it.

### Density

Alternate calm ceramic voids with dense procedural bands. The tightest microcopy gaps can be 4px, while major service zones require 64-96px pauses so the interface feels ritualized rather than crowded.

### Hierarchy

Primary hierarchy comes from scale and inkweight: oversized small-caps headings, body text in editorial service notes, mono labels for states and command fragments, teal LEDs for current service, and amber dots for acknowledged steps. Display line-height stays tight while body text breathes.

### Signature Patterns

- Porcelain chassis grid: a large rounded CSS panel spanning multiple columns with inset seam lines, screwless service hatches, and touch-height control bays.
- Transparent terminal vellum: absolute or grid-layered panes with backdrop-filter, clipped corner captions, mono command prompts, and graphite manga gutters visible underneath.
- Service LED grammar: muted teal pill indicators and pin-sized amber dots placed on panel edges to show state without flooding the composition with color.
- Manga maintenance gutters: black caption rails, registration ticks, and asymmetric crop lines that structure the page without drawing characters or fan-art imagery.
- Receipt ritual strip: narrow perforated queue/consent log with monospace timestamps, caret prompts, and one highlighted next action for humane robot service.

## Layout

### Breakpoints

mobile <= 640px, tablet 641px-980px, desktop >= 981px; mobile removes absolute overlap but preserves clipped labels, LED grammar, and manga gutters.

### Density

Medium density with deliberate contrast: dense diagnostic strips and microcopy rails sit beside large quiet ceramic fields, producing an 8:1 spacing rhythm from 4px ticks to 96px section pauses.

### Grid

Desktop uses a 12-column max-width 1240px grid: dominant kiosk spans 7 columns, diagnostic vellum overlays 5, and the receipt rail breaks the grid full-width. Tablet moves to 6 columns; mobile stacks in ritual order.

### Responsive

Maintain the scene as a kiosk, not a dashboard: the service body appears first, then current appointment, diagnostic rail, receipt ritual, and maintenance notes. Avoid equal card rows at every width.

### Whitespace

Whitespace must feel like unmarked porcelain: broad outer margins, generous top pauses, and tight grouped labels. Related controls sit at 4-12px; unrelated service zones separate at 48-96px.

## Guidance

### Do

- Use warm porcelain, bone, graphite, muted teal, and faint amber exactly as a restrained service hardware palette.
- Make the main screen a specific fictional product scene: a ceramic android care kiosk performing queue, consent, calibration, or repair service.
- Let manga influence come from gutters, ink line hierarchy, registration ticks, and panel pacing rather than illustrated characters.
- Use terminal motifs as short readable ritual fragments: boot states, caret prompts, service logs, and calibration checks.
- Place LEDs at functional edges and labels, with teal for live service and amber for acknowledgement only.
- Keep one dominant panel and at least one grid break such as a full-width receipt strip or offset terminal vellum.
- Preserve accessible contrast with graphite text on porcelain and visible focus outlines in teal or graphite.
- Use Y2K material hints through translucent panels, rounded modules, service ports, label tabs, and compact monospace system language.

### Don't

- Do not use the forbidden green matrix rain, hacker dashboards, neon cyberpunk, black terminal walls, or threat-intelligence aesthetics.
- Do not create three equal cards in a row, SaaS analytics panels, CRM tables, project-management boards, or generic app component catalogs.
- Do not add anime characters, mascot portraits, android pinups, or fan-art references.
- Do not overuse gradients, glows, shadows, or high-saturation colors; the porcelain body and linework should carry identity.
- Do not make terminal text unreadably decorative or fill empty space with random code fragments.
- Do not let the interface feel coldly medical; keep care rituals, hand-height controls, and human consent visible.
- Do not use rounded corners outside the defined 0/16/24/32/9999 scale.
- Do not represent robotics as military targeting, surveillance, or ominous AI takeover language.

### Accessibility

Maintain WCAG AA contrast for all essential text, do not rely on LED color alone for state, keep mono text at 12px or larger, provide visible focus states, and preserve reading order when overlays collapse on mobile.

### Usage Context

Best for robotics service kiosks, care-oriented repair terminals, speculative appointment systems, diagnostic interfaces for domestic androids, museum-grade Y2K hardware experiences, and quiet cybernetic products about maintenance and memory.
DESIGN.md
---
version: "alpha"
name: "Porcelain Service Terminal"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  accent: "#4F898A"
  background: "#EEE6D9"
  border: "#2B2924"
  error: "#8A3D32"
  info: "#6D7F91"
  muted: "#746E64"
  primary: "#F4EFE6"
  secondary: "#D8CBB8"
  success: "#4F898A"
  surface: "#FFF9EF"
  text: "#1E1D1A"
  warning: "#B68142"
typography:
  headline-lg:
    fontFamily: "Alegreya Sans SC"
    fontSize: "1.907rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.02em"
  headline-md:
    fontFamily: "Alegreya Sans SC"
    fontSize: "1.538rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.02em"
  body-md:
    fontFamily: "Newsreader"
    fontSize: "16px"
    fontWeight: 400
    lineHeight: 1.56
    letterSpacing: "-0.02em"
  label-md:
    fontFamily: "IBM Plex Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  full: "9999px"
  lg: "32px"
  md: "24px"
  none: "0px"
  sm: "16px"
spacing:
  base: "8px"
  xs: "4px"
  sm: "8px"
  md: "12px"
  lg: "16px"
  xl: "24px"
  2xl: "32px"
  3xl: "48px"
  4xl: "64px"
  step-8: "96px"
  step-9: "128px"
components:
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-background:
    backgroundColor: "{colors.background}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-primary:
    backgroundColor: "{colors.primary}"
  color-reference-secondary:
    backgroundColor: "{colors.secondary}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  button-primary:
    backgroundColor: "{colors.primary}"
    textColor: "#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"
---

# Porcelain Service Terminal

## Overview

Porcelain Service Terminal imagines a ceramic android care kiosk as a ritual instrument: warm white shell, graphite manga framing, muted teal service LEDs, amber acknowledgement glows, and transparent terminal panes that make maintenance feel calm, humane, and exact. It rejects spectacle in favor of a grounded late-90s speculative interface where robotics, queue etiquette, and quiet existential cybernetics are expressed through service posture and precise panel choreography.

### Values

- Make the machine feel physically present: a warm ceramic object with seams, screwless panels, service doors, lens slots, and softened contact zones rather than an abstract app surface.
- Use minimal black-and-white manga structure as architecture: gutters, framed crops, quiet speed-line registration marks, and inkweight hierarchy instead of character illustration.
- Treat code and terminal language as ritual prompts: short commands, diagnostic receipts, queue states, and calibration messages that help a human understand the android without hacker theatrics.
- Keep the emotional register caring and procedural, as if the kiosk tends appointments, repairs, and consent checks for human-scale robotics.
- Anchor futurism in Y2K hardware/software materiality: rounded panels, translucent overlays, service LEDs, cartridge-like modules, and boot-era typography restraint.
- Let existential cybernetics appear as small questions about presence, maintenance, and memory, never as ominous villain AI or neon dystopia.
- Use color sparingly: porcelain whites, bone neutrals, graphite linework, one muted teal service channel, and faint amber status confirmations.

### Anti-Values

- No green matrix rain, black-and-green hacker terminal walls, threat dashboards, or generic command-center cyberpunk.
- No neon purple/cyan nightlife glow, chrome overload, laser grids, or high-saturation synthetic triads.
- No anime character fan art, mascot portraits, or figurative android pinups; the android is implied by service ergonomics and interface behavior.
- No SaaS card grids, analytics dashboards, CRM widgets, pricing cards, or equal feature tiles.
- No cold hospital minimalism that erases touch, warmth, queue etiquette, or the ceramic body of the machine.

### Visual Character

- Use large rounded porcelain panels with inset graphite seams, 24px corner radii, and one dominant vertical service-body silhouette built from CSS grid spans.
- Layer transparent terminal panes over ceramic surfaces with thin black manga gutters, clipped corner labels, and low-opacity ruled underlays using repeating-linear-gradient CSS.
- Place muted teal LED pills and tiny amber acknowledgement dots only at service-state edges, never as broad decorative glows or cyberpunk ambience.
- Create black-and-white manga pacing through asymmetric panel crops, registration ticks, narrow caption rails, and dense microcopy bands beside spacious blank ceramic fields.
- Represent robotics care through touch-height controls, queue receipts, maintenance checklists, and consent prompts arranged as human-scale ritual steps.

## 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 | `#4F898A` |
| background | `#EEE6D9` |
| border | `#2B2924` |
| error | `#8A3D32` |
| info | `#6D7F91` |
| muted | `#746E64` |
| primary | `#F4EFE6` |
| secondary | `#D8CBB8` |
| success | `#4F898A` |
| surface | `#FFF9EF` |
| text | `#1E1D1A` |
| warning | `#B68142` |

## Typography

- **Headline-Lg**: Alegreya Sans SC, 1.907rem, weight 700, line-height 1.1.
- **Headline-Md**: Alegreya Sans SC, 1.538rem, weight 600, line-height 1.15.
- **Body-Md**: Newsreader, 16px, weight 400, line-height 1.56.
- **Label-Md**: IBM Plex Mono, 0.75rem, weight 600, line-height 1.

## Layout

### Spacing Tokens

- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
- **Step-8**: `96px`
- **Step-9**: `128px`

### Breakpoints

mobile <= 640px, tablet 641px-980px, desktop >= 981px; mobile removes absolute overlap but preserves clipped labels, LED grammar, and manga gutters.

### Density

Medium density with deliberate contrast: dense diagnostic strips and microcopy rails sit beside large quiet ceramic fields, producing an 8:1 spacing rhythm from 4px ticks to 96px section pauses.

### Grid

Desktop uses a 12-column max-width 1240px grid: dominant kiosk spans 7 columns, diagnostic vellum overlays 5, and the receipt rail breaks the grid full-width. Tablet moves to 6 columns; mobile stacks in ritual order.

### Responsive

Maintain the scene as a kiosk, not a dashboard: the service body appears first, then current appointment, diagnostic rail, receipt ritual, and maintenance notes. Avoid equal card rows at every width.

### Whitespace

Whitespace must feel like unmarked porcelain: broad outer margins, generous top pauses, and tight grouped labels. Related controls sit at 4-12px; unrelated service zones separate at 48-96px.

## Elevation & Depth

### Shadows

- **Lg**: 0 38px 80px rgba(54,43,28,0.14)
- **Md**: 0 18px 42px rgba(54,43,28,0.10)
- **Sm**: 0 1px 0 rgba(30,29,26,0.18)

## Shapes

### Rounded

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

### Surfaces

- **Bg Pattern**: Bare bone field with sparse registration ticks and very faint 16px service-paper ruling.
- **Card Style**: Rounded ceramic plates, 2px graphite outlines, inner 1px bone highlight, clipped label tabs, and restrained translucent terminal overlays.
- **Treatment**: Warm porcelain fills with subtle bone radial light, matte grain, and graphite hairline seams.

### Borders

- **Accent Width**: 2px
- **Character**: Graphite manga linework: exposed gutters, panel seams, bracket ticks, and clipped terminal labels.
- **Default Width**: 1.5px
- **Style**: solid

## Components

### Composition

Use a scene-first service kiosk screen with one dominant ceramic terminal body, one dense diagnostic rail, one receipt-like ritual strip, and one large blank porcelain pause. Never distribute content into equal cards; panel sizes must feel like a physical machine face with auxiliary overlays attached to it.

### Density

Alternate calm ceramic voids with dense procedural bands. The tightest microcopy gaps can be 4px, while major service zones require 64-96px pauses so the interface feels ritualized rather than crowded.

### Hierarchy

Primary hierarchy comes from scale and inkweight: oversized small-caps headings, body text in editorial service notes, mono labels for states and command fragments, teal LEDs for current service, and amber dots for acknowledged steps. Display line-height stays tight while body text breathes.

### Signature Patterns

- Porcelain chassis grid: a large rounded CSS panel spanning multiple columns with inset seam lines, screwless service hatches, and touch-height control bays.
- Transparent terminal vellum: absolute or grid-layered panes with backdrop-filter, clipped corner captions, mono command prompts, and graphite manga gutters visible underneath.
- Service LED grammar: muted teal pill indicators and pin-sized amber dots placed on panel edges to show state without flooding the composition with color.
- Manga maintenance gutters: black caption rails, registration ticks, and asymmetric crop lines that structure the page without drawing characters or fan-art imagery.
- Receipt ritual strip: narrow perforated queue/consent log with monospace timestamps, caret prompts, and one highlighted next action for humane robot service.

## 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-019e0731-b513-7df2-bb34-230ac96cb1cf/DESIGN.with-shadcn.md`.

The shadcn page also exposes optional machine-readable files for automation, but the human-facing handoff is DESIGN.md with shadcn.

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

Use these primitives in shadcn apps:
- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table

Implementation rule for agents: import shadcn primitives from `@/components/ui/*`, apply the generated CSS variables first, then compose the language-specific recipes from the companion MD. Katagami remains the source of truth; shadcn names are the implementation surface.

## Do's and Don'ts

- Do Use warm porcelain, bone, graphite, muted teal, and faint amber exactly as a restrained service hardware palette.
- Do Make the main screen a specific fictional product scene: a ceramic android care kiosk performing queue, consent, calibration, or repair service.
- Do Let manga influence come from gutters, ink line hierarchy, registration ticks, and panel pacing rather than illustrated characters.
- Do Use terminal motifs as short readable ritual fragments: boot states, caret prompts, service logs, and calibration checks.
- Do Place LEDs at functional edges and labels, with teal for live service and amber for acknowledgement only.
- Do Keep one dominant panel and at least one grid break such as a full-width receipt strip or offset terminal vellum.
- Do Preserve accessible contrast with graphite text on porcelain and visible focus outlines in teal or graphite.
- Do Use Y2K material hints through translucent panels, rounded modules, service ports, label tabs, and compact monospace system language.
- Don't Do not use the forbidden green matrix rain, hacker dashboards, neon cyberpunk, black terminal walls, or threat-intelligence aesthetics.
- Don't Do not create three equal cards in a row, SaaS analytics panels, CRM tables, project-management boards, or generic app component catalogs.
- Don't Do not add anime characters, mascot portraits, android pinups, or fan-art references.
- Don't Do not overuse gradients, glows, shadows, or high-saturation colors; the porcelain body and linework should carry identity.
- Don't Do not make terminal text unreadably decorative or fill empty space with random code fragments.
- Don't Do not let the interface feel coldly medical; keep care rituals, hand-height controls, and human consent visible.
- Don't Do not use rounded corners outside the defined 0/16/24/32/9999 scale.
- Don't Do not represent robotics as military targeting, surveillance, or ominous AI takeover language.

### Accessibility

Maintain WCAG AA contrast for all essential text, do not rely on LED color alone for state, keep mono text at 12px or larger, provide visible focus states, and preserve reading order when overlays collapse on mobile.

### Usage Context

Best for robotics service kiosks, care-oriented repair terminals, speculative appointment systems, diagnostic interfaces for domestic androids, museum-grade Y2K hardware experiences, and quiet cybernetic products about maintenance and memory.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "porcelain-service-terminal",
  "type": "registry:theme",
  "title": "Porcelain Service Terminal shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#EEE6D9",
      "foreground": "#1E1D1A",
      "card": "#FFF9EF",
      "card-foreground": "#1E1D1A",
      "popover": "#FFF9EF",
      "popover-foreground": "#1E1D1A",
      "primary": "#F4EFE6",
      "primary-foreground": "#111111",
      "secondary": "#D8CBB8",
      "secondary-foreground": "#111111",
      "muted": "#746E64",
      "muted-foreground": "#1E1D1A",
      "accent": "#4F898A",
      "accent-foreground": "#ffffff",
      "destructive": "#8A3D32",
      "border": "#2B2924",
      "input": "#2B2924",
      "ring": "#4F898A",
      "chart-1": "#F4EFE6",
      "chart-2": "#D8CBB8",
      "chart-3": "#4F898A",
      "chart-4": "#4F898A",
      "chart-5": "#B68142",
      "sidebar": "#FFF9EF",
      "sidebar-foreground": "#1E1D1A",
      "sidebar-primary": "#F4EFE6",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#6D7F91",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#2B2924",
      "sidebar-ring": "#4F898A",
      "radius": "24px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#F4EFE6",
      "primary-foreground": "#111111",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#4F898A",
      "accent-foreground": "#ffffff",
      "destructive": "#8A3D32",
      "border": "#303642",
      "input": "#303642",
      "ring": "#4F898A",
      "chart-1": "#F4EFE6",
      "chart-2": "#D8CBB8",
      "chart-3": "#4F898A",
      "chart-4": "#4F898A",
      "chart-5": "#B68142",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#F4EFE6",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#4F898A",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#4F898A",
      "radius": "24px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019e0731-b513-7df2-bb34-230ac96cb1cf",
    "slug": "porcelain-service-terminal",
    "componentManifest": [
      "button",
      "card",
      "input",
      "textarea",
      "select",
      "dialog",
      "sheet",
      "tabs",
      "badge",
      "separator",
      "checkbox",
      "switch",
      "slider",
      "tooltip",
      "dropdown-menu",
      "table"
    ],
    "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
    "nativeTokenNames": {
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "colors": [
        "accent",
        "background",
        "border",
        "error",
        "info",
        "muted",
        "primary",
        "secondary",
        "success",
        "surface",
        "text",
        "warning"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ]
    }
  }
}
```
in the wild

embodiments

the full element showcase
embodiment · porcelain-service-terminal
DESIGN.md

at a glance

Palette

Typography

headline-lgAlegreya Sans SC · 31px · 700

The quick brown fox jumps

headline-mdAlegreya Sans SC · 25px · 600

The quick brown fox jumps

body-mdNewsreader · 16px · 400

The quick brown fox jumps

label-mdIBM Plex Mono · 12px · 600

The quick brown fox jumps

Components

New
Card title

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

Spacing

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

Shape

full9999px
lg32px
md24px
none0px
sm16px
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: #EEE6D9;
  --foreground: #1E1D1A;
  --card: #FFF9EF;
  --card-foreground: #1E1D1A;
  --popover: #FFF9EF;
  --popover-foreground: #1E1D1A;
  --primary: #F4EFE6;
  --primary-foreground: #111111;
  --secondary: #D8CBB8;
  --secondary-foreground: #111111;
  --muted: #746E64;
  --muted-foreground: #1E1D1A;
  --accent: #4F898A;
  --accent-foreground: #ffffff;
  --destructive: #8A3D32;
  --border: #2B2924;
  --input: #2B2924;
  --ring: #4F898A;
  --chart-1: #F4EFE6;
  --chart-2: #D8CBB8;
  --chart-3: #4F898A;
  --chart-4: #4F898A;
  --chart-5: #B68142;
  --sidebar: #FFF9EF;
  --sidebar-foreground: #1E1D1A;
  --sidebar-primary: #F4EFE6;
  --sidebar-primary-foreground: #111111;
  --sidebar-accent: #6D7F91;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #2B2924;
  --sidebar-ring: #4F898A;
  --radius: 24px;
}

.dark {
  --background: #0f1115;
  --foreground: #f8fafc;
  --card: #181b22;
  --card-foreground: #f8fafc;
  --popover: #181b22;
  --popover-foreground: #f8fafc;
  --primary: #F4EFE6;
  --primary-foreground: #111111;
  --secondary: #252a33;
  --secondary-foreground: #f8fafc;
  --muted: #252a33;
  --muted-foreground: #a1a1aa;
  --accent: #4F898A;
  --accent-foreground: #ffffff;
  --destructive: #8A3D32;
  --border: #303642;
  --input: #303642;
  --ring: #4F898A;
  --chart-1: #F4EFE6;
  --chart-2: #D8CBB8;
  --chart-3: #4F898A;
  --chart-4: #4F898A;
  --chart-5: #B68142;
  --sidebar: #181b22;
  --sidebar-foreground: #f8fafc;
  --sidebar-primary: #F4EFE6;
  --sidebar-primary-foreground: #111111;
  --sidebar-accent: #4F898A;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #303642;
  --sidebar-ring: #4F898A;
  --radius: 24px;
}
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 PorcelainServiceTerminalShadcnKit() {
  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">Porcelain Service Terminal</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": "porcelain-service-terminal",
  "type": "registry:theme",
  "title": "Porcelain Service Terminal shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#EEE6D9",
      "foreground": "#1E1D1A",
      "card": "#FFF9EF",
      "card-foreground": "#1E1D1A",
      "popover": "#FFF9EF",
      "popover-foreground": "#1E1D1A",
      "primary": "#F4EFE6",
      "primary-foreground": "#111111",
      "secondary": "#D8CBB8",
      "secondary-foreground": "#111111",
      "muted": "#746E64",
      "muted-foreground": "#1E1D1A",
      "accent": "#4F898A",
      "accent-foreground": "#ffffff",
      "destructive": "#8A3D32",
      "border": "#2B2924",
      "input": "#2B2924",
      "ring": "#4F898A",
      "chart-1": "#F4EFE6",
      "chart-2": "#D8CBB8",
      "chart-3": "#4F898A",
      "chart-4": "#4F898A",
      "chart-5": "#B68142",
      "sidebar": "#FFF9EF",
      "sidebar-foreground": "#1E1D1A",
      "sidebar-primary": "#F4EFE6",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#6D7F91",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#2B2924",
      "sidebar-ring": "#4F898A",
      "radius": "24px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#F4EFE6",
      "primary-foreground": "#111111",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#4F898A",
      "accent-foreground": "#ffffff",
      "destructive": "#8A3D32",
      "border": "#303642",
      "input": "#303642",
      "ring": "#4F898A",
      "chart-1": "#F4EFE6",
      "chart-2": "#D8CBB8",
      "chart-3": "#4F898A",
      "chart-4": "#4F898A",
      "chart-5": "#B68142",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#F4EFE6",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#4F898A",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#4F898A",
      "radius": "24px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019e0731-b513-7df2-bb34-230ac96cb1cf",
    "slug": "porcelain-service-terminal",
    "componentManifest": [
      "button",
      "card",
      "input",
      "textarea",
      "select",
      "dialog",
      "sheet",
      "tabs",
      "badge",
      "separator",
      "checkbox",
      "switch",
      "slider",
      "tooltip",
      "dropdown-menu",
      "table"
    ],
    "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
    "nativeTokenNames": {
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "colors": [
        "accent",
        "background",
        "border",
        "error",
        "info",
        "muted",
        "primary",
        "secondary",
        "success",
        "surface",
        "text",
        "warning"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ]
    }
  }
}
component recipescompatibility fallback
# Porcelain Service Terminal shadcn/ui Components

Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019e0731-b513-7df2-bb34-230ac96cb1cf`
Slug: `porcelain-service-terminal`

## Intent

Porcelain Service Terminal imagines a ceramic android care kiosk as a ritual instrument: warm white shell, graphite manga framing, muted teal service LEDs, amber acknowledgement glows, and transparent terminal panes that make maintenance feel calm, humane, and exact. It rejects spectacle in favor of a grounded late-90s speculative interface where robotics, queue etiquette, and quiet existential cybernetics are expressed through service posture and precise panel choreography.

## 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": "#4F898A",
  "background": "#EEE6D9",
  "border": "#2B2924",
  "error": "#8A3D32",
  "info": "#6D7F91",
  "muted": "#746E64",
  "primary": "#F4EFE6",
  "secondary": "#D8CBB8",
  "success": "#4F898A",
  "surface": "#FFF9EF",
  "text": "#1E1D1A",
  "warning": "#B68142"
}

Typography:

{
  "base_size": "16px",
  "body_font": "Newsreader",
  "google_fonts_url": "https://fonts.googleapis.com/css2?family=Alegreya+Sans+SC:wght@500;700;800&family=Newsreader:opsz,wght@6..72,400;6..72,500;6..72,600&family=IBM+Plex+Mono:wght@400;500;600&display=swap",
  "heading_font": "Alegreya Sans SC",
  "letter_spacing": "-0.02em",
  "line_height": 1.56,
  "mono_font": "IBM Plex Mono",
  "scale_ratio": 1.24
}

## Visual character to preserve

- Use large rounded porcelain panels with inset graphite seams, 24px corner radii, and one dominant vertical service-body silhouette built from CSS grid spans.
- Layer transparent terminal panes over ceramic surfaces with thin black manga gutters, clipped corner labels, and low-opacity ruled underlays using repeating-linear-gradient CSS.
- Place muted teal LED pills and tiny amber acknowledgement dots only at service-state edges, never as broad decorative glows or cyberpunk ambience.
- Create black-and-white manga pacing through asymmetric panel crops, registration ticks, narrow caption rails, and dense microcopy bands beside spacious blank ceramic fields.
- Represent robotics care through touch-height controls, queue receipts, maintenance checklists, and consent prompts arranged as human-scale ritual steps.

## ShadSync visual profile

{
  "family": "paper-collage",
  "material": "paper",
  "contour": "pebble",
  "border": "solid",
  "underlay": true,
  "grain": true,
  "stickerBadges": true,
  "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/porcelain-service-terminal/registry-theme.json` variables, then use these recipes for composition and state design.
- Preserve Katagami token names as source metadata; shadcn semantic names are only the export surface.
- Do: Use warm porcelain, bone, graphite, muted teal, and faint amber exactly as a restrained service hardware palette.; Make the main screen a specific fictional product scene: a ceramic android care kiosk performing queue, consent, calibration, or repair service.; Let manga influence come from gutters, ink line hierarchy, registration ticks, and panel pacing rather than illustrated characters.; Use terminal motifs as short readable ritual fragments: boot states, caret prompts, service logs, and calibration checks.; Place LEDs at functional edges and labels, with teal for live service and amber for acknowledgement only.; Keep one dominant panel and at least one grid break such as a full-width receipt strip or offset terminal vellum.; Preserve accessible contrast with graphite text on porcelain and visible focus outlines in teal or graphite.; Use Y2K material hints through translucent panels, rounded modules, service ports, label tabs, and compact monospace system language.
- Do not: Do not use the forbidden green matrix rain, hacker dashboards, neon cyberpunk, black terminal walls, or threat-intelligence aesthetics.; Do not create three equal cards in a row, SaaS analytics panels, CRM tables, project-management boards, or generic app component catalogs.; Do not add anime characters, mascot portraits, android pinups, or fan-art references.; Do not overuse gradients, glows, shadows, or high-saturation colors; the porcelain body and linework should carry identity.; Do not make terminal text unreadably decorative or fill empty space with random code fragments.; Do not let the interface feel coldly medical; keep care rituals, hand-height controls, and human consent visible.; Do not use rounded corners outside the defined 0/16/24/32/9999 scale.; Do not represent robotics as military targeting, surveillance, or ominous AI takeover language.

## 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 PorcelainServiceTerminalShadcnKit() {
  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">Porcelain Service Terminal</h2>
          <p className="mt-1 max-w-xl text-sm text-muted-foreground">
            Use the Katagami registry theme, then compose these shadcn primitives
            with the language-specific component recipes.
          </p>
        </div>
        <Button>Apply theme</Button>
      </div>

      <Tabs defaultValue="components">
        <TabsList>
          <TabsTrigger value="components">Components</TabsTrigger>
          <TabsTrigger value="states">States</TabsTrigger>
          <TabsTrigger value="export">Export</TabsTrigger>
        </TabsList>
      </Tabs>

      <Card>
        <CardHeader>
          <CardTitle>Component recipe</CardTitle>
          <CardDescription>
            Replace this starter content with the agent-authored product scene
            from components.md and preview-shots.json.
          </CardDescription>
        </CardHeader>
        <CardContent className="grid gap-3 sm:grid-cols-[1fr_auto]">
          <Input defaultValue="Tokenized shadcn surface" aria-label="Recipe name" />
          <Button variant="secondary">Preview state</Button>
        </CardContent>
        <CardFooter className="justify-between">
          <Badge>Ready</Badge>
          <Button variant="outline">Copy recipe</Button>
        </CardFooter>
      </Card>
    </section>
  );
}
```

## Layout notes

{
  "breakpoints": "mobile <= 640px, tablet 641px-980px, desktop >= 981px; mobile removes absolute overlap but preserves clipped labels, LED grammar, and manga gutters.",
  "density": "Medium density with deliberate contrast: dense diagnostic strips and microcopy rails sit beside large quiet ceramic fields, producing an 8:1 spacing rhythm from 4px ticks to 96px section pauses.",
  "grid": "Desktop uses a 12-column max-width 1240px grid: dominant kiosk spans 7 columns, diagnostic vellum overlays 5, and the receipt rail breaks the grid full-width. Tablet moves to 6 columns; mobile stacks in ritual order.",
  "responsive": "Maintain the scene as a kiosk, not a dashboard: the service body appears first, then current appointment, diagnostic rail, receipt ritual, and maintenance notes. Avoid equal card rows at every width.",
  "whitespace": "Whitespace must feel like unmarked porcelain: broad outer margins, generous top pauses, and tight grouped labels. Related controls sit at 4-12px; unrelated service zones separate at 48-96px."
}
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-019e0731-b513-7df2-bb34-230ac96cb1cf",
    "name": "Porcelain Service Terminal",
    "slug": "porcelain-service-terminal"
  },
  "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": [
    "Use large rounded porcelain panels with inset graphite seams, 24px corner radii, and one dominant vertical service-body silhouette built from CSS grid spans.",
    "Layer transparent terminal panes over ceramic surfaces with thin black manga gutters, clipped corner labels, and low-opacity ruled underlays using repeating-linear-gradient CSS.",
    "Place muted teal LED pills and tiny amber acknowledgement dots only at service-state edges, never as broad decorative glows or cyberpunk ambience.",
    "Create black-and-white manga pacing through asymmetric panel crops, registration ticks, narrow caption rails, and dense microcopy bands beside spacious blank ceramic fields.",
    "Represent robotics care through touch-height controls, queue receipts, maintenance checklists, and consent prompts arranged as human-scale ritual steps."
  ],
  "visualProfile": {
    "family": "brutalist",
    "material": "ink",
    "contour": "pebble",
    "border": "solid",
    "underlay": true,
    "grain": false,
    "stickerBadges": true,
    "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": "Porcelain Service Terminal launch room",
        "description": "A product team workspace where navigation, filters, metrics, and dense rows carry the language's visible structure.",
        "primaryAction": "Apply theme",
        "secondaryAction": "Review states",
        "stats": [
          {
            "label": "components",
            "value": "16",
            "tone": "accent"
          },
          {
            "label": "states",
            "value": "ready"
          },
          {
            "label": "density",
            "value": "balanced",
            "tone": "warning"
          }
        ],
        "rows": [
          {
            "label": "Primary flow",
            "value": "mapped",
            "status": "active"
          },
          {
            "label": "Token coverage",
            "value": "semantic",
            "status": "synced"
          },
          {
            "label": "Responsive proof",
            "value": "queued",
            "status": "review"
          }
        ],
        "statuses": [
          "Active",
          "Synced",
          "Draft"
        ]
      }
    },
    {
      "id": "detail-editor",
      "title": "Detail editor",
      "viewport": "tablet",
      "primitives": [
        "button",
        "card",
        "input",
        "textarea",
        "select",
        "checkbox",
        "switch",
        "slider",
        "dialog",
        "sheet"
      ],
      "composition": "A focused editing flow with form fields, validation, confirmation, and a contextual side panel.",
      "mustShow": [
        "focus ring",
        "error or destructive state",
        "dialog or sheet treatment",
        "written guidance content"
      ],
      "avoid": [
        "unstyled browser controls",
        "floating cards inside cards",
        "missing labels"
      ],
      "scene": {
        "eyebrow": "editing flow",
        "headline": "Language recipe editor",
        "description": "A focused form proving labels, validation, toggles, panel rhythm, and action hierarchy.",
        "primaryAction": "Save recipe",
        "secondaryAction": "Open sheet",
        "fields": [
          {
            "label": "Component family",
            "value": "Narrative cards"
          },
          {
            "label": "State treatment",
            "value": "Visible focus + validation"
          },
          {
            "label": "Motion",
            "value": "Small lift, no opacity-only fade"
          }
        ],
        "statuses": [
          "Focus",
          "Invalid",
          "Confirmed"
        ]
      }
    },
    {
      "id": "data-operations",
      "title": "Data operations",
      "viewport": "mobile",
      "primitives": [
        "button",
        "tabs",
        "badge",
        "dropdown-menu",
        "table",
        "tooltip",
        "separator"
      ],
      "composition": "A compact operational view proving row rhythm, stacked actions, menu states, badges, and empty/destructive states.",
      "mustShow": [
        "responsive reflow",
        "dense row styling",
        "menu affordance",
        "status badge system"
      ],
      "avoid": [
        "desktop-only tables",
        "text overflow",
        "default shadcn spacing without Katagami character"
      ],
      "scene": {
        "eyebrow": "operations",
        "headline": "Compact review queue",
        "description": "A narrow viewport scene with rows, menus, tooltips, badges, and destructive affordances.",
        "primaryAction": "Resolve",
        "secondaryAction": "Filter",
        "rows": [
          {
            "label": "Button hierarchy",
            "value": "approved",
            "status": "ok"
          },
          {
            "label": "Table rhythm",
            "value": "needs pass",
            "status": "watch"
          },
          {
            "label": "Empty state",
            "value": "designed",
            "status": "done"
          }
        ],
        "statuses": [
          "Queued",
          "Blocked",
          "Done"
        ]
      }
    }
  ],
  "componentRecipes": [
    {
      "primitive": "button",
      "intent": "Prove action hierarchy, focus, disabled, and destructive states."
    },
    {
      "primitive": "card",
      "intent": "Carry the language surface, border, elevation, and density rules."
    },
    {
      "primitive": "input",
      "intent": "Show labels, focus rings, validation, and spacing rhythm."
    },
    {
      "primitive": "textarea",
      "intent": "Show longer guidance, validation copy, and writing density."
    },
    {
      "primitive": "select",
      "intent": "Show filtering, selection contrast, and menu trigger styling."
    },
    {
      "primitive": "dialog",
      "intent": "Show centered decision states and overlay treatment."
    },
    {
      "primitive": "sheet",
      "intent": "Show contextual side panels and responsive editing."
    },
    {
      "primitive": "tabs",
      "intent": "Show navigational structure and active/inactive contrast."
    },
    {
      "primitive": "badge",
      "intent": "Show compact status vocabulary and semantic colors."
    },
    {
      "primitive": "separator",
      "intent": "Show section rhythm without generic gray dividers."
    },
    {
      "primitive": "checkbox",
      "intent": "Show binary selection with visible focus and checked states."
    },
    {
      "primitive": "switch",
      "intent": "Show settings toggles and on/off contrast."
    },
    {
      "primitive": "slider",
      "intent": "Show numeric adjustment with track/thumb styling."
    },
    {
      "primitive": "tooltip",
      "intent": "Show concise explanation styling above compact controls."
    },
    {
      "primitive": "dropdown-menu",
      "intent": "Show action menus, destructive items, and grouped choices."
    },
    {
      "primitive": "table",
      "intent": "Show dense operational data, separators, row states, and responsive behavior."
    }
  ],
  "qualityRules": {
    "do": [
      "Use warm porcelain, bone, graphite, muted teal, and faint amber exactly as a restrained service hardware palette.",
      "Make the main screen a specific fictional product scene: a ceramic android care kiosk performing queue, consent, calibration, or repair service.",
      "Let manga influence come from gutters, ink line hierarchy, registration ticks, and panel pacing rather than illustrated characters.",
      "Use terminal motifs as short readable ritual fragments: boot states, caret prompts, service logs, and calibration checks.",
      "Place LEDs at functional edges and labels, with teal for live service and amber for acknowledgement only.",
      "Keep one dominant panel and at least one grid break such as a full-width receipt strip or offset terminal vellum.",
      "Preserve accessible contrast with graphite text on porcelain and visible focus outlines in teal or graphite.",
      "Use Y2K material hints through translucent panels, rounded modules, service ports, label tabs, and compact monospace system language."
    ],
    "dont": [
      "Do not use the forbidden green matrix rain, hacker dashboards, neon cyberpunk, black terminal walls, or threat-intelligence aesthetics.",
      "Do not create three equal cards in a row, SaaS analytics panels, CRM tables, project-management boards, or generic app component catalogs.",
      "Do not add anime characters, mascot portraits, android pinups, or fan-art references.",
      "Do not overuse gradients, glows, shadows, or high-saturation colors; the porcelain body and linework should carry identity.",
      "Do not make terminal text unreadably decorative or fill empty space with random code fragments.",
      "Do not let the interface feel coldly medical; keep care rituals, hand-height controls, and human consent visible.",
      "Do not use rounded corners outside the defined 0/16/24/32/9999 scale.",
      "Do not represent robotics as military targeting, surveillance, or ominous AI takeover language."
    ]
  }
}