back to gallery
design language·wheatpaste

Wheatpaste

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

Download DESIGN.md

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

the spec

specification

philosophy
summary
A bulletin-wall interface language for things that have to be heard before they are read. Conceived independently from the anti-design / photocopied-poster brief: bright torn xerox scraps stapled over each other on a tar-black wall, the loudest sheet on top, lit by a single sodium-amber highlighter. Where a calmer reading of the brief lays soot ink on a pale paper field and locks it to an exposed engineering grid, Wheatpaste reads the same heritage as a flyposted stairwell — there is no grid to hide behind, the pile is the structure.
values
The pile is the structure: content is scraps stapled in overlap, hierarchy carried by depth, tilt and what sits on top — not by a fixed column.Show the fastener: staples, tape and pushpins are the ornament, and every fastener declares how a scrap is held to the wall.One colour only: sodium amber used like hazard tape, a highlighter for what is live — strip it and the wall still reads.Type as the loudest layer: condensed uppercase Anton screams before a word of body copy is read.Visible construction over seamless illusion: 3px soot borders, hard offset pin shadows, toner grain and registration crosshairs stay on.
anti-values
×No exposed serial-rail engineering grid or balanced startup-dashboard symmetry; the layout is an overlapping pile, not aligned columns.×No misregistered print-double as the signature; the mechanic here is physical stapled overlap, not an offset ghost duplicate.×No pale paper ground or white default; the ground is a tar-black grimy wall and the scraps pop bright against it.×No amber wash, gloss, blur, rounded SaaS cards, or colour doing the work type and structure should carry.
tokens
colors17 items
bg
#16140f
bg_2
#0e0d09
surface
#f4f0e6
surface_2
#e6e0d2
surface_3
#d6cfbd
text
#16140f
wall_text
#f4f0e6
muted
#6f6a5c
wall_muted
#8d8676
border
#16140f
accent
#f2b705
on_accent
#16140f
primary
#f2b705
success
#9aa06a
warning
#f2b705
error
#c2552e
info
#7f8a8d
typography9 items
base size
17px
body font
Roboto Condensed
heading font
Anton
mono font
JetBrains Mono
heading weight
400
heading transform
uppercase
letter spacing
0.01em
line height
1.5
google fonts url
https://fonts.googleapis.com/css2?family=Anton&family=Roboto+Condensed:ital,wght@0,400;0,700;1,700&family=JetBrains+Mono:wght@400;500;700&display=swap
radii5 items
none
0
sm
0
md
0
lg
0
full
9999px
shadows4 items
sm
4px 4px 0 #16140f
pin
6px 7px 0 rgba(0,0,0,0.55), 14px 16px 0 rgba(0,0,0,0.32)
lift
10px 12px 0 rgba(0,0,0,0.6), 22px 26px 0 rgba(0,0,0,0.34)
philosophy
Hard offset pin shadows from layered scraps only — never blur, glow, glass or gloss.
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64, 96
surfaces3 items
treatment
paper-on-wall
card style
Bright off-white xerox paper scraps with a 3px soot-black border, toner-grain multiply overlay and a hard offset pin shadow, pasted at a slight tilt and held by a visible staple, tape strip or pushpin over a tar-black wall.
bg pattern
concrete wall + faint sodium glow + toner grain
borders4 items
default width
3px
accent width
3px
style
solid
character
Hard mechanical soot-black borders, always visible, hard-0 corners, paired with a visible fastener.
motion3 items
duration
150ms
easing
cubic-bezier(0.2,0.9,0.2,1)
philosophy
snappy and mechanical; buttons invert and shift on press; scraps drop in like pinned paper over a settled no-JS default; respects prefers-reduced-motion
rules
composition
Lay screens as an overlapping pile, not an aligned grid: paper scraps span irregular widths, nudge up into one another, tilt a degree or two and cast hard offset pin shadows, each held by a visible staple, tape strip or pushpin on a tar-black wall. Section bands are a mono index box (amber-ruled) + an Anton uppercase title + a mono aside. Compose real application screens, never a component catalogue. On mobile the pile relaxes into a clean single stack with no tilt.
hierarchy
Hierarchy is physical: what sits on top of the pile, biggest and least buried, is what matters now. Oversized condensed uppercase Anton headlines are the loudest layer; mono serials are stamped metadata. Sodium amber flags only what is live and never does structural work.
density
Medium-high: tightly packed mono metadata, dashed production-sheet separators and 8px-rhythm gutters. Negative space is the dark wall showing between scraps, not luxury padding.
signature
Stapled overlap — torn xerox scraps pinned over each other at varied tilts with a visible fastener (staple / tape / pushpin), the loudest sheet on top. It appears as every panel, the stat scraps, the overlapping wall pile, and the hero collage; the single amber recolours live tags, primary buttons, focus rings and the chart/meter peak so the signature maps onto semantic roles.
layout
grid
An overlap pile, not a fixed grid: a 12-track flexible layout where scraps span irregular widths and use negative margins to overlap and tilt. No serial rail, no balanced symmetry. Tablet eases the overlap; mobile collapses to a single untilted vertical stack.
whitespace

Tight, consistent 8px-rhythm gutters; the visible space is the dark wall between pinned scraps, read as production margin rather than soft luxury padding.

density

medium-high

responsive
Renders well from 390px mobile to 2560px+ ultra-wide; contained content caps at 1440 and centres while only the hero spans 100vw; tables scroll within their scrap; the pile relaxes to a single column and drops all tilt/overlap on mobile; grids use minmax(0,1fr)+min-width:0 so children shrink instead of overflowing.
breakpoints
desktop
1440+
tablet
768-1023
mobile
390-767
ultrawide
1700+ caps at 1440 contained
guidance
do
  • Build the page as an overlapping pile of stapled scraps; let the loudest sheet sit on top.
  • Show every fastener — staple, tape or pushpin — as the ornament that declares how a scrap is held.
  • Lead with oversized condensed uppercase Anton before any supporting copy.
  • Keep 3px soot borders, dashed rules and hard offset pin shadows visibly dominant, with toner grain on every scrap.
  • Reserve sodium amber for one live thing per region — a highlighter, never a fill field.
avoid
  • Do not fall back to an exposed serial-rail grid or a balanced, symmetric startup-dashboard layout.
  • Do not use a misregistered offset duplicate as the signature, or a pale paper / white ground.
  • Do not round corners (except status dots), blur shadows, or introduce glass, gloss or glow.
  • Do not let amber wash a surface or let colour carry hierarchy that type and overlap should carry.
  • Do not leave any browser-default control unstyled, and do not let the tilt get so chaotic that scanning breaks.
imagery
pairs with

toner

summary
Dense walls of overlapping wheatpasted xerox flyers in the high-contrast photocopy Toner technique — coarse halftone, blown highlights, crushed blacks, misregistration and toner grain — bright off-white scraps crowding a deep tar-black wall, with staples, tape, pushpins and registration crosshairs as part of the printed surface.
subjects
a screaming mouth shouting into a megaphonea torn flyposted bulletin walla pirate-radio transmitter and antennaa fist gripping a bullhorna stack of pasted gig handbills
usage

Full-bleed hero collages and feature scraps; never clean centred floats, never any text or letters in the image.

katagami spec
# Wheatpaste

## Philosophy

A bulletin-wall interface language for things that have to be heard before they are read. Conceived independently from the anti-design / photocopied-poster brief: bright torn xerox scraps stapled over each other on a tar-black wall, the loudest sheet on top, lit by a single sodium-amber highlighter. Where a calmer reading of the brief lays soot ink on a pale paper field and locks it to an exposed engineering grid, Wheatpaste reads the same heritage as a flyposted stairwell — there is no grid to hide behind, the pile is the structure.

### Values

- The pile is the structure: content is scraps stapled in overlap, hierarchy carried by depth, tilt and what sits on top — not by a fixed column.
- Show the fastener: staples, tape and pushpins are the ornament, and every fastener declares how a scrap is held to the wall.
- One colour only: sodium amber used like hazard tape, a highlighter for what is live — strip it and the wall still reads.
- Type as the loudest layer: condensed uppercase Anton screams before a word of body copy is read.
- Visible construction over seamless illusion: 3px soot borders, hard offset pin shadows, toner grain and registration crosshairs stay on.

### Anti-Values

- No exposed serial-rail engineering grid or balanced startup-dashboard symmetry; the layout is an overlapping pile, not aligned columns.
- No misregistered print-double as the signature; the mechanic here is physical stapled overlap, not an offset ghost duplicate.
- No pale paper ground or white default; the ground is a tar-black grimy wall and the scraps pop bright against it.
- No amber wash, gloss, blur, rounded SaaS cards, or colour doing the work type and structure should carry.

### Visual Character

- Every notice is a bright off-white xerox scrap with a 3px soot-black border, a toner-grain multiply overlay and a hard offset pin shadow, pasted at a degree or two of tilt over the scrap beneath it on a tar-black wall.
- Fasteners are the signature ornament: a visible staple, a strip of translucent tape, or a pushpin holds each scrap, and the choice of fastener is shown rather than hidden.
- Headlines are oversized condensed uppercase Anton blocks stacked tight like a pasted bill, sitting as the top layer of the pile; mono JetBrains serials, timestamps and frequencies read as stamped production metadata.
- The ground is a warm grimy tar-black concrete wall lit faintly by a single sodium glow; light type lives directly on the wall while soot type lives on the paper scraps.
- Sodium amber is the only colour, applied like hazard tape to live tags, the primary button, focus rings and the on-air meter / chart peak — never spread as a fill.
- Controls are explicit mechanical slabs with hard-0 corners and 3px soot borders that invert and shift on press; the on-air meter and signal chart turn amber above the live threshold.

## Tokens

### Colors

| Name | Value |
|------|-------|
| bg | `#16140f` |
| bg_2 | `#0e0d09` |
| surface | `#f4f0e6` |
| surface_2 | `#e6e0d2` |
| surface_3 | `#d6cfbd` |
| text | `#16140f` |
| wall_text | `#f4f0e6` |
| muted | `#6f6a5c` |
| wall_muted | `#8d8676` |
| border | `#16140f` |
| accent | `#f2b705` |
| on_accent | `#16140f` |
| primary | `#f2b705` |
| success | `#9aa06a` |
| warning | `#f2b705` |
| error | `#c2552e` |
| info | `#7f8a8d` |

### Typography

- **Base Size**: 17px
- **Body Font**: Roboto Condensed
- **Heading Font**: Anton
- **Mono Font**: JetBrains Mono
- **Heading Weight**: 400
- **Heading Transform**: uppercase
- **Letter Spacing**: 0.01em
- **Line Height**: 1.5
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Anton&family=Roboto+Condensed:ital,wght@0,400;0,700;1,700&family=JetBrains+Mono:wght@400;500;700&display=swap

### Radii

- **None**: 0
- **Sm**: 0
- **Md**: 0
- **Lg**: 0
- **Full**: 9999px

### Shadows

- **Sm**: 4px 4px 0 #16140f
- **Pin**: 6px 7px 0 rgba(0,0,0,0.55), 14px 16px 0 rgba(0,0,0,0.32)
- **Lift**: 10px 12px 0 rgba(0,0,0,0.6), 22px 26px 0 rgba(0,0,0,0.34)
- **Philosophy**: Hard offset pin shadows from layered scraps only — never blur, glow, glass or gloss.

### Spacing

- **Base**: 8px
- **Scale**: [4,8,12,16,24,32,48,64,96]

### Surfaces

- **Treatment**: paper-on-wall
- **Card Style**: Bright off-white xerox paper scraps with a 3px soot-black border, toner-grain multiply overlay and a hard offset pin shadow, pasted at a slight tilt and held by a visible staple, tape strip or pushpin over a tar-black wall.
- **Bg Pattern**: concrete wall + faint sodium glow + toner grain

### Borders

- **Default Width**: 3px
- **Accent Width**: 3px
- **Style**: solid
- **Character**: Hard mechanical soot-black borders, always visible, hard-0 corners, paired with a visible fastener.

### Motion

- **Duration**: 150ms
- **Easing**: cubic-bezier(0.2,0.9,0.2,1)
- **Philosophy**: snappy and mechanical; buttons invert and shift on press; scraps drop in like pinned paper over a settled no-JS default; respects prefers-reduced-motion

## Rules

### Composition

Lay screens as an overlapping pile, not an aligned grid: paper scraps span irregular widths, nudge up into one another, tilt a degree or two and cast hard offset pin shadows, each held by a visible staple, tape strip or pushpin on a tar-black wall. Section bands are a mono index box (amber-ruled) + an Anton uppercase title + a mono aside. Compose real application screens, never a component catalogue. On mobile the pile relaxes into a clean single stack with no tilt.

### Hierarchy

Hierarchy is physical: what sits on top of the pile, biggest and least buried, is what matters now. Oversized condensed uppercase Anton headlines are the loudest layer; mono serials are stamped metadata. Sodium amber flags only what is live and never does structural work.

### Density

Medium-high: tightly packed mono metadata, dashed production-sheet separators and 8px-rhythm gutters. Negative space is the dark wall showing between scraps, not luxury padding.

### Signature

Stapled overlap — torn xerox scraps pinned over each other at varied tilts with a visible fastener (staple / tape / pushpin), the loudest sheet on top. It appears as every panel, the stat scraps, the overlapping wall pile, and the hero collage; the single amber recolours live tags, primary buttons, focus rings and the chart/meter peak so the signature maps onto semantic roles.

## Layout

### Grid

An overlap pile, not a fixed grid: a 12-track flexible layout where scraps span irregular widths and use negative margins to overlap and tilt. No serial rail, no balanced symmetry. Tablet eases the overlap; mobile collapses to a single untilted vertical stack.

### Whitespace

Tight, consistent 8px-rhythm gutters; the visible space is the dark wall between pinned scraps, read as production margin rather than soft luxury padding.

### Density

medium-high

### Responsive

Renders well from 390px mobile to 2560px+ ultra-wide; contained content caps at 1440 and centres while only the hero spans 100vw; tables scroll within their scrap; the pile relaxes to a single column and drops all tilt/overlap on mobile; grids use minmax(0,1fr)+min-width:0 so children shrink instead of overflowing.

### Breakpoints

- **Desktop**: 1440+
- **Tablet**: 768-1023
- **Mobile**: 390-767
- **Ultrawide**: 1700+ caps at 1440 contained

## Guidance

### Do

- Build the page as an overlapping pile of stapled scraps; let the loudest sheet sit on top.
- Show every fastener — staple, tape or pushpin — as the ornament that declares how a scrap is held.
- Lead with oversized condensed uppercase Anton before any supporting copy.
- Keep 3px soot borders, dashed rules and hard offset pin shadows visibly dominant, with toner grain on every scrap.
- Reserve sodium amber for one live thing per region — a highlighter, never a fill field.

### Don't

- Do not fall back to an exposed serial-rail grid or a balanced, symmetric startup-dashboard layout.
- Do not use a misregistered offset duplicate as the signature, or a pale paper / white ground.
- Do not round corners (except status dots), blur shadows, or introduce glass, gloss or glow.
- Do not let amber wash a surface or let colour carry hierarchy that type and overlap should carry.
- Do not leave any browser-default control unstyled, and do not let the tilt get so chaotic that scanning breaks.

### Accessibility

Body 17px+, table rows 14.5px+; soot-black on off-white and off-white on tar-black both clear AA comfortably. Focus states invert to high-contrast with a 3px amber ring; controls are sized to content and evenly padded. The settled page renders with no JavaScript; motion respects prefers-reduced-motion. No emoji or decorative symbol glyphs in copy — icons are SVG primitives.

## Imagery Direction

### Pairs With

toner

### Summary

Dense walls of overlapping wheatpasted xerox flyers in the high-contrast photocopy Toner technique — coarse halftone, blown highlights, crushed blacks, misregistration and toner grain — bright off-white scraps crowding a deep tar-black wall, with staples, tape, pushpins and registration crosshairs as part of the printed surface.

### Subjects

- a screaming mouth shouting into a megaphone
- a torn flyposted bulletin wall
- a pirate-radio transmitter and antenna
- a fist gripping a bullhorn
- a stack of pasted gig handbills

### Usage

Full-bleed hero collages and feature scraps; never clean centred floats, never any text or letters in the image.
DESIGN.md
---
version: "alpha"
name: "Wheatpaste"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  bg: "#16140f"
  bg_2: "#0e0d09"
  surface: "#f4f0e6"
  surface_2: "#e6e0d2"
  surface_3: "#d6cfbd"
  text: "#16140f"
  wall_text: "#f4f0e6"
  muted: "#6f6a5c"
  wall_muted: "#8d8676"
  border: "#16140f"
  accent: "#f2b705"
  on_accent: "#16140f"
  primary: "#f2b705"
  success: "#9aa06a"
  warning: "#f2b705"
  error: "#c2552e"
  info: "#7f8a8d"
typography:
  headline-lg:
    fontFamily: "Anton"
    fontSize: "2.075rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "0.01em"
  headline-md:
    fontFamily: "Anton"
    fontSize: "1.66rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "0.01em"
  body-md:
    fontFamily: "Roboto Condensed"
    fontSize: "17px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "0.01em"
  label-md:
    fontFamily: "JetBrains Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  none: "0px"
  sm: "0px"
  md: "0px"
  lg: "0px"
  full: "9999px"
spacing:
  base: "8px"
  xs: "4px"
  sm: "8px"
  md: "12px"
  lg: "16px"
  xl: "24px"
  2xl: "32px"
  3xl: "48px"
  4xl: "64px"
  step-8: "96px"
components:
  color-reference-bg:
    backgroundColor: "{colors.bg}"
  color-reference-bg_2:
    backgroundColor: "{colors.bg_2}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-surface_2:
    backgroundColor: "{colors.surface_2}"
  color-reference-surface_3:
    backgroundColor: "{colors.surface_3}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-wall_text:
    backgroundColor: "{colors.wall_text}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-wall_muted:
    backgroundColor: "{colors.wall_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-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"
---

# Wheatpaste

## Overview

A bulletin-wall interface language for things that have to be heard before they are read. Conceived independently from the anti-design / photocopied-poster brief: bright torn xerox scraps stapled over each other on a tar-black wall, the loudest sheet on top, lit by a single sodium-amber highlighter. Where a calmer reading of the brief lays soot ink on a pale paper field and locks it to an exposed engineering grid, Wheatpaste reads the same heritage as a flyposted stairwell — there is no grid to hide behind, the pile is the structure.

### Values

- The pile is the structure: content is scraps stapled in overlap, hierarchy carried by depth, tilt and what sits on top — not by a fixed column.
- Show the fastener: staples, tape and pushpins are the ornament, and every fastener declares how a scrap is held to the wall.
- One colour only: sodium amber used like hazard tape, a highlighter for what is live — strip it and the wall still reads.
- Type as the loudest layer: condensed uppercase Anton screams before a word of body copy is read.
- Visible construction over seamless illusion: 3px soot borders, hard offset pin shadows, toner grain and registration crosshairs stay on.

### Anti-Values

- No exposed serial-rail engineering grid or balanced startup-dashboard symmetry; the layout is an overlapping pile, not aligned columns.
- No misregistered print-double as the signature; the mechanic here is physical stapled overlap, not an offset ghost duplicate.
- No pale paper ground or white default; the ground is a tar-black grimy wall and the scraps pop bright against it.
- No amber wash, gloss, blur, rounded SaaS cards, or colour doing the work type and structure should carry.

### Visual Character

- Every notice is a bright off-white xerox scrap with a 3px soot-black border, a toner-grain multiply overlay and a hard offset pin shadow, pasted at a degree or two of tilt over the scrap beneath it on a tar-black wall.
- Fasteners are the signature ornament: a visible staple, a strip of translucent tape, or a pushpin holds each scrap, and the choice of fastener is shown rather than hidden.
- Headlines are oversized condensed uppercase Anton blocks stacked tight like a pasted bill, sitting as the top layer of the pile; mono JetBrains serials, timestamps and frequencies read as stamped production metadata.
- The ground is a warm grimy tar-black concrete wall lit faintly by a single sodium glow; light type lives directly on the wall while soot type lives on the paper scraps.
- Sodium amber is the only colour, applied like hazard tape to live tags, the primary button, focus rings and the on-air meter / chart peak — never spread as a fill.
- Controls are explicit mechanical slabs with hard-0 corners and 3px soot borders that invert and shift on press; the on-air meter and signal chart turn amber above the live threshold.

## 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 | `#16140f` |
| bg_2 | `#0e0d09` |
| surface | `#f4f0e6` |
| surface_2 | `#e6e0d2` |
| surface_3 | `#d6cfbd` |
| text | `#16140f` |
| wall_text | `#f4f0e6` |
| muted | `#6f6a5c` |
| wall_muted | `#8d8676` |
| border | `#16140f` |
| accent | `#f2b705` |
| on_accent | `#16140f` |
| primary | `#f2b705` |
| success | `#9aa06a` |
| warning | `#f2b705` |
| error | `#c2552e` |
| info | `#7f8a8d` |

## 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**: Roboto Condensed, 17px, weight 400, line-height 1.5.
- **Label-Md**: JetBrains Mono, 0.75rem, weight 600, line-height 1.

## Layout

### Spacing Tokens

- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
- **Step-8**: `96px`

### Grid

An overlap pile, not a fixed grid: a 12-track flexible layout where scraps span irregular widths and use negative margins to overlap and tilt. No serial rail, no balanced symmetry. Tablet eases the overlap; mobile collapses to a single untilted vertical stack.

### Whitespace

Tight, consistent 8px-rhythm gutters; the visible space is the dark wall between pinned scraps, read as production margin rather than soft luxury padding.

### Density

medium-high

### Responsive

Renders well from 390px mobile to 2560px+ ultra-wide; contained content caps at 1440 and centres while only the hero spans 100vw; tables scroll within their scrap; the pile relaxes to a single column and drops all tilt/overlap on mobile; grids use minmax(0,1fr)+min-width:0 so children shrink instead of overflowing.

### Breakpoints

- **Desktop**: 1440+
- **Tablet**: 768-1023
- **Mobile**: 390-767
- **Ultrawide**: 1700+ caps at 1440 contained

## Elevation & Depth

### Shadows

- **Sm**: 4px 4px 0 #16140f
- **Pin**: 6px 7px 0 rgba(0,0,0,0.55), 14px 16px 0 rgba(0,0,0,0.32)
- **Lift**: 10px 12px 0 rgba(0,0,0,0.6), 22px 26px 0 rgba(0,0,0,0.34)
- **Philosophy**: Hard offset pin shadows from layered scraps only — never blur, glow, glass or gloss.

## Shapes

### Rounded

- **None**: `0px`
- **Sm**: `0px`
- **Md**: `0px`
- **Lg**: `0px`
- **Full**: `9999px`

### Surfaces

- **Treatment**: paper-on-wall
- **Card Style**: Bright off-white xerox paper scraps with a 3px soot-black border, toner-grain multiply overlay and a hard offset pin shadow, pasted at a slight tilt and held by a visible staple, tape strip or pushpin over a tar-black wall.
- **Bg Pattern**: concrete wall + faint sodium glow + toner grain

### Borders

- **Default Width**: 3px
- **Accent Width**: 3px
- **Style**: solid
- **Character**: Hard mechanical soot-black borders, always visible, hard-0 corners, paired with a visible fastener.

## Components

### Composition

Lay screens as an overlapping pile, not an aligned grid: paper scraps span irregular widths, nudge up into one another, tilt a degree or two and cast hard offset pin shadows, each held by a visible staple, tape strip or pushpin on a tar-black wall. Section bands are a mono index box (amber-ruled) + an Anton uppercase title + a mono aside. Compose real application screens, never a component catalogue. On mobile the pile relaxes into a clean single stack with no tilt.

### Hierarchy

Hierarchy is physical: what sits on top of the pile, biggest and least buried, is what matters now. Oversized condensed uppercase Anton headlines are the loudest layer; mono serials are stamped metadata. Sodium amber flags only what is live and never does structural work.

### Density

Medium-high: tightly packed mono metadata, dashed production-sheet separators and 8px-rhythm gutters. Negative space is the dark wall showing between scraps, not luxury padding.

### Signature

Stapled overlap — torn xerox scraps pinned over each other at varied tilts with a visible fastener (staple / tape / pushpin), the loudest sheet on top. It appears as every panel, the stat scraps, the overlapping wall pile, and the hero collage; the single amber recolours live tags, primary buttons, focus rings and the chart/meter peak so the signature maps onto semantic roles.

## 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-019ef9e8-b2e5-7570-9be2-3ff526efdba8/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 the page as an overlapping pile of stapled scraps; let the loudest sheet sit on top.
- Do Show every fastener — staple, tape or pushpin — as the ornament that declares how a scrap is held.
- Do Lead with oversized condensed uppercase Anton before any supporting copy.
- Do Keep 3px soot borders, dashed rules and hard offset pin shadows visibly dominant, with toner grain on every scrap.
- Do Reserve sodium amber for one live thing per region — a highlighter, never a fill field.
- Don't Do not fall back to an exposed serial-rail grid or a balanced, symmetric startup-dashboard layout.
- Don't Do not use a misregistered offset duplicate as the signature, or a pale paper / white ground.
- Don't Do not round corners (except status dots), blur shadows, or introduce glass, gloss or glow.
- Don't Do not let amber wash a surface or let colour carry hierarchy that type and overlap should carry.
- Don't Do not leave any browser-default control unstyled, and do not let the tilt get so chaotic that scanning breaks.

### Accessibility

Body 17px+, table rows 14.5px+; soot-black on off-white and off-white on tar-black both clear AA comfortably. Focus states invert to high-contrast with a 3px amber ring; controls are sized to content and evenly padded. The settled page renders with no JavaScript; motion respects prefers-reduced-motion. No emoji or decorative symbol glyphs in copy — icons are SVG primitives.

## Imagery Direction

### Pairs With

toner

### Summary

Dense walls of overlapping wheatpasted xerox flyers in the high-contrast photocopy Toner technique — coarse halftone, blown highlights, crushed blacks, misregistration and toner grain — bright off-white scraps crowding a deep tar-black wall, with staples, tape, pushpins and registration crosshairs as part of the printed surface.

### Subjects

- a screaming mouth shouting into a megaphone
- a torn flyposted bulletin wall
- a pirate-radio transmitter and antenna
- a fist gripping a bullhorn
- a stack of pasted gig handbills

### Usage

Full-bleed hero collages and feature scraps; never clean centred floats, never any text or letters in the image.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "wheatpaste",
  "type": "registry:theme",
  "title": "Wheatpaste shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#16140f",
      "foreground": "#16140f",
      "card": "#f4f0e6",
      "card-foreground": "#16140f",
      "popover": "#f4f0e6",
      "popover-foreground": "#16140f",
      "primary": "#f2b705",
      "primary-foreground": "#ffffff",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#6f6a5c",
      "muted-foreground": "#16140f",
      "accent": "#f2b705",
      "accent-foreground": "#ffffff",
      "destructive": "#c2552e",
      "border": "#16140f",
      "input": "#16140f",
      "ring": "#f2b705",
      "chart-1": "#f2b705",
      "chart-2": "#f4f4f5",
      "chart-3": "#f2b705",
      "chart-4": "#9aa06a",
      "chart-5": "#f2b705",
      "sidebar": "#f4f0e6",
      "sidebar-foreground": "#16140f",
      "sidebar-primary": "#f2b705",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#7f8a8d",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#16140f",
      "sidebar-ring": "#f2b705",
      "radius": "0"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#f2b705",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#f2b705",
      "accent-foreground": "#ffffff",
      "destructive": "#c2552e",
      "border": "#303642",
      "input": "#303642",
      "ring": "#f2b705",
      "chart-1": "#f2b705",
      "chart-2": "#f4f4f5",
      "chart-3": "#f2b705",
      "chart-4": "#9aa06a",
      "chart-5": "#f2b705",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#f2b705",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#f2b705",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#f2b705",
      "radius": "0"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019ef9e8-b2e5-7570-9be2-3ff526efdba8",
    "slug": "wheatpaste",
    "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",
        "bg_2",
        "border",
        "error",
        "info",
        "muted",
        "on_accent",
        "primary",
        "success",
        "surface",
        "surface_2",
        "surface_3",
        "text",
        "wall_muted",
        "wall_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",
        "sm"
      ],
      "shadows": [
        "lift",
        "philosophy",
        "pin",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ]
    }
  }
}
```
in the wild

embodiments

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

at a glance

Typography

headline-lgAnton · 33px · 700

The quick brown fox jumps

headline-mdAnton · 27px · 600

The quick brown fox jumps

body-mdRoboto Condensed · 17px · 400

The quick brown fox jumps

label-mdJetBrains Mono · 12px · 600

The quick brown fox jumps

shadcn/ui

implementation kit

built with

Agent-generated

remix lane

try a remix

Keep Wheatpasteand swap a palette and an art style onto it — the landing & dashboard recolor live. The Studio does the same with all three lanes free.

UI language · fixed
Wheatpaste
Palette
Art style
Landing Page
live preview · recolored + filled
lineage

Family

Evolved from
related

More like this