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.
Build scenes as a registration sheet of flush bordered cells — one dominant knockout-headline zone, one dense operational sheet, and supporting mono spec slips — with a vermilion crop tick at every corner where cells meet.
Scale-shock from condensed Anton caps first, then the knockout slab, then mono labels and hairline rules; body stays calm at 17px so the headline and the slab carry the volume.
Medium-high: many visible controls and summaries, every group a flush cell on the grid, so the sheet reads energetic but dead on register.
Knockout type (accent reversed out of a slab, never a wash); a gapless cell grid with hairline rules and a vermilion crop tick at every corner; condensed Anton display over calm Inter body and mono metadata; zero drop shadows — depth is inversion-on-hover.
An edge-to-edge registration sheet: split sheets pair a wide knockout-headline cell with a narrower mono spec column; internal cell grids collapse 4 to 2 to 1. The nav sits openly across the header, never trapped in a floating pill.
Deliberate, not luxurious: tight cell padding, the rules themselves doing the dividing, and generous breathing room above the condensed headlines.
medium-high
Single full-bleed hero spans 100vw; contained content caps and centres at 1320px on ultra-wide; mobile stacks to one column, hides non-essential nav and table columns, and never overflows horizontally.
squeegee
Screen-printed risograph imagery on ink-black stock: a single bold subject with heavy contour outlines, three-to-four flat ink separations, halftone-dot midtones, a hard offset registration shadow, and one flat vermilion knockout slab — the subject bleeding off all four edges.
One full-bleed hero image per landing in the squeegee technique on ink-black stock, kept monochrome with a single vermilion knockout slab; never a literal product screenshot.
# Knockout ## Philosophy A screen-printed interface language that inverts the press: the stock is ink-black, the ink is bone-white, and the one loud colour is removed from the type — knocked out — so the vermilion slab reads through the letterforms. Structure is a registration sheet: flush cells, hairline rules, a crop tick punched at every corner. Nothing floats; nothing has a drop shadow. ### Values - Inverted contrast: bone-white ink and condensed caps printed onto fixed ink-black stock, never a dark-mode toggle. - Structural honesty on a register grid — every cell join and crop tick is visible; the layout looks manufactured, not decorated. - One spot colour, knocked out of the type, used like a single vermilion plate — loud as an interruption, never a wash. ### Anti-Values - Drop shadows, floating cards, rounded corners, and elevation. - Paper-white grounds, gradients, glass, blur, and grey-on-grey SaaS slickness. - A second accent hue, or the accent flooding a surface instead of being knocked out of a phrase. ### Visual Character - The ground is fixed ink-black #0E0D0C with a faint halftone dot field, so the stock reads as printed paper rather than flat digital black. - Headlines are tall condensed Anton caps stacked in short lines, with one line reversed out of a vermilion knockout slab; body holds calm at 17px Inter and metadata runs in mono. - Layout is a gapless registration sheet — cells butt flush, divided only by 1px hairline rules, with a 2px vermilion crop tick (an inline-SVG crosshair) punched at every corner where four cells meet. - There are no drop shadows anywhere: depth comes from controls inverting on hover and seating 1px on press, and from the crop-tick register marks. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#0E0D0C` | | surface | `#161412` | | text | `#F4F1EA` | | muted | `#9A958A` | | border | `#2B2926` | | accent | `#FF3B14` | | on_accent | `#0E0D0C` | | primary | `#FF3B14` | | secondary | `#161412` | | success | `#27C281` | | warning | `#FFB020` | | error | `#FF5A36` | | info | `#7FB2FF` | ### Typography - **Base Size**: 17px - **Body Font**: Inter - **Heading Font**: Anton - **Mono Font**: Spline Sans Mono - **Heading Weight**: 400 - **Heading Transform**: uppercase - **Letter Spacing**: 0.005em - **Line Height**: 1.6 - **Scale Ratio**: 1.25 - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Anton&family=Inter:wght@400;500;600;700&family=Spline+Sans+Mono:wght@400;500;600&display=swap ### Radii - **None**: 0 - **Sm**: 0 - **Md**: 0 - **Lg**: 0 - **Full**: 9999px ### Shadows - **None**: none - **Note**: Knockout uses no drop shadows; depth is inversion-on-interaction and crop-tick register marks. ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64] ### Surfaces - **Treatment**: screen-print - **Card Style**: Flat plate (#161412) on ink-black stock, 1px hairline register rule, radius 0, no shadow; cells butt flush as a contact sheet with a vermilion crop tick at each corner. - **Bg Pattern**: faint halftone dot field on ink-black stock ### Borders - **Default Width**: 1px - **Accent Width**: 2px - **Style**: solid - **Character**: Hairline register rules, not decorative outlines: structure comes from flush cell adjacency and corner crop ticks, never from gutters or heavy frames. ### Motion - **Duration**: 140ms - **Easing**: cubic-bezier(0.2,0.7,0.2,1) - **Philosophy**: snappy and structural; controls invert on hover and seat 1px on press, like a block dropped onto the press bed ## Rules ### Composition Build scenes as a registration sheet of flush bordered cells — one dominant knockout-headline zone, one dense operational sheet, and supporting mono spec slips — with a vermilion crop tick at every corner where cells meet. ### Hierarchy Scale-shock from condensed Anton caps first, then the knockout slab, then mono labels and hairline rules; body stays calm at 17px so the headline and the slab carry the volume. ### Density Medium-high: many visible controls and summaries, every group a flush cell on the grid, so the sheet reads energetic but dead on register. ### Signature Knockout type (accent reversed out of a slab, never a wash); a gapless cell grid with hairline rules and a vermilion crop tick at every corner; condensed Anton display over calm Inter body and mono metadata; zero drop shadows — depth is inversion-on-hover. ## Layout ### Grid An edge-to-edge registration sheet: split sheets pair a wide knockout-headline cell with a narrower mono spec column; internal cell grids collapse 4 to 2 to 1. The nav sits openly across the header, never trapped in a floating pill. ### Whitespace Deliberate, not luxurious: tight cell padding, the rules themselves doing the dividing, and generous breathing room above the condensed headlines. ### Density medium-high ### Responsive Single full-bleed hero spans 100vw; contained content caps and centres at 1320px on ultra-wide; mobile stacks to one column, hides non-essential nav and table columns, and never overflows horizontally. ### Breakpoints - **Mobile**: 390px - **Tablet**: 768px - **Desktop**: 1440px - **Ultrawide**: 2560px ## Guidance ### Do - Keep the ground ink-black; print bone-white ink and condensed caps onto it. - Knock the one vermilion accent out of a phrase or a primary control so the colour reads through the type. - Build structure from flush cells, hairline rules, and a vermilion crop tick at each corner — the registration sheet. - Let condensed Anton caps and mono metadata carry the hierarchy while body stays calm at 17px. ### Don't - Don't add drop shadows, floating cards, rounded corners, or any sense of elevation. - Don't use a paper-white ground, gradients, glass, or blur. - Don't introduce a second accent hue or let the vermilion flood a surface as a wash. - Don't separate cells with gutters; they butt flush and are divided only by the 1px rule. ### Accessibility Bone #F4F1EA on ink-black #0E0D0C clears AAA for body; vermilion #FF3B14 carries dark #0E0D0C text on the knockout slab at AA-large for display sizes. Crop-tick register marks are inline SVG, never glyphs; all form controls are explicitly styled with a non-colour focus cue (a vermilion ink edge plus border change). ## Imagery Direction ### Pairs With squeegee ### Summary Screen-printed risograph imagery on ink-black stock: a single bold subject with heavy contour outlines, three-to-four flat ink separations, halftone-dot midtones, a hard offset registration shadow, and one flat vermilion knockout slab — the subject bleeding off all four edges. ### Subjects - a printmaker's squeegee dragging a band of bone-white ink across a silkscreen - press apparatus and registration marks on a black press bed - a single bold object rendered as a stacked cut-paper print - ink, mesh, and crop-tick marks of the screen-print process ### Usage One full-bleed hero image per landing in the squeegee technique on ink-black stock, kept monochrome with a single vermilion knockout slab; never a literal product screenshot.
---
version: "alpha"
name: "Knockout"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#0E0D0C"
surface: "#161412"
text: "#F4F1EA"
muted: "#9A958A"
border: "#2B2926"
accent: "#FF3B14"
on_accent: "#0E0D0C"
primary: "#FF3B14"
secondary: "#161412"
success: "#27C281"
warning: "#FFB020"
error: "#FF5A36"
info: "#7FB2FF"
typography:
headline-lg:
fontFamily: "Anton"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "0.005em"
headline-md:
fontFamily: "Anton"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "0.005em"
body-md:
fontFamily: "Inter"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.6
letterSpacing: "0.005em"
label-md:
fontFamily: "Spline Sans 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"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-surface:
backgroundColor: "{colors.surface}"
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-on_accent:
backgroundColor: "{colors.on_accent}"
color-reference-primary:
backgroundColor: "{colors.primary}"
color-reference-secondary:
backgroundColor: "{colors.secondary}"
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.primary}"
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"
---
# Knockout
## Overview
A screen-printed interface language that inverts the press: the stock is ink-black, the ink is bone-white, and the one loud colour is removed from the type — knocked out — so the vermilion slab reads through the letterforms. Structure is a registration sheet: flush cells, hairline rules, a crop tick punched at every corner. Nothing floats; nothing has a drop shadow.
### Values
- Inverted contrast: bone-white ink and condensed caps printed onto fixed ink-black stock, never a dark-mode toggle.
- Structural honesty on a register grid — every cell join and crop tick is visible; the layout looks manufactured, not decorated.
- One spot colour, knocked out of the type, used like a single vermilion plate — loud as an interruption, never a wash.
### Anti-Values
- Drop shadows, floating cards, rounded corners, and elevation.
- Paper-white grounds, gradients, glass, blur, and grey-on-grey SaaS slickness.
- A second accent hue, or the accent flooding a surface instead of being knocked out of a phrase.
### Visual Character
- The ground is fixed ink-black #0E0D0C with a faint halftone dot field, so the stock reads as printed paper rather than flat digital black.
- Headlines are tall condensed Anton caps stacked in short lines, with one line reversed out of a vermilion knockout slab; body holds calm at 17px Inter and metadata runs in mono.
- Layout is a gapless registration sheet — cells butt flush, divided only by 1px hairline rules, with a 2px vermilion crop tick (an inline-SVG crosshair) punched at every corner where four cells meet.
- There are no drop shadows anywhere: depth comes from controls inverting on hover and seating 1px on press, and from the crop-tick register marks.
## 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 | `#0E0D0C` |
| surface | `#161412` |
| text | `#F4F1EA` |
| muted | `#9A958A` |
| border | `#2B2926` |
| accent | `#FF3B14` |
| on_accent | `#0E0D0C` |
| primary | `#FF3B14` |
| secondary | `#161412` |
| success | `#27C281` |
| warning | `#FFB020` |
| error | `#FF5A36` |
| info | `#7FB2FF` |
## Typography
- **Headline-Lg**: Anton, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Anton, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Inter, 17px, weight 400, line-height 1.6.
- **Label-Md**: Spline Sans Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
### Grid
An edge-to-edge registration sheet: split sheets pair a wide knockout-headline cell with a narrower mono spec column; internal cell grids collapse 4 to 2 to 1. The nav sits openly across the header, never trapped in a floating pill.
### Whitespace
Deliberate, not luxurious: tight cell padding, the rules themselves doing the dividing, and generous breathing room above the condensed headlines.
### Density
medium-high
### Responsive
Single full-bleed hero spans 100vw; contained content caps and centres at 1320px on ultra-wide; mobile stacks to one column, hides non-essential nav and table columns, and never overflows horizontally.
### Breakpoints
- **Mobile**: 390px
- **Tablet**: 768px
- **Desktop**: 1440px
- **Ultrawide**: 2560px
## Elevation & Depth
### Shadows
- **None**: none
- **Note**: Knockout uses no drop shadows; depth is inversion-on-interaction and crop-tick register marks.
## Shapes
### Rounded
- **None**: `0px`
- **Sm**: `0px`
- **Md**: `0px`
- **Lg**: `0px`
- **Full**: `9999px`
### Surfaces
- **Treatment**: screen-print
- **Card Style**: Flat plate (#161412) on ink-black stock, 1px hairline register rule, radius 0, no shadow; cells butt flush as a contact sheet with a vermilion crop tick at each corner.
- **Bg Pattern**: faint halftone dot field on ink-black stock
### Borders
- **Default Width**: 1px
- **Accent Width**: 2px
- **Style**: solid
- **Character**: Hairline register rules, not decorative outlines: structure comes from flush cell adjacency and corner crop ticks, never from gutters or heavy frames.
## Components
### Composition
Build scenes as a registration sheet of flush bordered cells — one dominant knockout-headline zone, one dense operational sheet, and supporting mono spec slips — with a vermilion crop tick at every corner where cells meet.
### Hierarchy
Scale-shock from condensed Anton caps first, then the knockout slab, then mono labels and hairline rules; body stays calm at 17px so the headline and the slab carry the volume.
### Density
Medium-high: many visible controls and summaries, every group a flush cell on the grid, so the sheet reads energetic but dead on register.
### Signature
Knockout type (accent reversed out of a slab, never a wash); a gapless cell grid with hairline rules and a vermilion crop tick at every corner; condensed Anton display over calm Inter body and mono metadata; zero drop shadows — depth is inversion-on-hover.
## 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-019ef950-bebb-7320-9c59-c98ea27217c8/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 Keep the ground ink-black; print bone-white ink and condensed caps onto it.
- Do Knock the one vermilion accent out of a phrase or a primary control so the colour reads through the type.
- Do Build structure from flush cells, hairline rules, and a vermilion crop tick at each corner — the registration sheet.
- Do Let condensed Anton caps and mono metadata carry the hierarchy while body stays calm at 17px.
- Don't Don't add drop shadows, floating cards, rounded corners, or any sense of elevation.
- Don't Don't use a paper-white ground, gradients, glass, or blur.
- Don't Don't introduce a second accent hue or let the vermilion flood a surface as a wash.
- Don't Don't separate cells with gutters; they butt flush and are divided only by the 1px rule.
### Accessibility
Bone #F4F1EA on ink-black #0E0D0C clears AAA for body; vermilion #FF3B14 carries dark #0E0D0C text on the knockout slab at AA-large for display sizes. Crop-tick register marks are inline SVG, never glyphs; all form controls are explicitly styled with a non-colour focus cue (a vermilion ink edge plus border change).
## Imagery Direction
### Pairs With
squeegee
### Summary
Screen-printed risograph imagery on ink-black stock: a single bold subject with heavy contour outlines, three-to-four flat ink separations, halftone-dot midtones, a hard offset registration shadow, and one flat vermilion knockout slab — the subject bleeding off all four edges.
### Subjects
- a printmaker's squeegee dragging a band of bone-white ink across a silkscreen
- press apparatus and registration marks on a black press bed
- a single bold object rendered as a stacked cut-paper print
- ink, mesh, and crop-tick marks of the screen-print process
### Usage
One full-bleed hero image per landing in the squeegee technique on ink-black stock, kept monochrome with a single vermilion knockout slab; never a literal product screenshot.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "knockout",
"type": "registry:theme",
"title": "Knockout shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#0E0D0C",
"foreground": "#F4F1EA",
"card": "#161412",
"card-foreground": "#F4F1EA",
"popover": "#161412",
"popover-foreground": "#F4F1EA",
"primary": "#FF3B14",
"primary-foreground": "#ffffff",
"secondary": "#161412",
"secondary-foreground": "#ffffff",
"muted": "#9A958A",
"muted-foreground": "#F4F1EA",
"accent": "#FF3B14",
"accent-foreground": "#ffffff",
"destructive": "#FF5A36",
"border": "#2B2926",
"input": "#2B2926",
"ring": "#FF3B14",
"chart-1": "#FF3B14",
"chart-2": "#161412",
"chart-3": "#FF3B14",
"chart-4": "#27C281",
"chart-5": "#FFB020",
"sidebar": "#161412",
"sidebar-foreground": "#F4F1EA",
"sidebar-primary": "#FF3B14",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#7FB2FF",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#2B2926",
"sidebar-ring": "#FF3B14",
"radius": "0"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#FF3B14",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#FF3B14",
"accent-foreground": "#ffffff",
"destructive": "#FF5A36",
"border": "#303642",
"input": "#303642",
"ring": "#FF3B14",
"chart-1": "#FF3B14",
"chart-2": "#161412",
"chart-3": "#FF3B14",
"chart-4": "#27C281",
"chart-5": "#FFB020",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#FF3B14",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#FF3B14",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#FF3B14",
"radius": "0"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ef950-bebb-7320-9c59-c98ea27217c8",
"slug": "knockout",
"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",
"info",
"muted",
"on_accent",
"primary",
"secondary",
"success",
"surface",
"text",
"warning"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"heading_transform",
"heading_weight",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"none",
"note"
],
"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 Knockoutand 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: #0E0D0C;
--foreground: #F4F1EA;
--card: #161412;
--card-foreground: #F4F1EA;
--popover: #161412;
--popover-foreground: #F4F1EA;
--primary: #FF3B14;
--primary-foreground: #ffffff;
--secondary: #161412;
--secondary-foreground: #ffffff;
--muted: #9A958A;
--muted-foreground: #F4F1EA;
--accent: #FF3B14;
--accent-foreground: #ffffff;
--destructive: #FF5A36;
--border: #2B2926;
--input: #2B2926;
--ring: #FF3B14;
--chart-1: #FF3B14;
--chart-2: #161412;
--chart-3: #FF3B14;
--chart-4: #27C281;
--chart-5: #FFB020;
--sidebar: #161412;
--sidebar-foreground: #F4F1EA;
--sidebar-primary: #FF3B14;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #7FB2FF;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #2B2926;
--sidebar-ring: #FF3B14;
--radius: 0;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #FF3B14;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #FF3B14;
--accent-foreground: #ffffff;
--destructive: #FF5A36;
--border: #303642;
--input: #303642;
--ring: #FF3B14;
--chart-1: #FF3B14;
--chart-2: #161412;
--chart-3: #FF3B14;
--chart-4: #27C281;
--chart-5: #FFB020;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #FF3B14;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #FF3B14;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #FF3B14;
--radius: 0;
}
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 KnockoutShadcnKit() {
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">Knockout</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": "knockout",
"type": "registry:theme",
"cssVars": {
"theme": {
"font-sans": "Inter, system-ui, sans-serif",
"font-mono": "Spline Sans Mono, ui-monospace, monospace",
"font-display": "Anton, Arial Narrow, sans-serif",
"radius": "0px"
},
"light": {
"background": "#0E0D0C",
"foreground": "#F4F1EA",
"card": "#161412",
"card-foreground": "#F4F1EA",
"popover": "#161412",
"popover-foreground": "#F4F1EA",
"primary": "#FF3B14",
"primary-foreground": "#0E0D0C",
"secondary": "#161412",
"secondary-foreground": "#F4F1EA",
"muted": "#161412",
"muted-foreground": "#9A958A",
"accent": "#FF3B14",
"accent-foreground": "#0E0D0C",
"destructive": "#FF5A36",
"destructive-foreground": "#0E0D0C",
"border": "#2B2926",
"input": "#2B2926",
"ring": "#FF3B14",
"chart-1": "#FF3B14",
"chart-2": "#F4F1EA",
"chart-3": "#9A958A",
"chart-4": "#27C281",
"chart-5": "#FFB020",
"radius": "0px"
},
"dark": {
"background": "#0E0D0C",
"foreground": "#F4F1EA",
"card": "#161412",
"card-foreground": "#F4F1EA",
"popover": "#161412",
"popover-foreground": "#F4F1EA",
"primary": "#FF3B14",
"primary-foreground": "#0E0D0C",
"secondary": "#161412",
"secondary-foreground": "#F4F1EA",
"muted": "#161412",
"muted-foreground": "#9A958A",
"accent": "#FF3B14",
"accent-foreground": "#0E0D0C",
"destructive": "#FF5A36",
"destructive-foreground": "#0E0D0C",
"border": "#2B2926",
"input": "#2B2926",
"ring": "#FF3B14",
"chart-1": "#FF3B14",
"chart-2": "#F4F1EA",
"chart-3": "#9A958A",
"chart-4": "#27C281",
"chart-5": "#FFB020",
"radius": "0px"
}
},
"visualProfile": {
"mode": "dark",
"ground": "#0E0D0C",
"radius": 0,
"borders": { "style": "solid", "width": "1px", "color": "#2B2926", "character": "hairline register rules; structure from flush cells, never gutters or shadows" },
"shadows": "none",
"accentUsage": "single vermilion knockout slab punched behind a phrase or filling a primary control; never a wash",
"ornament": "vermilion crop ticks at cell corners (registration marks); inline SVG crosshair primitives, never glyphs",
"typography": { "display": "Anton (condensed caps)", "body": "Inter", "mono": "Spline Sans Mono", "transform": "uppercase display, sentence body" },
"material": "flat screen-printed plates on ink-black stock with a faint halftone dot field; no glass, gradient, or blur"
}
}
# Knockout shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019ef950-bebb-7320-9c59-c98ea27217c8`
Slug: `knockout`
## Intent
A screen-printed interface language that inverts the press: the stock is ink-black, the ink is bone-white, and the one loud colour is removed from the type — knocked out — so the vermilion slab reads through the letterforms. Structure is a registration sheet: flush cells, hairline rules, a crop tick punched at every corner. Nothing floats; nothing has a drop shadow.
## 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": "#0E0D0C",
"surface": "#161412",
"text": "#F4F1EA",
"muted": "#9A958A",
"border": "#2B2926",
"accent": "#FF3B14",
"on_accent": "#0E0D0C",
"primary": "#FF3B14",
"secondary": "#161412",
"success": "#27C281",
"warning": "#FFB020",
"error": "#FF5A36",
"info": "#7FB2FF"
}
Typography:
{
"base_size": "17px",
"body_font": "Inter",
"heading_font": "Anton",
"mono_font": "Spline Sans Mono",
"heading_weight": "400",
"heading_transform": "uppercase",
"letter_spacing": "0.005em",
"line_height": 1.6,
"scale_ratio": 1.25,
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Anton&family=Inter:wght@400;500;600;700&family=Spline+Sans+Mono:wght@400;500;600&display=swap"
}
## Visual character to preserve
- The ground is fixed ink-black #0E0D0C with a faint halftone dot field, so the stock reads as printed paper rather than flat digital black.
- Headlines are tall condensed Anton caps stacked in short lines, with one line reversed out of a vermilion knockout slab; body holds calm at 17px Inter and metadata runs in mono.
- Layout is a gapless registration sheet — cells butt flush, divided only by 1px hairline rules, with a 2px vermilion crop tick (an inline-SVG crosshair) punched at every corner where four cells meet.
- There are no drop shadows anywhere: depth comes from controls inverting on hover and seating 1px on press, and from the crop-tick register marks.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "solid",
"underlay": false,
"grain": true,
"stickerBadges": false,
"motion": "still",
"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/knockout/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: Keep the ground ink-black; print bone-white ink and condensed caps onto it.; Knock the one vermilion accent out of a phrase or a primary control so the colour reads through the type.; Build structure from flush cells, hairline rules, and a vermilion crop tick at each corner — the registration sheet.; Let condensed Anton caps and mono metadata carry the hierarchy while body stays calm at 17px.
- Do not: Don't add drop shadows, floating cards, rounded corners, or any sense of elevation.; Don't use a paper-white ground, gradients, glass, or blur.; Don't introduce a second accent hue or let the vermilion flood a surface as a wash.; Don't separate cells with gutters; they butt flush and are divided only by the 1px rule.
## 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 KnockoutShadcnKit() {
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">Knockout</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": "An edge-to-edge registration sheet: split sheets pair a wide knockout-headline cell with a narrower mono spec column; internal cell grids collapse 4 to 2 to 1. The nav sits openly across the header, never trapped in a floating pill.",
"whitespace": "Deliberate, not luxurious: tight cell padding, the rules themselves doing the dividing, and generous breathing room above the condensed headlines.",
"density": "medium-high",
"responsive": "Single full-bleed hero spans 100vw; contained content caps and centres at 1320px on ultra-wide; mobile stacks to one column, hides non-essential nav and table columns, and never overflows horizontally.",
"breakpoints": {
"mobile": "390px",
"tablet": "768px",
"desktop": "1440px",
"ultrawide": "2560px"
}
}
{
"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-019ef950-bebb-7320-9c59-c98ea27217c8",
"name": "Knockout",
"slug": "knockout"
},
"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 ground is fixed ink-black #0E0D0C with a faint halftone dot field, so the stock reads as printed paper rather than flat digital black.",
"Headlines are tall condensed Anton caps stacked in short lines, with one line reversed out of a vermilion knockout slab; body holds calm at 17px Inter and metadata runs in mono.",
"Layout is a gapless registration sheet — cells butt flush, divided only by 1px hairline rules, with a 2px vermilion crop tick (an inline-SVG crosshair) punched at every corner where four cells meet.",
"There are no drop shadows anywhere: depth comes from controls inverting on hover and seating 1px on press, and from the crop-tick register marks."
],
"visualProfile": {
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "solid",
"underlay": false,
"grain": true,
"stickerBadges": false,
"motion": "still",
"density": "dense",
"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": "Knockout 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": [
"Keep the ground ink-black; print bone-white ink and condensed caps onto it.",
"Knock the one vermilion accent out of a phrase or a primary control so the colour reads through the type.",
"Build structure from flush cells, hairline rules, and a vermilion crop tick at each corner — the registration sheet.",
"Let condensed Anton caps and mono metadata carry the hierarchy while body stays calm at 17px."
],
"dont": [
"Don't add drop shadows, floating cards, rounded corners, or any sense of elevation.",
"Don't use a paper-white ground, gradients, glass, or blur.",
"Don't introduce a second accent hue or let the vermilion flood a surface as a wash.",
"Don't separate cells with gutters; they butt flush and are divided only by the 1px rule."
]
}
}