Typography
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.
Portable DESIGN.md — tokens plus the paired art style. Agents must generate real images.
Generation 2 of Rain Capsule Command Shell: same rented-night identity, rebuilt to the current artifact standard and renamed to a legal one-word Maker's Mark.
Build screens as a rented interior rather than a dashboard: one dominant vertical stack of berths, one narrow service corridor, one private pane, and one vending-glow interruption. Panel weights are asymmetric — the berth column carries most of the mass and status strips tuck into the gutters. A stay strip frames the top and a rail frames the bottom so the operator feels enclosed.
First voice is numbered berth wayfinding in condensed uppercase; second is monospace prompts and weather telemetry; third is off-white caption slips. Hierarchy comes from panel placement, gutter thickness and the scarcity of light more than from size. Display type may be large but compressed and cropped by seams; the mid-tier compresses toward the 17px body.
Dense by intention: information clusters at 4-12px inside compartments while architectural gaps open to 64-96px. The interface should feel compact enough to sleep in, with one breathing void that reads as a dark corridor.
A 12-column shell. The landing runs one full-bleed stage per act. The console runs 5 / 4 / 3 — berth stack, weather and checkout queue, aperture and desk log. Gutters range from 2px interior seams to 96px architectural pauses.
Wide 1920+ caps and centres contained content while the film stage stays full-bleed. Desktop 1440 is the reference composition. Tablet 768-1180 is its own layout: the corridor becomes a horizontal ladder of hatches and the side panes stack under the main column. Phone 390-430 is a single column with the film re-choreographed for portrait, 140vh acts and 19vw display type.
Claustrophobic by design: 4-12px cell gaps inside modules, 24-32px between sequences, and one 64-96px dark corridor per screen left deliberately empty to preserve the solitude.
nightpane
Photographic, never illustrated: a subject observed through a rain-beaded window at night, the wet glass between camera and subject.
One full-bleed full-screen plate at the top of the landing, served through --hero-image. A wet street at night with a single lit shutter, and the upper third left as calm dark sky so the wordmark can be composed over it rather than panelled onto it.
Hand-drawn SVG line primitives at 1.5-2px stroke in the palette's own colours. No icon fonts, no emoji, no character glyphs in copy.
# Amayadori
## Philosophy
A compact command language for a transient sleeper renting one night out of the rain. Software is treated as a narrow architectural compartment: manga gutters become berth seams, terminal cells become bedding labels, and every interaction reads as checking in, waiting out the weather, and leaving before nine.
### Values
- Spatial compression over decorative abundance: identity comes from stacked berth proportions, narrow corridors and deliberately claustrophobic negative space.
- Terminal authenticity without hacker theatre: monospace carries only what the building itself would print — berth numbers, timers, weather.
- Private urban solitude: the voice is quiet, rented and inward-facing, meant for one person behind a drawn curtain.
- Manga structure as interface grammar: ink gutters, off-white caption slips, cropped panels and screentone restraint do the work that borders would.
- One light source: exactly one milk-white aperture per screen carries real light, and everything else reflects it.
- Embodied operation: the user is lying in a numbered module while the room, the weather and the checkout clock negotiate sleep.
### Anti-Values
- No green code rain, neon cyberpunk skyline, vaporwave, or glitch theatrics.
- No character art, mascots, or illustrated heroes that replace the interface.
- No SaaS card grids, pill bars, boxed navigation, or rounded startup widgets.
- No coloured edge rails, no accent strip down the side of a block, no borders at all.
- No inflated type: body stays at 17px in a fine weight and only the display line is large.
### Visual Character
- clip-path hatch chamfers on the lower-right corner of every compartment, with border-radius pinned to 0 everywhere
- 2px near-black ink gutters as grid gap, doing the structural work a border would
- a single #EDE7D2 aperture per screen with a 0 0 40px rgba(237,231,210,.16) glow, the only coloured shadow in the language
- Fragment Mono at 12-13px with 0.09-0.16em tracking for every machine-printed value
- a rain-pane texture of vertical streaks over a character-cell grid at under 10% opacity, quieted to near-zero behind copy
### Lineage
> Generation 2 of Rain Capsule Command Shell: same rented-night identity, rebuilt to the current artifact standard and renamed to a legal one-word Maker's Mark.
## Tokens
### Colors
| Name | Value |
|------|-------|
| bg | `#05070D` |
| surface | `#0B0F1A` |
| surface_solid | `#121A2B` |
| text | `#F1EBDD` |
| muted | `#7E899A` |
| border | `#FFFFFF14` |
| accent | `#EDE7D2` |
| accent_2 | `#D79A64` |
| accent_soft | `#86A7B8` |
| on_accent | `#05070D` |
| success | `#B9B08A` |
| warning | `#D79A64` |
| error | `#A94D49` |
| info | `#86A7B8` |
### Typography
- **Base Size**: 17px
- **Body Font**: Saira Semi Condensed
- **Heading Font**: Saira Semi Condensed
- **Mono Font**: Fragment Mono
- **Heading Weight**: 700
- **Heading Transform**: uppercase
- **Letter Spacing**: -0.035em
- **Line Height**: 1.6
- **Scale Ratio**: 1.22
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Fragment+Mono&family=Saira+Semi+Condensed:wght@400;500;700&display=swap
### Radii
- **None**: 0px
- **Md**: 16px
- **Lg**: 24px
- **Full**: 9999px
### Shadows
- **Sm**: 0 10px 24px rgba(0,0,0,0.45)
- **Md**: 0 18px 42px rgba(0,0,0,0.44), 0 0 34px rgba(134,167,184,0.08)
- **Lg**: 0 36px 90px rgba(0,0,0,0.62), inset 0 0 80px rgba(134,167,184,0.05)
### Spacing
- **Base**: 8px
- **Scale**: [4,8,12,16,24,32,48,64,96,128]
### Surfaces
- **Treatment**: Midnight ink ground with pod shells one step up; a single {colors.accent} aperture per screen is the only lit surface and the only element that casts a coloured glow.
- **Card Style**: Never a card. A compartment: flat surface, 22px padding, the lower-right corner cut back 18px as a hatch chamfer, no border and no edge rail. Compartments never nest.
- **Bg Pattern**: Vertical silver rain streaks over a character-cell grid, both held under ten percent opacity and dropped to near-zero wherever copy sits.
### Borders
- **Default Width**: 0px
- **Accent Width**: 0px
- **Style**: none
- **Character**: There are no borders. Blocks are separated by manga gutters — 2px of near-black ground between rows, 10-24px between sequences, and one 64-96px empty corridor per screen. The reserved seam token #FFFFFF14 is used only for hairline architectural seams, never as a card outline.
### Motion
- **Duration**: 180ms
- **Easing**: cubic-bezier(0.22,0.72,0.16,1)
- **Philosophy**: Motion is barely awake: a lamp comes on, a curtain slides a few pixels, a timer turns over. The landing is one scroll-controlled film of six scrubbed acts; entrances settle on an easing tail and every act holds long enough to be read.
## Rules
### Composition
Build screens as a rented interior rather than a dashboard: one dominant vertical stack of berths, one narrow service corridor, one private pane, and one vending-glow interruption. Panel weights are asymmetric — the berth column carries most of the mass and status strips tuck into the gutters. A stay strip frames the top and a rail frames the bottom so the operator feels enclosed.
### Hierarchy
First voice is numbered berth wayfinding in condensed uppercase; second is monospace prompts and weather telemetry; third is off-white caption slips. Hierarchy comes from panel placement, gutter thickness and the scarcity of light more than from size. Display type may be large but compressed and cropped by seams; the mid-tier compresses toward the 17px body.
### Density
Dense by intention: information clusters at 4-12px inside compartments while architectural gaps open to 64-96px. The interface should feel compact enough to sleep in, with one breathing void that reads as a dark corridor.
### Signature Patterns
- Berth bay stack: repeating horizontal bays, each with a milk pod tab pressed into its top-left corner and a lamp bar that lights when the curtain is drawn.
- Ink gutter: blocks are separated by ground showing through — 2px inside a sequence, 10-24px between sequences — so the language needs no borders and no edge rails.
- Hatch chamfer: the lower-right corner of every compartment is cut back at 45 degrees, 18-22px on compartments and 8-12px on controls, which is the only corner treatment in the language.
- Vending aperture: exactly one pale rectangle per screen carries real light and casts the only coloured glow; on the landing it is the climax, on the console it is the drinks cabinet.
- Rain pane: vertical silver streaks over a character-cell grid under ten percent opacity, wiped quiet behind every line of copy — a WebGL surface on the landing, the same texture in CSS elsewhere.
- Stay strip: a persistent occupancy readout — which berth, how long is left, what the weather is doing — that doubles as the film's progress instrument.
## Layout
### Grid
A 12-column shell. The landing runs one full-bleed stage per act. The console runs 5 / 4 / 3 — berth stack, weather and checkout queue, aperture and desk log. Gutters range from 2px interior seams to 96px architectural pauses.
### Breakpoints
Wide 1920+ caps and centres contained content while the film stage stays full-bleed. Desktop 1440 is the reference composition. Tablet 768-1180 is its own layout: the corridor becomes a horizontal ladder of hatches and the side panes stack under the main column. Phone 390-430 is a single column with the film re-choreographed for portrait, 140vh acts and 19vw display type.
### Whitespace
Claustrophobic by design: 4-12px cell gaps inside modules, 24-32px between sequences, and one 64-96px dark corridor per screen left deliberately empty to preserve the solitude.
## Guidance
### Do
- Separate blocks with ink gutters and let the ground do the work of a border.
- Keep one milk-white aperture per screen and let everything else sit in shell tones.
- Set anything the building would print — berth numbers, timers, weather — in Fragment Mono.
- Write copy as a scene inside the building: berths, curtains, coins, checkout hours.
- Cut the lower-right corner of every compartment at the same angle and depth.
- Quiet any pattern to near-zero wherever copy sits; full-density texture belongs to the empty areas.
### Don't
- Do not put a coloured strip down the edge of a block to show status; use a chip.
- Do not round any corner — the hatch chamfer is the only corner treatment.
- Do not trap navigation in a floating bar or a pill; let it sit on the page baseline.
- Do not add green code rain, neon skylines, vaporwave, or glitch overlays.
- Do not inflate body copy past 18px or set it in a heavy weight.
- Do not introduce a third font family or a fourth accent colour.
### Accessibility
Body and micro text hold 4.5:1 against their composited ground and display holds 3:1, measured behind the actual glyphs. Bright accents stay on swatches, chips and fills; accent-role TEXT on the milk aperture uses the dark ink variants #4A3A21 and #5C3617. Status is never colour alone — every chip carries a word. Focus rings are 2px sodium at 3px offset on every control. Tap targets are 44px. prefers-reduced-motion de-pins the film to the full settled document.
### Usage Context
Private network shells, night-shift and sleep-cycle operators, room and building control, anonymous message terminals, speculative device operating systems, and any product where solitude and temporary occupancy are the point.
## Imagery Direction
### Pairs With
nightpane
### Illustration Style
Photographic, never illustrated: a subject observed through a rain-beaded window at night, the wet glass between camera and subject.
### Hero Image Direction
One full-bleed full-screen plate at the top of the landing, served through --hero-image. A wet street at night with a single lit shutter, and the upper third left as calm dark sky so the wordmark can be composed over it rather than panelled onto it.
### Icon Style
Hand-drawn SVG line primitives at 1.5-2px stroke in the palette's own colours. No icon fonts, no emoji, no character glyphs in copy.
### Image Gen Prompts
- A wet street at night outside a small lodging house, one lit shutter as the only warm source, rain streaks across the frame, near-black midnight navy, calm dark sky in the upper third. NO text, NO letters, NO logos
- A narrow berth corridor receding to a single strip lamp, hatches in deep shadow on both sides, silver rain streaks over the frame. NO text, NO letters, NO logos
- The interior of a narrow sleeping berth looking out through a rain-beaded window at a dim city, one small warm reading lamp at the edge, sparse dim white and amber points only. NO text, NO letters, NO logos
### Plate Slots
- **--Hero-Image**: plate-1-arrival — full-bleed rainy street, scene 1 (the house hero slot; scene 1 has no separate --plate-N)
- **--Plate-2**: plate-2-desk — unattended night desk and key board behind wet glass, scene 2
- **--Plate-3**: plate-3-corridor — berth corridor receding to one strip lamp, scene 3
- **--Plate-4a**: plate-4a-glass-wet — TWIN A: the pane running with rain streaks, scene 4
- **--Plate-4b**: plate-4b-glass-fog — TWIN B: the same pane fogged with condensation, scene 4
- **--Plate-5**: plate-5-berth — inside the berth, window over the dim city, scene 5 (climax)
- **--Plate-6**: plate-6-dawn — curtain slit flooding with 09:00 daylight, scene 6
---
version: "alpha"
name: "Amayadori"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#05070D"
surface: "#0B0F1A"
surface_solid: "#121A2B"
text: "#F1EBDD"
muted: "#7E899A"
accent: "#EDE7D2"
accent_2: "#D79A64"
accent_soft: "#86A7B8"
on_accent: "#05070D"
success: "#B9B08A"
warning: "#D79A64"
error: "#A94D49"
info: "#86A7B8"
typography:
headline-lg:
fontFamily: "Saira Semi Condensed"
fontSize: "1.929rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.035em"
headline-md:
fontFamily: "Saira Semi Condensed"
fontSize: "1.581rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.035em"
body-md:
fontFamily: "Saira Semi Condensed"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.6
letterSpacing: "-0.035em"
label-md:
fontFamily: "Fragment Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
md: "16px"
lg: "24px"
full: "9999px"
spacing:
base: "8px"
xs: "4px"
sm: "8px"
md: "12px"
lg: "16px"
xl: "24px"
2xl: "32px"
3xl: "48px"
4xl: "64px"
step-8: "96px"
step-9: "128px"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_solid:
backgroundColor: "{colors.surface_solid}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-accent_2:
backgroundColor: "{colors.accent_2}"
color-reference-accent_soft:
backgroundColor: "{colors.accent_soft}"
color-reference-on_accent:
backgroundColor: "{colors.on_accent}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-warning:
backgroundColor: "{colors.warning}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-info:
backgroundColor: "{colors.info}"
button-primary:
backgroundColor: "{colors.accent}"
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"
---
# Amayadori
## Overview
A compact command language for a transient sleeper renting one night out of the rain. Software is treated as a narrow architectural compartment: manga gutters become berth seams, terminal cells become bedding labels, and every interaction reads as checking in, waiting out the weather, and leaving before nine.
### Values
- Spatial compression over decorative abundance: identity comes from stacked berth proportions, narrow corridors and deliberately claustrophobic negative space.
- Terminal authenticity without hacker theatre: monospace carries only what the building itself would print — berth numbers, timers, weather.
- Private urban solitude: the voice is quiet, rented and inward-facing, meant for one person behind a drawn curtain.
- Manga structure as interface grammar: ink gutters, off-white caption slips, cropped panels and screentone restraint do the work that borders would.
- One light source: exactly one milk-white aperture per screen carries real light, and everything else reflects it.
- Embodied operation: the user is lying in a numbered module while the room, the weather and the checkout clock negotiate sleep.
### Anti-Values
- No green code rain, neon cyberpunk skyline, vaporwave, or glitch theatrics.
- No character art, mascots, or illustrated heroes that replace the interface.
- No SaaS card grids, pill bars, boxed navigation, or rounded startup widgets.
- No coloured edge rails, no accent strip down the side of a block, no borders at all.
- No inflated type: body stays at 17px in a fine weight and only the display line is large.
### Visual Character
- clip-path hatch chamfers on the lower-right corner of every compartment, with border-radius pinned to 0 everywhere
- 2px near-black ink gutters as grid gap, doing the structural work a border would
- a single #EDE7D2 aperture per screen with a 0 0 40px rgba(237,231,210,.16) glow, the only coloured shadow in the language
- Fragment Mono at 12-13px with 0.09-0.16em tracking for every machine-printed value
- a rain-pane texture of vertical streaks over a character-cell grid at under 10% opacity, quieted to near-zero behind copy
### Lineage
> Generation 2 of Rain Capsule Command Shell: same rented-night identity, rebuilt to the current artifact standard and renamed to a legal one-word Maker's Mark.
## Colors
Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.
| Token | Value |
|-------|-------|
| bg | `#05070D` |
| surface | `#0B0F1A` |
| surface_solid | `#121A2B` |
| text | `#F1EBDD` |
| muted | `#7E899A` |
| accent | `#EDE7D2` |
| accent_2 | `#D79A64` |
| accent_soft | `#86A7B8` |
| on_accent | `#05070D` |
| success | `#B9B08A` |
| warning | `#D79A64` |
| error | `#A94D49` |
| info | `#86A7B8` |
## Typography
- **Headline-Lg**: Saira Semi Condensed, 1.929rem, weight 700, line-height 1.1.
- **Headline-Md**: Saira Semi Condensed, 1.581rem, weight 600, line-height 1.15.
- **Body-Md**: Saira Semi Condensed, 17px, weight 400, line-height 1.6.
- **Label-Md**: Fragment Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
- **Step-8**: `96px`
- **Step-9**: `128px`
### Grid
A 12-column shell. The landing runs one full-bleed stage per act. The console runs 5 / 4 / 3 — berth stack, weather and checkout queue, aperture and desk log. Gutters range from 2px interior seams to 96px architectural pauses.
### Breakpoints
Wide 1920+ caps and centres contained content while the film stage stays full-bleed. Desktop 1440 is the reference composition. Tablet 768-1180 is its own layout: the corridor becomes a horizontal ladder of hatches and the side panes stack under the main column. Phone 390-430 is a single column with the film re-choreographed for portrait, 140vh acts and 19vw display type.
### Whitespace
Claustrophobic by design: 4-12px cell gaps inside modules, 24-32px between sequences, and one 64-96px dark corridor per screen left deliberately empty to preserve the solitude.
## Elevation & Depth
### Shadows
- **Sm**: 0 10px 24px rgba(0,0,0,0.45)
- **Md**: 0 18px 42px rgba(0,0,0,0.44), 0 0 34px rgba(134,167,184,0.08)
- **Lg**: 0 36px 90px rgba(0,0,0,0.62), inset 0 0 80px rgba(134,167,184,0.05)
## Shapes
### Rounded
- **None**: `0px`
- **Md**: `16px`
- **Lg**: `24px`
- **Full**: `9999px`
### Surfaces
- **Treatment**: Midnight ink ground with pod shells one step up; a single {colors.accent} aperture per screen is the only lit surface and the only element that casts a coloured glow.
- **Card Style**: Never a card. A compartment: flat surface, 22px padding, the lower-right corner cut back 18px as a hatch chamfer, no border and no edge rail. Compartments never nest.
- **Bg Pattern**: Vertical silver rain streaks over a character-cell grid, both held under ten percent opacity and dropped to near-zero wherever copy sits.
### Borders
- **Default Width**: 0px
- **Accent Width**: 0px
- **Style**: none
- **Character**: There are no borders. Blocks are separated by manga gutters — 2px of near-black ground between rows, 10-24px between sequences, and one 64-96px empty corridor per screen. The reserved seam token #FFFFFF14 is used only for hairline architectural seams, never as a card outline.
## Components
### Composition
Build screens as a rented interior rather than a dashboard: one dominant vertical stack of berths, one narrow service corridor, one private pane, and one vending-glow interruption. Panel weights are asymmetric — the berth column carries most of the mass and status strips tuck into the gutters. A stay strip frames the top and a rail frames the bottom so the operator feels enclosed.
### Hierarchy
First voice is numbered berth wayfinding in condensed uppercase; second is monospace prompts and weather telemetry; third is off-white caption slips. Hierarchy comes from panel placement, gutter thickness and the scarcity of light more than from size. Display type may be large but compressed and cropped by seams; the mid-tier compresses toward the 17px body.
### Density
Dense by intention: information clusters at 4-12px inside compartments while architectural gaps open to 64-96px. The interface should feel compact enough to sleep in, with one breathing void that reads as a dark corridor.
### Signature Patterns
- Berth bay stack: repeating horizontal bays, each with a milk pod tab pressed into its top-left corner and a lamp bar that lights when the curtain is drawn.
- Ink gutter: blocks are separated by ground showing through — 2px inside a sequence, 10-24px between sequences — so the language needs no borders and no edge rails.
- Hatch chamfer: the lower-right corner of every compartment is cut back at 45 degrees, 18-22px on compartments and 8-12px on controls, which is the only corner treatment in the language.
- Vending aperture: exactly one pale rectangle per screen carries real light and casts the only coloured glow; on the landing it is the climax, on the console it is the drinks cabinet.
- Rain pane: vertical silver streaks over a character-cell grid under ten percent opacity, wiped quiet behind every line of copy — a WebGL surface on the landing, the same texture in CSS elsewhere.
- Stay strip: a persistent occupancy readout — which berth, how long is left, what the weather is doing — that doubles as the film's progress instrument.
## 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-019ffc42-dc12-7223-b9f1-0fd37af7ae96/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 Separate blocks with ink gutters and let the ground do the work of a border.
- Do Keep one milk-white aperture per screen and let everything else sit in shell tones.
- Do Set anything the building would print — berth numbers, timers, weather — in Fragment Mono.
- Do Write copy as a scene inside the building: berths, curtains, coins, checkout hours.
- Do Cut the lower-right corner of every compartment at the same angle and depth.
- Do Quiet any pattern to near-zero wherever copy sits; full-density texture belongs to the empty areas.
- Don't Do not put a coloured strip down the edge of a block to show status; use a chip.
- Don't Do not round any corner — the hatch chamfer is the only corner treatment.
- Don't Do not trap navigation in a floating bar or a pill; let it sit on the page baseline.
- Don't Do not add green code rain, neon skylines, vaporwave, or glitch overlays.
- Don't Do not inflate body copy past 18px or set it in a heavy weight.
- Don't Do not introduce a third font family or a fourth accent colour.
### Accessibility
Body and micro text hold 4.5:1 against their composited ground and display holds 3:1, measured behind the actual glyphs. Bright accents stay on swatches, chips and fills; accent-role TEXT on the milk aperture uses the dark ink variants #4A3A21 and #5C3617. Status is never colour alone — every chip carries a word. Focus rings are 2px sodium at 3px offset on every control. Tap targets are 44px. prefers-reduced-motion de-pins the film to the full settled document.
### Usage Context
Private network shells, night-shift and sleep-cycle operators, room and building control, anonymous message terminals, speculative device operating systems, and any product where solitude and temporary occupancy are the point.
## Imagery Direction
### Pairs With
nightpane
### Illustration Style
Photographic, never illustrated: a subject observed through a rain-beaded window at night, the wet glass between camera and subject.
### Hero Image Direction
One full-bleed full-screen plate at the top of the landing, served through --hero-image. A wet street at night with a single lit shutter, and the upper third left as calm dark sky so the wordmark can be composed over it rather than panelled onto it.
### Icon Style
Hand-drawn SVG line primitives at 1.5-2px stroke in the palette's own colours. No icon fonts, no emoji, no character glyphs in copy.
### Image Gen Prompts
- A wet street at night outside a small lodging house, one lit shutter as the only warm source, rain streaks across the frame, near-black midnight navy, calm dark sky in the upper third. NO text, NO letters, NO logos
- A narrow berth corridor receding to a single strip lamp, hatches in deep shadow on both sides, silver rain streaks over the frame. NO text, NO letters, NO logos
- The interior of a narrow sleeping berth looking out through a rain-beaded window at a dim city, one small warm reading lamp at the edge, sparse dim white and amber points only. NO text, NO letters, NO logos
### Plate Slots
- **--Hero-Image**: plate-1-arrival — full-bleed rainy street, scene 1 (the house hero slot; scene 1 has no separate --plate-N)
- **--Plate-2**: plate-2-desk — unattended night desk and key board behind wet glass, scene 2
- **--Plate-3**: plate-3-corridor — berth corridor receding to one strip lamp, scene 3
- **--Plate-4a**: plate-4a-glass-wet — TWIN A: the pane running with rain streaks, scene 4
- **--Plate-4b**: plate-4b-glass-fog — TWIN B: the same pane fogged with condensation, scene 4
- **--Plate-5**: plate-5-berth — inside the berth, window over the dim city, scene 5 (climax)
- **--Plate-6**: plate-6-dawn — curtain slit flooding with 09:00 daylight, scene 6
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "amayadori",
"type": "registry:theme",
"title": "Amayadori shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#05070D",
"foreground": "#F1EBDD",
"card": "#0B0F1A",
"card-foreground": "#F1EBDD",
"popover": "#0B0F1A",
"popover-foreground": "#F1EBDD",
"primary": "#F1EBDD",
"primary-foreground": "#111111",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#7E899A",
"muted-foreground": "#F1EBDD",
"accent": "#EDE7D2",
"accent-foreground": "#111111",
"destructive": "#A94D49",
"border": "#FFFFFF14",
"input": "#FFFFFF14",
"ring": "#EDE7D2",
"chart-1": "#F1EBDD",
"chart-2": "#f4f4f5",
"chart-3": "#EDE7D2",
"chart-4": "#B9B08A",
"chart-5": "#D79A64",
"sidebar": "#0B0F1A",
"sidebar-foreground": "#F1EBDD",
"sidebar-primary": "#F1EBDD",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#86A7B8",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#FFFFFF14",
"sidebar-ring": "#EDE7D2",
"radius": "16px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#F1EBDD",
"primary-foreground": "#111111",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#EDE7D2",
"accent-foreground": "#111111",
"destructive": "#A94D49",
"border": "#303642",
"input": "#303642",
"ring": "#EDE7D2",
"chart-1": "#F1EBDD",
"chart-2": "#f4f4f5",
"chart-3": "#EDE7D2",
"chart-4": "#B9B08A",
"chart-5": "#D79A64",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#F1EBDD",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#EDE7D2",
"sidebar-accent-foreground": "#111111",
"sidebar-border": "#303642",
"sidebar-ring": "#EDE7D2",
"radius": "16px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ffc42-dc12-7223-b9f1-0fd37af7ae96",
"slug": "amayadori",
"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",
"accent_2",
"accent_soft",
"bg",
"border",
"error",
"info",
"muted",
"on_accent",
"success",
"surface",
"surface_solid",
"text",
"warning"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"heading_transform",
"heading_weight",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
],
"radii": [
"full",
"lg",
"md",
"none"
],
"shadows": [
"lg",
"md",
"sm"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
]
}
}
}
```The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
A generated style is an aggregate of many influences — credit is given to the artists and traditions it draws on, not a claim of authorship.
produced by claude-opus-5[1m] · sourced by claude-opus-5[1m] · images by flux-pro-v1.1-ultra
Keep Amayadori and swap a palette and an art style onto it. The landing & dashboard recolor live.
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.
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table:root {
--background: #05070D;
--foreground: #F1EBDD;
--card: #0B0F1A;
--card-foreground: #F1EBDD;
--popover: #0B0F1A;
--popover-foreground: #F1EBDD;
--primary: #F1EBDD;
--primary-foreground: #111111;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #7E899A;
--muted-foreground: #F1EBDD;
--accent: #EDE7D2;
--accent-foreground: #111111;
--destructive: #A94D49;
--border: #FFFFFF14;
--input: #FFFFFF14;
--ring: #EDE7D2;
--chart-1: #F1EBDD;
--chart-2: #f4f4f5;
--chart-3: #EDE7D2;
--chart-4: #B9B08A;
--chart-5: #D79A64;
--sidebar: #0B0F1A;
--sidebar-foreground: #F1EBDD;
--sidebar-primary: #F1EBDD;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #86A7B8;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #FFFFFF14;
--sidebar-ring: #EDE7D2;
--radius: 16px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #F1EBDD;
--primary-foreground: #111111;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #EDE7D2;
--accent-foreground: #111111;
--destructive: #A94D49;
--border: #303642;
--input: #303642;
--ring: #EDE7D2;
--chart-1: #F1EBDD;
--chart-2: #f4f4f5;
--chart-3: #EDE7D2;
--chart-4: #B9B08A;
--chart-5: #D79A64;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #F1EBDD;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #EDE7D2;
--sidebar-accent-foreground: #111111;
--sidebar-border: #303642;
--sidebar-ring: #EDE7D2;
--radius: 16px;
}
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
export function AmayadoriShadcnKit() {
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">Amayadori</h2>
<p className="mt-1 max-w-xl text-sm text-muted-foreground">
Use the Katagami registry theme, then compose these shadcn primitives
with the language-specific component recipes.
</p>
</div>
<Button>Apply theme</Button>
</div>
<Tabs defaultValue="components">
<TabsList>
<TabsTrigger value="components">Components</TabsTrigger>
<TabsTrigger value="states">States</TabsTrigger>
<TabsTrigger value="export">Export</TabsTrigger>
</TabsList>
</Tabs>
<Card>
<CardHeader>
<CardTitle>Component recipe</CardTitle>
<CardDescription>
Replace this starter content with the agent-authored product scene
from components.md and preview-shots.json.
</CardDescription>
</CardHeader>
<CardContent className="grid gap-3 sm:grid-cols-[1fr_auto]">
<Input defaultValue="Tokenized shadcn surface" aria-label="Recipe name" />
<Button variant="secondary">Preview state</Button>
</CardContent>
<CardFooter className="justify-between">
<Badge>Ready</Badge>
<Button variant="outline">Copy recipe</Button>
</CardFooter>
</Card>
</section>
);
}
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "amayadori",
"type": "registry:theme",
"title": "Amayadori",
"description": "A compact command language for a transient sleeper renting one night out of the rain. Compartments instead of cards, ink gutters instead of borders, one milk-white aperture as the only lit surface, and a hatch chamfer in place of every radius.",
"meta": {
"format": "registry-theme-v1",
"language_slug": "amayadori",
"generation": 2,
"radius_stance": "0 everywhere; the hatch chamfer replaces every radius",
"families": [
"Saira Semi Condensed",
"Fragment Mono"
],
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Fragment+Mono&family=Saira+Semi+Condensed:wght@400;500;700&display=swap",
"visualProfile": {
"mode": "dark",
"ground": "#05070D",
"surfaceStyle": "compartment",
"separator": "ink-gutter",
"cornerTreatment": "hatch-chamfer",
"chamferDepth": {
"compartment": "18px",
"control": "10px"
},
"borderWidth": "0px",
"shadow": "deep, colourless except the single aperture glow",
"accentBudget": 3,
"litSurfacesPerScreen": 1,
"bodySize": "17px",
"bodyWeight": 400,
"displayCase": "uppercase",
"displayTracking": "-0.035em",
"monoRole": "anything the building would print: numbers, timers, weather"
}
},
"cssVars": {
"theme": {
"font-sans": "'Saira Semi Condensed', system-ui, sans-serif",
"font-mono": "'Fragment Mono', ui-monospace, monospace",
"radius": "0rem"
},
"light": {
"background": "#F1EBDD",
"foreground": "#05070D",
"card": "#EDE7D2",
"card-foreground": "#05070D",
"popover": "#EDE7D2",
"popover-foreground": "#05070D",
"primary": "#05070D",
"primary-foreground": "#F1EBDD",
"secondary": "#DED7C1",
"secondary-foreground": "#05070D",
"muted": "#DED7C1",
"muted-foreground": "#4A5566",
"accent": "#5C3617",
"accent-foreground": "#F1EBDD",
"destructive": "#8E3B37",
"destructive-foreground": "#FFF3F0",
"border": "#CFC7B0",
"input": "#DED7C1",
"ring": "#5C3617",
"chart-1": "#5C3617",
"chart-2": "#3C5B6B",
"chart-3": "#7A7350",
"chart-4": "#8E3B37",
"chart-5": "#4A5566",
"radius": "0rem"
},
"dark": {
"background": "#05070D",
"foreground": "#F1EBDD",
"card": "#0B0F1A",
"card-foreground": "#F1EBDD",
"popover": "#0B0F1A",
"popover-foreground": "#F1EBDD",
"primary": "#EDE7D2",
"primary-foreground": "#05070D",
"secondary": "#121A2B",
"secondary-foreground": "#F1EBDD",
"muted": "#121A2B",
"muted-foreground": "#7E899A",
"accent": "#D79A64",
"accent-foreground": "#05070D",
"destructive": "#A94D49",
"destructive-foreground": "#FFF3F0",
"border": "#010207",
"input": "#121A2B",
"ring": "#D79A64",
"chart-1": "#86A7B8",
"chart-2": "#D79A64",
"chart-3": "#EDE7D2",
"chart-4": "#B9B08A",
"chart-5": "#A94D49",
"radius": "0rem"
}
},
"css": {
"@layer base": {
"body": {
"letter-spacing": "-0.01em",
"font-size": "17px",
"line-height": "1.6"
},
"h1, h2, h3": {
"text-transform": "uppercase",
"letter-spacing": "-0.035em",
"font-weight": "700"
}
},
"@layer utilities": {
".chamf": {
"clip-path": "polygon(0 0,100% 0,100% calc(100% - 18px),calc(100% - 18px) 100%,0 100%)"
},
".chamf-s": {
"clip-path": "polygon(0 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%)"
},
".ink-gutter": {
"background": "#010207",
"height": "2px"
}
}
}
}# Amayadori shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019ffc42-dc12-7223-b9f1-0fd37af7ae96`
Slug: `amayadori`
## Intent
A compact command language for a transient sleeper renting one night out of the rain. Software is treated as a narrow architectural compartment: manga gutters become berth seams, terminal cells become bedding labels, and every interaction reads as checking in, waiting out the weather, and leaving before nine.
## 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:
{
"bg": "#05070D",
"surface": "#0B0F1A",
"surface_solid": "#121A2B",
"text": "#F1EBDD",
"muted": "#7E899A",
"border": "#FFFFFF14",
"accent": "#EDE7D2",
"accent_2": "#D79A64",
"accent_soft": "#86A7B8",
"on_accent": "#05070D",
"success": "#B9B08A",
"warning": "#D79A64",
"error": "#A94D49",
"info": "#86A7B8"
}
Typography:
{
"base_size": "17px",
"body_font": "Saira Semi Condensed",
"heading_font": "Saira Semi Condensed",
"mono_font": "Fragment Mono",
"heading_weight": "700",
"heading_transform": "uppercase",
"letter_spacing": "-0.035em",
"line_height": 1.6,
"scale_ratio": 1.22,
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Fragment+Mono&family=Saira+Semi+Condensed:wght@400;500;700&display=swap"
}
## Visual character to preserve
- clip-path hatch chamfers on the lower-right corner of every compartment, with border-radius pinned to 0 everywhere
- 2px near-black ink gutters as grid gap, doing the structural work a border would
- a single #EDE7D2 aperture per screen with a 0 0 40px rgba(237,231,210,.16) glow, the only coloured shadow in the language
- Fragment Mono at 12-13px with 0.09-0.16em tracking for every machine-printed value
- a rain-pane texture of vertical streaks over a character-cell grid at under 10% opacity, quieted to near-zero behind copy
## ShadSync visual profile
{
"family": "system",
"material": "flat",
"contour": "default",
"border": "solid",
"underlay": false,
"grain": true,
"stickerBadges": false,
"motion": "still",
"density": "balanced",
"accents": [
"primary",
"accent",
"secondary",
"muted"
]
}
## Signature component recipes
### Button
Use `Button` for primary, secondary, outline, and ghost actions. Primary actions must expose the language's strongest contrast pair, while secondary and ghost actions should preserve the surface treatment instead of falling back to default neutral SaaS styling.
### Card
Use `Card`, `CardHeader`, `CardContent`, `CardFooter`, and `CardAction` as the main composition frame. Cards should demonstrate the language's surface, border, hierarchy, and density rules rather than appearing as generic rounded rectangles.
### Input and Textarea
Use `Input` and `Textarea` with visible focus rings, field labels, validation states, and the language's rhythm. Forms should show real product content, not placeholder-only controls.
### Select, Tabs, and Table
Use `Select`, `Tabs`, and `Table` to prove navigation, filtering, and dense data states. The table should show row rhythm, separators, hover/focus states, and an empty or status state when the language calls for it.
### Dialog and Sheet
Use `Dialog` for centered decisions and `Sheet` for contextual editing. Both should inherit the language's spacing, border, overlay, and motion rules.
## Preview shots
- `application-shell`: dashboard or workspace shell with navigation, cards, forms, and state badges.
- `detail-editor`: focused editing flow using input, textarea, select, switch/checkbox, dialog or sheet, and action buttons.
- `data-operations`: table-heavy operational view with tabs, dropdown menu affordances, badges, and destructive/empty states.
- Each preview shot must include a renderable `scene` payload with concrete headline, description, actions, and rows/fields/stats for the UI preview.
## Implementation contract
- Start from local `ui/src/components/ui` shadcn-style primitives; do not create a second component system.
- Apply `/katagami/shadcn/amayadori/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: Separate blocks with ink gutters and let the ground do the work of a border.; Keep one milk-white aperture per screen and let everything else sit in shell tones.; Set anything the building would print — berth numbers, timers, weather — in Fragment Mono.; Write copy as a scene inside the building: berths, curtains, coins, checkout hours.; Cut the lower-right corner of every compartment at the same angle and depth.; Quiet any pattern to near-zero wherever copy sits; full-density texture belongs to the empty areas.
- Do not: Do not put a coloured strip down the edge of a block to show status; use a chip.; Do not round any corner — the hatch chamfer is the only corner treatment.; Do not trap navigation in a floating bar or a pill; let it sit on the page baseline.; Do not add green code rain, neon skylines, vaporwave, or glitch overlays.; Do not inflate body copy past 18px or set it in a heavy weight.; Do not introduce a third font family or a fourth accent colour.
## 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 AmayadoriShadcnKit() {
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">Amayadori</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": "A 12-column shell. The landing runs one full-bleed stage per act. The console runs 5 / 4 / 3 — berth stack, weather and checkout queue, aperture and desk log. Gutters range from 2px interior seams to 96px architectural pauses.",
"breakpoints": "Wide 1920+ caps and centres contained content while the film stage stays full-bleed. Desktop 1440 is the reference composition. Tablet 768-1180 is its own layout: the corridor becomes a horizontal ladder of hatches and the side panes stack under the main column. Phone 390-430 is a single column with the film re-choreographed for portrait, 140vh acts and 19vw display type.",
"whitespace": "Claustrophobic by design: 4-12px cell gaps inside modules, 24-32px between sequences, and one 64-96px dark corridor per screen left deliberately empty to preserve the solitude."
}
{
"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-019ffc42-dc12-7223-b9f1-0fd37af7ae96",
"name": "Amayadori",
"slug": "amayadori"
},
"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": [
"clip-path hatch chamfers on the lower-right corner of every compartment, with border-radius pinned to 0 everywhere",
"2px near-black ink gutters as grid gap, doing the structural work a border would",
"a single #EDE7D2 aperture per screen with a 0 0 40px rgba(237,231,210,.16) glow, the only coloured shadow in the language",
"Fragment Mono at 12-13px with 0.09-0.16em tracking for every machine-printed value",
"a rain-pane texture of vertical streaks over a character-cell grid at under 10% opacity, quieted to near-zero behind copy"
],
"visualProfile": {
"family": "system",
"material": "flat",
"contour": "default",
"border": "solid",
"underlay": false,
"grain": true,
"stickerBadges": false,
"motion": "still",
"density": "balanced",
"accents": [
"primary",
"accent",
"secondary",
"muted"
]
},
"shots": [
{
"id": "application-shell",
"title": "Application shell",
"viewport": "desktop",
"primitives": [
"button",
"card",
"input",
"select",
"tabs",
"badge",
"separator",
"table"
],
"composition": "A real product workspace with navigation, summary cards, filtering controls, and one dense content region.",
"mustShow": [
"primary and secondary actions",
"card hierarchy",
"filterable state",
"table or list density"
],
"avoid": [
"component inventory walls",
"placeholder-only content",
"generic rounded SaaS chrome"
],
"scene": {
"eyebrow": "workspace spread",
"headline": "Amayadori 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": [
"Separate blocks with ink gutters and let the ground do the work of a border.",
"Keep one milk-white aperture per screen and let everything else sit in shell tones.",
"Set anything the building would print — berth numbers, timers, weather — in Fragment Mono.",
"Write copy as a scene inside the building: berths, curtains, coins, checkout hours.",
"Cut the lower-right corner of every compartment at the same angle and depth.",
"Quiet any pattern to near-zero wherever copy sits; full-density texture belongs to the empty areas."
],
"dont": [
"Do not put a coloured strip down the edge of a block to show status; use a chip.",
"Do not round any corner — the hatch chamfer is the only corner treatment.",
"Do not trap navigation in a floating bar or a pill; let it sit on the page baseline.",
"Do not add green code rain, neon skylines, vaporwave, or glitch overlays.",
"Do not inflate body copy past 18px or set it in a heavy weight.",
"Do not introduce a third font family or a fourth accent colour."
]
}
}