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.
Use a 16:9 title-safe master frame with action-safe and title-safe rectangles visible as interface architecture. Divide the field with hard manga-like gutters, then break the grid with one orbital arc that crosses panels and ends in bracketed antenna marks. Reserve the bottom band for the subtitle lock bed. Avoid equal-card rows; one viewport panel dominates and stays nearly empty while smaller relay panels carry compact telemetry.
Primary hierarchy comes from ghosted giant timecodes, then squared Tektur headings, then compact uppercase station IDs, then monospaced Fragment Mono captions and telemetry. Active states are marked by a magenta tick or underline, never by scale or colour flooding.
Alternate spacious graphite signal fields with dense timing strips: the central viewport feels almost empty while edge rails, subtitle bands, and status slugs carry compact technical information at 8px clusters against 64-128px quiet fields.
Desktop uses a 16:9 safe-area frame inside a 12-column timing grid, 24px gutters, max-width 1320px (1440 ultra-wide), with one dominant 7-8 column signal viewport and an asymmetric 5-column relay stack. Grids use minmax(0,1fr) columns and min-width:0 children so they never blow out their container.
Extreme spacing contrast: 8px telemetry clusters, 32px panel gutters, 96px quiet signal fields, and large top/bottom atmospheric margins. The viewport stays deliberately empty.
Medium-high operational density around the perimeter with a deliberately sparse central transmission window; the contrast makes silence feel intentional.
From ~390px mobile to 2560px+ ultra-wide: the safe-area frame stays visible, the subtitle bed moves below the viewport, tables drop non-essential columns or scroll within their own panel, the masthead nav collapses, and only the full-bleed hero spans 100vw.
downlink
Stills pulled off a broadcast-safe video feed: lifted graphite grayscale with peak whites below pure white, faint scanlines, one or two signal-dropout bands, a title-safe hairline frame with counter notches, an orbital acquisition arc into bracketed antenna marks, and ONE narrow magenta signal tick as the only colour.
Landing hero is generated in the Downlink technique, full-bleed behind a deliberate left-anchored graphite veil and the title-safe frame. Reserve the single magenta tick for the live signal element in each image.
# Slate ## Philosophy Slate is a quiet broadcast-control language for software that watches a sleeping channel and waits for it to speak. Title-safe frames, manga-like panel discipline, an orbital handoff arc, monospaced captions, and a single magenta signal pulse express satellite lock, drift, and relay states without cyberpunk neon, hacker theater, or character illustration. A faithful refinement of Orbital Broadcast Control, brought up to standard. ### Values - restraint before spectacle: most states are graphite and still, magenta only for verified signal events - broadcast legibility: title-safe and action-safe zones, peak whites below pure white, caption clearance - operational calm: the system persona appears as timing, relay, handoff, and signal-loss evidence, never a mascot - manga structure without fan art: hard panel division, gutters, and cropped fields supply rhythm - timecoded truth: captions, counters, cue numbers, and station IDs are primary interface material - analog-digital tactility: subtle scan softness and dropout bands make the surface feel transmitted, never grungy ### Anti-Values - green terminal glow, matrix rain, random code waterfalls, or generic hacker command centers - neon cyberpunk city glow, rainbow gradients, saturated sci-fi palettes, or fan-art anime characters - SaaS card grids, rounded marketing panels, glassmorphism, or overloaded circular HUD ornament - magenta used as a general brand wash instead of a narrow lock/cue/acquisition signal state ### Visual Character - A title-safe double frame of nested action-safe and title-safe rectangles is drawn in off-white hairlines with frame-counter corner notches as the interface architecture itself. - A single thin orbital handoff arc crosses the rectangular graphite field and terminates in bracketed antenna acquisition marks with a small magenta acquisition dot. - Large quiet timecodes ghost behind compact station-ID slugs while a subtitle lock bed reserves the bottom band for monospaced captions, one carrying the magenta underline. - Signal-loss banding clips graphite strips across panels with tiny waveform ticks and a single magenta pulse; everything else holds video-safe grayscale. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#101113` | | surface | `#16181B` | | surface_2 | `#1E2024` | | rail | `#0B0C0E` | | text | `#E7E2D6` | | text_strong | `#F0EDE3` | | muted | `#9A9A96` | | secondary | `#8F9090` | | guide | `#CFC8B8` | | accent | `#E044A6` | | on_accent | `#101113` | | border | `rgba(207,200,184,0.22)` | | success | `#BFC8B0` | | warning | `#D3B768` | | error | `#D05A7F` | | info | `#9EA8B7` | ### Typography - **Base Size**: 17px - **Body Font**: IBM Plex Sans Condensed - **Heading Font**: Tektur - **Mono Font**: Fragment Mono - **Heading Weight**: 600 - **Heading Transform**: none - **Letter Spacing**: -0.02em - **Display Letter Spacing**: -0.04em - **Line Height**: 1.55 - **Scale Ratio**: 1.2 - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Fragment+Mono:ital@0;1&family=IBM+Plex+Sans+Condensed:wght@400;500;600;700&family=Tektur:wght@500;600;700&display=swap ### Radii - **None**: 0px - **Sm**: 0px - **Md**: 0px - **Lg**: 0px - **Full**: 9999px ### Shadows - **Sm**: none - **Md**: 0 0 0 1px rgba(240,237,227,0.06) - **Lg**: 0 18px 70px rgba(0,0,0,0.42) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64,96,128] ### Surfaces - **Bg Pattern**: Lifted graphite ground with a faint horizontal scanline field under 5% opacity, title-safe rectangles, and rare dropout bands; never grungy. - **Card Style**: No rounded cards; information lives in caption beds, corner station-ID slugs, clipped graphite panels, edge rails, and safe-area compartments, separated by 1px off-white hairline guides. - **Treatment**: Lifted black and graphite planes with low-opacity off-white hairline guides as title-safe structure, low-opacity scanline texture, and one magenta signal mark per view. ### Borders - **Default Width**: 1px - **Accent Width**: 2px - **Style**: solid - **Character**: 1px off-white video-safe hairline guides at low opacity used as safe-area structure; magenta appears only as a lock tick, cue underline, or acquisition pulse, never as a card edge. ### Motion - **Duration**: 640ms - **Easing**: cubic-bezier(.2,0,.1,1) - **Philosophy**: Slow relay behaviour: a pulse acquires, a waveform breathes, counters tick, and everything else stays nearly still. The settled state renders with no JavaScript; motion is layered behind an .anim class and respects prefers-reduced-motion. ## Rules ### Composition Use a 16:9 title-safe master frame with action-safe and title-safe rectangles visible as interface architecture. Divide the field with hard manga-like gutters, then break the grid with one orbital arc that crosses panels and ends in bracketed antenna marks. Reserve the bottom band for the subtitle lock bed. Avoid equal-card rows; one viewport panel dominates and stays nearly empty while smaller relay panels carry compact telemetry. ### Hierarchy Primary hierarchy comes from ghosted giant timecodes, then squared Tektur headings, then compact uppercase station IDs, then monospaced Fragment Mono captions and telemetry. Active states are marked by a magenta tick or underline, never by scale or colour flooding. ### Density Alternate spacious graphite signal fields with dense timing strips: the central viewport feels almost empty while edge rails, subtitle bands, and status slugs carry compact technical information at 8px clusters against 64-128px quiet fields. ### Signature - Title-safe double frame: nested action-safe + title-safe rectangles in off-white hairlines, interrupted by frame-counter corner notches drawn with absolutely-positioned pseudo-elements. - Orbital handoff arc: a thin SVG curved path crossing rectangular panels, terminating in bracketed antenna acquisition marks plus a small magenta acquisition dot. - Subtitle lock bed: a reserved bottom band of monospaced captions and cue numbers; the current speech state carries one magenta underline (inset box-shadow). - Signal-loss banding: horizontal graphite strips clip across a panel as analog dropout, with repeating-linear-gradient waveform ticks and a single magenta pulse. - Station-ID slug stack: compact mono labels at panel corners like late-night broadcast bugs; never rounded badges. ## Layout ### Grid Desktop uses a 16:9 safe-area frame inside a 12-column timing grid, 24px gutters, max-width 1320px (1440 ultra-wide), with one dominant 7-8 column signal viewport and an asymmetric 5-column relay stack. Grids use minmax(0,1fr) columns and min-width:0 children so they never blow out their container. ### Whitespace Extreme spacing contrast: 8px telemetry clusters, 32px panel gutters, 96px quiet signal fields, and large top/bottom atmospheric margins. The viewport stays deliberately empty. ### Density Medium-high operational density around the perimeter with a deliberately sparse central transmission window; the contrast makes silence feel intentional. ### Responsive From ~390px mobile to 2560px+ ultra-wide: the safe-area frame stays visible, the subtitle bed moves below the viewport, tables drop non-essential columns or scroll within their own panel, the masthead nav collapses, and only the full-bleed hero spans 100vw. ### Breakpoints - **Mobile**: < 640px single-column safe frame with caption bed retained, nav and non-essential table columns hidden - **Tablet**: 640-1023px two stacked panels with the orbital arc preserved - **Desktop**: >= 1024px full 16:9 broadcast control composition - **Ultrawide**: >= 1600px caps and centres the contained content; only the full-bleed hero spans 100vw ## Guidance ### Do - Use broadcast-safe grayscale and keep peak whites below pure white. - Reserve signal magenta for lock, drift, cue, or acquisition states only. - Draw title-safe and action-safe guides as part of the interface structure. - Make captions, frame counters, cue numbers, and station IDs meaningful and legible. - Let one transmission field stay quiet while edge systems carry detail. - Use hard panel divisions, gutters, and a cropped orbital arc instead of rounded cards. - Keep body copy at 17px+ with -0.02em tracking and strong contrast; mono captions never below 11px. - Pair every magenta or semantic state with a text label and a led/tick for accessibility. ### Don't - Do not use green terminal glow, matrix rain, hacker dashboards, or random code waterfalls. - Do not add anime characters, fan-art silhouettes, neon city backgrounds, or cyberpunk gradients. - Do not build three equal SaaS cards or generic analytics widgets. - Do not fill empty graphite fields with decorative HUD circles or meaningless rings. - Do not make magenta a general brand wash; it is a narrow signal state. - Do not round corners except for tiny acquisition dots and waveform endpoints. - Do not let captions collide with the bottom safe area or become decorative lorem. ### Accessibility Maintain strong contrast between graphite and off-white text, keep subtitle beds at readable sizes, avoid flicker, provide a non-colour label (text + led/tick) beside every magenta or semantic state, use magenta inset/outline focus states, and preserve safe margins at every breakpoint. ## Imagery Direction ### Pairs With downlink ### Summary Stills pulled off a broadcast-safe video feed: lifted graphite grayscale with peak whites below pure white, faint scanlines, one or two signal-dropout bands, a title-safe hairline frame with counter notches, an orbital acquisition arc into bracketed antenna marks, and ONE narrow magenta signal tick as the only colour. ### Subjects - a relay satellite acquired over the night Earth limb - a ground-station dish tracking across the sky - an antenna array against an empty graphite field - a spacecraft solar array catching low light ### Usage Landing hero is generated in the Downlink technique, full-bleed behind a deliberate left-anchored graphite veil and the title-safe frame. Reserve the single magenta tick for the live signal element in each image.
---
version: "alpha"
name: "Slate"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#101113"
surface: "#16181B"
surface_2: "#1E2024"
rail: "#0B0C0E"
text: "#E7E2D6"
text_strong: "#F0EDE3"
muted: "#9A9A96"
secondary: "#8F9090"
guide: "#CFC8B8"
accent: "#E044A6"
on_accent: "#101113"
success: "#BFC8B0"
warning: "#D3B768"
error: "#D05A7F"
info: "#9EA8B7"
typography:
headline-lg:
fontFamily: "Tektur"
fontSize: "1.836rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Tektur"
fontSize: "1.53rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "IBM Plex Sans Condensed"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.55
letterSpacing: "-0.02em"
label-md:
fontFamily: "Fragment Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
sm: "0px"
md: "0px"
lg: "0px"
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_2:
backgroundColor: "{colors.surface_2}"
color-reference-rail:
backgroundColor: "{colors.rail}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-text_strong:
backgroundColor: "{colors.text_strong}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-secondary:
backgroundColor: "{colors.secondary}"
color-reference-guide:
backgroundColor: "{colors.guide}"
color-reference-accent:
backgroundColor: "{colors.accent}"
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"
---
# Slate
## Overview
Slate is a quiet broadcast-control language for software that watches a sleeping channel and waits for it to speak. Title-safe frames, manga-like panel discipline, an orbital handoff arc, monospaced captions, and a single magenta signal pulse express satellite lock, drift, and relay states without cyberpunk neon, hacker theater, or character illustration. A faithful refinement of Orbital Broadcast Control, brought up to standard.
### Values
- restraint before spectacle: most states are graphite and still, magenta only for verified signal events
- broadcast legibility: title-safe and action-safe zones, peak whites below pure white, caption clearance
- operational calm: the system persona appears as timing, relay, handoff, and signal-loss evidence, never a mascot
- manga structure without fan art: hard panel division, gutters, and cropped fields supply rhythm
- timecoded truth: captions, counters, cue numbers, and station IDs are primary interface material
- analog-digital tactility: subtle scan softness and dropout bands make the surface feel transmitted, never grungy
### Anti-Values
- green terminal glow, matrix rain, random code waterfalls, or generic hacker command centers
- neon cyberpunk city glow, rainbow gradients, saturated sci-fi palettes, or fan-art anime characters
- SaaS card grids, rounded marketing panels, glassmorphism, or overloaded circular HUD ornament
- magenta used as a general brand wash instead of a narrow lock/cue/acquisition signal state
### Visual Character
- A title-safe double frame of nested action-safe and title-safe rectangles is drawn in off-white hairlines with frame-counter corner notches as the interface architecture itself.
- A single thin orbital handoff arc crosses the rectangular graphite field and terminates in bracketed antenna acquisition marks with a small magenta acquisition dot.
- Large quiet timecodes ghost behind compact station-ID slugs while a subtitle lock bed reserves the bottom band for monospaced captions, one carrying the magenta underline.
- Signal-loss banding clips graphite strips across panels with tiny waveform ticks and a single magenta pulse; everything else holds video-safe grayscale.
## 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 | `#101113` |
| surface | `#16181B` |
| surface_2 | `#1E2024` |
| rail | `#0B0C0E` |
| text | `#E7E2D6` |
| text_strong | `#F0EDE3` |
| muted | `#9A9A96` |
| secondary | `#8F9090` |
| guide | `#CFC8B8` |
| accent | `#E044A6` |
| on_accent | `#101113` |
| success | `#BFC8B0` |
| warning | `#D3B768` |
| error | `#D05A7F` |
| info | `#9EA8B7` |
## Typography
- **Headline-Lg**: Tektur, 1.836rem, weight 700, line-height 1.1.
- **Headline-Md**: Tektur, 1.53rem, weight 600, line-height 1.15.
- **Body-Md**: IBM Plex Sans Condensed, 17px, weight 400, line-height 1.55.
- **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
Desktop uses a 16:9 safe-area frame inside a 12-column timing grid, 24px gutters, max-width 1320px (1440 ultra-wide), with one dominant 7-8 column signal viewport and an asymmetric 5-column relay stack. Grids use minmax(0,1fr) columns and min-width:0 children so they never blow out their container.
### Whitespace
Extreme spacing contrast: 8px telemetry clusters, 32px panel gutters, 96px quiet signal fields, and large top/bottom atmospheric margins. The viewport stays deliberately empty.
### Density
Medium-high operational density around the perimeter with a deliberately sparse central transmission window; the contrast makes silence feel intentional.
### Responsive
From ~390px mobile to 2560px+ ultra-wide: the safe-area frame stays visible, the subtitle bed moves below the viewport, tables drop non-essential columns or scroll within their own panel, the masthead nav collapses, and only the full-bleed hero spans 100vw.
### Breakpoints
- **Mobile**: < 640px single-column safe frame with caption bed retained, nav and non-essential table columns hidden
- **Tablet**: 640-1023px two stacked panels with the orbital arc preserved
- **Desktop**: >= 1024px full 16:9 broadcast control composition
- **Ultrawide**: >= 1600px caps and centres the contained content; only the full-bleed hero spans 100vw
## Elevation & Depth
### Shadows
- **Sm**: none
- **Md**: 0 0 0 1px rgba(240,237,227,0.06)
- **Lg**: 0 18px 70px rgba(0,0,0,0.42)
## Shapes
### Rounded
- **None**: `0px`
- **Sm**: `0px`
- **Md**: `0px`
- **Lg**: `0px`
- **Full**: `9999px`
### Surfaces
- **Bg Pattern**: Lifted graphite ground with a faint horizontal scanline field under 5% opacity, title-safe rectangles, and rare dropout bands; never grungy.
- **Card Style**: No rounded cards; information lives in caption beds, corner station-ID slugs, clipped graphite panels, edge rails, and safe-area compartments, separated by 1px off-white hairline guides.
- **Treatment**: Lifted black and graphite planes with low-opacity off-white hairline guides as title-safe structure, low-opacity scanline texture, and one magenta signal mark per view.
### Borders
- **Default Width**: 1px
- **Accent Width**: 2px
- **Style**: solid
- **Character**: 1px off-white video-safe hairline guides at low opacity used as safe-area structure; magenta appears only as a lock tick, cue underline, or acquisition pulse, never as a card edge.
## Components
### Composition
Use a 16:9 title-safe master frame with action-safe and title-safe rectangles visible as interface architecture. Divide the field with hard manga-like gutters, then break the grid with one orbital arc that crosses panels and ends in bracketed antenna marks. Reserve the bottom band for the subtitle lock bed. Avoid equal-card rows; one viewport panel dominates and stays nearly empty while smaller relay panels carry compact telemetry.
### Hierarchy
Primary hierarchy comes from ghosted giant timecodes, then squared Tektur headings, then compact uppercase station IDs, then monospaced Fragment Mono captions and telemetry. Active states are marked by a magenta tick or underline, never by scale or colour flooding.
### Density
Alternate spacious graphite signal fields with dense timing strips: the central viewport feels almost empty while edge rails, subtitle bands, and status slugs carry compact technical information at 8px clusters against 64-128px quiet fields.
### Signature
- Title-safe double frame: nested action-safe + title-safe rectangles in off-white hairlines, interrupted by frame-counter corner notches drawn with absolutely-positioned pseudo-elements.
- Orbital handoff arc: a thin SVG curved path crossing rectangular panels, terminating in bracketed antenna acquisition marks plus a small magenta acquisition dot.
- Subtitle lock bed: a reserved bottom band of monospaced captions and cue numbers; the current speech state carries one magenta underline (inset box-shadow).
- Signal-loss banding: horizontal graphite strips clip across a panel as analog dropout, with repeating-linear-gradient waveform ticks and a single magenta pulse.
- Station-ID slug stack: compact mono labels at panel corners like late-night broadcast bugs; never rounded badges.
## 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-019ef93d-fcce-7091-96fd-16b073a28f72/DESIGN.with-shadcn.md`.
The shadcn page also exposes optional machine-readable files for automation, but the human-facing handoff is DESIGN.md with shadcn.
Install recommended primitives with `npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table`.
Use these primitives in shadcn apps:
- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table
Implementation rule for agents: import shadcn primitives from `@/components/ui/*`, apply the generated CSS variables first, then compose the language-specific recipes from the companion MD. Katagami remains the source of truth; shadcn names are the implementation surface.
## Do's and Don'ts
- Do Use broadcast-safe grayscale and keep peak whites below pure white.
- Do Reserve signal magenta for lock, drift, cue, or acquisition states only.
- Do Draw title-safe and action-safe guides as part of the interface structure.
- Do Make captions, frame counters, cue numbers, and station IDs meaningful and legible.
- Do Let one transmission field stay quiet while edge systems carry detail.
- Do Use hard panel divisions, gutters, and a cropped orbital arc instead of rounded cards.
- Do Keep body copy at 17px+ with -0.02em tracking and strong contrast; mono captions never below 11px.
- Do Pair every magenta or semantic state with a text label and a led/tick for accessibility.
- Don't Do not use green terminal glow, matrix rain, hacker dashboards, or random code waterfalls.
- Don't Do not add anime characters, fan-art silhouettes, neon city backgrounds, or cyberpunk gradients.
- Don't Do not build three equal SaaS cards or generic analytics widgets.
- Don't Do not fill empty graphite fields with decorative HUD circles or meaningless rings.
- Don't Do not make magenta a general brand wash; it is a narrow signal state.
- Don't Do not round corners except for tiny acquisition dots and waveform endpoints.
- Don't Do not let captions collide with the bottom safe area or become decorative lorem.
### Accessibility
Maintain strong contrast between graphite and off-white text, keep subtitle beds at readable sizes, avoid flicker, provide a non-colour label (text + led/tick) beside every magenta or semantic state, use magenta inset/outline focus states, and preserve safe margins at every breakpoint.
## Imagery Direction
### Pairs With
downlink
### Summary
Stills pulled off a broadcast-safe video feed: lifted graphite grayscale with peak whites below pure white, faint scanlines, one or two signal-dropout bands, a title-safe hairline frame with counter notches, an orbital acquisition arc into bracketed antenna marks, and ONE narrow magenta signal tick as the only colour.
### Subjects
- a relay satellite acquired over the night Earth limb
- a ground-station dish tracking across the sky
- an antenna array against an empty graphite field
- a spacecraft solar array catching low light
### Usage
Landing hero is generated in the Downlink technique, full-bleed behind a deliberate left-anchored graphite veil and the title-safe frame. Reserve the single magenta tick for the live signal element in each image.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "slate",
"type": "registry:theme",
"title": "Slate shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#101113",
"foreground": "#E7E2D6",
"card": "#16181B",
"card-foreground": "#E7E2D6",
"popover": "#16181B",
"popover-foreground": "#E7E2D6",
"primary": "#E7E2D6",
"primary-foreground": "#111111",
"secondary": "#8F9090",
"secondary-foreground": "#ffffff",
"muted": "#9A9A96",
"muted-foreground": "#E7E2D6",
"accent": "#E044A6",
"accent-foreground": "#ffffff",
"destructive": "#D05A7F",
"border": "rgba(207,200,184,0.22)",
"input": "rgba(207,200,184,0.22)",
"ring": "#E044A6",
"chart-1": "#E7E2D6",
"chart-2": "#8F9090",
"chart-3": "#E044A6",
"chart-4": "#BFC8B0",
"chart-5": "#D3B768",
"sidebar": "#16181B",
"sidebar-foreground": "#E7E2D6",
"sidebar-primary": "#E7E2D6",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#9EA8B7",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "rgba(207,200,184,0.22)",
"sidebar-ring": "#E044A6",
"radius": "0px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#E7E2D6",
"primary-foreground": "#111111",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#E044A6",
"accent-foreground": "#ffffff",
"destructive": "#D05A7F",
"border": "#303642",
"input": "#303642",
"ring": "#E044A6",
"chart-1": "#E7E2D6",
"chart-2": "#8F9090",
"chart-3": "#E044A6",
"chart-4": "#BFC8B0",
"chart-5": "#D3B768",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#E7E2D6",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#E044A6",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#E044A6",
"radius": "0px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ef93d-fcce-7091-96fd-16b073a28f72",
"slug": "slate",
"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",
"bg",
"border",
"error",
"guide",
"info",
"muted",
"on_accent",
"rail",
"secondary",
"success",
"surface",
"surface_2",
"text",
"text_strong",
"warning"
],
"typography": [
"base_size",
"body_font",
"display_letter_spacing",
"google_fonts_url",
"heading_font",
"heading_transform",
"heading_weight",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"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
Agent-generated
Keep Slateand 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: #101113;
--foreground: #E7E2D6;
--card: #16181B;
--card-foreground: #E7E2D6;
--popover: #16181B;
--popover-foreground: #E7E2D6;
--primary: #E7E2D6;
--primary-foreground: #111111;
--secondary: #8F9090;
--secondary-foreground: #ffffff;
--muted: #9A9A96;
--muted-foreground: #E7E2D6;
--accent: #E044A6;
--accent-foreground: #ffffff;
--destructive: #D05A7F;
--border: rgba(207,200,184,0.22);
--input: rgba(207,200,184,0.22);
--ring: #E044A6;
--chart-1: #E7E2D6;
--chart-2: #8F9090;
--chart-3: #E044A6;
--chart-4: #BFC8B0;
--chart-5: #D3B768;
--sidebar: #16181B;
--sidebar-foreground: #E7E2D6;
--sidebar-primary: #E7E2D6;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #9EA8B7;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: rgba(207,200,184,0.22);
--sidebar-ring: #E044A6;
--radius: 0px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #E7E2D6;
--primary-foreground: #111111;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #E044A6;
--accent-foreground: #ffffff;
--destructive: #D05A7F;
--border: #303642;
--input: #303642;
--ring: #E044A6;
--chart-1: #E7E2D6;
--chart-2: #8F9090;
--chart-3: #E044A6;
--chart-4: #BFC8B0;
--chart-5: #D3B768;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #E7E2D6;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #E044A6;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #E044A6;
--radius: 0px;
}
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 SlateShadcnKit() {
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">Slate</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": "slate",
"type": "registry:theme",
"title": "Slate",
"description": "Broadcast-control interface theme. Lifted graphite ground (#101113), off-white video-safe guide ink, and ONE magenta signal pulse (#E044A6) reserved for lock and cue states. Squared technical display (Tektur), condensed grotesk body (IBM Plex Sans Condensed), monospaced captions (Fragment Mono). Zero radius, no borders — separate with hairline guides, graphite surfaces, and title-safe framing.",
"cssVars": {
"theme": {
"font-sans": "IBM Plex Sans Condensed, system-ui, sans-serif",
"font-mono": "Fragment Mono, ui-monospace, monospace",
"font-display": "Tektur, system-ui, sans-serif",
"font-heading": "Tektur, system-ui, sans-serif",
"radius": "0px"
},
"dark": {
"background": "#101113",
"foreground": "#E7E2D6",
"card": "#16181B",
"card-foreground": "#E7E2D6",
"popover": "#1E2024",
"popover-foreground": "#F0EDE3",
"primary": "#E044A6",
"primary-foreground": "#101113",
"secondary": "#1E2024",
"secondary-foreground": "#E7E2D6",
"accent": "#E044A6",
"accent-foreground": "#101113",
"muted": "#1E2024",
"muted-foreground": "#9A9A96",
"destructive": "#D05A7F",
"destructive-foreground": "#101113",
"success": "#BFC8B0",
"warning": "#D3B768",
"info": "#9EA8B7",
"border": "rgba(207,200,184,0.22)",
"input": "#0B0C0E",
"ring": "#E044A6",
"radius": "0px"
}
}
}
# Slate shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019ef93d-fcce-7091-96fd-16b073a28f72`
Slug: `slate`
## Intent
Slate is a quiet broadcast-control language for software that watches a sleeping channel and waits for it to speak. Title-safe frames, manga-like panel discipline, an orbital handoff arc, monospaced captions, and a single magenta signal pulse express satellite lock, drift, and relay states without cyberpunk neon, hacker theater, or character illustration. A faithful refinement of Orbital Broadcast Control, brought up to standard.
## 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": "#101113",
"surface": "#16181B",
"surface_2": "#1E2024",
"rail": "#0B0C0E",
"text": "#E7E2D6",
"text_strong": "#F0EDE3",
"muted": "#9A9A96",
"secondary": "#8F9090",
"guide": "#CFC8B8",
"accent": "#E044A6",
"on_accent": "#101113",
"border": "rgba(207,200,184,0.22)",
"success": "#BFC8B0",
"warning": "#D3B768",
"error": "#D05A7F",
"info": "#9EA8B7"
}
Typography:
{
"base_size": "17px",
"body_font": "IBM Plex Sans Condensed",
"heading_font": "Tektur",
"mono_font": "Fragment Mono",
"heading_weight": "600",
"heading_transform": "none",
"letter_spacing": "-0.02em",
"display_letter_spacing": "-0.04em",
"line_height": 1.55,
"scale_ratio": 1.2,
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Fragment+Mono:ital@0;1&family=IBM+Plex+Sans+Condensed:wght@400;500;600;700&family=Tektur:wght@500;600;700&display=swap"
}
## Visual character to preserve
- A title-safe double frame of nested action-safe and title-safe rectangles is drawn in off-white hairlines with frame-counter corner notches as the interface architecture itself.
- A single thin orbital handoff arc crosses the rectangular graphite field and terminates in bracketed antenna acquisition marks with a small magenta acquisition dot.
- Large quiet timecodes ghost behind compact station-ID slugs while a subtitle lock bed reserves the bottom band for monospaced captions, one carrying the magenta underline.
- Signal-loss banding clips graphite strips across panels with tiny waveform ticks and a single magenta pulse; everything else holds video-safe grayscale.
## ShadSync visual profile
{
"family": "system",
"material": "flat",
"contour": "default",
"border": "solid",
"underlay": true,
"grain": true,
"stickerBadges": false,
"motion": "lift",
"density": "dense",
"accents": [
"primary",
"accent",
"secondary",
"muted"
]
}
## Signature component recipes
### Button
Use `Button` for primary, secondary, outline, and ghost actions. Primary actions must expose the language's strongest contrast pair, while secondary and ghost actions should preserve the surface treatment instead of falling back to default neutral SaaS styling.
### Card
Use `Card`, `CardHeader`, `CardContent`, `CardFooter`, and `CardAction` as the main composition frame. Cards should demonstrate the language's surface, border, hierarchy, and density rules rather than appearing as generic rounded rectangles.
### Input and Textarea
Use `Input` and `Textarea` with visible focus rings, field labels, validation states, and the language's rhythm. Forms should show real product content, not placeholder-only controls.
### Select, Tabs, and Table
Use `Select`, `Tabs`, and `Table` to prove navigation, filtering, and dense data states. The table should show row rhythm, separators, hover/focus states, and an empty or status state when the language calls for it.
### Dialog and Sheet
Use `Dialog` for centered decisions and `Sheet` for contextual editing. Both should inherit the language's spacing, border, overlay, and motion rules.
## Preview shots
- `application-shell`: dashboard or workspace shell with navigation, cards, forms, and state badges.
- `detail-editor`: focused editing flow using input, textarea, select, switch/checkbox, dialog or sheet, and action buttons.
- `data-operations`: table-heavy operational view with tabs, dropdown menu affordances, badges, and destructive/empty states.
- Each preview shot must include a renderable `scene` payload with concrete headline, description, actions, and rows/fields/stats for the UI preview.
## Implementation contract
- Start from local `ui/src/components/ui` shadcn-style primitives; do not create a second component system.
- Apply `/katagami/shadcn/slate/registry-theme.json` variables, then use these recipes for composition and state design.
- Preserve Katagami token names as source metadata; shadcn semantic names are only the export surface.
- Do: Use broadcast-safe grayscale and keep peak whites below pure white.; Reserve signal magenta for lock, drift, cue, or acquisition states only.; Draw title-safe and action-safe guides as part of the interface structure.; Make captions, frame counters, cue numbers, and station IDs meaningful and legible.; Let one transmission field stay quiet while edge systems carry detail.; Use hard panel divisions, gutters, and a cropped orbital arc instead of rounded cards.; Keep body copy at 17px+ with -0.02em tracking and strong contrast; mono captions never below 11px.; Pair every magenta or semantic state with a text label and a led/tick for accessibility.
- Do not: Do not use green terminal glow, matrix rain, hacker dashboards, or random code waterfalls.; Do not add anime characters, fan-art silhouettes, neon city backgrounds, or cyberpunk gradients.; Do not build three equal SaaS cards or generic analytics widgets.; Do not fill empty graphite fields with decorative HUD circles or meaningless rings.; Do not make magenta a general brand wash; it is a narrow signal state.; Do not round corners except for tiny acquisition dots and waveform endpoints.; Do not let captions collide with the bottom safe area or become decorative lorem.
## 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 SlateShadcnKit() {
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">Slate</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": "Desktop uses a 16:9 safe-area frame inside a 12-column timing grid, 24px gutters, max-width 1320px (1440 ultra-wide), with one dominant 7-8 column signal viewport and an asymmetric 5-column relay stack. Grids use minmax(0,1fr) columns and min-width:0 children so they never blow out their container.",
"whitespace": "Extreme spacing contrast: 8px telemetry clusters, 32px panel gutters, 96px quiet signal fields, and large top/bottom atmospheric margins. The viewport stays deliberately empty.",
"density": "Medium-high operational density around the perimeter with a deliberately sparse central transmission window; the contrast makes silence feel intentional.",
"responsive": "From ~390px mobile to 2560px+ ultra-wide: the safe-area frame stays visible, the subtitle bed moves below the viewport, tables drop non-essential columns or scroll within their own panel, the masthead nav collapses, and only the full-bleed hero spans 100vw.",
"breakpoints": {
"mobile": "< 640px single-column safe frame with caption bed retained, nav and non-essential table columns hidden",
"tablet": "640-1023px two stacked panels with the orbital arc preserved",
"desktop": ">= 1024px full 16:9 broadcast control composition",
"ultrawide": ">= 1600px caps and centres the contained content; only the full-bleed hero spans 100vw"
}
}
{
"artifact": "katagami:shadcn-preview-shots",
"version": "preview-shots-v1",
"author": "katagami-agent",
"generatedBy": "katagami-agent",
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"renderable": true,
"language": { "id": "", "name": "Slate", "slug": "slate" },
"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": [
"Dark broadcast-control ground (lifted graphite #101113, never pure black); off-white video-safe guide ink; ONE magenta signal pulse (#E044A6) reserved for lock, cue, and acquisition states only.",
"Zero radius, no borders or accent edges — separate with hairline guides, graphite surfaces, and title-safe framing; status is carried by text + a tick/led, never by colour alone.",
"Three voices: squared Tektur display, condensed IBM Plex grotesk body, Fragment Mono captions and timecodes. Active states earn a magenta tick or underline, not a colour flood."
],
"visualProfile": {
"family": "console",
"material": "flat",
"contour": "sharp",
"border": "hairline",
"underlay": true,
"grain": "scanline",
"stickerBadges": false,
"motion": "subtle",
"density": "balanced",
"mode": "dark",
"accents": ["accent", "warning", "success"]
},
"shots": [
{
"id": "application-shell",
"title": "Pass control",
"viewport": "desktop",
"primitives": ["button", "card", "input", "select", "tabs", "badge", "separator", "table"],
"composition": "A broadcast control room: an open side rail, a KPI strip of graphite cards reading signal/channels/latency/drift, a dominant live-viewport card with a ghosted timecode and an orbital arc, a relay status list, and a timecoded pass-schedule table with a subtitle lock bed at the foot.",
"mustShow": ["magenta primary action vs off-white ghost secondary", "graphite cards with hairline-guide separation, no borders", "magenta LOCK badge among grey/amber relay states", "mono timecodes and station IDs on a dark schedule table"],
"avoid": ["borders, top rules, or accent edges on cards", "rounded corners", "neon cyberpunk gradients or green terminal glow", "magenta used as a general fill"],
"scene": {
"eyebrow": "pass control",
"headline": "Channel KEIKO-2 — acquisition locked",
"description": "A transmission console where one viewport stays quiet while relay instruments at the edges carry the detail.",
"primaryAction": "Open a channel",
"secondaryAction": "Hold pass",
"stats": [
{ "label": "signal", "value": "-58 dBm", "tone": "accent" },
{ "label": "channels held", "value": "12", "tone": "default" },
{ "label": "lock latency", "value": "240 ms", "tone": "info" }
],
"rows": [
{ "label": "KEIKO-2", "value": "S-band · cue 0412", "status": "lock" },
{ "label": "KEIKO-7", "value": "S-band · cue 0410", "status": "acquiring" },
{ "label": "RELAY-N", "value": "handoff · cue 0418", "status": "nominal" },
{ "label": "RELAY-S", "value": "drift 0.4° · cue 0423", "status": "drift" }
],
"statuses": ["Lock", "Acquiring", "Nominal", "Drift"]
}
},
{
"id": "detail-editor",
"title": "Configure a pass",
"viewport": "tablet",
"primitives": ["button", "card", "input", "textarea", "select", "checkbox", "switch", "slider", "dialog", "sheet"],
"composition": "A formal pass-setup flow: mono-labelled graphite fields with magenta focus, a drift-warning (amber) band state, an auto-reacquire switch, an acquisition-threshold slider with a magenta thumb, and a commit-pass confirm dialog.",
"mustShow": ["magenta inset focus on inputs", "an amber warning state paired with text", "commit-pass dialog as a calm operator notice", "real telemetry values, no lorem"],
"avoid": ["unstyled browser controls", "missing labels", "nested cards", "rounded inputs"],
"scene": {
"eyebrow": "config · pass-04",
"headline": "Configure — Keiko Array Sector 7",
"description": "A pass form proving mono labels, a drift warning, an auto-reacquire toggle, a threshold slider, and a commit confirm.",
"primaryAction": "Commit pass",
"secondaryAction": "Reset",
"fields": [
{ "label": "Ground station", "value": "Keiko Array — Sector 7", "type": "text" },
{ "label": "Downlink band", "value": "S-band · 2.2–2.3 GHz", "type": "select" },
{ "label": "Drift threshold", "value": "drift 0.4° — re-acquire before lock", "type": "invalid" },
{ "label": "Auto re-acquire on dropout", "value": "on", "type": "switch" }
],
"statuses": ["Lock", "Drift", "Armed"]
}
},
{
"id": "data-operations",
"title": "Cue queue",
"viewport": "mobile",
"primitives": ["button", "tabs", "badge", "dropdown-menu", "table", "tooltip", "separator"],
"composition": "A narrow cue queue: stacked mono timecode rows, a per-row dropdown of operator actions, lock/drift status badges, tooltips on compact controls, and an idle relay empty state.",
"mustShow": ["responsive single-column reflow", "mono cue/timecode rows", "row action menu with a magenta acquire marker", "lock + drift status badges", "an idle empty state"],
"avoid": ["desktop-only tables", "text overflow", "generic shadcn spacing without Slate character"],
"scene": {
"eyebrow": "subtitle bed",
"headline": "Cue queue",
"description": "A compact cue list with rows, action menus, tooltips, status badges, and an idle relay affordance.",
"primaryAction": "Acquire",
"secondaryAction": "Filter",
"rows": [
{ "label": "Cue 0412", "value": "KEIKO-2 · 02:14:09", "status": "lock" },
{ "label": "Cue 0418", "value": "RELAY-N · 02:18:44", "status": "nominal" },
{ "label": "Cue 0423", "value": "RELAY-S · 02:25:02", "status": "drift" }
],
"statuses": ["Lock", "Nominal", "Drift"]
}
}
],
"componentRecipes": [
{ "primitive": "button", "intent": "Hierarchy: magenta primary = the one emphasis (lock/commit); off-white ghost outline = secondary; graphite-quiet = tertiary. Square, zero radius, uppercase condensed label centred, one shared 40–50px height. Primary may carry a small play/acquire tick." },
{ "primitive": "card", "intent": "Lifted graphite panel separated by hairline guides and space — no border, no top rule, no accent edge. A focal card may carry a corner station-ID slug; never round corners or nest cards." },
{ "primitive": "input", "intent": "Near-black recess fill with a hairline-guide inset; magenta inset on focus, amber inset when drifting/invalid; square corners; mono label above." },
{ "primitive": "textarea", "intent": "Subtitle cue copy with the same focus + warning rhythm; condensed grotesk, generous, square." },
{ "primitive": "select", "intent": "Band / station selection with a square trigger, a drawn chevron (no native arrow), and clear selection contrast on graphite." },
{ "primitive": "dialog", "intent": "A calm 'Commit this pass?' operator notice — centred, square, generous padding; hairline-guide framing, no border." },
{ "primitive": "sheet", "intent": "The relay / pass-log side rail for contextual detail; opens over a graphite veil." },
{ "primitive": "tabs", "intent": "Switch Viewport / Relays / Schedule; the active tab carries a short magenta tick, not a full underline rule." },
{ "primitive": "badge", "intent": "Sharp mono status slug (never a rounded pill): lock (magenta) / nominal (sage) / drift (rose) / idle (grey), each with a tiny led and a text label." },
{ "primitive": "separator", "intent": "A 1px off-white hairline guide at low opacity, or open space — used as title-safe interface structure, never a heavy rule." },
{ "primitive": "checkbox", "intent": "Record / opt-in with a magenta checked state and a visible focus outline." },
{ "primitive": "switch", "intent": "Auto re-acquire toggle; on is magenta, off is a flat graphite track with a grey knob." },
{ "primitive": "slider", "intent": "Acquisition threshold / level with a thin off-white track and a small magenta square-ish thumb." },
{ "primitive": "tooltip", "intent": "Concise mono notes above compact controls — a calm operator caption." },
{ "primitive": "dropdown-menu", "intent": "Per-cue operator actions with a magenta acquire marker on the lead item and a rose 'drop relay' destructive item." },
{ "primitive": "table", "intent": "The pass schedule: mono header, mono timecode/station rows, quiet graphite hover zebra, a status badge per row, an idle empty state, separated by hairline guides — no rule-lines or borders." }
],
"qualityRules": {
"do": [
"Keep the ground lifted graphite and hold peak whites below pure white (video-safe).",
"Reserve magenta for the single lock / cue / acquisition state per view.",
"Separate with hairline guides, graphite surface steps, and title-safe space.",
"Set cues, timecodes, station IDs, and metadata in Fragment Mono; everything else in condensed grotesk."
],
"dont": [
"Add borders, top rules, accent edges, or rounded pills.",
"Use green terminal glow, matrix rain, or neon cyberpunk gradients.",
"Let magenta become a brand wash or a second body colour.",
"Solve hierarchy with extra accent colours when guides, scale, and the single signal mark can do the work."
]
}
}