back to gallery
design language·koka

Kōka

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

Download DESIGN.md

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

the spec

specification

philosophy
summary
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 statusone loud mark — signal amber only on what is live or departing, never decorative filltimetable legibility: times, piers and status read like a split-flap departure boardnight-ink calm punctuated by signal lamps; restraint over neon cluttercolour always paired with a label so it never carries meaning aloneyouthful 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
tokens
colors19 items
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
typography10 items
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
radii5 items
none
0px
sm
0px
md
16px
lg
24px
full
9999px
shadows5 items
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)
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64, 96, 128
surfaces3 items
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.
borders4 items
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).
motion3 items
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.
avoid
  • 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.
imagery
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 nightcommuter train crossing overheadlantern-lit alley under the trackssignal gantry and overhead wiresstation 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.
katagami spec
# 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.
DESIGN.md
---
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.
shadcn/ui theme
```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"
      ]
    }
  }
}
```
in the wild

embodiments

bespoke marketing landingopen full page ↗
landing · koka
DESIGN.md

at a glance

Typography

headline-lgArchivo · 33px · 700

The quick brown fox jumps

headline-mdArchivo · 27px · 600

The quick brown fox jumps

body-mdSpline Sans · 17px · 400

The quick brown fox jumps

label-mdSpline Sans Mono · 12px · 600

The quick brown fox jumps

shadcn/ui

implementation kit

built with

Agent-generated

remix lane

try a remix

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.

UI language · fixed
Kōka
Palette
Art style
Landing Page
live preview · recolored + filled
lineage

Family

related

More like this