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.
Compose as a night corridor: primary content lives in luminous sign-towers (marquee columns) on a deep blue-black ground, supporting detail rides transit chips, status lights, and one live inset screen. Surfaces are carved apart by lit spines and hard gutters, not grey borders.
Scan-first: one oversized display number or word, then dense mono labels and metadata. Users read by colour, number, and direction before any paragraph.
High density kept legible — each surface is a bounded sign-tower with one spine and one hairline per row; the scene feels packed with signals yet orchestrated.
The marquee column — a tall surface with one luminous left spine and 3–5 compressed modules; the spine recolours by role (magenta signal, cyan route, amber live) so the same shape carries any kind of data.
Desktop content caps and centres at 1200px with a dominant column of sign-towers; the full-bleed night-photo hero and bands span 100vw. Tablet keeps stacked towers; mobile becomes a single dense column of towers with the sign-rail collapsed to a wrapped nav.
Whitespace is a hard gutter and separator between towers, not calm atmosphere — breathing room exists inside labels and between stacks while the overall scene stays packed with signals.
high
Every artifact renders from ~390px to 2560px+. Oversized display/hero headlines are viewport-sized (clamp) and wrap — never clipping or running off the 390px edge. On mobile, towers stack single-column and non-essential nav collapses.
halation-bloom
Long-exposure night photography in the Halation technique: bloom swells around every light, wet ground mirrors the neon, the subject's edges glow against deep dark. Magenta, cyan and amber read as highlighter marks on the night.
One full-bleed night-photo hero per landing; one live inset screen per major surface, driven by --hero-image. Keep the brightest signage massed to one side and a calmer dark zone for overlaid headlines.
# Klieg ## Philosophy Klieg is a wayfinding interface language built from the way a dense night street already works. On a crowded neon corridor you scan colour, number, and the direction a sign points, then move — you never read paragraphs. Klieg turns that into structure: content lives in luminous sign-towers on a deep blue-black night ground, and three bright lights — magenta, cyan, amber — do all the signalling, used like highlighters. Glow, bloom, and wet-street reflection carry the brightness so the chrome stays quiet underneath. ### Values - a dense night street as a way to move through data — scan by colour and number, then read - the marquee column is the structure: every surface is a sign-tower with one luminous spine that recolours by role - three accents used like highlighters on a deep night ground — magenta to signal, cyan to route, amber to mark what is live - the night is the ground, not a theme switch; glow and reflection carry the brightness while the chrome stays quiet ### Anti-Values - defaulting to white or washing the ground pale — the night is the point - a second loud accent, or flooding a surface with colour - boxed-in navigation trapped in a floating pill, or nested cards - long body copy as the primary hierarchy device instead of scan-first signage ### Visual Character - The marquee column: every primary surface is a tall sign-tower with one luminous left spine and three-to-five compressed modules stacked behind it; the spine recolours by role so the same shape carries traffic, revenue, or an alert. - A deep blue-black night ground against which magenta, cyan and amber read as bright highlighter marks; structure comes from the lit spine and hard gutters, never from grey borders. - Strong grotesque display type (Archivo, uppercase, tight tracking) that reads like signage at distance, over calm 17px Inter body and JetBrains Mono labels behaving like sign metadata; one headline word carries a colour-pop, never a serif/italic swap. - One live inset screen per view — a billboard-within framed on-air, driven by the swappable night-photo hero — plus glowing status lights, transit chips, and magenta-to-amber meters that stand in for any stat row. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#0a0e1a` | | bg_deep | `#060912` | | surface | `#121829` | | surface_2 | `#18203a` | | text | `#f4f6ff` | | muted | `#8b93b5` | | border | `#232c47` | | accent | `#ff2e88` | | accent_2 | `#22e0ff` | | accent_3 | `#ffb02e` | | on_accent | `#0a0e1a` | | success | `#3ee08a` | | warning | `#ffb02e` | | error | `#ff5470` | | info | `#22e0ff` | ### Typography - **Base Size**: 17px - **Body Font**: Inter - **Heading Font**: Archivo - **Mono Font**: JetBrains Mono - **Heading Weight**: 900 - **Heading Transform**: uppercase - **Letter Spacing**: -0.02em - **Line Height**: 1.55 - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700;800;900&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap ### Radii - **None**: 0 - **Md**: 16px - **Lg**: 24px - **Full**: 9999px ### Shadows - **Glow Accent**: 0 0 0 1px rgba(255,46,136,.35), 0 0 24px rgba(255,46,136,.28) - **Glow Cyan**: 0 0 0 1px rgba(34,224,255,.35), 0 0 24px rgba(34,224,255,.26) - **Glow Amber**: 0 0 0 1px rgba(255,176,46,.35), 0 0 22px rgba(255,176,46,.26) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,18,24,34,54,84] ### Surfaces - **Treatment**: lifted night panels on a deep blue-black ground with a single luminous spine; one live photographic inset per view - **Bg Pattern**: soft radial neon blooms ### Borders - **Default Width**: 0 - **Character**: no grey borders — surfaces are carved apart by luminous spines, hard gutters, and one hairline rule between dense rows ### Motion - **Duration**: 180ms - **Easing**: cubic-bezier(0.2,0.8,0.2,1) - **Philosophy**: boards switching on down a corridor; settled lit state is the default, reveal is added on top and reduced-motion renders lit ## Rules ### Composition Compose as a night corridor: primary content lives in luminous sign-towers (marquee columns) on a deep blue-black ground, supporting detail rides transit chips, status lights, and one live inset screen. Surfaces are carved apart by lit spines and hard gutters, not grey borders. ### Hierarchy Scan-first: one oversized display number or word, then dense mono labels and metadata. Users read by colour, number, and direction before any paragraph. ### Density High density kept legible — each surface is a bounded sign-tower with one spine and one hairline per row; the scene feels packed with signals yet orchestrated. ### Signature The marquee column — a tall surface with one luminous left spine and 3–5 compressed modules; the spine recolours by role (magenta signal, cyan route, amber live) so the same shape carries any kind of data. ## Layout ### Grid Desktop content caps and centres at 1200px with a dominant column of sign-towers; the full-bleed night-photo hero and bands span 100vw. Tablet keeps stacked towers; mobile becomes a single dense column of towers with the sign-rail collapsed to a wrapped nav. ### Whitespace Whitespace is a hard gutter and separator between towers, not calm atmosphere — breathing room exists inside labels and between stacks while the overall scene stays packed with signals. ### Density high ### Responsive Every artifact renders from ~390px to 2560px+. Oversized display/hero headlines are viewport-sized (clamp) and wrap — never clipping or running off the 390px edge. On mobile, towers stack single-column and non-essential nav collapses. ### Breakpoints - **Mobile**: 0px - **Tablet**: 760px - **Desktop**: 1180px ## Guidance ### Do - Build surfaces as sign-towers with one luminous spine; recolour the spine by role. - Keep three accents on a deep night ground; let glow and wet-street reflection carry the brightness. - Use scan-first hierarchy: one big number or word, then dense mono labels. - Place one live inset screen per view, driven by the swappable hero image. ### Don't - Default to white or wash the ground pale. - Add a second loud accent or flood a surface with colour. - Box the navigation into a floating pill or nest cards. - Lean on long body copy as the primary hierarchy device. ### Accessibility Near-white text on a deep night ground holds high contrast; semantic colour is carried by a labelled status light plus text, never colour alone; focus rings are a visible cyan ring; motion is gated and honours prefers-reduced-motion. ## Imagery Direction ### Pairs With halation-bloom ### Summary Long-exposure night photography in the Halation technique: bloom swells around every light, wet ground mirrors the neon, the subject's edges glow against deep dark. Magenta, cyan and amber read as highlighter marks on the night. ### Subjects - a rain-soaked neon corridor of sign-towers - a single object rim-lit by night signage - a night-street portrait lit by neon - a wet boulevard with reflected light streaks ### Usage One full-bleed night-photo hero per landing; one live inset screen per major surface, driven by --hero-image. Keep the brightest signage massed to one side and a calmer dark zone for overlaid headlines.
---
version: "alpha"
name: "Klieg"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#0a0e1a"
bg_deep: "#060912"
surface: "#121829"
surface_2: "#18203a"
text: "#f4f6ff"
muted: "#8b93b5"
border: "#232c47"
accent: "#ff2e88"
accent_2: "#22e0ff"
accent_3: "#ffb02e"
on_accent: "#0a0e1a"
success: "#3ee08a"
warning: "#ffb02e"
error: "#ff5470"
info: "#22e0ff"
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: "Inter"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.55
letterSpacing: "-0.02em"
label-md:
fontFamily: "JetBrains Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
md: "16px"
lg: "24px"
full: "9999px"
spacing:
base: "8px"
xs: "4px"
sm: "8px"
md: "12px"
lg: "18px"
xl: "24px"
2xl: "34px"
3xl: "54px"
4xl: "84px"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-bg_deep:
backgroundColor: "{colors.bg_deep}"
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-border:
backgroundColor: "{colors.border}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-accent_2:
backgroundColor: "{colors.accent_2}"
color-reference-accent_3:
backgroundColor: "{colors.accent_3}"
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"
---
# Klieg
## Overview
Klieg is a wayfinding interface language built from the way a dense night street already works. On a crowded neon corridor you scan colour, number, and the direction a sign points, then move — you never read paragraphs. Klieg turns that into structure: content lives in luminous sign-towers on a deep blue-black night ground, and three bright lights — magenta, cyan, amber — do all the signalling, used like highlighters. Glow, bloom, and wet-street reflection carry the brightness so the chrome stays quiet underneath.
### Values
- a dense night street as a way to move through data — scan by colour and number, then read
- the marquee column is the structure: every surface is a sign-tower with one luminous spine that recolours by role
- three accents used like highlighters on a deep night ground — magenta to signal, cyan to route, amber to mark what is live
- the night is the ground, not a theme switch; glow and reflection carry the brightness while the chrome stays quiet
### Anti-Values
- defaulting to white or washing the ground pale — the night is the point
- a second loud accent, or flooding a surface with colour
- boxed-in navigation trapped in a floating pill, or nested cards
- long body copy as the primary hierarchy device instead of scan-first signage
### Visual Character
- The marquee column: every primary surface is a tall sign-tower with one luminous left spine and three-to-five compressed modules stacked behind it; the spine recolours by role so the same shape carries traffic, revenue, or an alert.
- A deep blue-black night ground against which magenta, cyan and amber read as bright highlighter marks; structure comes from the lit spine and hard gutters, never from grey borders.
- Strong grotesque display type (Archivo, uppercase, tight tracking) that reads like signage at distance, over calm 17px Inter body and JetBrains Mono labels behaving like sign metadata; one headline word carries a colour-pop, never a serif/italic swap.
- One live inset screen per view — a billboard-within framed on-air, driven by the swappable night-photo hero — plus glowing status lights, transit chips, and magenta-to-amber meters that stand in for any stat row.
## 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 | `#0a0e1a` |
| bg_deep | `#060912` |
| surface | `#121829` |
| surface_2 | `#18203a` |
| text | `#f4f6ff` |
| muted | `#8b93b5` |
| border | `#232c47` |
| accent | `#ff2e88` |
| accent_2 | `#22e0ff` |
| accent_3 | `#ffb02e` |
| on_accent | `#0a0e1a` |
| success | `#3ee08a` |
| warning | `#ffb02e` |
| error | `#ff5470` |
| info | `#22e0ff` |
## 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**: Inter, 17px, weight 400, line-height 1.55.
- **Label-Md**: JetBrains Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `18px`
- **Xl**: `24px`
- **2xl**: `34px`
- **3xl**: `54px`
- **4xl**: `84px`
### Grid
Desktop content caps and centres at 1200px with a dominant column of sign-towers; the full-bleed night-photo hero and bands span 100vw. Tablet keeps stacked towers; mobile becomes a single dense column of towers with the sign-rail collapsed to a wrapped nav.
### Whitespace
Whitespace is a hard gutter and separator between towers, not calm atmosphere — breathing room exists inside labels and between stacks while the overall scene stays packed with signals.
### Density
high
### Responsive
Every artifact renders from ~390px to 2560px+. Oversized display/hero headlines are viewport-sized (clamp) and wrap — never clipping or running off the 390px edge. On mobile, towers stack single-column and non-essential nav collapses.
### Breakpoints
- **Mobile**: 0px
- **Tablet**: 760px
- **Desktop**: 1180px
## Elevation & Depth
### Shadows
- **Glow Accent**: 0 0 0 1px rgba(255,46,136,.35), 0 0 24px rgba(255,46,136,.28)
- **Glow Cyan**: 0 0 0 1px rgba(34,224,255,.35), 0 0 24px rgba(34,224,255,.26)
- **Glow Amber**: 0 0 0 1px rgba(255,176,46,.35), 0 0 22px rgba(255,176,46,.26)
## Shapes
### Rounded
- **None**: `0px`
- **Md**: `16px`
- **Lg**: `24px`
- **Full**: `9999px`
### Surfaces
- **Treatment**: lifted night panels on a deep blue-black ground with a single luminous spine; one live photographic inset per view
- **Bg Pattern**: soft radial neon blooms
### Borders
- **Default Width**: 0
- **Character**: no grey borders — surfaces are carved apart by luminous spines, hard gutters, and one hairline rule between dense rows
## Components
### Composition
Compose as a night corridor: primary content lives in luminous sign-towers (marquee columns) on a deep blue-black ground, supporting detail rides transit chips, status lights, and one live inset screen. Surfaces are carved apart by lit spines and hard gutters, not grey borders.
### Hierarchy
Scan-first: one oversized display number or word, then dense mono labels and metadata. Users read by colour, number, and direction before any paragraph.
### Density
High density kept legible — each surface is a bounded sign-tower with one spine and one hairline per row; the scene feels packed with signals yet orchestrated.
### Signature
The marquee column — a tall surface with one luminous left spine and 3–5 compressed modules; the spine recolours by role (magenta signal, cyan route, amber live) so the same shape carries any kind of data.
## 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-019efd9e-f923-72d0-991e-93036552815c/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 Build surfaces as sign-towers with one luminous spine; recolour the spine by role.
- Do Keep three accents on a deep night ground; let glow and wet-street reflection carry the brightness.
- Do Use scan-first hierarchy: one big number or word, then dense mono labels.
- Do Place one live inset screen per view, driven by the swappable hero image.
- Don't Default to white or wash the ground pale.
- Don't Add a second loud accent or flood a surface with colour.
- Don't Box the navigation into a floating pill or nest cards.
- Don't Lean on long body copy as the primary hierarchy device.
### Accessibility
Near-white text on a deep night ground holds high contrast; semantic colour is carried by a labelled status light plus text, never colour alone; focus rings are a visible cyan ring; motion is gated and honours prefers-reduced-motion.
## Imagery Direction
### Pairs With
halation-bloom
### Summary
Long-exposure night photography in the Halation technique: bloom swells around every light, wet ground mirrors the neon, the subject's edges glow against deep dark. Magenta, cyan and amber read as highlighter marks on the night.
### Subjects
- a rain-soaked neon corridor of sign-towers
- a single object rim-lit by night signage
- a night-street portrait lit by neon
- a wet boulevard with reflected light streaks
### Usage
One full-bleed night-photo hero per landing; one live inset screen per major surface, driven by --hero-image. Keep the brightest signage massed to one side and a calmer dark zone for overlaid headlines.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "klieg",
"type": "registry:theme",
"title": "Klieg shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#0a0e1a",
"foreground": "#f4f6ff",
"card": "#121829",
"card-foreground": "#f4f6ff",
"popover": "#121829",
"popover-foreground": "#f4f6ff",
"primary": "#f4f6ff",
"primary-foreground": "#111111",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#8b93b5",
"muted-foreground": "#f4f6ff",
"accent": "#ff2e88",
"accent-foreground": "#ffffff",
"destructive": "#ff5470",
"border": "#232c47",
"input": "#232c47",
"ring": "#ff2e88",
"chart-1": "#f4f6ff",
"chart-2": "#f4f4f5",
"chart-3": "#ff2e88",
"chart-4": "#3ee08a",
"chart-5": "#ffb02e",
"sidebar": "#121829",
"sidebar-foreground": "#f4f6ff",
"sidebar-primary": "#f4f6ff",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#22e0ff",
"sidebar-accent-foreground": "#111111",
"sidebar-border": "#232c47",
"sidebar-ring": "#ff2e88",
"radius": "16px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#f4f6ff",
"primary-foreground": "#111111",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#ff2e88",
"accent-foreground": "#ffffff",
"destructive": "#ff5470",
"border": "#303642",
"input": "#303642",
"ring": "#ff2e88",
"chart-1": "#f4f6ff",
"chart-2": "#f4f4f5",
"chart-3": "#ff2e88",
"chart-4": "#3ee08a",
"chart-5": "#ffb02e",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#f4f6ff",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#ff2e88",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#ff2e88",
"radius": "16px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019efd9e-f923-72d0-991e-93036552815c",
"slug": "klieg",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"colors": [
"accent",
"accent_2",
"accent_3",
"bg",
"bg_deep",
"border",
"error",
"info",
"muted",
"on_accent",
"success",
"surface",
"surface_2",
"text",
"warning"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"heading_transform",
"heading_weight",
"letter_spacing",
"line_height",
"mono_font"
],
"radii": [
"full",
"lg",
"md",
"none"
],
"shadows": [
"glow_accent",
"glow_amber",
"glow_cyan"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"treatment"
],
"borders": [
"character",
"default_width"
],
"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
images by gpt-image-2
Keep Kliegand 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: #0a0e1a;
--foreground: #f4f6ff;
--card: #121829;
--card-foreground: #f4f6ff;
--popover: #121829;
--popover-foreground: #f4f6ff;
--primary: #f4f6ff;
--primary-foreground: #111111;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #8b93b5;
--muted-foreground: #f4f6ff;
--accent: #ff2e88;
--accent-foreground: #ffffff;
--destructive: #ff5470;
--border: #232c47;
--input: #232c47;
--ring: #ff2e88;
--chart-1: #f4f6ff;
--chart-2: #f4f4f5;
--chart-3: #ff2e88;
--chart-4: #3ee08a;
--chart-5: #ffb02e;
--sidebar: #121829;
--sidebar-foreground: #f4f6ff;
--sidebar-primary: #f4f6ff;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #22e0ff;
--sidebar-accent-foreground: #111111;
--sidebar-border: #232c47;
--sidebar-ring: #ff2e88;
--radius: 16px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #f4f6ff;
--primary-foreground: #111111;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #ff2e88;
--accent-foreground: #ffffff;
--destructive: #ff5470;
--border: #303642;
--input: #303642;
--ring: #ff2e88;
--chart-1: #f4f6ff;
--chart-2: #f4f4f5;
--chart-3: #ff2e88;
--chart-4: #3ee08a;
--chart-5: #ffb02e;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #f4f6ff;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #ff2e88;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #ff2e88;
--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 KliegShadcnKit() {
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">Klieg</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": "klieg",
"type": "registry:theme",
"cssVars": {
"theme": {
"font-sans": "Inter, system-ui, sans-serif",
"font-display": "Archivo, system-ui, sans-serif",
"font-mono": "\"JetBrains Mono\", monospace",
"radius": "16px"
},
"light": {
"background": "#0a0e1a",
"foreground": "#f4f6ff",
"card": "#121829",
"card-foreground": "#f4f6ff",
"popover": "#121829",
"popover-foreground": "#f4f6ff",
"primary": "#ff2e88",
"primary-foreground": "#0a0e1a",
"secondary": "#18203a",
"secondary-foreground": "#f4f6ff",
"muted": "#18203a",
"muted-foreground": "#8b93b5",
"accent": "#22e0ff",
"accent-foreground": "#0a0e1a",
"destructive": "#ff5470",
"destructive-foreground": "#0a0e1a",
"border": "#232c47",
"input": "#232c47",
"ring": "#22e0ff",
"chart-1": "#ff2e88",
"chart-2": "#22e0ff",
"chart-3": "#ffb02e",
"chart-4": "#3ee08a",
"chart-5": "#8b93b5",
"radius": "16px"
},
"dark": {
"background": "#060912",
"foreground": "#f4f6ff",
"card": "#121829",
"card-foreground": "#f4f6ff",
"popover": "#121829",
"popover-foreground": "#f4f6ff",
"primary": "#ff2e88",
"primary-foreground": "#0a0e1a",
"secondary": "#18203a",
"secondary-foreground": "#f4f6ff",
"muted": "#18203a",
"muted-foreground": "#8b93b5",
"accent": "#22e0ff",
"accent-foreground": "#0a0e1a",
"destructive": "#ff5470",
"destructive-foreground": "#0a0e1a",
"border": "#232c47",
"input": "#232c47",
"ring": "#22e0ff",
"chart-1": "#ff2e88",
"chart-2": "#22e0ff",
"chart-3": "#ffb02e",
"chart-4": "#3ee08a",
"chart-5": "#8b93b5",
"radius": "16px"
}
}
}
# Klieg shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019efd9e-f923-72d0-991e-93036552815c`
Slug: `klieg`
## Intent
Klieg is a wayfinding interface language built from the way a dense night street already works. On a crowded neon corridor you scan colour, number, and the direction a sign points, then move — you never read paragraphs. Klieg turns that into structure: content lives in luminous sign-towers on a deep blue-black night ground, and three bright lights — magenta, cyan, amber — do all the signalling, used like highlighters. Glow, bloom, and wet-street reflection carry the brightness so the chrome stays quiet underneath.
## 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": "#0a0e1a",
"bg_deep": "#060912",
"surface": "#121829",
"surface_2": "#18203a",
"text": "#f4f6ff",
"muted": "#8b93b5",
"border": "#232c47",
"accent": "#ff2e88",
"accent_2": "#22e0ff",
"accent_3": "#ffb02e",
"on_accent": "#0a0e1a",
"success": "#3ee08a",
"warning": "#ffb02e",
"error": "#ff5470",
"info": "#22e0ff"
}
Typography:
{
"base_size": "17px",
"body_font": "Inter",
"heading_font": "Archivo",
"mono_font": "JetBrains Mono",
"heading_weight": "900",
"heading_transform": "uppercase",
"letter_spacing": "-0.02em",
"line_height": 1.55,
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700;800;900&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap"
}
## Visual character to preserve
- The marquee column: every primary surface is a tall sign-tower with one luminous left spine and three-to-five compressed modules stacked behind it; the spine recolours by role so the same shape carries traffic, revenue, or an alert.
- A deep blue-black night ground against which magenta, cyan and amber read as bright highlighter marks; structure comes from the lit spine and hard gutters, never from grey borders.
- Strong grotesque display type (Archivo, uppercase, tight tracking) that reads like signage at distance, over calm 17px Inter body and JetBrains Mono labels behaving like sign metadata; one headline word carries a colour-pop, never a serif/italic swap.
- One live inset screen per view — a billboard-within framed on-air, driven by the swappable night-photo hero — plus glowing status lights, transit chips, and magenta-to-amber meters that stand in for any stat row.
## ShadSync visual profile
{
"family": "editorial",
"material": "flat",
"contour": "default",
"border": "solid",
"underlay": false,
"grain": false,
"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/klieg/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: Build surfaces as sign-towers with one luminous spine; recolour the spine by role.; Keep three accents on a deep night ground; let glow and wet-street reflection carry the brightness.; Use scan-first hierarchy: one big number or word, then dense mono labels.; Place one live inset screen per view, driven by the swappable hero image.
- Do not: Default to white or wash the ground pale.; Add a second loud accent or flood a surface with colour.; Box the navigation into a floating pill or nest cards.; Lean on long body copy as the primary hierarchy device.
## 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 KliegShadcnKit() {
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">Klieg</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 content caps and centres at 1200px with a dominant column of sign-towers; the full-bleed night-photo hero and bands span 100vw. Tablet keeps stacked towers; mobile becomes a single dense column of towers with the sign-rail collapsed to a wrapped nav.",
"whitespace": "Whitespace is a hard gutter and separator between towers, not calm atmosphere — breathing room exists inside labels and between stacks while the overall scene stays packed with signals.",
"density": "high",
"responsive": "Every artifact renders from ~390px to 2560px+. Oversized display/hero headlines are viewport-sized (clamp) and wrap — never clipping or running off the 390px edge. On mobile, towers stack single-column and non-essential nav collapses.",
"breakpoints": {
"mobile": "0px",
"tablet": "760px",
"desktop": "1180px"
}
}
{
"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-019efd9e-f923-72d0-991e-93036552815c",
"name": "Klieg",
"slug": "klieg"
},
"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": [
"The marquee column: every primary surface is a tall sign-tower with one luminous left spine and three-to-five compressed modules stacked behind it; the spine recolours by role so the same shape carries traffic, revenue, or an alert.",
"A deep blue-black night ground against which magenta, cyan and amber read as bright highlighter marks; structure comes from the lit spine and hard gutters, never from grey borders.",
"Strong grotesque display type (Archivo, uppercase, tight tracking) that reads like signage at distance, over calm 17px Inter body and JetBrains Mono labels behaving like sign metadata; one headline word carries a colour-pop, never a serif/italic swap.",
"One live inset screen per view — a billboard-within framed on-air, driven by the swappable night-photo hero — plus glowing status lights, transit chips, and magenta-to-amber meters that stand in for any stat row."
],
"visualProfile": {
"family": "editorial",
"material": "flat",
"contour": "default",
"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": "Klieg 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": [
"Build surfaces as sign-towers with one luminous spine; recolour the spine by role.",
"Keep three accents on a deep night ground; let glow and wet-street reflection carry the brightness.",
"Use scan-first hierarchy: one big number or word, then dense mono labels.",
"Place one live inset screen per view, driven by the swappable hero image."
],
"dont": [
"Default to white or wash the ground pale.",
"Add a second loud accent or flood a surface with colour.",
"Box the navigation into a floating pill or nest cards.",
"Lean on long body copy as the primary hierarchy device."
]
}
}