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 screens as editorial collages: one dominant hero slab, several overlapping die-cut support cards, and a rhythm of circular stickers, rotated ribbons and mini-panels anchored to shared baseline gutters so the deliberate chaos still scans cleanly.
Oversized Bungee headlines, saturated color bands, circular KPI stickers and black keylines make primary actions and numbers readable from a distance before body copy resolves. One button is clearly primary (hot-pink fill); the rest stay quieter but share one shape and height.
Keep density lively and high, but chunk information into bold blocks with visible gutters and breathing strips so the eye gets punctuation between intense color moments; never crowd one corner beside a starved void.
A 12-column desktop collage grid with one oversized primary column and one narrower utility column; allow intentional overlap but anchor each cluster to shared baseline gutters. Contained content caps and centers on ultra-wide; only the full-bleed hero spans 100vw.
Desktop keeps overlapping cards and floating stickers. Tablet (768-1024) is its own considered layout — a 2-column stack with reduced overlap and shallow ribbons, never the mobile column stretched wide. Mobile becomes a single column with badges tucked inside cards, oversized headlines shrinking with clamp() and wrapping (never clipping), nav wrapping to rows, and tables scrolling inside their own wrapper.
Whitespace is the reset between bursts of color and type; breathing strips around each cluster keep the composition curated and density balanced across the canvas.
Pop-art comic screenprint: thick black ink outlines, ben-day halftone shading, saturated pink/cyan/yellow color blocking on white, die-cut sticker cutouts with hard offset shadows and burst rays.
comic screenprint / silkscreen pop-art
plakat-pop-screenprint
hot pink #FF2D7A, electric cyan #00C7F2, saturated yellow #FFD84D, comic-ink black #141414 on white
subject-agnostic — dresses a boombox, a face, a city skyline or a teapot equally
# Plakat
## Philosophy
Plakat is a maximalist pop system: it presses an interface like a limited-run poster — thick comic-ink keylines, ben-day halftone fields, adjacent slabs of hot pink, electric cyan and saturated yellow, and die-cut cards that stack like stickers on a wall. It keeps the loud, collectible, joyfully commercial character of pop art and Memphis-era exuberance while holding all of it inside a strict grid and one clear hierarchy so the noise always scans.
### Values
- graphic excess held together by legible structure
- consumer-culture brightness and instant readability
- playful, collectible, toy-shelf energy
- editorial collage layering with deliberate overlap
- high-contrast hierarchy that reads from across the room
### Anti-Values
- timid neutrality and invisible card edges
- austere restraint or quiet monochrome polish
- corporate pastel washes and frictionless sameness
- noise so dense that hierarchy disappears
### Visual Character
- Every major surface wears a bold black comic-ink keyline with a hard, un-blurred offset shadow, so cards read like cutout posters pasted on a wall rather than soft digital glass.
- Hero and header zones combine a page-wide ben-day halftone dot field, radiating burst rays, circular sticker badges and slightly rotated ribbon labels into a layered collage.
- Display type is oversized and uppercase (Bungee); supporting labels use compact monospace to mimic packaging callouts and magazine captions.
- Color blocking uses hot pink, electric cyan and saturated yellow in adjacent flat slabs against black-on-white, never tonal gradients.
- Containers use die-cut geometry: one clipped corner, circular KPI stickers that overlap the grid, and pill badges — the collectible-object rhythm.
## Tokens
### Colors
| Name | Value |
|------|-------|
| bg | `#FFF4F8` |
| surface | `#FFFFFF` |
| surface_solid | `#FFFFFF` |
| text | `#141414` |
| muted | `#6A5A66` |
| border | `#141414` |
| accent | `#FF2D7A` |
| accent_2 | `#00C7F2` |
| accent_soft | `#FFD84D` |
| on_accent | `#141414` |
| success | `#17B978` |
| warning | `#FF9F1C` |
| error | `#FF3B30` |
| info | `#00C7F2` |
### Typography
- **Base Size**: 17px
- **Body Font**: Space Grotesk, sans-serif
- **Heading Font**: Bungee, sans-serif
- **Mono Font**: IBM Plex Mono, monospace
- **Heading Weight**: 400
- **Heading Transform**: uppercase
- **Letter Spacing**: 0.01em
- **Line Height**: 1.5
- **Scale Ratio**: 1.25
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Bungee&family=IBM+Plex+Mono:wght@400;500;600&family=Space+Grotesk:wght@400;500;600;700&display=swap
### Radii
- **None**: 0px
- **Md**: 16px
- **Lg**: 24px
- **Full**: 9999px
### Shadows
- **Sm**: 4px 4px 0 0 #141414
- **Md**: 7px 7px 0 0 #141414
- **Lg**: 12px 12px 0 0 #141414
### Spacing
- **Base**: 8px
- **Scale**: [4,8,12,16,24,32,48,64]
### Surfaces
- **Treatment**: paper / cutout poster
- **Card Style**: Bright white or candy-tinted cards over a page-wide ben-day halftone dot field, wrapped in bold black comic-ink keylines with hard offset shadows and one die-cut clipped corner.
- **Bg Pattern**: dots
### Borders
- **Default Width**: 3px
- **Accent Width**: 4px
- **Style**: solid
- **Character**: Comic-book ink contours: dark, assertive, always visible, wrapping whole surfaces to separate overlapping layers — never a timid grey edge and never a single-side accent edge.
### Motion
- **Duration**: 150ms
- **Easing**: cubic-bezier(0.2,0.9,0.2,1)
- **Philosophy**: snappy pressed-print — controls translate a few px while the hard offset shadow collapses
## Rules
### Composition
Build screens as editorial collages: one dominant hero slab, several overlapping die-cut support cards, and a rhythm of circular stickers, rotated ribbons and mini-panels anchored to shared baseline gutters so the deliberate chaos still scans cleanly.
### Hierarchy
Oversized Bungee headlines, saturated color bands, circular KPI stickers and black keylines make primary actions and numbers readable from a distance before body copy resolves. One button is clearly primary (hot-pink fill); the rest stay quieter but share one shape and height.
### Density
Keep density lively and high, but chunk information into bold blocks with visible gutters and breathing strips so the eye gets punctuation between intense color moments; never crowd one corner beside a starved void.
### Signature Patterns
- Die-cut cutout card — panels clip one corner and drop a hard offset shadow, reading like die-cut packaging instead of a rounded rectangle.
- Ribbon section header — headers sit on a slightly rotated cyan ribbon with an uppercase mono label and offset shadow.
- Circular KPI sticker — statistic callouts live in circular or pill badges that overlap adjacent cards and break the grid.
- Halftone + burst field — backgrounds carry a page-wide ben-day dot field with burst rays in hero zones.
- Pressed-print interaction — controls translate a few pixels on hover/press as their offset shadow collapses.
## Layout
### Grid
A 12-column desktop collage grid with one oversized primary column and one narrower utility column; allow intentional overlap but anchor each cluster to shared baseline gutters. Contained content caps and centers on ultra-wide; only the full-bleed hero spans 100vw.
### Breakpoints
Desktop keeps overlapping cards and floating stickers. Tablet (768-1024) is its own considered layout — a 2-column stack with reduced overlap and shallow ribbons, never the mobile column stretched wide. Mobile becomes a single column with badges tucked inside cards, oversized headlines shrinking with clamp() and wrapping (never clipping), nav wrapping to rows, and tables scrolling inside their own wrapper.
### Whitespace
Whitespace is the reset between bursts of color and type; breathing strips around each cluster keep the composition curated and density balanced across the canvas.
## Guidance
### Do
- Wrap every important surface in a black keyline with a hard offset shadow.
- Pair oversized Bungee display type with compact mono labels and badges.
- Overlap stickers, ribbons and circular metrics so some elements break the grid.
- Use saturated adjacent color slabs instead of quiet tonal palettes.
- Fully style every form control, including selects, checkboxes, switches and ranges.
- Keep buttons and chips on one line; body text at 17px+.
### Don't
- Rely on subtle grey borders or invisible card edges.
- Center everything into a polite, symmetrical dashboard.
- Mute the palette into corporate pastels or monochrome restraint.
- Use browser-default form controls.
- Let a headline clip at 390px, or pile noise so thickly that hierarchy disappears.
## Imagery Direction
### Summary
Pop-art comic screenprint: thick black ink outlines, ben-day halftone shading, saturated pink/cyan/yellow color blocking on white, die-cut sticker cutouts with hard offset shadows and burst rays.
### Technique
comic screenprint / silkscreen pop-art
### Pairs With
plakat-pop-screenprint
### Palette
hot pink #FF2D7A, electric cyan #00C7F2, saturated yellow #FFD84D, comic-ink black #141414 on white
### Subjects
subject-agnostic — dresses a boombox, a face, a city skyline or a teapot equally
### Credits
- {"name":"Roy Lichtenstein","kind":"artist","note":"ben-day dots, comic-panel outlines"}
- {"name":"Andy Warhol","kind":"artist","note":"pop-art silkscreen, saturated color blocking"}
- {"name":"Memphis-Milano","kind":"movement","note":"postmodern maximalist exuberance"}
- {"name":"Mid-century silkscreen poster","kind":"tradition","note":"cutout-poster layering and hard offset registration"}
---
version: "alpha"
name: "Plakat"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#FFF4F8"
surface: "#FFFFFF"
surface_solid: "#FFFFFF"
text: "#141414"
muted: "#6A5A66"
border: "#141414"
accent: "#FF2D7A"
accent_2: "#00C7F2"
accent_soft: "#FFD84D"
on_accent: "#141414"
success: "#17B978"
warning: "#FF9F1C"
error: "#FF3B30"
info: "#00C7F2"
typography:
headline-lg:
fontFamily: "Bungee, sans-serif"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "0.01em"
headline-md:
fontFamily: "Bungee, sans-serif"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "0.01em"
body-md:
fontFamily: "Space Grotesk, sans-serif"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "0.01em"
label-md:
fontFamily: "IBM Plex Mono, monospace"
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: "16px"
xl: "24px"
2xl: "32px"
3xl: "48px"
4xl: "64px"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_solid:
backgroundColor: "{colors.surface_solid}"
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_soft:
backgroundColor: "{colors.accent_soft}"
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"
---
# Plakat
## Overview
Plakat is a maximalist pop system: it presses an interface like a limited-run poster — thick comic-ink keylines, ben-day halftone fields, adjacent slabs of hot pink, electric cyan and saturated yellow, and die-cut cards that stack like stickers on a wall. It keeps the loud, collectible, joyfully commercial character of pop art and Memphis-era exuberance while holding all of it inside a strict grid and one clear hierarchy so the noise always scans.
### Values
- graphic excess held together by legible structure
- consumer-culture brightness and instant readability
- playful, collectible, toy-shelf energy
- editorial collage layering with deliberate overlap
- high-contrast hierarchy that reads from across the room
### Anti-Values
- timid neutrality and invisible card edges
- austere restraint or quiet monochrome polish
- corporate pastel washes and frictionless sameness
- noise so dense that hierarchy disappears
### Visual Character
- Every major surface wears a bold black comic-ink keyline with a hard, un-blurred offset shadow, so cards read like cutout posters pasted on a wall rather than soft digital glass.
- Hero and header zones combine a page-wide ben-day halftone dot field, radiating burst rays, circular sticker badges and slightly rotated ribbon labels into a layered collage.
- Display type is oversized and uppercase (Bungee); supporting labels use compact monospace to mimic packaging callouts and magazine captions.
- Color blocking uses hot pink, electric cyan and saturated yellow in adjacent flat slabs against black-on-white, never tonal gradients.
- Containers use die-cut geometry: one clipped corner, circular KPI stickers that overlap the grid, and pill badges — the collectible-object rhythm.
## 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 | `#FFF4F8` |
| surface | `#FFFFFF` |
| surface_solid | `#FFFFFF` |
| text | `#141414` |
| muted | `#6A5A66` |
| border | `#141414` |
| accent | `#FF2D7A` |
| accent_2 | `#00C7F2` |
| accent_soft | `#FFD84D` |
| on_accent | `#141414` |
| success | `#17B978` |
| warning | `#FF9F1C` |
| error | `#FF3B30` |
| info | `#00C7F2` |
## Typography
- **Headline-Lg**: Bungee, sans-serif, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Bungee, sans-serif, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Space Grotesk, sans-serif, 17px, weight 400, line-height 1.5.
- **Label-Md**: IBM Plex Mono, monospace, 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
A 12-column desktop collage grid with one oversized primary column and one narrower utility column; allow intentional overlap but anchor each cluster to shared baseline gutters. Contained content caps and centers on ultra-wide; only the full-bleed hero spans 100vw.
### Breakpoints
Desktop keeps overlapping cards and floating stickers. Tablet (768-1024) is its own considered layout — a 2-column stack with reduced overlap and shallow ribbons, never the mobile column stretched wide. Mobile becomes a single column with badges tucked inside cards, oversized headlines shrinking with clamp() and wrapping (never clipping), nav wrapping to rows, and tables scrolling inside their own wrapper.
### Whitespace
Whitespace is the reset between bursts of color and type; breathing strips around each cluster keep the composition curated and density balanced across the canvas.
## Elevation & Depth
### Shadows
- **Sm**: 4px 4px 0 0 #141414
- **Md**: 7px 7px 0 0 #141414
- **Lg**: 12px 12px 0 0 #141414
## Shapes
### Rounded
- **None**: `0px`
- **Md**: `16px`
- **Lg**: `24px`
- **Full**: `9999px`
### Surfaces
- **Treatment**: paper / cutout poster
- **Card Style**: Bright white or candy-tinted cards over a page-wide ben-day halftone dot field, wrapped in bold black comic-ink keylines with hard offset shadows and one die-cut clipped corner.
- **Bg Pattern**: dots
### Borders
- **Default Width**: 3px
- **Accent Width**: 4px
- **Style**: solid
- **Character**: Comic-book ink contours: dark, assertive, always visible, wrapping whole surfaces to separate overlapping layers — never a timid grey edge and never a single-side accent edge.
## Components
### Composition
Build screens as editorial collages: one dominant hero slab, several overlapping die-cut support cards, and a rhythm of circular stickers, rotated ribbons and mini-panels anchored to shared baseline gutters so the deliberate chaos still scans cleanly.
### Hierarchy
Oversized Bungee headlines, saturated color bands, circular KPI stickers and black keylines make primary actions and numbers readable from a distance before body copy resolves. One button is clearly primary (hot-pink fill); the rest stay quieter but share one shape and height.
### Density
Keep density lively and high, but chunk information into bold blocks with visible gutters and breathing strips so the eye gets punctuation between intense color moments; never crowd one corner beside a starved void.
### Signature Patterns
- Die-cut cutout card — panels clip one corner and drop a hard offset shadow, reading like die-cut packaging instead of a rounded rectangle.
- Ribbon section header — headers sit on a slightly rotated cyan ribbon with an uppercase mono label and offset shadow.
- Circular KPI sticker — statistic callouts live in circular or pill badges that overlap adjacent cards and break the grid.
- Halftone + burst field — backgrounds carry a page-wide ben-day dot field with burst rays in hero zones.
- Pressed-print interaction — controls translate a few pixels on hover/press as their offset shadow collapses.
## 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-019f3dbe-fcec-7783-a8a6-24c3d4a48736/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 Wrap every important surface in a black keyline with a hard offset shadow.
- Do Pair oversized Bungee display type with compact mono labels and badges.
- Do Overlap stickers, ribbons and circular metrics so some elements break the grid.
- Do Use saturated adjacent color slabs instead of quiet tonal palettes.
- Do Fully style every form control, including selects, checkboxes, switches and ranges.
- Do Keep buttons and chips on one line; body text at 17px+.
- Don't Rely on subtle grey borders or invisible card edges.
- Don't Center everything into a polite, symmetrical dashboard.
- Don't Mute the palette into corporate pastels or monochrome restraint.
- Don't Use browser-default form controls.
- Don't Let a headline clip at 390px, or pile noise so thickly that hierarchy disappears.
## Imagery Direction
### Summary
Pop-art comic screenprint: thick black ink outlines, ben-day halftone shading, saturated pink/cyan/yellow color blocking on white, die-cut sticker cutouts with hard offset shadows and burst rays.
### Technique
comic screenprint / silkscreen pop-art
### Pairs With
plakat-pop-screenprint
### Palette
hot pink #FF2D7A, electric cyan #00C7F2, saturated yellow #FFD84D, comic-ink black #141414 on white
### Subjects
subject-agnostic — dresses a boombox, a face, a city skyline or a teapot equally
### Credits
- {"name":"Roy Lichtenstein","kind":"artist","note":"ben-day dots, comic-panel outlines"}
- {"name":"Andy Warhol","kind":"artist","note":"pop-art silkscreen, saturated color blocking"}
- {"name":"Memphis-Milano","kind":"movement","note":"postmodern maximalist exuberance"}
- {"name":"Mid-century silkscreen poster","kind":"tradition","note":"cutout-poster layering and hard offset registration"}
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "plakat",
"type": "registry:theme",
"title": "Plakat shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#FFF4F8",
"foreground": "#141414",
"card": "#FFFFFF",
"card-foreground": "#141414",
"popover": "#FFFFFF",
"popover-foreground": "#141414",
"primary": "#141414",
"primary-foreground": "#ffffff",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#6A5A66",
"muted-foreground": "#141414",
"accent": "#FF2D7A",
"accent-foreground": "#ffffff",
"destructive": "#FF3B30",
"border": "#141414",
"input": "#141414",
"ring": "#FF2D7A",
"chart-1": "#141414",
"chart-2": "#f4f4f5",
"chart-3": "#FF2D7A",
"chart-4": "#17B978",
"chart-5": "#FF9F1C",
"sidebar": "#FFFFFF",
"sidebar-foreground": "#141414",
"sidebar-primary": "#141414",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#00C7F2",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#141414",
"sidebar-ring": "#FF2D7A",
"radius": "16px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#141414",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#FF2D7A",
"accent-foreground": "#ffffff",
"destructive": "#FF3B30",
"border": "#303642",
"input": "#303642",
"ring": "#FF2D7A",
"chart-1": "#141414",
"chart-2": "#f4f4f5",
"chart-3": "#FF2D7A",
"chart-4": "#17B978",
"chart-5": "#FF9F1C",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#141414",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#FF2D7A",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#FF2D7A",
"radius": "16px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019f3dbe-fcec-7783-a8a6-24c3d4a48736",
"slug": "plakat",
"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_soft",
"bg",
"border",
"error",
"info",
"muted",
"on_accent",
"success",
"surface",
"surface_solid",
"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"
],
"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 Plakatand 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: #FFF4F8;
--foreground: #141414;
--card: #FFFFFF;
--card-foreground: #141414;
--popover: #FFFFFF;
--popover-foreground: #141414;
--primary: #141414;
--primary-foreground: #ffffff;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #6A5A66;
--muted-foreground: #141414;
--accent: #FF2D7A;
--accent-foreground: #ffffff;
--destructive: #FF3B30;
--border: #141414;
--input: #141414;
--ring: #FF2D7A;
--chart-1: #141414;
--chart-2: #f4f4f5;
--chart-3: #FF2D7A;
--chart-4: #17B978;
--chart-5: #FF9F1C;
--sidebar: #FFFFFF;
--sidebar-foreground: #141414;
--sidebar-primary: #141414;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #00C7F2;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #141414;
--sidebar-ring: #FF2D7A;
--radius: 16px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #141414;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #FF2D7A;
--accent-foreground: #ffffff;
--destructive: #FF3B30;
--border: #303642;
--input: #303642;
--ring: #FF2D7A;
--chart-1: #141414;
--chart-2: #f4f4f5;
--chart-3: #FF2D7A;
--chart-4: #17B978;
--chart-5: #FF9F1C;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #141414;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #FF2D7A;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #FF2D7A;
--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 PlakatShadcnKit() {
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">Plakat</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": "plakat",
"type": "registry:theme",
"author": "katagami-agent",
"title": "Plakat",
"description": "Maximalist pop system — comic-ink keylines, ben-day halftone, adjacent slabs of hot pink / electric cyan / saturated yellow, and die-cut cards that stack like stickers with hard offset shadows.",
"cssVars": {
"theme": {
"font-sans": "Space Grotesk, sans-serif",
"font-mono": "IBM Plex Mono, monospace",
"font-display": "Bungee, sans-serif",
"radius": "0px"
},
"light": {
"background": "#FFF4F8",
"foreground": "#141414",
"card": "#FFFFFF",
"card-foreground": "#141414",
"popover": "#FFFFFF",
"popover-foreground": "#141414",
"primary": "#FF2D7A",
"primary-foreground": "#FFFFFF",
"secondary": "#00C7F2",
"secondary-foreground": "#141414",
"muted": "#FFE9F1",
"muted-foreground": "#6A5A66",
"accent": "#FFD84D",
"accent-foreground": "#141414",
"destructive": "#FF3B30",
"destructive-foreground": "#FFFFFF",
"border": "#141414",
"input": "#141414",
"ring": "#00C7F2",
"chart-1": "#FF2D7A",
"chart-2": "#00C7F2",
"chart-3": "#FFD84D",
"chart-4": "#17B978",
"chart-5": "#FF9F1C"
},
"dark": {
"background": "#141414",
"foreground": "#FFF4F8",
"card": "#1E1A1C",
"card-foreground": "#FFF4F8",
"popover": "#1E1A1C",
"popover-foreground": "#FFF4F8",
"primary": "#FF2D7A",
"primary-foreground": "#141414",
"secondary": "#00C7F2",
"secondary-foreground": "#141414",
"muted": "#2A2427",
"muted-foreground": "#C9BAC2",
"accent": "#FFD84D",
"accent-foreground": "#141414",
"destructive": "#FF3B30",
"destructive-foreground": "#141414",
"border": "#FFF4F8",
"input": "#FFF4F8",
"ring": "#00C7F2",
"chart-1": "#FF2D7A",
"chart-2": "#00C7F2",
"chart-3": "#FFD84D",
"chart-4": "#17B978",
"chart-5": "#FF9F1C"
}
},
"visualProfile": {
"family": "pop-graphic",
"material": "cutout-poster",
"contour": "die-cut clipped corner",
"border": "bold black comic-ink keyline (3-4px)",
"underlay": true,
"grain": true,
"stickerBadges": true,
"motion": "snappy pressed-print — translate a few px, offset shadow collapses",
"density": "high, chunked with breathing gutters",
"accents": ["#FF2D7A", "#00C7F2", "#FFD84D"]
},
"notes": "Radius is 0 by default (die-cut). Every surface carries a solid black keyline and a hard, un-blurred offset shadow (e.g. 4px 4px 0 #141414). Buttons and chips never wrap; the hot-pink button is the single primary. Circular KPI stickers and rotated cyan ribbons overlap card edges to break the grid on purpose. A page-wide ben-day halftone dot field is the recurring ornament. Semantic colors (success/warning/error) stay small and never become the visual lead."
}
# Plakat — shadcn/ui Components
> Author: `katagami-agent`
> Language: Plakat — a maximalist pop system. Comic-ink keylines, ben-day halftone, adjacent slabs of hot pink / electric cyan / saturated yellow, and die-cut cards that stack like stickers with hard offset shadows.
Plakat presses your interface like a limited-run poster. Every shadcn primitive keeps that character: a bold black keyline, a hard un-blurred offset shadow, a 0px die-cut radius, and one loud primary action. This document maps the language onto shadcn/ui and gives copy-paste recipes.
---
## ShadSync visual profile
The renderer reads this profile to keep every generated component looking like Plakat, not a generic house chassis.
| Field | Value |
|-------|-------|
| family | pop-graphic |
| material | cutout-poster |
| contour | die-cut clipped corner |
| border | bold black comic-ink keyline, 3–4px solid `#141414` |
| radius | `0px` default; `9999px` for stickers, pills, toggles |
| underlay | true — hard offset shadow `4px 4px 0 #141414`, no blur |
| grain | true — page-wide ben-day halftone dot field |
| stickerBadges | true — circular KPI stickers overlap card edges |
| motion | snappy pressed-print; translate a few px, offset shadow collapses |
| density | high, chunked with breathing gutters |
| accents | `#FF2D7A` hot pink · `#00C7F2` electric cyan · `#FFD84D` saturated yellow |
**Type roles:** Bungee (display), Space Grotesk (body, 17px+), IBM Plex Mono (labels/buttons/captions, uppercase, `0.11em` tracking). No stray faces, no one-off sizes.
**Non-negotiables:** no grey borders; keyline wraps the whole surface (never a single accent edge); buttons and chips never wrap; the hot-pink button is the only primary; semantic colors stay small.
---
## Signature component recipes
These are the moves that make a shadcn screen read as Plakat.
### 1. Die-cut card
A `Card` with `rounded-none`, a `border-[3px] border-black`, a hard offset shadow, and one clipped corner via `clip-path`. Optionally tint the fill with a candy wash (pink/cyan/yellow at ~12%).
### 2. Pressed-print button
A `Button` in mono uppercase. On hover it translates `translate(3px,3px)` while the shadow shrinks from `4px 4px` to `1px 1px`; on active it lands flush. Primary = hot-pink fill, white text.
### 3. Circular KPI sticker
An absolutely-positioned round `Badge` (`rounded-full`, keyline, offset shadow, slight rotation) that overlaps the top-right corner of a card to break the grid.
### 4. Ribbon section header
A `Badge`-like cyan strip, rotated ~-1.5°, uppercase mono label, offset shadow — a pasted editorial annotation above a section.
### 5. Highlighter link
A link whose underline is a yellow highlighter swipe (`::after` scaleX on hover), never a bare default underline.
---
## Preview shots
The renderable preview scenes live in `preview-shots.json` (`renderable-v1`, all 16 primitives, ≥3 product scenes). They render a Press Room dashboard, a poster-run form, and a collector catalog table — each showing die-cut cards, KPI stickers, ribbon headers, the halftone field, and the pressed-print buttons. Use those scenes as the golden reference for how primitives compose in Plakat.
---
## Copy-paste component example
A die-cut card with a KPI sticker and a pressed-print primary button, using the `@/components/ui/` primitives:
```tsx
import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"
import { Button } from "@/components/ui/button"
import { Badge } from "@/components/ui/badge"
export function RunCard() {
return (
<Card className="relative rounded-none border-[3px] border-black bg-white
shadow-[7px_7px_0_0_#141414]
[clip-path:polygon(0_0,calc(100%-24px)_0,100%_24px,100%_100%,0_100%)]">
<Badge
className="absolute -top-5 -right-4 grid h-16 w-16 place-content-center rounded-full
rotate-[8deg] border-[3px] border-black bg-[#FF2D7A] text-white
font-[Bungee] shadow-[4px_4px_0_0_#141414]"
>
48K
</Badge>
<CardHeader>
<CardTitle className="font-[Bungee] uppercase tracking-[0.01em]">
Boombox Summer
</CardTitle>
</CardHeader>
<CardContent className="space-y-4">
<p className="text-[17px] leading-relaxed text-[#141414]">
Run #048 is pressed, cured, and on the shelf.
</p>
<Button
className="rounded-none border-[3px] border-black bg-[#FF2D7A] text-white
font-mono uppercase tracking-[0.09em]
shadow-[4px_4px_0_0_#141414] transition
hover:translate-x-[3px] hover:translate-y-[3px]
hover:shadow-[1px_1px_0_0_#141414]"
>
Send to press
</Button>
</CardContent>
</Card>
)
}
```
Every other primitive in `@/components/ui/` follows the same three rules: `rounded-none` (or `rounded-full` for stickers), a solid black keyline, and a hard offset shadow. Keep labels in mono uppercase, keep the palette to the three accents plus ink and white, and let stickers and ribbons overlap the grid on purpose.
{
"artifact": "katagami:shadcn-preview-shots",
"version": "preview-shots-v1",
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"renderable": true,
"author": "katagami-agent",
"requiresVisualProfile": true,
"language": {
"id": "plakat",
"name": "Plakat",
"slug": "plakat"
},
"installCommand": "npx shadcn@latest add https://katagami.ai/r/plakat.json",
"primitives": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"identityNotes": [
"Every surface wears a solid black comic-ink keyline (3-4px) with a hard, un-blurred offset shadow like a cutout pasted on a wall.",
"Default radius is 0 (die-cut); pills, toggles and circular KPI stickers use 9999.",
"Cards clip one corner via clip-path so they read like die-cut packaging, not rounded rectangles.",
"Palette is three highlighter accents (hot pink, electric cyan, saturated yellow) over ink and white; semantic colors stay small.",
"Display is Bungee uppercase; body is Space Grotesk 17px+; labels are IBM Plex Mono uppercase with wide tracking.",
"Buttons and chips never wrap; the hot-pink button is the single primary and the rest stay quieter.",
"Circular KPI stickers and slightly rotated cyan ribbons overlap card edges to break the grid on purpose.",
"A page-wide ben-day halftone dot field is the recurring ornament; burst rays appear only in hero zones.",
"Interaction is pressed-print: controls translate a few px while the offset shadow collapses."
],
"visualProfile": {
"family": "pop-graphic",
"material": "cutout-poster",
"contour": "die-cut clipped corner",
"border": "bold black comic-ink keyline, 3-4px solid #141414",
"underlay": true,
"grain": true,
"stickerBadges": true,
"motion": "snappy pressed-print — translate a few px, offset shadow collapses",
"density": "high, chunked with breathing gutters",
"accents": ["#FF2D7A", "#00C7F2", "#FFD84D"]
},
"tokens": {
"background": "#FFF4F8",
"surface": "#FFFFFF",
"foreground": "#141414",
"muted": "#6A5A66",
"border": "#141414",
"primary": "#FF2D7A",
"primaryForeground": "#FFFFFF",
"secondary": "#00C7F2",
"secondaryForeground": "#141414",
"accent": "#FFD84D",
"accentForeground": "#141414",
"success": "#17B978",
"warning": "#FF9F1C",
"error": "#FF3B30",
"info": "#00C7F2",
"radiusNone": "0px",
"radiusMd": "16px",
"radiusLg": "24px",
"radiusFull": "9999px",
"shadowSm": "4px 4px 0 0 #141414",
"shadowMd": "7px 7px 0 0 #141414",
"shadowLg": "12px 12px 0 0 #141414",
"fontDisplay": "Bungee, sans-serif",
"fontBody": "Space Grotesk, sans-serif",
"fontMono": "IBM Plex Mono, monospace"
},
"shots": [
{
"id": "press-room",
"title": "Press Room dashboard",
"viewport": "desktop",
"primitives": ["card", "badge", "button", "table", "tabs", "separator", "tooltip", "dropdown-menu"],
"composition": "A KPI header row of four die-cut cards, each with a circular KPI sticker overlapping its top-right corner, above a cyan-ribboned run table with pill status badges; a tabs strip switches between Live and Curing.",
"mustShow": [
"circular KPI sticker overlapping a card corner",
"rotated cyan ribbon section header",
"hard offset black shadow under every card",
"pill status badges (live / curing / sold out)",
"single hot-pink primary button"
],
"avoid": ["grey borders", "soft blurred shadows", "rounded card corners on every side", "wrapping button labels"],
"scene": {
"headline": "This week on the wall",
"description": "Track poster runs, collectors, and on-shelf rate at a glance.",
"stats": [
{"label": "Prints sold", "value": "48.2K", "trend": "+18%"},
{"label": "New collectors", "value": "1,204", "trend": "+6%"},
{"label": "Runs curing", "value": "12", "trend": "-3%"},
{"label": "On-shelf rate", "value": "99.1%", "trend": "+41%"}
]
}
},
{
"id": "new-run-form",
"title": "New poster run form",
"viewport": "desktop",
"primitives": ["card", "input", "textarea", "select", "checkbox", "switch", "slider", "button", "separator", "tooltip"],
"composition": "A die-cut form card on a candy-yellow wash: title input, format select, press-notes textarea, two die-cut checkboxes, two toggle switches, and a dot-density slider, closed by a hot-pink primary button and a ghost secondary.",
"mustShow": [
"fully styled select with a custom chevron, no browser default",
"die-cut square checkbox with hot-pink checked fill",
"toggle switch with cyan track and ink knob",
"slider with a round keylined thumb",
"mono uppercase field labels"
],
"avoid": ["native browser select styling", "grey focus rings", "invisible field borders"],
"scene": {
"headline": "Submit a run",
"description": "Set the poster up for the press and tune its graphic treatment.",
"fields": [
{"label": "Poster title", "type": "input", "value": "Boombox Summer"},
{"label": "Format", "type": "select", "value": "A2 — cutout poster"},
{"label": "Press notes", "type": "textarea", "value": "Push the cyan halftone heavier; keep the ink keylines razor sharp."},
{"label": "Add die-cut clipped corner", "type": "checkbox", "value": "on"},
{"label": "Halftone background field", "type": "switch", "value": "on"},
{"label": "Dot density", "type": "slider", "value": "64"}
]
}
},
{
"id": "collector-catalog",
"title": "Collector catalog",
"viewport": "desktop",
"primitives": ["table", "badge", "button", "dialog", "sheet", "dropdown-menu", "tabs", "card", "separator"],
"composition": "A catalog table of poster runs with palette chips and pill status badges; a row action opens a dialog to reprint, and a filter sheet slides in from the side. A dropdown-menu sorts the catalog.",
"mustShow": [
"table header on solid ink with white mono labels",
"alternating candy-wash row stripes",
"pill status badges",
"die-cut dialog with an offset shadow",
"hot-pink primary action inside the dialog"
],
"avoid": ["grey zebra striping", "borderless muddy rows", "wrapping chips"],
"scene": {
"headline": "Collectible catalog",
"description": "Every run on the shelf, its palette, and how many sheets are left.",
"rows": [
{"poster": "Boombox Summer", "palette": "Pink / Cyan", "sold": "4,120", "status": "Live"},
{"poster": "Skyline Blast", "palette": "Yellow / Ink", "sold": "2,880", "status": "Live"},
{"poster": "Teacup Riot", "palette": "Cyan / Yellow", "sold": "960", "status": "Curing"},
{"poster": "Sneaker Pop", "palette": "Pink / Yellow", "sold": "6,400", "status": "Sold out"}
]
}
}
],
"componentRecipes": [
{"primitive": "button", "intent": "Hot-pink fill, mono uppercase, 0px radius, black keyline, offset shadow; on hover translate 3px and collapse the shadow — the single primary."},
{"primitive": "button", "intent": "Secondary variants in cyan or yellow and a transparent ghost — same shape and height, quieter than the primary."},
{"primitive": "card", "intent": "Die-cut panel: white or candy-wash fill, 3px black keyline, hard offset shadow, one clipped corner via clip-path."},
{"primitive": "input", "intent": "Square field, black keyline, inset ink shadow at rest, offset shadow on focus; mono uppercase label above."},
{"primitive": "textarea", "intent": "Same as input, vertical resize only, generous line-height for press notes."},
{"primitive": "select", "intent": "Fully custom: appearance-none, black keyline, an inline SVG chevron, no browser-native control ever."},
{"primitive": "dialog", "intent": "Die-cut modal with a black keyline and offset shadow over a dimmed halftone scrim; hot-pink primary confirm."},
{"primitive": "sheet", "intent": "Side panel sliding in with a keyline edge and offset shadow, holding filters or run details."},
{"primitive": "tabs", "intent": "Ribbon-style triggers; the active tab gets a yellow fill with keyline and offset shadow, others stay flat."},
{"primitive": "badge", "intent": "Pill chip (rounded-full) or circular KPI sticker; keyline, offset shadow, optional slight rotation to break the grid."},
{"primitive": "separator", "intent": "A solid 2-3px ink rule, never a hairline grey line."},
{"primitive": "checkbox", "intent": "Square die-cut box with keyline and offset shadow; checked state fills hot pink with a white tick."},
{"primitive": "switch", "intent": "Pill track with keyline; off is white, on is cyan; the knob is an ink dot that shifts to hot pink."},
{"primitive": "slider", "intent": "Pill rail with keyline; a round keylined thumb in hot pink with an offset shadow."},
{"primitive": "tooltip", "intent": "Small die-cut ink-on-white card with a keyline and offset shadow; mono uppercase caption."},
{"primitive": "dropdown-menu", "intent": "Die-cut menu panel with keyline and offset shadow; items highlight with a candy wash on hover."},
{"primitive": "table", "intent": "Ink header row with white mono labels, 2px ink row rules, alternating candy-wash stripes; wrapped in a keylined scroll container on mobile."}
],
"qualityRules": {
"do": [
"Wrap every surface in a solid black keyline with a hard, un-blurred offset shadow.",
"Keep radius at 0 for surfaces and 9999 for stickers, pills and toggles.",
"Use only the three accents plus ink and white; keep semantic colors small.",
"Keep buttons and chips on one line; let the layout stack instead of wrapping labels.",
"Let circular stickers and rotated ribbons overlap card edges on purpose.",
"Set body text at 17px+ in Space Grotesk and labels in mono uppercase."
],
"dont": [
"Use grey borders, hairline rules, or soft blurred shadows.",
"Ship browser-default selects, checkboxes, or switches.",
"Round every corner of a card or add a single-side accent edge.",
"Let a headline clip at 390px — it must shrink and wrap.",
"Mute the palette into pastels or let a semantic color become the visual lead.",
"Crowd one corner while starving another — keep density balanced."
]
}
}