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 source of truth for most agents and apps.
Hang every section off the route-line spine: a continuous vertical rail with station nodes. One spine, station nodes for items, a split-flap departure board for the timetable rhythm, and the signal cabin for controls. Never a grid of equal tiles; the line is the layout, not an overlay.
Hierarchy comes from heavy mixed-case Archivo headings, then the route-line and its station nodes, then mono timetable text. Signal amber marks only what is live or departing; viaduct teal marks transfers and info. Colour is always paired with a label.
Pair dense terminal rows (times, piers, status) against open night fields so the system feels energetic but calm. Energy localises to the live amber node and the board; the rest stays quiet ink.
Contained content caps at 1280px and centres. Embodiment and landing hang sections off a 54-64px spine column + content column. Dashboard is a 240px line-rail + fluid main. Grids use minmax(0,1fr) and min-width:0 children so they never blow out.
Generous night fields around the hero and between stops; titles always padded from container tops; do not fill the calm ground with extra metrics.
Tight mono timetable rows balanced against open paper-night pauses; visual energy localises to the live node and the departure board.
390px mobile stacks to a single column, hides non-essential nav links and table columns, never overflows horizontally; the route-line narrows. Only the full-bleed hero spans 100vw; ultra-wide caps and centres contained content.
screentone-press
Screentone-press night plates of the elevated railway over the city: viaducts, commuter trains, lantern-lit alleys, signal gantries — pure black manga ink and dense halftone on warm paper read against the dark UI, one small acid-lime hand mark.
One full-bleed screentone hero per landing, composed with a strong diagonal of the elevated track; a dark overlay keeps the headline legible. Heroes are swapped via --hero-image.
# Kōka ## Philosophy Kōka runs your services like an elevated railway over the night city. Every process is a stop on the line, every release a departure, every fault a held signal. You read the system top to bottom the way you watch a train approach a platform — one moving line with stations on it, not a wall of equal dashboard tiles. Deep viaduct-night ink, lit by signage and signal lamps, with a single loud signal-amber mark reserved for whatever is live. ### Values - the line is the model: a continuous route-spine with station nodes whose state is the status - one loud mark — signal amber only on what is live or departing, never decorative fill - timetable legibility: times, piers and status read like a split-flap departure board - night-ink calm punctuated by signal lamps; restraint over neon clutter - colour always paired with a label so it never carries meaning alone - youthful velocity from the moving line and dense terminal rhythm, balanced by open night fields ### Anti-Values - manga-panel collage chassis with chrome rails, battery chips and barcode sticker clusters - warm-paper grounds and condensed all-caps display mastheads - neon cyberpunk gradients, glassmorphism, or a multi-accent rainbow - equal SaaS tiles, soft pastel status palettes, and default rounded everything ### Visual Character - A continuous vertical route-line spine threads the interface; station nodes along it read status by fill — amber ringed = departing now, hollow teal = transfer, dim steel = holding or queued. - A split-flap departure board re-sorts the same line as a timetable: split-flap time tabs, destination, pier, and a labelled status pill. - On the dashboard the left nav rail IS the line — menu items are stations on a steel spine; on the landing the route-line becomes the amber headline rule. - Typography pairs heavy mixed-case Archivo headings with Spline Sans body and Spline Sans Mono for every time, pier, route tag and status — the timetable voice. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#0E1418` | | bg_2 | `#11191E` | | surface | `#16212A` | | surface_2 | `#1E2B35` | | text | `#EAF1F4` | | muted | `#9DB1BD` | | faint | `#6C8190` | | border | `#2C3B45` | | line | `#3A4C58` | | line_dim | `#26343D` | | accent | `#F2A33C` | | accent_ink | `#2A1A06` | | on_accent | `#1A1208` | | teal | `#4FB6B0` | | teal_ink | `#06201E` | | success | `#7FC06A` | | warning | `#F2A33C` | | error | `#E2614C` | | info | `#4FB6B0` | ### Typography - **Base Size**: 17px - **Body Font**: Spline Sans - **Heading Font**: Archivo - **Mono Font**: Spline Sans Mono - **Heading Weight**: 800 - **Heading Transform**: none - **Letter Spacing**: -0.02em - **Line Height**: 1.55 - **Scale Ratio**: 1.25 - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700;800;900&family=Spline+Sans:wght@400;500;600;700&family=Spline+Sans+Mono:wght@400;500;600&display=swap ### Radii - **None**: 0px - **Sm**: 0px - **Md**: 16px - **Lg**: 24px - **Full**: 9999px ### Shadows - **Sm**: none - **Md**: none - **Lg**: none - **Glow Amber**: 0 0 0 5px rgba(242,163,60,0.16) - **Glow Teal**: 0 0 0 5px rgba(79,182,176,0.16) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64,96,128] ### Surfaces - **Bg Pattern**: Faint diagonal halftone night wash from a radial dot grid under 12% opacity; the ground reads as the platform at 2am. - **Card Style**: Flat night-ink surfaces (#16212A) at 16/24px radius, no borders, no shadow; separation comes from surface tone, the route-line, and faint paper hairlines rgba(176,200,214,0.10). - **Treatment**: Deep viaduct-night ground lit by signage and signal lamps; the route-line spine and station nodes carry hierarchy, signal-amber reserved for live state. ### Borders - **Default Width**: 2px - **Accent Width**: 4px - **Style**: solid - **Character**: No decorative borders. 2px input rules only; route-line is a 4px steel rail; dividers are hairline rgba(176,200,214,0.10). ### Motion - **Duration**: 180ms - **Easing**: cubic-bezier(.2,.8,.2,1) - **Philosophy**: Motion is a departure: reveals slide up and settle once like a train arriving, never looping parallax. The settled state renders fully with no JavaScript behind a gating class; respects prefers-reduced-motion. ## Rules ### Composition Hang every section off the route-line spine: a continuous vertical rail with station nodes. One spine, station nodes for items, a split-flap departure board for the timetable rhythm, and the signal cabin for controls. Never a grid of equal tiles; the line is the layout, not an overlay. ### Hierarchy Hierarchy comes from heavy mixed-case Archivo headings, then the route-line and its station nodes, then mono timetable text. Signal amber marks only what is live or departing; viaduct teal marks transfers and info. Colour is always paired with a label. ### Density Pair dense terminal rows (times, piers, status) against open night fields so the system feels energetic but calm. Energy localises to the live amber node and the board; the rest stays quiet ink. ### Signature - The route-line spine is a continuous vertical rail (steel) with absolutely-positioned station nodes; node fill maps to semantic role (amber live, teal transfer, steel idle) so it recolours on palette swap. - The split-flap departure board re-sorts the line as a timetable with split-flap time tabs (dark chip), destination, pier, and a labelled status pill. - On the dashboard the left nav rail is built as the line — nav items are station nodes on a spine; the active item is an amber node. - Signal lamps are glow-ringed status dots always paired with a text label; the landing headline carries the route-line as an amber vertical rule. ## Layout ### Grid Contained content caps at 1280px and centres. Embodiment and landing hang sections off a 54-64px spine column + content column. Dashboard is a 240px line-rail + fluid main. Grids use minmax(0,1fr) and min-width:0 children so they never blow out. ### Whitespace Generous night fields around the hero and between stops; titles always padded from container tops; do not fill the calm ground with extra metrics. ### Density Tight mono timetable rows balanced against open paper-night pauses; visual energy localises to the live node and the departure board. ### Responsive 390px mobile stacks to a single column, hides non-essential nav links and table columns, never overflows horizontally; the route-line narrows. Only the full-bleed hero spans 100vw; ultra-wide caps and centres contained content. ### Breakpoints - **Mobile**: < 760px single column, nav links hidden, route-line narrowed to 40-44px - **Tablet**: 760-1024px contained two-column line + content - **Desktop**: >= 1024px full route-line layouts - **Ultrawide**: >= 1600px caps and centres contained content; only the hero spans 100vw ## Guidance ### Do - Make the route-line spine and its station nodes the backbone of every layout. - Reserve signal amber for live/departing state and the single primary action. - Use Spline Sans Mono for every time, pier, route tag and status pill. - Pair every colour status with a text label and a node or shape. - Keep the ground deep viaduct-night ink; let open night fields breathe. - Render the settled state with no JavaScript; add motion as a single settle-on-arrival reveal. ### Don't - Do not rebuild this as manga panels, chrome console rails, battery chips, or barcode sticker clusters. - Do not switch to a warm-paper ground or a condensed all-caps display masthead. - Do not add neon gradients, glassmorphism, soft shadows, or a third loud accent. - Do not give a card a single accent edge or nest cards; never box the top nav in a pill bar. - Do not put essential information only in tiny mono microcopy. ### Accessibility Maintain WCAG AA contrast of light text on night ink and on amber/teal fills (amber uses dark ink text). Every status pairs colour with a label and shape; focus states use a visible amber ring; never set mono microcopy below 12px. ## Imagery Direction ### Pairs With screentone-press ### Summary Screentone-press night plates of the elevated railway over the city: viaducts, commuter trains, lantern-lit alleys, signal gantries — pure black manga ink and dense halftone on warm paper read against the dark UI, one small acid-lime hand mark. ### Subjects - elevated railway viaduct at night - commuter train crossing overhead - lantern-lit alley under the tracks - signal gantry and overhead wires - station platform at 2am ### Usage One full-bleed screentone hero per landing, composed with a strong diagonal of the elevated track; a dark overlay keeps the headline legible. Heroes are swapped via --hero-image.
---
version: "alpha"
name: "Kōka"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#0E1418"
bg_2: "#11191E"
surface: "#16212A"
surface_2: "#1E2B35"
text: "#EAF1F4"
muted: "#9DB1BD"
faint: "#6C8190"
border: "#2C3B45"
line: "#3A4C58"
line_dim: "#26343D"
accent: "#F2A33C"
accent_ink: "#2A1A06"
on_accent: "#1A1208"
teal: "#4FB6B0"
teal_ink: "#06201E"
success: "#7FC06A"
warning: "#F2A33C"
error: "#E2614C"
info: "#4FB6B0"
typography:
headline-lg:
fontFamily: "Archivo"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Archivo"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "Spline Sans"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.55
letterSpacing: "-0.02em"
label-md:
fontFamily: "Spline Sans Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
sm: "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-bg_2:
backgroundColor: "{colors.bg_2}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_2:
backgroundColor: "{colors.surface_2}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-faint:
backgroundColor: "{colors.faint}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-line:
backgroundColor: "{colors.line}"
color-reference-line_dim:
backgroundColor: "{colors.line_dim}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-accent_ink:
backgroundColor: "{colors.accent_ink}"
color-reference-on_accent:
backgroundColor: "{colors.on_accent}"
color-reference-teal:
backgroundColor: "{colors.teal}"
color-reference-teal_ink:
backgroundColor: "{colors.teal_ink}"
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"
---
# Kōka
## Overview
Kōka runs your services like an elevated railway over the night city. Every process is a stop on the line, every release a departure, every fault a held signal. You read the system top to bottom the way you watch a train approach a platform — one moving line with stations on it, not a wall of equal dashboard tiles. Deep viaduct-night ink, lit by signage and signal lamps, with a single loud signal-amber mark reserved for whatever is live.
### Values
- the line is the model: a continuous route-spine with station nodes whose state is the status
- one loud mark — signal amber only on what is live or departing, never decorative fill
- timetable legibility: times, piers and status read like a split-flap departure board
- night-ink calm punctuated by signal lamps; restraint over neon clutter
- colour always paired with a label so it never carries meaning alone
- youthful velocity from the moving line and dense terminal rhythm, balanced by open night fields
### Anti-Values
- manga-panel collage chassis with chrome rails, battery chips and barcode sticker clusters
- warm-paper grounds and condensed all-caps display mastheads
- neon cyberpunk gradients, glassmorphism, or a multi-accent rainbow
- equal SaaS tiles, soft pastel status palettes, and default rounded everything
### Visual Character
- A continuous vertical route-line spine threads the interface; station nodes along it read status by fill — amber ringed = departing now, hollow teal = transfer, dim steel = holding or queued.
- A split-flap departure board re-sorts the same line as a timetable: split-flap time tabs, destination, pier, and a labelled status pill.
- On the dashboard the left nav rail IS the line — menu items are stations on a steel spine; on the landing the route-line becomes the amber headline rule.
- Typography pairs heavy mixed-case Archivo headings with Spline Sans body and Spline Sans Mono for every time, pier, route tag and status — the timetable voice.
## 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 | `#0E1418` |
| bg_2 | `#11191E` |
| surface | `#16212A` |
| surface_2 | `#1E2B35` |
| text | `#EAF1F4` |
| muted | `#9DB1BD` |
| faint | `#6C8190` |
| border | `#2C3B45` |
| line | `#3A4C58` |
| line_dim | `#26343D` |
| accent | `#F2A33C` |
| accent_ink | `#2A1A06` |
| on_accent | `#1A1208` |
| teal | `#4FB6B0` |
| teal_ink | `#06201E` |
| success | `#7FC06A` |
| warning | `#F2A33C` |
| error | `#E2614C` |
| info | `#4FB6B0` |
## Typography
- **Headline-Lg**: Archivo, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Archivo, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Spline Sans, 17px, weight 400, line-height 1.55.
- **Label-Md**: Spline Sans 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
Contained content caps at 1280px and centres. Embodiment and landing hang sections off a 54-64px spine column + content column. Dashboard is a 240px line-rail + fluid main. Grids use minmax(0,1fr) and min-width:0 children so they never blow out.
### Whitespace
Generous night fields around the hero and between stops; titles always padded from container tops; do not fill the calm ground with extra metrics.
### Density
Tight mono timetable rows balanced against open paper-night pauses; visual energy localises to the live node and the departure board.
### Responsive
390px mobile stacks to a single column, hides non-essential nav links and table columns, never overflows horizontally; the route-line narrows. Only the full-bleed hero spans 100vw; ultra-wide caps and centres contained content.
### Breakpoints
- **Mobile**: < 760px single column, nav links hidden, route-line narrowed to 40-44px
- **Tablet**: 760-1024px contained two-column line + content
- **Desktop**: >= 1024px full route-line layouts
- **Ultrawide**: >= 1600px caps and centres contained content; only the hero spans 100vw
## Elevation & Depth
### Shadows
- **Sm**: none
- **Md**: none
- **Lg**: none
- **Glow Amber**: 0 0 0 5px rgba(242,163,60,0.16)
- **Glow Teal**: 0 0 0 5px rgba(79,182,176,0.16)
## Shapes
### Rounded
- **None**: `0px`
- **Sm**: `0px`
- **Md**: `16px`
- **Lg**: `24px`
- **Full**: `9999px`
### Surfaces
- **Bg Pattern**: Faint diagonal halftone night wash from a radial dot grid under 12% opacity; the ground reads as the platform at 2am.
- **Card Style**: Flat night-ink surfaces (#16212A) at 16/24px radius, no borders, no shadow; separation comes from surface tone, the route-line, and faint paper hairlines rgba(176,200,214,0.10).
- **Treatment**: Deep viaduct-night ground lit by signage and signal lamps; the route-line spine and station nodes carry hierarchy, signal-amber reserved for live state.
### Borders
- **Default Width**: 2px
- **Accent Width**: 4px
- **Style**: solid
- **Character**: No decorative borders. 2px input rules only; route-line is a 4px steel rail; dividers are hairline rgba(176,200,214,0.10).
## Components
### Composition
Hang every section off the route-line spine: a continuous vertical rail with station nodes. One spine, station nodes for items, a split-flap departure board for the timetable rhythm, and the signal cabin for controls. Never a grid of equal tiles; the line is the layout, not an overlay.
### Hierarchy
Hierarchy comes from heavy mixed-case Archivo headings, then the route-line and its station nodes, then mono timetable text. Signal amber marks only what is live or departing; viaduct teal marks transfers and info. Colour is always paired with a label.
### Density
Pair dense terminal rows (times, piers, status) against open night fields so the system feels energetic but calm. Energy localises to the live amber node and the board; the rest stays quiet ink.
### Signature
- The route-line spine is a continuous vertical rail (steel) with absolutely-positioned station nodes; node fill maps to semantic role (amber live, teal transfer, steel idle) so it recolours on palette swap.
- The split-flap departure board re-sorts the line as a timetable with split-flap time tabs (dark chip), destination, pier, and a labelled status pill.
- On the dashboard the left nav rail is built as the line — nav items are station nodes on a spine; the active item is an amber node.
- Signal lamps are glow-ringed status dots always paired with a text label; the landing headline carries the route-line as an amber vertical rule.
## 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-019ef830-9e12-72e2-a541-4884c781c3fb/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 Make the route-line spine and its station nodes the backbone of every layout.
- Do Reserve signal amber for live/departing state and the single primary action.
- Do Use Spline Sans Mono for every time, pier, route tag and status pill.
- Do Pair every colour status with a text label and a node or shape.
- Do Keep the ground deep viaduct-night ink; let open night fields breathe.
- Do Render the settled state with no JavaScript; add motion as a single settle-on-arrival reveal.
- Don't Do not rebuild this as manga panels, chrome console rails, battery chips, or barcode sticker clusters.
- Don't Do not switch to a warm-paper ground or a condensed all-caps display masthead.
- Don't Do not add neon gradients, glassmorphism, soft shadows, or a third loud accent.
- Don't Do not give a card a single accent edge or nest cards; never box the top nav in a pill bar.
- Don't Do not put essential information only in tiny mono microcopy.
### Accessibility
Maintain WCAG AA contrast of light text on night ink and on amber/teal fills (amber uses dark ink text). Every status pairs colour with a label and shape; focus states use a visible amber ring; never set mono microcopy below 12px.
## Imagery Direction
### Pairs With
screentone-press
### Summary
Screentone-press night plates of the elevated railway over the city: viaducts, commuter trains, lantern-lit alleys, signal gantries — pure black manga ink and dense halftone on warm paper read against the dark UI, one small acid-lime hand mark.
### Subjects
- elevated railway viaduct at night
- commuter train crossing overhead
- lantern-lit alley under the tracks
- signal gantry and overhead wires
- station platform at 2am
### Usage
One full-bleed screentone hero per landing, composed with a strong diagonal of the elevated track; a dark overlay keeps the headline legible. Heroes are swapped via --hero-image.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "koka",
"type": "registry:theme",
"title": "Kōka shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#0E1418",
"foreground": "#EAF1F4",
"card": "#16212A",
"card-foreground": "#EAF1F4",
"popover": "#16212A",
"popover-foreground": "#EAF1F4",
"primary": "#EAF1F4",
"primary-foreground": "#111111",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#9DB1BD",
"muted-foreground": "#EAF1F4",
"accent": "#F2A33C",
"accent-foreground": "#ffffff",
"destructive": "#E2614C",
"border": "#2C3B45",
"input": "#2C3B45",
"ring": "#F2A33C",
"chart-1": "#EAF1F4",
"chart-2": "#f4f4f5",
"chart-3": "#F2A33C",
"chart-4": "#7FC06A",
"chart-5": "#F2A33C",
"sidebar": "#16212A",
"sidebar-foreground": "#EAF1F4",
"sidebar-primary": "#EAF1F4",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#4FB6B0",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#2C3B45",
"sidebar-ring": "#F2A33C",
"radius": "16px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#EAF1F4",
"primary-foreground": "#111111",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#F2A33C",
"accent-foreground": "#ffffff",
"destructive": "#E2614C",
"border": "#303642",
"input": "#303642",
"ring": "#F2A33C",
"chart-1": "#EAF1F4",
"chart-2": "#f4f4f5",
"chart-3": "#F2A33C",
"chart-4": "#7FC06A",
"chart-5": "#F2A33C",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#EAF1F4",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#F2A33C",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#F2A33C",
"radius": "16px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ef830-9e12-72e2-a541-4884c781c3fb",
"slug": "koka",
"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_ink",
"bg",
"bg_2",
"border",
"error",
"faint",
"info",
"line",
"line_dim",
"muted",
"on_accent",
"success",
"surface",
"surface_2",
"teal",
"teal_ink",
"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",
"sm"
],
"shadows": [
"glow_amber",
"glow_teal",
"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
Agent-generated
Keep Kōkaand swap a palette and an art style onto it — the landing & dashboard recolor live. The Studio does the same with all three lanes free.
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: #0E1418;
--foreground: #EAF1F4;
--card: #16212A;
--card-foreground: #EAF1F4;
--popover: #16212A;
--popover-foreground: #EAF1F4;
--primary: #EAF1F4;
--primary-foreground: #111111;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #9DB1BD;
--muted-foreground: #EAF1F4;
--accent: #F2A33C;
--accent-foreground: #ffffff;
--destructive: #E2614C;
--border: #2C3B45;
--input: #2C3B45;
--ring: #F2A33C;
--chart-1: #EAF1F4;
--chart-2: #f4f4f5;
--chart-3: #F2A33C;
--chart-4: #7FC06A;
--chart-5: #F2A33C;
--sidebar: #16212A;
--sidebar-foreground: #EAF1F4;
--sidebar-primary: #EAF1F4;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #4FB6B0;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #2C3B45;
--sidebar-ring: #F2A33C;
--radius: 16px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #EAF1F4;
--primary-foreground: #111111;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #F2A33C;
--accent-foreground: #ffffff;
--destructive: #E2614C;
--border: #303642;
--input: #303642;
--ring: #F2A33C;
--chart-1: #EAF1F4;
--chart-2: #f4f4f5;
--chart-3: #F2A33C;
--chart-4: #7FC06A;
--chart-5: #F2A33C;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #EAF1F4;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #F2A33C;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #F2A33C;
--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 KKaShadcnKit() {
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">Kōka</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": "koka",
"type": "registry:theme",
"author": "katagami-agent",
"cssVars": {
"theme": {
"font-sans": "Spline Sans, system-ui, sans-serif",
"font-mono": "Spline Sans Mono, ui-monospace, monospace",
"font-heading": "Archivo, system-ui, sans-serif",
"radius": "16px"
},
"light": {
"background": "#0E1418",
"foreground": "#EAF1F4",
"card": "#16212A",
"card-foreground": "#EAF1F4",
"popover": "#11191E",
"popover-foreground": "#EAF1F4",
"primary": "#F2A33C",
"primary-foreground": "#1A1208",
"secondary": "#1E2B35",
"secondary-foreground": "#EAF1F4",
"muted": "#16212A",
"muted-foreground": "#9DB1BD",
"accent": "#4FB6B0",
"accent-foreground": "#06201E",
"destructive": "#E2614C",
"destructive-foreground": "#1A0A06",
"border": "#2C3B45",
"input": "#2C3B45",
"ring": "#F2A33C",
"chart-1": "#F2A33C",
"chart-2": "#4FB6B0",
"chart-3": "#7FC06A",
"chart-4": "#3A4C58",
"chart-5": "#E2614C",
"radius": "16px"
},
"dark": {
"background": "#0E1418",
"foreground": "#EAF1F4",
"card": "#16212A",
"card-foreground": "#EAF1F4",
"popover": "#11191E",
"popover-foreground": "#EAF1F4",
"primary": "#F2A33C",
"primary-foreground": "#1A1208",
"secondary": "#1E2B35",
"secondary-foreground": "#EAF1F4",
"muted": "#16212A",
"muted-foreground": "#9DB1BD",
"accent": "#4FB6B0",
"accent-foreground": "#06201E",
"destructive": "#E2614C",
"destructive-foreground": "#1A0A06",
"border": "#2C3B45",
"input": "#2C3B45",
"ring": "#F2A33C",
"chart-1": "#F2A33C",
"chart-2": "#4FB6B0",
"chart-3": "#7FC06A",
"chart-4": "#3A4C58",
"chart-5": "#E2614C",
"radius": "16px"
}
},
"visualProfile": {
"mode": "dark",
"ground": "#0E1418",
"material": "flat night-ink surfaces, no borders as decoration, separation by surface + the route-line + faint paper hairlines",
"radius": { "scale": [0, 16, 24, 9999], "controls": "9999px pills for live actions and status", "surfaces": "16px / 24px soft rectangles", "flap": "6px split-flap tabs" },
"borders": "none decorative; 2px input rules only; hairline rgba(176,200,214,0.10) dividers",
"shadow": "none / flat; glow rings on signal lamps only",
"accent": "#F2A33C signal amber primary, #4FB6B0 viaduct teal secondary",
"typography": { "heading": "Archivo 800/900 mixed-case tight", "body": "Spline Sans 17px", "mono": "Spline Sans Mono for times/piers/status" },
"signature": "route-line spine with station nodes; split-flap departure board",
"motifs": ["station-node status dots", "split-flap timetable tabs", "signal-lamp glow rings", "vertical line spine"]
}
}
# Kōka shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019ef830-9e12-72e2-a541-4884c781c3fb`
Slug: `koka`
## Intent
Kōka runs your services like an elevated railway over the night city. Every process is a stop on the line, every release a departure, every fault a held signal. You read the system top to bottom the way you watch a train approach a platform — one moving line with stations on it, not a wall of equal dashboard tiles. Deep viaduct-night ink, lit by signage and signal lamps, with a single loud signal-amber mark reserved for whatever is live.
## 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": "#0E1418",
"bg_2": "#11191E",
"surface": "#16212A",
"surface_2": "#1E2B35",
"text": "#EAF1F4",
"muted": "#9DB1BD",
"faint": "#6C8190",
"border": "#2C3B45",
"line": "#3A4C58",
"line_dim": "#26343D",
"accent": "#F2A33C",
"accent_ink": "#2A1A06",
"on_accent": "#1A1208",
"teal": "#4FB6B0",
"teal_ink": "#06201E",
"success": "#7FC06A",
"warning": "#F2A33C",
"error": "#E2614C",
"info": "#4FB6B0"
}
Typography:
{
"base_size": "17px",
"body_font": "Spline Sans",
"heading_font": "Archivo",
"mono_font": "Spline Sans Mono",
"heading_weight": "800",
"heading_transform": "none",
"letter_spacing": "-0.02em",
"line_height": 1.55,
"scale_ratio": 1.25,
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700;800;900&family=Spline+Sans:wght@400;500;600;700&family=Spline+Sans+Mono:wght@400;500;600&display=swap"
}
## Visual character to preserve
- A continuous vertical route-line spine threads the interface; station nodes along it read status by fill — amber ringed = departing now, hollow teal = transfer, dim steel = holding or queued.
- A split-flap departure board re-sorts the same line as a timetable: split-flap time tabs, destination, pier, and a labelled status pill.
- On the dashboard the left nav rail IS the line — menu items are stations on a steel spine; on the landing the route-line becomes the amber headline rule.
- Typography pairs heavy mixed-case Archivo headings with Spline Sans body and Spline Sans Mono for every time, pier, route tag and status — the timetable voice.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "pebble",
"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/koka/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: Make the route-line spine and its station nodes the backbone of every layout.; Reserve signal amber for live/departing state and the single primary action.; Use Spline Sans Mono for every time, pier, route tag and status pill.; Pair every colour status with a text label and a node or shape.; Keep the ground deep viaduct-night ink; let open night fields breathe.; Render the settled state with no JavaScript; add motion as a single settle-on-arrival reveal.
- Do not: Do not rebuild this as manga panels, chrome console rails, battery chips, or barcode sticker clusters.; Do not switch to a warm-paper ground or a condensed all-caps display masthead.; Do not add neon gradients, glassmorphism, soft shadows, or a third loud accent.; Do not give a card a single accent edge or nest cards; never box the top nav in a pill bar.; Do not put essential information only in tiny mono microcopy.
## 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 KKaShadcnKit() {
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">Kōka</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": "Contained content caps at 1280px and centres. Embodiment and landing hang sections off a 54-64px spine column + content column. Dashboard is a 240px line-rail + fluid main. Grids use minmax(0,1fr) and min-width:0 children so they never blow out.",
"whitespace": "Generous night fields around the hero and between stops; titles always padded from container tops; do not fill the calm ground with extra metrics.",
"density": "Tight mono timetable rows balanced against open paper-night pauses; visual energy localises to the live node and the departure board.",
"responsive": "390px mobile stacks to a single column, hides non-essential nav links and table columns, never overflows horizontally; the route-line narrows. Only the full-bleed hero spans 100vw; ultra-wide caps and centres contained content.",
"breakpoints": {
"mobile": "< 760px single column, nav links hidden, route-line narrowed to 40-44px",
"tablet": "760-1024px contained two-column line + content",
"desktop": ">= 1024px full route-line layouts",
"ultrawide": ">= 1600px caps and centres contained content; only the hero spans 100vw"
}
}
{
"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-019ef830-9e12-72e2-a541-4884c781c3fb",
"name": "Kōka",
"slug": "koka"
},
"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": [
"A continuous vertical route-line spine threads the interface; station nodes along it read status by fill — amber ringed = departing now, hollow teal = transfer, dim steel = holding or queued.",
"A split-flap departure board re-sorts the same line as a timetable: split-flap time tabs, destination, pier, and a labelled status pill.",
"On the dashboard the left nav rail IS the line — menu items are stations on a steel spine; on the landing the route-line becomes the amber headline rule.",
"Typography pairs heavy mixed-case Archivo headings with Spline Sans body and Spline Sans Mono for every time, pier, route tag and status — the timetable voice."
],
"visualProfile": {
"family": "system",
"material": "flat",
"contour": "pebble",
"border": "solid",
"underlay": false,
"grain": false,
"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": "Kōka 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": [
"Make the route-line spine and its station nodes the backbone of every layout.",
"Reserve signal amber for live/departing state and the single primary action.",
"Use Spline Sans Mono for every time, pier, route tag and status pill.",
"Pair every colour status with a text label and a node or shape.",
"Keep the ground deep viaduct-night ink; let open night fields breathe.",
"Render the settled state with no JavaScript; add motion as a single settle-on-arrival reveal."
],
"dont": [
"Do not rebuild this as manga panels, chrome console rails, battery chips, or barcode sticker clusters.",
"Do not switch to a warm-paper ground or a condensed all-caps display masthead.",
"Do not add neon gradients, glassmorphism, soft shadows, or a third loud accent.",
"Do not give a card a single accent edge or nest cards; never box the top nav in a pill bar.",
"Do not put essential information only in tiny mono microcopy."
]
}
}